Linux中的火墙管理之Firewalld

########Firewall########
一.什么是火墙:
防火墙也称防护墙,是一种位于内部网络与外部网络之间的网络安全系统,是一项信息安全的防护系统,依照特定的规则,允许或是限制传输的数据通过
二.什么是网络区域:
通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。例如,互联网是不可信任的区域,而内部网络是高度信任的区域。网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化。该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。
三.Firewall所有域:

home(家庭) 用于家庭网络,仅接受dhcpv6-client,ipp-client,mdnssamba-client、ssh服务
internal(内部) 用于内部网络,仅接受dhcpv6-client、ipp-client、mdns、samba-client、ssh服务
public(公共) 用于公共区域使用,仅接受dhcpv6-client、ssh服务 (默认域)
trusted(信任) 接受所有网络连接
work(工作) 用于工作区,仅接受dhcpv6-client、ipp-client、ssh服务
block(限制) 拒绝所有网络连接
dmz(非军事区) 仅接受ssh服务连接
drop(丢弃) 任何接收的网络数据包都被丢弃,没有任何回复
external(外部) 出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接

四.通过命令配置火墙:
1.火墙信息的查看
(1)firewall-cmd --state ##查看火墙状态
在这里插入图片描述
(2)firewall-cmd --get-active-zones ##获得当前生效的域
在这里插入图片描述
(3)firewall-cmd --get-default-zone ##获得默认域
在这里插入图片描述
(4)firewall-cmd --list-all ##列出详细信息(这里列出的是默认域public的信息)
在这里插入图片描述
(5)firewall-cmd --zone=work --list-all ##列出work域的所有信息
在这里插入图片描述
2.通过火墙管理特定服务的访问控制
(1)firewall-cmd --permanent --add-service=http ##永久将http服务添加到默认域中,其他主机可以通过apache访问本机(默认情况下是不能访问的); firewall-cmd --reload ##重新加载策略(此命令必须执行)
在这里插入图片描述
<–permanent参数表示永久生效设置,设置后需要重新加载防火墙策略或重启火墙使它生效>
测试: 在5主机中通过火狐浏览器测试,发现可以访问
在这里插入图片描述
(2)firewall-cmd --permanent --remove-service=http ##永久移除http服务 ; firewall-cmd --reload ##重新刷新策略
在这里插入图片描述
测试:此时通过5主机测试,不能访问
在这里插入图片描述
(3)firewall-cmd --permanent --zone=trusted --add-source=172.25.254.5 ##将制定ip永久添加到trusted(信任)域当中 ; firewall-cmd --reload ##重新刷新策略
在这里插入图片描述
测试:5主机可以访问,也只有5主机能访问,因为之前我们已经将将http服务从默认域中永久移除掉了,我们只将5主机ip添加到trusted信任域中
在这里插入图片描述
(4)firewall-cmd --permanent --remove-source=172.25.254.5 --zone=trusted ##将指定ip来源从trusted域中永久移除,及不允许5主机访问了 ; firewall-cmd --reload ##重新刷新策略
在这里插入图片描述
测试:5主机不能访问
在这里插入图片描述
(5)firewall-cmd --zone=block --add-source=172.25.254.5 ##将指定ip来源添加到block域中,此域拒绝所有网络连接 ; firewall-cmd --reload ##重新加载火墙策略
在这里插入图片描述
测试:通过ping 172.25.254.105发现是不通的
在这里插入图片描述
(6).firewall-cmd --zone=block --remove-source=172.25.254.5 ##先将ip从block域中移除,才能将其加到其他域 ; firewall-cmd --zone=drop --add-source=172.25.254.5 ##将指定ip来源添加到drop域中 ; firewall-cmd --reload
在这里插入图片描述
测试:此时我们ping 172.25.254.105时也是不通的
在这里插入图片描述
注:(5)和(6)实验中block和drop两者都表示拒绝,但是却是有区别的,drop只是拒绝但不会给出回应,而block不仅拒绝还会给出回应的,所以企业当中一般使用block域来拒绝,防止某些客户无休止的访问
3.reload与complete-reload区别
firewall-cmd --reload ##只重新加载策略,不会讲正在连接的终端断开
firewall-cmd --complete-reload ##不仅重新加载策略,还会中断正在连接的终端
4.网络接口的管理
(1)firewall-cmd --list-all ##查看默认域的网络接口
在这里插入图片描述
<也可以通过firewall-cmd --get-zone-of-interface=eth0/eth1来查看eth0或eth1所在域>
(2)firewall-cmd --remove-interface=eth0 --zone=public ##将eth0网络接口从public域中移除
在这里插入图片描述
(3)firewall-cmd --add-interface=eth0 --zone=trusted ##移除后将eth0网络接口添加到trusted域中
在这里插入图片描述
(4)firewall-cmd --change-interface=eth0 --zone=public ##改变eth0的域为public(此时不用先将eth0从trusted移除)
在这里插入图片描述
五.其他方式管理火墙:
1.图形方式:
(1)firewall-config ##图形管理火墙
在这里插入图片描述
在其中我们想要添加哪个服务或者端口直接点击他就可以了,选择好后记得要选择options选项点击Reload Firewall重启火墙就可以了,比较方便
在这里插入图片描述
2.配置文件方式:
(1)vim /etc/firewalld/zones/public.xml ##火墙默认域的配置文件,写入内容如图,意思是添加http服务
在这里插入图片描述
<同样当我们想要添加来源时,我们可以写入<source address=“172.25.254.5”/即可>
(2)systemctl restart firewalld ##编辑玩配置文件后重启火墙服务,会看到添加服务成功
在这里插入图片描述
其实当我们用命令方式永久添加服务或来源时,其实就相当于在/etc/firewalld/zones/public.xml配置文件中写入相应内容,当命令方式添加成功并重新加载后,会在配置文件中自动写入相应内容
(3)当我们成功添加http服务后,其实会在/usr/firewalld/services/http.xml文件中自动写入端口号
在这里插入图片描述
所以我们也可以通过配置文件方式来给http服务添加端口,首先我们cd /usr/firewalld/services/进到该目录下然后cp http.xml http8080.xml拷贝文件模板,接着vim http8080.xml编辑文件,来添加8080端口
在这里插入图片描述
编辑完后重启火墙后,firewall-cmd --get-services查看所有支持的服务,添加成功
在这里插入图片描述
六.Direct Rules高级火墙策略规则:
1.添加与移除
(1)firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.5 -j ACCEPT ##允许5主机可以访问apache ; firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.5 -j ACCEPT ##允许5主机可以ssh连接
在这里插入图片描述
apache测试:5主机访问apache,此时可以访问
在这里插入图片描述
<参数含义: --direct ##规则
filter ##filter表
INPUT 1 ##第一条链
-p tcp ##tcp协议
–dport 80 ##端口号(http)
–dport 22 ##端口号(ssh)
-s ##指定ip
-j ##后跟执行的动作,ACCEPT为接受,REJECT为拒绝>

