rhel7和centos7的新防火墙软件 firewalld (但仍然可以使用iptables)
官网地址
# yum install firewall-cmd firewall-config
# systemctl restart firewalld --启动服务
# systemctl status firewalld --确认状态
# systemctl enable firewalld --设为开机自动启动(可选)
概念一:
Zone 简单来说就是防火墙方案,就是一套规则集,你可以切换使用哪一个zone
# firewall-cmd --get-zones ----查看现在有哪些zone
work drop internal external trusted home dmz public block
drop:拒绝所有外部连接请求。
block:拒绝所有外部连接(with an icmp-host-prohibited message for IPv4 and icmp6-adm-prohibited for IPv6),允许内部发起的连接
public:适用公共环境,拒绝所有外部连接请求,但指定外部连接可以进入
external:特别适用路由器启用了伪装功能的外部网。拒绝所有外部连接请求,只能接收经过选择的连接。
dmz:用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。(受限制的公共连接可以进入)
work:适用于工作网络环境,概念和workgoup一样,也是指定的外部连接允许用于工作区。
home:类似家庭组,用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接
internal:用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接
trusted:可接受所有的网络连接。(最不安全)
# firewall-cmd --get-default-zone ----查看当前使用的zone
public
# firewall-cmd --set-default-zone=work
# firewall-cmd --set-default-zone=public ----修改当前使用的zone
# firewall-cmd --list-all ----查看当前使用的zone的规则集
# firewall-cmd --zone=work --list-all ----指定查看work这个zone的规则集
概念二:
网卡接口
# firewall-cmd --zone=public --add-interface=ens33 ----指定网卡加入到哪个zone
# firewall-cmd --get-zone-of-interface=ens33 ----查看网卡加入到哪个zone
概念三:
port,service 分别表示端口和服务
# firewall-cmd --add-port=80/tcp ----允许tcp的80端口进来的通迅(类似iptables的INPUT)
# firewall-cmd --remove-port=80/tcp ----删除上面的规则
# firewall-cmd --add-service=http ----允许http服务进来的通迅(不用管它是什么端口,只记住服务就好了)
# firewall-cmd --remove-service=http
# firewall-cmd --add-service=ftp ----允许ftp服务进来的通迅(无论主动还是被动都可以,这样就把iptables的写法简单化了)
# firewall-cmd --remove-service=ftp
概念四:
rich-rule复杂规则
# firewall-cmd --add-rich-rule="rule family="ipv4" source address=172.16.2.9 service name="ssh" accept"
下面两条合起来实现允许所有人访问我的http,但drop掉172.16.2.9的访问我的http的包
# firewall-cmd --add-service=http
# firewall-cmd --add-rich-rule="rule family="ipv4" source address=172.16.2.9 service name="http" drop"
概念五:
关于立即生效与永久生效的讨论
上面加端口或加服务规则,是立即生效,但重启不生效(可以使用firewall-cmd --reload来装载保存的规则)
# firewall-cmd --permanent --add-service=ftp ----加了一个--permanent参数后,立即不生效,需要reload后才能生效
实际写规则时,建议直接写(不加--permanent参数),所有规则写完,测试完成后,再使用# firewall-cmd --runtime-to-permanent全部转成permanent规则
概念六:
panic模式
# firewall-cmd --panic-on
# firewall-cmd --panic-off