已整理-firewalld防火墙配置
目录:
1、firewalld防火墙介绍
2、firewalld区域与配置规则
3、firewall-cmd配置
1、firewalld防火墙介绍
防火墙作用:隔离,严格过滤入站,允许出站;
系统服务: firewalld
管理工具: firewall-cmd , firewall-config
2、firewalld区域与配置规则
根据所在的网络场所区分,预设保护规则集:
-public: 仅允许访问本机的sshd,dhcp,ping少数几个服务
-trusted: 允许任何访问
-block: 阻塞任何来访请求(明确拒绝)
-drop: 丢弃任何来访的数据包(直接丢弃,不给客户端回应,节省资源)
firewalld默认提供了九个zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,都保存在/usr/lib/firewalld/zones/目录下。
配置规则的位置:
- 运行时(runtime)
- 永久(permanent)
运行方式是: 匹配及停止;
当收到数据包,至少有: 源IP地址,目标IP地址,数据
1)查看数据包中源IP地址,然后查询所有区域中规则,哪一个区域中有该源IP地址的规则,则进入哪一个区域;
2)进入默认区域(public),不是sshd,dhcp,ping,都拒绝;
与iptables区别:
1)iptables 仅能通过命令行进行配置;而 firewalld 提供了图形接口,类似windows防火墙的操作方式;
2)iptables 每一个单独更改意味着清除所有旧的规则,并从 /etc/sysconfig/iptables 中读取所有新的规;则;而 firewalld 在有规则变动后,可以仅仅运行规则中的不同之处,即在 firewalld 运行时间内,改变设置时可以不丢失现行链接;
3)iptables 的配置文件在 /etc/sysconfig/iptables 中;而 firewalld 的配置文件在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件中;
4)iptables 没有守护进程,并不能算是真正意义上的服务;而 firewalld 有守护进程;
5)iptables 通过控制端口来控制服务,而 firewalld 则是通过控制协议来控制端口;
【firewalld】默认是拒绝;而【iptables】默认是允许。
3、firewall-cmd配置
查看防火墙默认区域:
# firewall-cmd --get-default-zone #默认就是public
public
修改默认区域:
# firewall-cmd --set-default-zone=block #修改默认区域为: block 区域
在一个区域添加协议:
# firewall-cmd --zone=public --list-all #查看区域public里面的所有配置,ping服务没有列出来
# firewall-cmd --zone=public --add-service=http #runtime,添加http到public区域中,可以正常访问http了
# firewall-cmd --zone=public --add-service=ftp #runtime,添加ftp到public区域中,可以正常访问ftp了
# firewall-cmd --zone=public --add-service=http --permanent #永久添加,写到了相当的配置文件中了
# firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent #从public中永久的移除dhcpv6-client服务
重新加载配置:
# firewall-cmd --reload
拒绝源IP:
# firewall-cmd --zone=block --add-source=10.10.67.40 --permanent #1个源IP只能在1个区域中,在block区域中,就不能在trusted区域中了
宽松模式,默认区域为: trusted ,单独拒绝的源ip地址写入block,适合于拒绝的少,允许的多的应用场景:
严格模式,默认区域为: block,单独允许的源IP地址写入trusted,适合于允许的少,拒绝的多的应用场景;
实现本机的端口映射:
本地应用的端口重定向(8080-->80),应用场景:
从客户机访问 8080 的请求,自动映射 到本机 80
# firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80 #8080映射到80
# firewall-cmd --reload