firewalld的管理

防火墙的概念
防火墙是指设置在不同网络之间,比如可信任的内部网和不可信的公共网,或者不同网络安全域之间的软硬件系统组合。它可通过检测、限制、更改跨越防火墙的数据流,尽可能地对外部屏蔽网络内部的信息、结构和运行状况,以此来保护企业内部网络的安全。防火墙是企业网络安全的屏障,它可以强化网络安全策略,对网络访问和内部资源使用进行监控审计,防止敏感信息的泄露。通常防火墙是由专门的硬件和软件来实现的,它的作用就像是门卫一样,管理进出的人员,防止可疑人员出入

 

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

防火墙是安装在内核上的插件,而firewalld和iptables都是在防火墙上配置安全策略的软件。而真正使用规则的是内核的netfilte

•系统提供了三种配置方法

(1)图像化的配置工具 firewall-config (2) 命令行工具 firewall-cmd (3)直接编辑xml文件

fierwalld和iptables的区别

firewalld的默认区域是public,firewalld默认提供了九个zone配置文件,它们都是xml(可扩展性标志性语言)格式的,用来作数据封装,都保存在“/usr/lib/firewalld/zones/”目录下,所以使用firewalld来配置策略,有三种方法,一种使用图形化的管理,一种使用firewall-cmd方法,还可以直接修改zone文件。
 

• firewalld 和 iptables service 之间最本质的不同是 : 
• iptables service 在 /etc/sysconfig/iptables 中储存配置 
• firewalld 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里

firewalld和iptables的比较: 
在RHEL7系统中,默认使用firewalld来管理子系统,但底层调用的命令仍然是iptables。 
firewalld跟iptables比较起来至少有两大好处: 
1. firewalld可以动态修改单条规则 
2. firewalld在使用上比iptables便利很多,即使不清楚TCP/IP协议也可以实现大部分的功能。

但是firewalld每个服务都需要配置才能通过,因为默认全部都是拒绝,而iptables默认全部是允许,需要拒绝的才会去限制。

防火墙实际就是三张表五条链 
三张表: 
fileter ##不经过内核的链组成 
nat ##经过内核的链组成 
mangle ##附加表 
五条链: 
INPUT ##输入 
OUTPUT ##输出 
FORWARD ##通过 
PREROUTING ##目的地地址伪装 
POSTROUTING ##源地址伪装

firewalld的管理方式

firewall-cmd --state                                    //查看状态
firewall-cmd --get-active-zones                 //查看当前生效的域
firewall-cmd --get-default-zone                  //查看火墙默认生效的域
firewall-cmd --get-zones                            //查看所有的域
firewall-cmd  --list-all                                  //查看public的域的信息  ,默认的是public的域
firewall-cmd --get-services                         //列出系统中用名称表示的服务
firewall-cmd --list-all-zones                         //所有域的状态
firewall-cmd --list-all                                    //列出所有域的规则
firewall-cmd --set-default-zone=trusted      //修改默认的为trusted域
firewall-cmd --reload                                   //更新防火墙规则
firewall-cmd --complete-reload  
######它与--reload的区别就是第一个无需断开连接,第二个需要断开连接,类似重启服务
firewall-cmd -get-zone-of-interface=eth0                         //查看eth0的域
firewall-cmd --change-interface=eth0 --zone=trusted      //改变eth0的域
firewall-cmd --remove-interface=eth0 --zone=trused       //移除
firewall-cmd --add-source=ip                                            //临时添加一个ip源
firewall-cmd --permanent --add-source=ip                        //永久添加一个ip源
firewall-cmd --add-port=8080/tcp --zone=public               //添加一个端口8080

firewalld显示的zone(域)

ROL 表示主机ip

firewalld-cmd  --state    //显示防火墙的状态

firewall-cmd  --get-default-zone  //显示防火墙默认生效的域

firewall-cmd --get-active-zones   //显示防火墙目前生效的域

firewall-cmd --get-zone        //显示防火墙所有的域

firewall-cmd --get-services   //显示防火墙中可以添加的服务

firewall-cmd  --list-all       //查看public的域的信息 ,默认的是public的域

firrewall-cmd --zone=work  --list-all   //查看work域的所有信息,可以用这条命令查看所有域的信息

firewall-cmd --permanent --add-service=http   //给防火墙添加http服务,-permanent表示永久添加,如果不加此条参数时

,当防火墙重启后,http服务就没有了

此时在浏览器中输入ip地址就可以进行访问了,防火墙允许进行http访问

firewall-cmd --permanent --remove-service= http   //移除http服务   此时浏览器就不能进行访问了

