CentOS 7 系统默认的防火墙是 Filewalld。不过,现在应该还有很多用户习惯使用 iptables。本文以 CentOS 7 为例,说明在 CentOS 7 中如何安装并使用 iptables。
1. 禁用 Filewalld
- 1.1 SSH 连接你的服务器实例
- 1.2 查看 Filewalld 服务状态:
systemctl status firewalld.service
。 - 1.3 当服务处于 active 状态,运行以下命令关闭 Firewalld 服务:
systemctl stop firewalld.service
。 - 1.4 禁止 Filewalld 开机启动:
systemctl disable firewalld.service
。
2. 安装 iptables
执行如下命令,安装 iptables:
yum install iptables-services
3. 启动 iptables
- 3.1 启动 iptables:
systemctl start iptables.service
。 - 3.2 查看 iptables:
systemctl status iptables.service
。 - 3.3 设置 iptables 开机自启动:
systemctl enable iptables.service
(注意:如果出现这个错误提示:Failed to execute operation: No such file or directory
,说明 iptables 版本过低)。 - 3.4 重启 iptables:
systemctl restart iptables.service
。
4. 使用 iptables
4.1 备份规则
如果之前已经设置过规则,建议执行如下命令,备份原有的iptables文件,避免之前设置的规则丢失:
cp -a /etc/sysconfig/iptables /etc/sysconfig/iptables.bak
4.2 清空已有规则
iptables -F
iptables -X
iptables -Z
4.3 根据业务需求添加规则,放行或者禁用端口
-A和-I参数分别为添加到规则末尾和规则最前面。
#允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的或相关连的通行
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#允许所有本机向外的访问
iptables -A OUTPUT -j ACCEPT
# 允许访问22端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#允许访问80端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
#允许访问443端口
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
#允许FTP服务的21和20端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
#如果有其他端口的话,规则也类似,稍微修改上述语句就行
#允许ping
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
#禁止其他未允许的规则访问
iptables -A INPUT -j REJECT #(注意:如果22端口未加入允许规则,SSH链接会直接断开。)
iptables -A FORWARD -j REJECT
4.4 屏蔽 IP
#如果只是想屏蔽IP的话“3、开放指定的端口”部分设置可以直接跳过。
#屏蔽单个IP的命令是
iptables -I INPUT -s 123.45.6.7 -j DROP
#封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP
#封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP
#封IP段即从123.45.6.1到123.45.6.254的命令是
iptables -I INPUT -s 123.45.6.0/24 -j DROP
4.5 屏蔽或允许某 IP 访问指定端口
#屏蔽某IP访问指定端口,以22端口为例命令是
iptables -I INPUT -s 123.45.6.7 -p tcp --dport 22 -j DROP
#允许某IP访问指定端口,以22端口为例命令是
iptables -I INPUT -p tcp --dport 22 -j DROP
iptables -I INPUT -s 123.45.6.7 -p tcp --dport 22 -j ACCEPT
4.6 确认新规则是否生效
iptables -L -n
查看管理命令 “-L”的附加子命令:
-n:以数字的方式显示 ip,它会将 ip 直接显示出来,如果不加-n,则会将 ip 反向解析成主机名。
-v:显示详细信息
-vvv :越多越详细
-x:在计数器上显示精确值,不做单位换算
4.7 保存添加的规则
service iptables save
参考
https://help.aliyun.com/knowledge_detail/41319.html?source=5176.11533457&userCode=r3yteowb&type=copy > https://www.vpser.net/security/linux-iptables.html