CentOS7.3下的一个iptables配置
centos7.3默认使用的防火墙应该是firewall,而不是iptables。而我们xxmj服务器使用的是iptables防火墙。所以,在配置防火墙之前,我们需要先关闭firewall,安装iptables。
-
查看firewall的安装和启动状态
[root@localhost ~]# yum list installed firewalld iptables [root@localhost ~]# systemctl list-unit-files firewalld.service iptables.service
-
下面关闭firewall并禁止开机启动和安装iptables防火墙的操作视情况而定
-
关闭firewall并禁止开机启动
[root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# systemctl disable firewalld.service
-
安装iptables防火墙并设置开启启动
[root@localhost ~]# yum install iptables-services [root@localhost ~]# systemctl enable iptables.service
-
编辑并修改配置文件/etc/sysconfig/iptables,使用下面的配置
*filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :TEST - [0:0] -A INPUT -j TEST -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -i eth1 -d 192.168.1.100 --syn -m recent --name suduip --rcheck --seconds 1 --hitcount 15 -j DROP -A INPUT -p tcp -i eth1 -d 192.168.1.100 --syn -m recent --name suduip --set -A INPUT -i eth1 -p tcp -m tcp -d 192.168.1.100 --syn -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP #-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG SYN -m length --length 0:128 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT ... ... -A INPUT -j DROP -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j TEST -A FORWARD -j REJECT --reject-with icmp-host-prohibited -A OUTPUT -j TEST -A TEST -j RETURN COMMIT
1.检查替换eth1;2.检查替换-d ip;3.若是centos6.8,检查iptables版本是v1.4.7还是v1.4.21,前者不支持–connlimit-saddr选项,去掉即可。下面,我简单解释一下这个配置
# filter表 *filter # INPUT链默认策略为ACCEPT :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] # 自定义TEST链 :TEST - [0:0] # 进入TEST链(从后面配置看,TEST链只是RETURN了回来,没有其他规则) -A INPUT -j TEST # 接受连接状态是RELATED和ESTABLISHED的包 -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # 接受ICMP协议的包 -A INPUT -p icmp -j ACCEPT # 接受回环接口的包 -A INPUT -i lo -j ACCEPT # 同一源IP1秒内最多可发起14次目的地址是192.168.1.100的TCP连接请求,15次及以上的包将被接口eth1丢弃
# 为什么同时指定-i和-d?猜测:路由器里的路由表可能人为或未及时更新导致路由表映射错误,导致发到接口eth1的包的目的IP错误。为了防止此类包,则需同时指定-i和-d -A INPUT -p tcp -i eth1 -d 192.168.1.100 --syn -m recent --name suduip --rcheck --seconds 1 --hitcount 15 -j DROP -A INPUT -p tcp -i eth1 -d 192.168.1.100 --syn -m recent --name suduip --set # 同一源IP只允许50个目的地址是192.168.1.100的TCP连接请求,超出的包将被接口eth1丢弃 -A INPUT -i eth1 -p tcp -m tcp -d 192.168.1.100 --syn -m connlimit --connlimit-above 50 --connlimit-mask 32 --connlimit-saddr -j DROP # 此条规则有问题(猜测,可能是--length 129 -j DROP) #-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG SYN -m length --length 0:128 -j ACCEPT # 下面这些规则对TCP连接请求包开放部分端口 -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT ... ... # 丢弃所有包 -A INPUT -j DROP # 上一条规则已经丢弃了所有包,此条规则貌似到不了 -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j TEST -A FORWARD -j REJECT --reject-with icmp-host-prohibited -A OUTPUT -j TEST -A TEST -j RETURN COMMIT
-
重启iptables
[root@localhost ~]# systemctl restart iptables.service
-
查看防火墙规则是否已应用
[root@localhost ~]# iptables -L
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
2013-07-31 MySQL-Transfer2.2发布
2013-07-31 Mysql数据库主从心得整理