使用iptables实现固定端口放行

Posted JohnnyFang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用iptables实现固定端口放行相关的知识,希望对你有一定的参考价值。

    Linux防火墙是由Netfilter组件提供的,Netfilter工作在内核空间,集成在Linux内核中,采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架。Netfilter与IP协议栈是无缝契合,并允许对数据报进行过滤、地址转换、处理等操作。iptables是防火墙工具之一,由软件包iptables提供的命令行工具,工作在用户空间,用来编写规则,写好的规则被送往netfilter,告诉内核如何去处理信息包。

    本次实验要求为:使用iptables实现放行ssh、telnet、ftp、web服务80端口,其他端口服务全部拒绝。因笔者这边部分服务尚未学到,故测试部分只以ssh和web测试为例。

  1. 环境准备

    笔者这边准备了两台虚拟机,主机名是LeoMessi的作为服务器端,主机名是centos7.9的作为客户端来进行测试。服务器端下载并开启httpd服务,客户端是可以访问的,同时客户端也能通过远程连接登录服务器端​(如下图)​。

使用iptables实现固定端口放行_白名单


  1. 制定规则转变为白名单策略

    服务器端执行 ​iptables -F​ 命令清空现有的规则,执行 ​iptables -vnL​ 命令可查看当前有哪些规则。

使用iptables实现固定端口放行_客户端_02

    Linux系统默认防火墙策略是黑名单形式,并不是很安全;直接改成白名单策略的话,如果不小心清除了规则会导致无法进行远程连接。我们可以通过规则的制定,在不直接改变策略的情况将黑名单策略转化为白名单策略,只针对指定对象开放或只开放某些端口等。

    执行 ​iptables -A INPUT -s 10.0.0.1 -j ACCEPT​ 命令,确保转化为白名单策略后,自己能通过Windows进行远程登录;执行 ​iptables -A INPUT -i lo -j ACCEPT​ 命令,允许来自本主机回环网卡的访问;执行 ​iptables -A INPUT -j REJECT ​命令,拒绝其他用户的所有请求​(如下图)​。

使用iptables实现固定端口放行_服务器端_03


  1. 用户测试

    返回客户端,此时再对服务器端进行web访问、ssh连接,均提示连接拒绝,甚至无法ping通10.0.0.153的网址​(如下图)​。

使用iptables实现固定端口放行_服务器端_04


  1. 开放指定端口

    ssh、telnet、ftp和web服务的端口分别为22、23、21和80,此处涉及到多个端口,虽然我们也可以一个端口一条规则的去添加,但这样难免会显得繁琐,此时可以用到multiport扩展,它能以离散方式定义多端口匹配,并且最多指定15个端口。

    服务器端执行 ​iptables -I INPUT 3 -p tcp  -m multiport --dport 21:23,80 -j ACCEPT​ 命令,即可允许所有用户访问21-23和80端口,并且将此条规则插入到第三条(​如下图)​。

使用iptables实现固定端口放行_服务器端_05

    如果只对某个ip或者某个ip段开放,也可在-p前面加上“-s 指定ip或地址段”。


  1. 客户端测试

    此时,客户端已经可以正常访问服务器端的web,同时也能实现ssh登录,但是根据规则,服务器端拒绝4个端口外的其他任何请求,故客户端依旧无法ping通服务器端ip​(如下图)​。

使用iptables实现固定端口放行_白名单_06

以上是关于使用iptables实现固定端口放行的主要内容,如果未能解决你的问题,请参考以下文章

#私藏项目实操分享# 使用iptable实现: 放行telnet, ftp, web服务,放行samba服务,其他端口服务全部拒绝

固定NFS端口,iptables设置放行

iptables

防火墙放行80端口(初级)

Linux对外提供服务 网络连接 端口操作 1.开启服务监听端口 2.设置防火墙,放行访问端口的包 iptables&netfilter 四表五链和通堵策略

iptables开放指定端口