centos7_firewall

Posted liujunjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7_firewall相关的知识,希望对你有一定的参考价值。

CentOS7开始引入firewall服务,支持IPV4和IPV6并支持网桥。 使用firewall-cmd(command)和firewall-config(GUI)管理。

技术图片

上图显示出firewall与iptables的关联关系。 

IPTABLES和Firewalld区别

  • iptables 默认是允许所有,而firewalld默认是禁止所有
  • firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;

安装firewall

[root@localhost ~]# yum install firewalld -y
#安装firewalld service
[root@localhost ~]# yum install firewall-config
# 安装图形界面

[root@localhost ~]# systemctl start firewalld
[root@localhost ~]# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service

firewalld中常用的区域名称及策略规则

区域(zone) 默认规则策略
trusted 允许所有的数据包
home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
internal 等同于home区域
work 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block 拒绝流入的流量,除非与流出的流量相关
drop 拒绝流入的流量,除非与流出的流量相关

firewalld中的过滤规则

规则 描述
source 根据源地址过滤
interface 根据网卡过滤
service 根据服务名过滤
port 根据端口过滤
icmp-block icmp 报文过滤,按照 icmp 类型配置
masquerade ip 地址伪装
forward-port 端口转发
rule 自定义规则

其中,过滤规则的优先级别遵循如下顺序:1.source 2.interface 3firewalld.conf

 firewall-cmd命令中使用的参数以及作用

参数 作用
--get-default-zone 查询默认的区域名称
--set-default-zone=<区域名称> 设置默认的区域,使其永久生效
--get-zones 显示可用的区域
--get-services 显示预先定义的服务
--get-active-zones 显示当前正在使用的区域与网卡名称
--add-source= 将源自此IP或子网的流量导向指定的区域
--remove-source= 不再将源自此IP或子网的流量导向某个指定区域
--add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
--change-interface=<网卡名称> 将某个网卡与区域进行关联
--list-all 显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息
--add-service=<服务名> 设置默认区域允许该服务的流量
--add-port=<端口号/协议> 设置默认区域允许该端口的流量
--remove-service=<服务名> 设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
--reload 让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
--panic-on 开启应急状况模式
--panic-off 关闭应急状况模式

命令

1. 查看规则

[root@localhost ~]# firewall-cmd --state
running
# 查看运行状态
[root@localhost ~]# firewall-cmd --get-active-zones
public
  interfaces: ens33
#查看已被激活的 Zone 信息
[root@localhost ~]# firewall-cmd --list-all-zones
#查看所有zone
[root@localhost ~]# firewall-cmd --get-default-zone
public
#查看firewalld服务当前所使用的区域
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
public
#查看指定接口的 Zone 信息
[root@localhost ~]# firewall-cmd --zone=public --list-interfaces
ens33
#查看指定级别的接口
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
#查看指定级别的所有信息,譬如 public
[root@localhost ~]# firewall-cmd --get-service
#查看所有级别被允许的信息
[root@localhost ~]# firewall-cmd --get-service --permanent
#查看重启后所有 Zones 级别中被允许的服务,即永久放行的服务
[root@localhost ~]# firewall-cmd --version
0.6.3
查看版本
[root@localhost ~]# firewall-cmd --help
#查看帮助
[root@localhost ~]# firewall-cmd --zone=dmz --list-ports
# 列出 dmz 级别的被允许的进入端口
[root@localhost ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@localhost ~]# firewall-cmd --zone=public --query-service=https
no
# 查询public区域是否允许请求SSH和HTTPS协议的流量:

2.管理规则

# firewall-cmd --panic-on           # 丢弃
# firewall-cmd --panic-off          # 取消丢弃
# firewall-cmd --query-panic        # 查看丢弃状态
# firewall-cmd --reload             # 更新规则,不重启服务
# firewall-cmd --complete-reload    # 更新规则,重启服务

2.1 管理端口

列出 dmz 级别的被允许的进入端口

[root@localhost ~]# firewall-cmd --zone=dmz --list-ports
列出 dmz 级别的被允许的进入端口
[root@localhost ~]# firewall-cmd --zone=public --add-interface=eth0 --permanent
success
添加某接口至某信任等级,譬如添加 eth0 至 public,永久修改
[root@localhost ~]# firewall-cmd --set-default-zone=public
Warning: ZONE_ALREADY_SET: public
success
[root@localhost ~]# firewall-cmd --zone=dmz --add-port=8080/tcp
success
允许 tcp 端口 8080 至 dmz 级别
[root@localhost ~]# firewall-cmd --zone=public --add-port=5060-5059/udp --permanent
success

2.2 网卡接口

[root@localhost ~]# firewall-cmd --zone=work --add-service=smtp
success
添加 smtp 服务至 work zone
[root@localhost ~]#  firewall-cmd --zone=work --remove-service=smtp
success
移除 work zone 中的 smtp 服务

启用区域中的一种服务

firewall-cmd [--zone=<zone>] --add-service=<service> [--timeout=<seconds>]

以上是关于centos7_firewall的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数