CentOS7.3下的一个iptables配置
2024-08-28 10:38:31
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
最新文章
- .NET跨平台之旅:将示例站点升级至 ASP.NET Core 1.1
- 【原】AFNetworking源码阅读(一)
- Titanium.App.Properties 对象
- C# Listview 数据绑定
- job history 的查看
- Fedora和Ubuntu下安装OpenGL开发环境配置
- 适配IOS9中间遇到的一些问题
- Vulkan Tutorial 24 Descriptor pool and sets
- 敏捷开发冲刺--day3
- 【API知识】RestTemplate的使用
- 【手记】sql报“聚合或其他set操作消除了null值”处理
- .NET Core HttpClient调用腾讯云对象存储Web API的";ERROR_CGI_PARAM_NO_SUCH_OP";问题
- 8Manage PMP 项目管理工具
- JDK5并发(1) Locks-AQS
- 【Android】20.3 拍照和视频录制
- 降压转换器 (Buck)
- 什么是web资源????
- Zabbix——设置模板
- Docker高级使用
- Path类 操作文件类