firewall-cmd  --permanent --zone=trusted --add-source=172.25.254.60 //将ip为172.25.254.60的主机设置成trusted,允许该主机进行任何操作。

拿http服务进行检测,此时防火墙是没有添加http服务的,但是主机ip为172.25.254.60的主机依旧可以进行访问

firewall-cmd  --permanent --zone=trusted --remove-source=172.25.254.60 //移除主机ip为172.25.2554.60

此时浏览器就无法进行访问了

firewall-cmd  --permanent --zone=block --add-source=172.25.254.60  //限制172.25.254.60主机进行访问

此时是ping不通的,但是有回应

firewall-cmd  --permanent --zone=drop --add-source=172.25.254.60   //直接丢弃掉172.25.254.60的访问要求

如果是浏览器进行访问时,上面就一直显示正在连接,一直转,也不告诉你到底能不能连接

firewall-cmd -get-zone-of-interface=eth0                         //查看eth0的域
firewall-cmd --change-interface=eth0 --zone=trusted      //改变eth0的域
firewall-cmd --remove-interface=eth0 --zone=trused       //移除

查看firewalld在系统中的文件,如果用命令添加一个服务,在文件中也会被写上,例如dhcp服务

文件修改方式将http设置允许穿过火墙

[root@client ~]# cd /etc/firewalld/zones
[root@client zones]# vim public.xml 
                    <service name="http"/>
[root@client zones]# vim /usr/lib/firewalld/http.xml
                    <port protocol="tcp" port="8080"/>   //修改端口为8080
[root@client zones]# systemctl restart firewalld
[root@client zones]# firewall-cmd --list-all  //设置允许http穿过火墙成功
[root@client ~]# firewall-cmd --add-port=8080/tcp --zone=public
[root@client ~]# firewall-cmd --list-all

地址伪装

首先,在这台虚拟机(server)添加第二块网卡eth1

[root@server ~]# cd /etc/sysconfig/network-scripts/
[root@server ~]# cp ifcfg-eth0 ifcfg-eth1

                   cp: overwrite ‘ifcfg-eth1’? y
[root@server ~]# vim ifcfg-eth1


[root@server ~]# systemctl restart network
[root@server ~]# ifconfig    //此时server主机上有两块网卡,相当于一个路由器

===============================================================

[root@client network-scripts]# sysctl -a | grep ip_forward  
                 net.ipv4.ip_forward = 0
[root@client network-scripts]# vim /etc/sysctl.conf            //在真机上写就可以让server主机上网,在server虚拟机上写,desktop                                                                                               主机可以上网,写在你网关的主机上
                net.ipv4.ip_forward = 1  //在末尾添加这一行;
[root@client network-scripts]# sysctl -p         ##启动
                 net.ipv4.ip_forward = 1
================================================================

将server主机的路由功能打开

//desktop(单网卡主机)
[root@desktop ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0   ##更改IP为1.1.1.241,网关设置成双网卡主机的eth1网卡的ip


[root@desktop ~]# systemctl restart network  ##重启网络
[root@desktop ~]# ifconfig  //查看ip是否更改

[root@desktop ~]# route -n //查看网关

[root@desktop ~]# ping 172.25.254.140 ##可以ping通

[root@desktop]# ssh [email protected] ##也可以连接

1.1.1.241和172.25.254.140因为不在一个网段里,网络是不能连通,这里为什么可以利用ssh服务可以连接呢?实际上是172.25.254.141登陆172.25.254.140,而不是1.1.1.241登陆172.25.254.140;这里也就完成了地址伪装。 
当然,我们可以在172.25.254.140主机上利用w -i 查询真正登陆的ip; 

 

跳转端口

[root@server ~]# firewall-cmd --permanent  --add-masquerade success
[root@server ~]# firewall-cmd --reload
success
[root@server ~]# firewall-cmd --permanent --add-forward-port=port=22:proto=tcp:toport=22:toaddr=172.25.254.60
//ssh 的端口是 22;当ssh链接到172.25.254.160将会跳转到IP为172.25.254.60的主机
[root@server ~]# firewall-cmd --reload success

[root@server ~]# firewall-cmd --list-all 

当我们闲置的虚拟机(desktop)中打开一个shell窗口,利用ssh服务连接172.25.254.160这台主机,会发现这台主机将会自动跳转到172.25.254.60

用 firewall-cmd --permanent --remove-forwardport=port=22:proto=tcp:toport=22:toaddr=172.25.254.60//删除

猜你喜欢

转载自blog.csdn.net/yinzhen_boke_0321/article/details/85105759
今日推荐