firewalld火墙
1.Firewalld概述
动态防火墙后台程序firewalld提供了一个动态管理的防火墙,用以支持网络“zones”,以分配对一个网络及相关链接和界面一定程度的信任。它具备对ipv4和ipv6防火墙设置的支持。他还支持以太网桥,并有分离运行时间和永久性配置选择。他还具备一个服务或者应用程序以直接增加防火墙规则的接口
系统提供了图像化的配置工具firewall-config,system-config-firewall,提供命令行客户端firewall-cmd,用于配置firewalld永久性或非永久性运行时间的改变:它依次用iptables工具与执行数据包筛选的内核中的 Netfilter通信
2.环境配置
配置一个双网卡的主机作为server服务端
eth0网卡设置ip为172.25.254.114
重启网络可以查看刚才设置的网卡信息
配置一个client客户端
此时ping 1.1.1.114可以
3.启用firewalld
如果未安装就先安装火墙
yum install -y firewalld firewall-config
查看firewalld状态
查看firewalld设置信息
关闭火墙后设置开机不自启,锁定firewalld服务
4.启动iptables
下载服务
开启服务并设置开机自启
如果锁定了iptables服务,就需要解锁服务后才能启动
systemctl umusk iptables
查看iptables服务
5.firewalld管理
先启动firewalld服务
查看firewalld信息
查看所有域
设置默认域为trusted
此时用别的主机连接
设置默认域为public,本来的默认域就为public
此时用别的主机连接114
域:
网络区名称 | 默认配置 |
---|---|
trusted(信任) | 可接受所有网络 |
home(家庭) | 用于家庭网络,仅接受ssh,mdns,ipp-client,samba-client,或dhcpv6-client服务链接 |
internal(内部) | 用于内部网络,仅接受ssh,mdns,ipp-client,samba-client,dhcpv6-client服务链接 |
work(工作) | 用于工作区,仅接受ssh,ipp-client或dhcpv6-client服务连接 |
public(公共) | 在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域 |
xternal(外部) | 出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接 |
dmz(非军事区) | 仅接受ssh服务连接 |
block(限制) | 拒绝所有网络连接 |
drop(丢弃) | 任何接收的网络数据包都被丢弃,没有任何回复 |
查看firewalld状态
查看活跃域
查看public域的信息
查看所有域的信息
查看firewalld的所有服务
在trustd域中添加172.25.254.14并查看
删除trustd域中的172.25.254.14并查看
重新设置默认域为public
从public中移除eth1端口,添加到trusted域中并查看
临时添加服务dns到默认域并查看
临时删除dns服务并查看
永久删除dns服务需要重新加载firewalld信息
完全重新加载firewalld信息,会终止一些进程,将设定的立即生效
临时移除3206端口并查看,永久设置加–permanent并重新加载firewalld信息
6.Direct Rules
通过firewalld-cmd工具,可以使用–direct选项在运行时间里增加或者移除链。如果不熟悉iptables,使用直接接口非常危险,可能无意间导致防火墙被入侵。直接端口模式适用于服务或者程序,以便在运行时间内增加特定的防火墙规则。直接端口模式添加的规则优先应用。
查看filter 表中的信息
只允许172.25.254.14使用ssh服务连接(22端口是ssh服务的端口)
其他主机连接会不成功
删除只允许172.25.254.14用ssh连接
连接测试成功
不允许172.25.254.14使用ssh服务连接
172.25.254.14无法连接
7.伪装和端口转发
在server服务机上
永久开启伪装功能并重新加载查看
在客户端client
修改全局网关为1.1.1.114
重启服务并查看网关设置
此时ping别的主机ip可以ping通
连接172.25.254.14可以连接成功
w -i #查看连接过的设备,看到172.25.254.114连接,其实是1.1.1.214连接
172.25.254.14主机反过去连接172.25.254.114就连接的是172.25.254.114主机,并不是1.1.1.214主机
为了解决连接错误的现象,我们需要对client客户端进行一些限制:
查看forward的权限,必须要使net.ipv4.ip_forward=1
设置谁连接你你回连的时候就看见谁,并不会出现以上连接错误的情况
其他主机重新连接