linux防火墙管理——firewalld

在linux中,firewalld并不具备防火墙功能,它的作用是管理和维护规则。

firewalld的基础设定

systemctl start firewalld			##开启
systemctl enabled firewalld			##设置开机自启
systemctl stop firewalld			##关闭
systemctl disable firewalld			##设置开机不自启
systemctl mask firewalld			##锁定
systemctl unmask firewalld			##解锁

这些命令用来设置firewalld开启关闭和是否自启动,如果将firewalld锁定了,那么需要先解锁才能开启。

firewalld域

网络区域名称 默认配置
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的默认区域
external(外部) 出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接
dmz(非军事区) 仅接受ssh服务连接
block(限制) 拒绝所有网络
drop(丢弃) 任何接受的网络数据包都被丢弃,没有任何回复

这些是firewalld的域,在不同的域开放不同的网络连接。

firewalld的常用管理命令

1.简单的查询命令

firewall-cmd --state			

在这里插入图片描述
查询服务是否开启

firewall-cmd --get-active-zones		

在这里插入图片描述
查看当前正在使用的域

firewall-cmd --get-default-zone		

在这里插入图片描述
查看当前默认域

firewall-cmd --get-zones

在这里插入图片描述
查看所有可用域

firewall-cmd --zone=pubic --list-all

在这里插入图片描述
查看public域的详细信息,使用这个命令同样可以查看其他域的详细信息

firewall-cmd --get-services

在这里插入图片描述
查看firewalld管理的服务有那些

firewall-cmd --list-all-zones	

在这里插入图片描述
查看所有域的信息

firewall-cmd --set-default-zone=dmz

在这里插入图片描述
设置默认域为work,使用这个命令可以改变默认域

2.管理命令

firewall-cmd --permanent --zone=trusted --add-source=172.25.254.31/24

给特定的主机开放特定的域。
在这里插入图片描述
在这里插入图片描述
设置默认域为drop,对172.25.254.31主机开放trusted域。

在这里插入图片描述
用这条命令就可以控制对其他主机访问时开放的域。

firewall-cmd --permanent --zone=trusted --add-source=172.25.254.31/24

在这里插入图片描述
删除对其他主机设定域的信息。

firewall-cmd --permanent --zone=internal --add-interface=eth0
firewall-cmd --reload

在网卡eth0中设置internal域。
在这里插入图片描述
设置成功,需要注意的是,这里用永久设置,重启服务之后是生效的,如果需要临时设置的话就不要permanent参数,设置之后立即生效,不过重启服务之后设定会还原。

firewall-cmd --permanent --zone=public --change-interface=eth0
firewall-cmd --reload 
systemctl restart firewalld

改变网卡eth0的域为public。
在这里插入图片描述
设置成功。

firewall-cmd --permanent --zone=public --remove-interface=eth0
firewall-cmd --reload 
systemctl restart firewalld

移除网卡eth0中的public域。

在这里插入图片描述
设置成功,此时所有的域都不生效了。
在这里插入图片描述
我们看到默认域public支持的服务有ssh。

 firewall-cmd --zone=public --remove-service=ssh

从public域中删除ssh服务
在这里插入图片描述
此时其他主机不能通过远程连接连接本机。

firewall-cmd --zone=public --add-service=ssh

添加ssh服务。
在这里插入图片描述
此时其他主机可以正常连接,使用这条命令可以控制允许那些服务,这里展示的是临时修改,如果要永久修改的话在前面加–permanent。

firewall-cmd  --zone=public --add-prot=80/tcp

给public域设置允许端口80,此时其他主机可以使用本机的80端口
在这里插入图片描述访问主机的测试页

firewall-cmd  --zone=public --remove-prot=80/tcp

删除设置的端口,删除之后将不能访问。

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.31 -j ACCEPT

这条命令是添加一个规则,允许172.25.254.31.主机使用22端口,而其他主机则按照默认规则。
在这里插入图片描述
首先我们测试这条命令之前,把ssh服务设置默认不允许,这样在测试的时候,只有这台特定的主机能使用ssh服务访问本机。
在这里插入图片描述
此时,默认使用ssh远程连接是连不上的。
在这里插入图片描述
执行命令之后,172.25.254.31这台主机使用ssh连接成功,
在这里插入图片描述
而其他主机走默认规则,连接失败

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 !-s 172.25.254.31 -j ACCEPT

如果命令在端口后添加一个!,则表示取反,也就是使这台特定的主机使用默认规则,其他主机使用设置的这条规则,这样做的效果是,172.25.254.31这台主机使用默认规则,不能使用22端口,其他主机可以。

firewall-cmd --direct --get-all-rules

在这里插入图片描述
查看设置的规则。

firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.31 -j ACCEPT

在这里插入图片描述
删除规则。

伪装和端口转发

1.打开firewalld伪装功能

sysctl -a | grep ip_forward

查看陆游功能是否打开,如果没有打开,则需要修改文件打开。

vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

在文件中加入这行内容打开陆游公功能。

 sysctl -p

更新文件信息。
这样陆游功能就打开了。

firewall-cmd --add-masquerade

之后就可以打开火墙伪装功能了。
2.端口转发

firewall-cmd  --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.131

在这里插入图片描述
所有通过22端口方法本机的设备,都去访问1.1.1.131这台主机的22端口,这就是端口转发。

猜你喜欢

转载自blog.csdn.net/qq_41961805/article/details/87911513