(2)firewall-cmd --direct --get-all-rules ##查看所有规则
在这里插入图片描述
(3)firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.5 -j ACCEPT ##移除 ; firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.5 -j ACCEPT ##移除 ; firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 172.25.254.5 -j REJECT ##拒绝ssh连接
在这里插入图片描述
在这里插入图片描述
<解释:此处通过火墙的高级策略规则设定,我们可以实现针对个人进行访问控制如ssh,即当我们想要单独拒绝某主机通过ssh连接时,我们就可以通过上面的命令单独拒绝它;而当我们想要单独允许某主机可以通过ssh连接时,我们可以将ssh服务从默认域public中移除,然后通过上述单独允许特定主机可以通过ssh连接>
2.端口转发(目的地址转换DNTA:路由之前)
(1)firewall-cmd --permanent --add-masquerade ##开启伪装功能 ; firewall-cmd --reload ##加载策略
在这里插入图片描述
在这里插入图片描述
(2)firewall-cmd --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.4 ##将22端口转到4号主机的22端口
在这里插入图片描述
<参数意义:
port=22 ##ssh服务端口号
toport=22 ##转向的端口号
toaddr=172.25.254.4 ##转向的主机ip地址>

(3)测试:我们用5号主机ssh 172.25.254.105时会自动跳转到4号主机上
在这里插入图片描述
(4)firewall-cmd --remove-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.4 ##移除端口转发
在这里插入图片描述
3.地址伪装(原地址转换SNTA:路由之后)
(1)服务端再添加一块网卡,设ip为1.1.1.105
在这里插入图片描述
修改完配置文件后记得systemctl restart network重启网络
(2)客户端设ip为1.1.1.205,添加网关1.1.1.105
在这里插入图片描述
修改完配置文件后记得systemctl restart network重启网络,重启后route -n查看网关是否添加上
在这里插入图片描述
(3)现在我们在客户端ssh [email protected]
在这里插入图片描述
(4)接着我们在5号主机w -i查看是谁通过ssh连接自己,此时我们会看到是172.25.254.105主机连接而不是1.1.1.205主机,这就达到一个地址伪装的效果
在这里插入图片描述
七.SNAT与DNAT简介:
DNAT(Destination Network Address Translation,目的地址转换) 通常被叫做目的映射
SNAT(Source Network Address Translation,源地址转换)通常被叫做源映射

DNAT与SNAT的区分:
内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部。
当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。

猜你喜欢

转载自blog.csdn.net/y_yang666/article/details/85052479
今日推荐