Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)

firewalld 概述

动态防火墙后台程序firewalld提供了一个动态管理的防火墙,用以支持网络“zones“以分配对一个网络及其相关链接和界面一定程序的新人。具备对IPV4和IPV6防火墙设置的支持。它支持以太网桥,并有分离运行时间和永久性配置选择。它还具备一个通向服务或者应用程序以直接增加防火墙规则的接口。

配置防火墙相关参数

使用图形方式进行添加

firewall-config    ##打开火墙的配置

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第1张图片
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第2张图片
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第3张图片
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第4张图片
使用命令行的方式进行添加
1.

firewall-cmd --state    ##查看火墙运行状态

在这里插入图片描述
2.

firewall-cmd --get-active-zones     ##查看当前火墙活动的域

在这里插入图片描述
3.

firewall-cmd  --get-default-zone  ##查看火墙当前默认域

在这里插入图片描述
4.

firewall-cmd --zone=public --list-all   ##查看public域的所有相关信息

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第5张图片
5.

firewall-cmd --get-services  ##火墙可以直接设置状态的服务

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第6张图片
firewall-cmd --get-service为什么这些服务可以被火墙识别?
原因是firewalld将配置存储在/usr/lib/firewalld/目录中的XML文件中

firewall-cmd --get-service   ##此时状态中没有iscsi服务
cd /usr/lib/firewalld/
ls  ##查看文件是否出现iscsi服务

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第7张图片
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第8张图片

cp -p  http.xml iscsi.xml
vim iscsi.xml   ##进行更改后保存

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第9张图片
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第10张图片
测试

firewall-cmd --get-service  ##出现

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第11张图片
6.

firewall-cmd --list-all-zones ##列出火墙所有域

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第12张图片
7.

firewall-cmd --set-default-zone=block  ##设置火墙默认状态为dmz

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第13张图片
8.

firewall-cmd -reload   ##刷新当前火墙状态
firewall-cmd --complete-reload   ##刷新当前火墙状态并中断当前主机的连接,重新年尝试火墙允许的服务

以ssh服务为例子

在另一台主机上连接本台主机(ssh)
firewall-cmd --permanent --remove-service=ssh
firewall-cmd --reload    ##sshd服务依然正常

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第14张图片
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第15张图片
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第16张图片

firewall-cmd --complete-reload   ##sshd服务中断
firewall-cmd --permanent --add-service=http 
firewall-cmd --reload

进行firewall-cmd --permanent --add-service=http其实就是在/etc/firewalld/中添加http.xml文件

firewall-cmd --list-all ##此时火墙不允许httpd服务

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第17张图片
下面这一步操作等同于执行firewall-cmd --permanent --add-service=http

cd /etc/firewalld/  
cd zones
vim public.xml

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第18张图片
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第19张图片
所以还需要reload

firewall-cmd --reload
firewall-cmd --list-all   ##火墙允许http服务

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第20张图片

firewalld的三张表

filter:经过本机内核的数据
input output forward
nat:不经过内核
input output 与内核无关
postrouting :路由之后(源地址转换SNAT)
prerouting :路由之前
mangle:附加表
在filter和nat不够用的时候使用mangle

direct rules

通过firewall-cmd工具,可以使用–direct 选项在运行时间里面增加或者移除链。直接端口模式添加的规则优先应用。

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 172.25.254.204  -p tcp -dport 80 -j REJECT/ACCEP/DROP   ##拒绝,接受,丢弃 特定的某台主机访问无法进入连接

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第21张图片
操作:
1.拒绝客户机172.25.254.204连接,在输入时就拒绝。如果是添加相应服务的白名单和黑名单信息,是在客户已经进入服务之后,才中断。

firewall-cmd --permanent --direct  --add-rule ipv4 filter INPUT 1 -s 172.25.254.204 -p tcp --dport 80 -j REJECT  
firewall-cmd --reload

##最好使用REJECT动作,REJECT动作客户在尝试连接时会有回显报错,但是丢弃动作没有回显,客户无法判定是否连接成功,会不断进行尝试。

