前言
CentOS中7以下防火墙是 iptables,7是 firewalld,两者不尽相同,一开始以为 firewalld 比 iptables会更麻烦,其实 firewalld 比 iptables 方便多了,这里简单描述下配置。
iptables
基本命令
1. 重启系统生效
chkconfig iptables on # 启动 chkconfig iptables off # 关闭
Ssh
复制
2. 即时生效,重启后失效
service iptables start # 启动 service iptables stop # 关闭
Ssh
复制
设定规则
1、查看本机关于 iptables 的设置情况
iptables -L -n
Ssh
复制
2、清除原有规则
iptables -F # 清除预设表 filter 中的所有规则链的规则
Ssh
复制
3、保存设置规则(因配置随系统重启而失效)
/etc/rc.d/init.d/iptables save # 保存规则到 /etc/sysconfig/iptables 文件中, 也可手工编辑该文件.
Ssh
复制
4、设定预设规则
iptables -p INPUT DROP iptables -p OUTPUT DROP iptables -p FORWARD DROP # 上面的规则是不允许任何包通过.
Ssh
复制
5、添加规则
iptables -A INPUT -p tcp –dport 22 -j ACCEPT iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT # 开启 22 端口, 允许 SSH 登录, 如开启 80 端口: iptables -A INPUT -p tcp –dport 80 -j ACCEPT iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT
Ssh
复制
6、禁止某个IP访问
iptables -I INPUT -s x.x.x.x -j DROP # 也可进行更细致的设置, 如只允许 192.168.1.14 的机器进行 SSH 连接: iptables -A INPUT -p tcp –dport 22 -s 192.168.1.14 -j ACCEPT # 如果要允许或限制一段IP地址可用 192.168.1.0/24 表示 192.168.1.1-255 端的所有 IP.
Ssh
复制
7、防止同步包洪水(Sync Flood)
iptables -A FORWARD -p tcp –syn -m limit –limit 1/s -j ACCEPT
Ssh
复制
8、防止各种端口扫描
#iptables -A FORWARD -p tcp –tcp-flags SYN,ACK,FIN,RST RST -m limit –limit 1/s -j ACCEPT
Ssh
复制
9、Ping 洪水攻击(Ping of Death)
#iptables -A FORWARD -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT
firewalld
基本命令
1、重启系统生效
systemctl enable firewalld # 启动 systemctl disable firewalld # 关闭
Ssh
复制
2、即时生效,重启后失效
systemctl start firewalld # 启动 systemctl stop firewalld # 关闭
Ssh
复制
3、查看状态
firewall-cmd --state
Ssh
复制
4、查看已配置规则
firewall-cmd --list-all
Ssh
复制
5、更新配置
firewall-cmd --list-all
Ssh
复制
设定规则
1、拒绝/取消拒绝所有包
firewall-cmd --panic-on firewall-cmd --panic-off
Ssh
复制
2、将接口添加到 public 区域
firewall-cmd --zone=public --add-interface=eth0
Ssh
复制
3、把 tcp 80 端口加入/移除到区域
firewall-cmd --zone=pulic --add-port=80/tcp firewall-cmd --zone=pulic --remove-port=80/tcp
Ssh
复制
把 http 服务加入/移除到区域
firewall-cmd --zone=public --add-service=http firewall-cmd --zone=public --remove-service=http
Ssh
复制
5、设置永久生效
# 命令中加上 --permanet 参数则永久生效,比如 firewall-cmd --zone=public --add-service=http --permanent
Ssh
复制
高级应用
1、仅允许部分 IP 访问特定服务
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept" --permanent
Ssh
复制
2、仅允许部分 IP 访问特定端口
firewall-cmd --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" port protocol="tcp" port="8080" accept" --permanent
Ssh
复制
3、查看 FTP 服务设置
firewall-cmd --query-service ftp
Ssh
复制
4、查看激活的区域以及切换区域
firewall-cmd --get-active-zones firewall-cmd --set-default-zone=public
Ssh
复制
5、限制每分钟只有两个连接到ftp服务
firewall-cmd --add-rich-rule='rule service name=ftp limit value=2/m accept'
Ssh
复制