防火墙守护 firewalld 服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
动态防火墙后台程序firewalld提供了一个动态管理的防火墙用以支持网络“zones”,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对IPV4和IPV6防火墙设置的支持,它支持以太网桥,并有选择运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。
相较于传统的防火墙管理配置工具,firewalld支持动态更新技术并加入了区域(zone)的概念。区域就是firewalld预先准备的几套防火墙策略集合(策略模板)
用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。例如,我们的笔记本电脑,每天都要在办公室、咖啡厅和家里使用。按常理来讲,这三者的安全性按照由高到低的顺序来排列,应该是家庭、公司办公室、咖啡厅。我们希望为这台笔记本电脑指定如下防火墙策略规则:在家中允许访问所有服务;在办公室内仅允许访问文件共享服务;在咖啡厅仅允许上网浏览。在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,然后只需轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。
网络区域名称 | 默认策略规则 |
---|---|
trusted 信任 | 允许所有的数据包 |
home | 拒绝流入的流量,除非与流出的流量相关。如果流量与ssh,mdns,ipp-client,samba-client,dhcpv6-client服务相关,则允许流量 |
internal | 内部网络,等同于home区域 |
work | 拒绝流入的流量,除非与流出的流量相关。仅接受 ssh、ipp-client 与 dhcpv6-client 连接 |
public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、dhcpv6-client 服务相关,则允许流量,为firewlld的默认区域 |
external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量 |
dmz 非军事区 | 拒绝流入的流量,除非与流出的流量相关;仅接受ssh连接 |
block 限制 | 拒绝流入的流量,除非与流出的流量相关;拒绝所有外部发起的连接,允许内部发起的连接 |
drop 丢弃 | 拒绝流入的流量,除非与流出的流量相关;丢弃所有进入的包,而不给出任何响应 |
yum install firewalld firewall-config -y
安装管理火墙的图形界面
firewall-config & 后台开启图形界面(需要在防火墙开启的情况下)
runtime临时修改,立即生效 permanent永久更改,重启生效
参数 | 作用 |
---|---|
–state | 查看防火墙状态,是否running |
–get-default-zone | 查询默认的区域名称 |
–set-default-zone=<区域名称> | 设置默认的区域,使其永久生效 |
–get-zones | 显示可用的区域 |
–get-services | 显示预先定义的服务 |
–get-active-zones | 显示当前正在使用的区域与网卡名称 |
–add-source=IP | 将源自此 IP 或子网的流量导向指定的区域 |
–remove-source=IP | 不再将源自此 IP 或子网的流量导向某个指定区域 |
–add-interface=<网卡名称> | 将源自该网卡的所有流量都导向某个指定区域 |
–change-interface=<网卡名称> | 将某个网卡与区域进行关联 |
–list-all | 显示当前区域的网卡配置参数、资源、端口以及服务等信息 |
–list-all-zones | 显示所有区域的网卡配置参数、资源、端口以及服务等信息 |
–add-service=<服务名> | 设置默认区域允许该服务的流量 |
–add-port=<端口号/协议> | 设置默认区域允许该端口的流量 |
–remove-service=<服务名> | 设置默认区域不再允许该服务的流量 |
–remove-port=<端口号/协议> | 设置默认区域不再允许该端口的流量 |
–reload | 刷新火墙配置(不中断不符合火墙要求但正在进行的操作) |
–complete-reload | 完全刷新火墙配置(终端修改后不符合的操作将会中断) |
firewall-cmd --add-source=172.25.254.100 --zone=trusted
--add-source 是数据包的属性,来自某网段的的主机(可以为某一网段或具体主机)
将172.25.254.200加入到trusted中
furewall-cmd --remove-source=172.25.254.200 --zone=trusted
firewall-cmd --list-interfaces
列出网络接口
firewall-cmd --get-zone-of-interface=eth0
列出接口所在区域
firewall-cmd --change-interface=eth0 --zone=trusted
修改接口所在区域
firewall-cmd --remove-interface=eth0 --zone=trusted
将接口从所在区域移除
firewall-cmd --add-interface=eth0 --zone=public
将接口添加到指定区域
####以上操作都是临时的,重启防火墙或者重新加载防火墙策略时将失效;要永久修改,加--permanent
firewall-cmd --reload
将IP为172.25.254.200的主机添加到trusted域中。
客户端主机IP:172.25.254.200 httpd服务进行测试。
下载文本形式的浏览器elinks进行访问:
执行 elinks http://172.25.254.100
用另外一台如172.25.254.61主机访问,访问不到
将172.25.254.200从trusted移除
对指定域的接口进行操作
firewall-cmd --add-service=http --zone=public
为指定区域添加服务
firewall-cmd --add-port=8080/tcp --zone=public
为指定区域添加端口
firewall-cmd --remove-service=http --zone=public
将服务从指定区域中移除
firewall-cmd --remove-port=8080/tcp --zone=public
将端口从指定区域中移除
以上操作是临时的,在重启防火墙,或者重新加载防火墙时将会失效
永久修改信息,在命令前添加 --permanent
防火墙的配置文件在/etc/firewalld/中,可通过直接修改配置文件来进行对防火墙的操作
vim /etc/firewalld/zones/public.xml public区域的配置文件
1
2
3 Public
4 For use in public areas. You do not trust the other
compu ters on networks to not harm your computer. Only selected
incoming conne ctions are accepted.
5
6
7 #添加 http 服务
8
将http 服务添加到 public 区域中,重新加载防火墙,或者重启防火墙后,
可通过 firewall-cmd --list-all --zone=public 进行查看
防火墙的属性信息在 /usr/lib/firewalld/中,火墙限制服务是通过端口来限制而不是服务本身,防火墙中添加服务;若是单纯修改服务端口号,就算允许服务,也无法进行操作。
查看 /usr/lib/firewalld/services/http.xml
内容如下:
1
2
3 WWW (HTTP)
4 HTTP is the protocol used to serve Web pages. If you
plan to make your Web server publicly available, enable this
option. This op tion is not required for viewing pages locally or
developing Web pages.< /description>
5 #端口号为 80
6
防火墙中规定以 http 服务来映射 80 端口 若是修改 http 服务的配置文件,将 http 的端口修改为
8080 重启httpd 服务后,将无法访问 httpd 服务。由此可知火墙限制服务是通过端口来限制而不是服务本身
防火墙策略增加80端口时,可以访问172.25.254.100主机
防火墙策略中移除80端口时,不可以访问
本机filter表(是否经过内核)的INPUT链中添加内容,允许172.25.254.200主机访问本机的80端口
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.200 -j ACCEPT
filter: iptables 的 filter 表
INPUT: INPUT 链
ipv4: 互联网协议
-p: 协议
-dport: 目的地端口
-s: 数据来源
-j: 参数 ACCEPT 允许 (必须大写)
REJECT 直接拒绝,有回应
DROP 直接丢弃,无回复
通过此操作,允许172.25.254.200 主机访问本机的 80 端口
设置前,由于防火墙的原因,172.25.2.54.200无法访问本机
操作后
可以172.25.254.200访问本机:
Rich Riles
firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.200
进行伪装,当通过22端口访问本机时,将请求转发到172.25.254.200主机上;
借本机的身份去访问172.25.254.200主机。
还要开启masquerade
ssh 访问172.25.254.100时,转发到访问172.25.254.61;输入的时172.25.254.61的用户密码。
通过对主机的防火墙进行配置,实现主机的路由功能
实际是客户端借防火墙主机身份去访问外界
客户端主机地址为 172.25.254.200 ,通过连接 ip 为 172.25.254.100 的主机进行不同网段的访问。
1.设定防火墙主机的一张网卡IP为172.25.254.100,另一张网卡 ip 为 192.168.10.11。开启防火墙主机的防火墙伪装功能,masqueade以及编辑配置文件,开启内核路由功能 。
2.设定客户端主机的IP为172.25.254.200,网关为防火墙主机的网卡 ip 172.25.254.100。
3.客户端主机 ping 192.168.10.11。