测试
在客户机器IP为172.25.254.4的主机的浏览器中输入http://172.25.254.104会被拒绝
在客户机器IP为192.168.0.204的主机的浏览器中输入http://172.25.254.104能正常连接到http服务
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第22张图片
测试完成后移除这个设置
将其改为ACCEPT不会生效,原因是因为此时添加的ACCEPT命令并不会被读取到,在读到REJECT之后就不读取了

firewall-cmd --permanent --direct  --add-rule ipv4 filter INPUT 1 -s 172.25.254.204 -p tcp --dport 80 -j ACCPET 
firewall-cmd --reload

有效的移除方式

firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -s 172.25.254.4 -p tcp --dport 80 -j REJECT 

在客户机器IP为172.25.254.4的主机的浏览器中输入http://172.25.254.104正常连接则说明移除成功
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第23张图片

端口转发

在进行这个实验时,需要配置
双网卡主机(desktop)作为服务端:172.25.254.104 192.168.0.104打开虚拟机管理器配置双网卡,详细请参见《linux下的虚拟机管理》
客户端(server)主机一个为192.168.0.104
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第24张图片
————————————————————————————
端口转发:当客户访问某个网站,而这个网站由多个服务器支持,如果大量用户同时访问一个服务器,那么这个服务器会不堪重负,而且会影响用户浏览网页的体验。所以我们将访问压力由一个端口转发给多个服务器,实现流量均衡。(在INPUT的位置)
(1)服务端(双网卡主机)开启地址伪装

firewall-cmd --permanent --add-masqurad  ##添加地址伪装
firewall-cmd --reload  
firewal-cmd --list-all  ##确认地址伪装开启

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第25张图片

(2)在服务端上添加端口转发策略

firewall-cmd --add-forward-port=port=22:proto=tcp:toport22:toaddr=172.25.254.65   ##将22端口的服务转发到172.25.254.65这台主机上
firewall-cmd --list-all    ##查看策略是否添加成功

(3)测试
让客户端(单网卡)主机远程连接172.25.254.104

ssh   [email protected] 

连接成功之后,ifconfig,查看IP实际上连接的是172.25.254.65这台主机上,则说明端口转发成功
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第26张图片
将端口转发策略删除(在服务端)

firewall-cmd --remove-forward-port=port=22:proto=tcp:toport22:toaddr=172.25.254.4

firewalld的地址伪装

通过地址伪装,NAT设备将经过设备的包转发到指定的接收方,同时将通过的数据包源地址更改为其NAT设备自己的接口地址。当返回的数据包到达时,会将目的地址修改为源是主机的地址并做路由。地址伪装可以实现局域网多个地址共享单一公网地址上网。
IP地址伪装仅支持IPV4,不支持IPV6
要用server(客户端IP 192.168.0.204)ping虚拟机(IP 172.25.254.104),发现ping不同,原因是两个IP不在一个网段,因此不通
这个时候就需要用到地址伪装

(1)服务端(双网卡)主机开启地址伪装

firewall-cmd --permanent --add-masqurad  ##添加地址伪装
firewall-cmd --reload  
firewal-cmd --list-all  ##确认地址伪装开启

(2)在客户端(单网卡)添加网关

vim /etc/sysconfig/network-scipts/ifcfg-eth0 
在文件中添加
GATEWAY=192.168.0.104   
##网关应该和服务端中的192.168.0.104 IP一致(这样才能验证地址伪装,如果直接添加172.25.254.4为网关,则无法验证了)
systemtl restart network  
route -n   ##查看网关是否设定完成

在这里插入图片描述
测试(在IP为192.168.0.204客户端上)

ping 172.25.254.4 ##ping 通则说明成功

Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第27张图片
客户端

ssh [email protected],登录成功后
w -i    

发现虽然是在172.25.254.204这台主机上远程连接172.25.254.4,但是实际上识别的却是172.25.254.104这台主机连接的。这就是地址伪装所达到的效果。
Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装)_第28张图片

你可能感兴趣的:(Linux系统的firewall(配置火墙相关参数,firewalld“三表五链“、端口转发、地址伪装))