在CentOS 7中默认安装有firewalld,如果没有安装的话可以使用yum安装。firewalld是iptables的包装器,可以更轻松地管理iptables规则,它不是iptables的替代品。和iptables相比,firewalld主要有两个区别:
1、iptables使用chain和rules,firewalld使用zones和services;
2、firewalld可以动态的管理更新规则,不会破坏现有的连接和会话;
一、启用关闭
启用
systemctl start firewalld systemctl enable firewalld
关闭
systemctl stop firewalld systemctl disable firewalld
查看状态,显示 running 或者 not running 。
firewall-cmd --state
载入配置
firewall-cmd --reload
二、配置集
firewalld有两个配置集,分别是 Runtime 和 Permanent ,runtime运行集重启机器或者firewalld配置就会失效,permanent会永久保存。例如添加http服务为可访问可以用这两个方法:
# 1 firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=http # 2 firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload
三、区域
zone是firewalld很重要的一个概念,可以针对不同场景定义不同的zone,例如home, public, trusted等,不同区域可以设置不同的service规则。默认firewalld zone是public。
# 1 查看默认zone firewall-cmd --get-default-zone # 2 设置默认zone firewall-cmd --set-default-zone=internal # 3 查看网卡在用的zone firewall-cmd --get-active-zones # 4 查看public 区域配置 firewall-cmd --zone=public --list-all # 5 查看所有区域配置 firewall-cmd --list-all-zones
四、服务
firewalld预设了很多服务名,默认支持的服务的配置文件位于/usr/lib/firewalld/services,用户创建的服务文件位于/etc/firewalld/services中。
# 查看默认可用的服务 firewall-cmd --get-services # 添加删除服务 firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --remove-service=http --permanent
五、允许或拒绝任意端口/协议
例如:
firewall-cmd --zone=public --add-port=12345/tcp --permanent firewall-cmd --zone=public --remove-port=12345/tcp --permanent
六、端口转发
转发80端口到本机的8080端口
firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080
转发到其他服务器的端口
firewall-cmd --zone=public --add-masquerade firewall-cmd --zone="public" --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=123.456.78.9
删除的话就把–add换成–remove
例如:
firewall-cmd --zone=public --remove-masquerade
七、常用命令举例
添加开启常见端口
firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=443/tcp --permanent firewall-cmd --zone=public --add-port=22/tcp --permanent firewall-cmd --zone=public --add-port=21/tcp --permanent firewall-cmd --zone=public --add-port=53/udp --permanent
关闭禁止常见端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent firewall-cmd --zone=public --remove-port=443/tcp --permanent firewall-cmd --zone=public --remove-port=22/tcp --permanent firewall-cmd --zone=public --remove-port=21/tcp --permanent firewall-cmd --zone=public --remove-port=53/udp --permanent
添加端口范围
firewall-cmd --zone=public --add-port=4400-4600/udp --permanent firewall-cmd --zone=public --add-port=4400-4600/tcp --permanent
重新载入
firewall-cmd --reload
参考:https://linode.com/docs/security/firewalls/introduction-to-firewalld-on-centos/