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的主要内容,如果未能解决你的问题,请参考以下文章