计算机网络/计算机科学与应用/系统/运维/开发

详解firewalld防火墙

一、什么是防火墙

防范一些网络攻击,有软件防火墙,硬件防火墙之分

传统的防火墙规则:

拒绝所有端口访问

允许部分端口访问


二、Linux中的防火墙分类

CentOS5/6 防火墙 iptables防火墙

CentOS7 防火墙 firewalld 防火墙


三、firewalld防火墙

firewalld 增加了区域zone概念,区域是指预先准备了几套防火墙策略的集合

用户可以根据需求选择

--------------------------------------

区域    默认策略

trusted 允许所有数据包

home    拒绝流入的流量,除非与流出的流量相关,允许ssh,mdns,ippclient,amba-client,dhcpv6-client服务通过internal 等同于home

work    拒绝流入的流量,除非与流出的流量相关,允许ssh,ipp-client,dhcpv6-client服务通过

public  拒绝流入的流量,除非与流出的流量相关,允许ssh,dhcpv6-client服务通过

external    拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过

dmz         拒绝流入的流量,除非与流出的流量相关,允许ssh服务通过

block       拒绝流入的流量,除非与流出的流量相关,非法流量采取拒绝操作

drop        拒绝流入的流量,除非与流出的流量相关,非法流量采取丢弃操作

--------------------------------------

linux系统中的httpd服务 占用计算机的80端口

# yum install httpd -y
# systemctl start httpd


安装完成后,在浏览器中,输入http://服务器ip地址进行访问


运行模式和永久模式:

运行模式:配置的防火墙策略立即生效,但是不写入配置文件

永久模式:配置到防火墙策略写入配置文件,但是需要reload重载才能生效

默认采用运行模式


四、firewalld查看停止与启动操作

1、查看、开启、停止firewalld防火墙

# systemctl status firewalld
# systemctl start  firewalld


在生产环境下,不要随便停止防火墙,非常危险

# systemctl stop firewalld


防火墙一旦停止,设置的全部规则全部失效


2、重启、重载firewalld防火墙

# systemctl restart firewalld


重载操作:对防火墙配置文件作了更改,需要立即生效,并没有停止防火墙

# systemctl reload firewalld


3、开机自启与开机不自启

# systemctl enable firewalld
# systemctl disable firewalld


五、firewalld防火墙规则

1、firewalld管理工具

firewall-cmd 命令,管理firewall具体配置


语法:

firewall-cmd [选项1] [选项2] [...N]


选项:

** firewall-cmd + 2次tab键


** 查看防火墙默认区域

[root@c7 ~]# firewall-cmd --get-default-zone
public


** 查看所有可用区域

[root@c7 ~]# firewall-cmd --get-zones 
block dmz drop external home internal public trusted work


2、为什么有区域的概念

不同的区域就是不同的规则


3、查看当前区域的规则设置

[root@c7 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client ssh
  ports: 22/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:


4、查看默认的防火墙区域

[root@c7 ~]# firewall-cmd --get-default-zone
public


5、查看所有区域规则的设置

[root@c7 ~]# firewall-cmd --list-all-zones


6、添加允许通过的服务或端口 (重点)

方式1:通过服务的名称添加规则

firewall-cmd --zone=public --add-port=服务名称


例如:把http服务添加到防火墙规则中,允许通过防火墙

[root@c7 ~]# firewall-cmd --zone=public --add-service=http
success
[root@c7 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client http ssh
  ports: 22/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:


服务名称必须存在/usr/lib/firewalld/servcies目录中


扩展:把http服务从防火墙规则中移除,不允许其通过防火墙

firewall-cmd --zone=public --remove-service=服务的名称

[root@c7 ~]# firewall-cmd --zone=public --remove-service=http

success


方式2:通过服务的端口号添加规则

firewall-cmd --zone=public --add-port=端口号/tcp


案例:把80/tcp添加到防火墙规则中,允许通过防火墙

# firewall-cmd --zone=public --add-port=80/tcp


案例:从firewalld防火墙中吧80端口的规则移除掉

# firewall-cmd --zone=public --remove-port=80/tcp


7、防火墙规则(永久模式) permanent

在linux的新版防火墙firewalld中,模式分为2大类:

运行模式(临时模式)+永久模式


运行模式:不会把规则保存到防火墙的配置文件中,设置完成后立即生效

永久模式:会把规则写入防火墙的配置文件中,但是需要reload重载配置文件后生效


** 根据服务名称添加规则(永久)

firewall-cmd --zone=public --add-service=服务名称 --permanent

firewall-cmd --reload


** 根据端口号添加规则(永久)

firewall-cmd --zone=public --add-port=服务占用的端口号 --permanent

firewall-cmd --reload


案例:把80端口添加到firewalld防火墙规则中,要求永久生效

[root@c7 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
success


[root@c7 ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client ssh
  ports: 22/tcp 80/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:



照顾好自己,如果尚有余力,记得保护美好的东西,不畏不惧赤诚善良。

评论

^