Linux系统之firewalld

一、firewalld的认识

1、firewalld提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。

     2、firewalld将网卡分为不同的区域,这些区域的区别在于对待来访的用户及传输的数据包的默认动作的不同,通过制定一些安全策略从而保证系统在被访问或传输数据时的安全。

二、firewalld区域(zones)

      firewalld分为九个区域,含义如下:

      ·trust(信任):可接受所有的网络连接;

      ·home(家庭):用于家庭网络,仅接受ssh、mdns、ipp-client、samba-client或dhcpv6-client服务连接;

      ·internal(内部):用于内部网络,仅接受ssh、ipp-client、mdns、samba-client或dhcpv6-client服务连接;

      ·work(工作区):用于工作区,仅接受ssh、ipp-client、dhcpv6-client服务连接;

      ·public(公共):用于公共区域的使用,仅接受ssh、dhcpv6-client服务,为firewalld的默认区域;

      ·external(外部区域):出去的ipv4的网络连接经过此区域的伪装和转发,只支持ssh服务;

         ·dmz(非军事区):仅接受ssh服务;

 ·block(限制):拒绝所有的网络服务;

·drop(丢弃):任何访问的网络数据包都会被丢弃,没有任何回应。

三、firewalld的控制命令

1、firewalld图形管理工具:firewall-config

Linux系统之firewalldLinux系统之firewalld

如上左图显示的是firewalld的九个区域,右边是各区域内对各个服务的限制;

如上右图是所做设定的生效时间,runtime表示立即生效,但重新启动或加载服务后设定消失;permanent是永久设定生效,设定后需要重启服务!!!

临时设定:

Linux系统之firewalld

临时设定即勾选该服务后立即将该服务添加到所对应的区域内,但重启服务后设定消失:

Linux系统之firewalld

永久设定:

Linux系统之firewalld

永久设定时勾选后并不能立即生效,必须重启服务才能生效:

Linux系统之firewalld

2、firewalld控制命令:

firewall-cmd --list-all:查看默认区域的设定信息

Linux系统之firewalld

firewall-cmd --state:查看firewalld的状态

Linux系统之firewalld

firewall-cmd --get-active-zones:查看被**的空间(即添加网卡的空间)

Linux系统之firewalld

firewall-cmd --get-default-zone:查看当前默认空间

Linux系统之firewalld

firewall-cmd --get-zones:查看firewalld所有的空间

Linux系统之firewalld

firewall-cmd --zone=public --list-all:查看指定空间的信息

Linux系统之firewalld

firewall-cmd --get-services:查看可通过firewalld进行设定的系统中的服务

Linux系统之firewalld

firewall-cmd --llist-all-zones:查看所有空间的所有设定

Linux系统之firewalldLinux系统之firewalldLinux系统之firewalld

Linux系统之firewalldLinux系统之firewalld

firewall-cmd --set-default-zone=空间名:设定默认空间

Linux系统之firewalld

firewalld策略的设定

1、firewall-cmd --add-source=172.25.254.25 --zone=trusted:设定某个主机通过某个空间访问该主机

Linux系统之firewalld

上图将ip为172.25.254.25的主机设置为通过trusted区域连接该主机,该区域支持所有服务(包括ssh)

Linux系统之firewalld

2、firewall-cmd --remove-source=172.25.254.25 --zone=trusted:取消设定某个主机通过某个区域访问该主机

Linux系统之firewalld

Linux系统之firewalld

3firewall-cmd --zone=publice --add-service=http:给某个空间添加某个服务

Linux系统之firewalld

4、firewall-cmd --zone=public --remove-service=http:将某个空间的某个服务移除

Linux系统之firewalld

5、firewall-cmd --zone=public --add-port=80/tcp :给某个空间添加一个端口

Linux系统之firewalld

  上图给公共区域添加了一个80端口,该端口为http服务端口,则其他主机可通过http访问该主机:

Linux系统之firewalld

6、firewall-cmd --zone=public --remove-port=80/tcp:关闭某空间上开放的某个端口

Linux系统之firewalld

公共区域的80端口关闭后则无法通过http进行访问:

Linux系统之firewalld

linux中想要保证主机的绝对安全时光以上的策略是远远不够的,还需要一些设定更为复杂、更加具体、更加安全的设定,即直接选项!!

Linux系统之firewalld

该条设定中各个参数的含义:

--direct:表示该设定为直接选项

--add-rule:表示添加一个新的策略

filter:firewalld将策略全部以表格的形式存放,当接收数据包时按列表读取策略以获取对该数据包的动作,而filter便是firewalld表格中的一个;

INPUT:在各个表格中又有链接,即chains,INPUT是filter表格的一个链接

1:表示将该策略写在第一行;

-s:表示对哪个主机进行设定的参数,其后跟主机IP

-p:表示访问的协议设定;

--dport :表示针对于哪个接口的设定

-j:表示设定策略的动作,REJECT表示拒绝,ACCEPT表示接受,DROP表示丢弃

由于该条设定表示拒绝IP为172.25.254.25的主机访问22端口(即ssh服务),所以172.25.254.25主机无法ssh远程连接该主机

Linux系统之firewalld

查看所有直接选项的策略:

Linux系统之firewalld

删除该条策略:

Linux系统之firewalld

Linux系统之firewalld

打开firewalld的伪装:

Linux系统之firewalld

访问地址的转发设定:即当其他主机通过某个端口访问该主机时,将其转移至其他主机上!!

Linux系统之firewalld

策略表示当其他主机通过22端口访问本主机时,让他们去访问IP为172.25.254.225的主机

为了更加明显的显示该策略的作用,先在172.25.254.225的主机上建立一个辨识文件

Linux系统之firewalld

然后再通过其他主机访问本主机:

Linux系统之firewalld

某个空间添加一个网卡:

Linux系统之firewalld

表示其他主机通过该网卡上的IP访问该主机时,通过该区域访问:

Linux系统之firewalld

测试:通过172.25.25.225ip访问时被拒绝

Linux系统之firewalld