iptables拓展规则(多端口、根据IP地址范围、MAC地址设置)

iptables拓展规则(多端口、根据IP地址范围、MAC地址设置),第1张

iptables在基本过滤条件的基础上还可以扩展其他条件,在使用时需要使用-m参数来启动这些扩展功能,语法如下:

一:根据MAC地址过滤

1)根据IP过滤的规则,当对方修改IP后,防火墙会失效

#设置规则禁止192.168.4.10使用ssh远程本机

但是,当client主机修改IP地址后,该规则就会失效,注意因为修改了IP,对client主机的远程连接会断开。 根据MAC地址过滤,可以防止这种情况的发生。

2)可以通过NMAP扫描对方的mac地址

拒绝52:54:00:65:44:B1 这台主机远程本机

二:基于多端口设置过滤规则

一次需要过滤或放行很多端口

例:一次性开启20,25,80,110,143,16501到16800所有的端口

提示:多端口还可以限制多个源端口,但因为源端口不固定,一般不会使用,限制多个源端口的参数是--sports.

三:根据IP地址范围设置规则

1)允许从 192.168.4.10-192.168.4.20 主机ssh远程登录本机

注意:这里也可以限制多个目标IP的范围,参数是--dst-range,用法与--src-range一致。

2)禁止从 192.168.4.0/24 网段其他的主机ssh远程登录本机

所有iptables规则都是临时规则,如果需要永久保留规则需要执行如下命令:

安装iptables-services并启动服务,保存防火墙规则。

防火墙规则存放文件:

/etc/sysconfig/iptables

iptables其他拓展模块还有很多,可以通过 man iptables-extensions 命令去查看。

端口复用参考: Linux利用iptables做端口复用-Linux实验室 (wanyunshuju.com)

端口转发参考: 使用 iptables 进行端口转发 - 51nb - 博客园 (cnblogs.com)

一台虚拟机:192.168.2.2(私网ip),8080端口tomcat服务

一台虚拟机:192.168.3.6(公网ip),192.168.2.10(私网ip),80端口apache服务

1、虚拟机(192.168.3.6)开启转发功能

vim /etc/sysctl.conf

输入 net.ipv4.ip_forward=1

使用命令 sysctl -p 使配置生效

2、添加iptables规则实现端口转发

iptables -t nat -I PREROUTING -i ens36 -d 192.168.3.6 -p tcp --dport 9090 -j DNAT --to-destination 192.168.2.2:8080

3、转发成功

1、设置iptables规则

iptables -t nat -I PREROUTING -i ens36 -s 192.168.3.3 -d 192.168.3.6 -p tcp --dport 80 -j REDIRECT --to-port 22

2、攻击机192.168.3.3使用XShell对192.168.3.6的80端口进行SSH连接

1、虚拟机(192.168.3.6)开启转发功能

vim /etc/sysctl.conf

输入 net.ipv4.ip_forward=1

使用命令 sysctl -p 使配置生效

2、设置iptables规则,当且仅当192.168.3.3访问时,192.168.3.6的80端口的http服务变成192.168.2.2的22端口(即iptables流量转发)

iptables -t nat -I PREROUTING -i ens36 -s 192.168.3.3 -d 192.168.3.6 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.2:22

3、验证

1)当192.168.3.3进行访问时:

2)当其他ip机器访问时

利用TCP协议做遥控开关,这样攻击方在需要访问http服务的时候可以及时切换

1、创建端口复用链子

iptables -t nat -N MyChains

2、创建端口复用规则,访问192.168.3.6:80的流量转发至22端口

iptables -t nat -A MyChains -p tcp -j REDIRECT --to-port 22 (如果要转发到其他ip机器,注意需要开启转发功能)

3、设置开启开关,当接收到一个含有"nihao123coming"的TCP包,则将来源IP添加到MyChains的列表中

iptables -A INPUT -p tcp -m string --string "nihao123coming" --algo bm -m recent --set --name MyChains --rsource -j ACCEPT

4、设置关闭开关,如果接收到含有"nihao123leaving"的TCP包,则将来源IP从MyChains的列表中删除

iptables -A INPUT -p tcp -m string --string "nihao123leaving" --algo bm -m recent --name MyChains --remove -j ACCEPT

5、当发现SYN包的来源IP处于MyChains的列表中,将跳转到MyChains链进行处理,有效时间为3600秒

iptables -t nat -A PREROUTING -p tcp --dport 80 --syn -m recent --rcheck --seconds 3600 --name MyChains --rsource -j MyChains

4、开启复用,开启后发送开启命令的机器到目标80端口的流量将被转发到目标20端口

验证:

5、关闭复用

验证:

由于业务的需要, MySQL,Redis,mongodb等应用的端口需要我们手动 *** 作开启

下面以 MySQL 为例,开启 3306 端口的远程访问,其他端口类似。

添加如下一行配置:

注意:如果已经存在该端口的配置,修改 DROP 为 ACCEPT:

如果 *** 作比较频繁或者命令的方式比较繁琐,我这里提供一个简单的设置脚本,可以上传到服务器的对应目录,直接运行输入端口号即可

假设我们使用xshell通过test账号进行ssh登录

注意:如果需要通过公网访问,请与对应的云服务器提供商的控制台设置安全组放行(阿里云、腾讯云等)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11836526.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存