Firewalld简介与参数
firewall常用命令及作用
systemctl start firewalld.service # 开启防火墙
systemctl stop firewalld.service # 关闭防火墙
systemctl status firewalld.service # 查看防火墙状态
systemctl enable firewalld.service # 开机自启
systemctl disable firewalld.service # 永久关闭防火墙
firewall-cmd --version # 查看防火墙版本
0.8.0
查看防火墙开放的端口号
firewall-cmd --list-ports
3306/tcp
firewall-cmd --permanent --zone=public --list-ports
3306/tcp
查看防火墙是否开放了某一端口号
firewall-cmd --get-zones # 查看有哪些区域
block dmz drop external home internal public trusted work
firewall-cmd --zone=public --query-port=3306/tcp # zone表示区域,public是公共的意思,而区域默认是上面的九个区域,--query-port表示查看3306端口号以及tcp协议是否支持
yes # yes表示开放,若是no的话就表示没有开放
九个区域的介绍
| 网络区名称 | 默认配置 |
|---|---|
| block(限制) | 拒绝所有网络连接 |
| dmz(非军事区,隔离区) | 仅接受ssh服务连接,此区域内可公开访问,它是非安全系统与安全系统之间的缓冲区。 |
| drop(丢弃) | 任何接收的网络数据包都被丢弃,没有任何回复 |
| external(外部) | 出去的ipv4网络连接通过此区域伪装和转发,仅接受ssh服务连接 |
| home(家庭) | 用于家庭网络,仅接受ssh、mdns、ipp-client、samba-client、dhcpv6-client服务连接 |
| internal(内部) | 用于内部网络,仅接受ssh、mdns、ipp-client、ssamba-client、dhcpv6-client服务连接 |
| public(公共) | 在公共区域内使用,仅接受ssh或dhcpv6-client服务连接,为firewalld的默认区域 |
| trusted(信任) | 接收的外部网络连接是可信任、可接受的。 |
| work(工作) | 用于工作区,仅接受ssh、ipp-client或dhcpv6-clinet服务连接 |
firewall-cmd --get-default-zone # 查看默认区域
public
firewall-cmd --set-default-zone=work # 修改默认区域为work
firewall-cmd --list-all-zones # 列出所有区域配置
firewall-cmd --get-active-zones # 列出活动区域
public
interfaces: ens160
# Interfaces (接口)是系统中的硬件和虚拟的网络适配器的名字,所有的活动的接口都将被分配到区域,要么是默认的区域,要么是用户指定的一个区域。但是,一个接口不能被分配给多于一个的区域。
查看一个区域的配置信息
[root@localhost ~]# firewall-cmd --zone=public --list-all
public (active) # 活动的区域
target: default # 默认启动的区域
icmp-block-inversion: no
interfaces: ens160 # 列出此区域上关联的接口
sources: # 列出这个区域的源。现在这里什么都没有,如果这里有内容,它们应该是这样的格式
services: cockpit dhcpv6-client ssh # 列出允许通过这个防火墙的服务。你可以通过运行 firewall-cmd --get-services 得到一个防火墙预定义服务的详细列表
ports: 3306/tcp # 列出允许通过这个防火墙的目标端口
protocols: # 协议值可以是一个协议 ID 数字,或者一个协议名
masquerade: no # 表示这个区域是否允许 IP 伪装。如果允许,它将允许 IP 转发,它可以让你的计算机作为一个路由器。
forward-ports: # 列出转发的端口
source-ports:
icmp-blocks: # 阻塞的 icmp 流量的黑名单
rich rules: # 在一个区域中优先处理的高级配置。
基本使用
对外开放指定的端口号
firewall-cmd --add-port=3306/tcp --permanent # 这里写要添加的端口号/协议,--permanent为永久生效,如果不写,重启之后就会失效。
firewall-cmd --reload # 开放之后需要使用下面的命令重新加载使其立即生效
firewall-cmd --query-service ftp # 查看ftp服务是否支持
no
firewall-cmd --add-service=ftp --permanent # 永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent # 永久移除ftp服务
firewall-cmd --panic-on # 拒绝所有包
firewall-cmd --panic-off # 取消拒绝状态
firewall-cmd --query-panic # 查看是否拒绝
firewall-cmd --remove-port=3306/tcp --permanent # 删除加入的3306防火墙规则
success
firewall-cmd --reload
success
firewall-cmd --list-all # 查看防火墙规则
firewall-cmd --query-port=3306/tcp # 查询端口是否开放,删除成功
no
firewall-cmd --get-zone-of-interface=ens160 # 查看指定接口所属区域
public
# 伪装IP
firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --permanent --add-masquerade # 允许防火墙伪装IP
firewall-cmd --permanent --remove-masquerade # 禁止防火墙伪装IP
# 将服务器的6666端口号转发到另一个服务器的8888端口号
firewall-cmd --permanent --add-masquerade # 开启地址伪装
firewall-cmd --add-forward-port=6666:porto=tcp:toaddr=另一台服务器的IP地址:toport=8888 # 如果使用的是udp协议进行通讯将tcp改为udp即可。
# 限制IP地址访问
比如限制IP为192.168.0.200的地址禁止访问80端口即禁止访问机器
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" reject"
# 解除限制
解除刚才被限制的192.168.0.200
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" accept"
# 限制IP地址段
假如我们需要限制10.0.0.0-10.0.0.255这一整个段的IP,禁止他们访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject"
firewall-cmd --reload //重新加载防火墙规则使其生效。
多区域的应用:
可以根据不同的接口配置不同的区域
可以对同一个接口,对不同网段的ip/流量,配置不同的访问
例:
一个接口只能对应一个区域,将接口与指定区域关联:
firewall-cmd --change-interface=ens75 --zone=drop
根据不同的访问来源网段,设定至不同的区域规则:
firewall-cmd --add-source=192.168.75.0/24 --zone=public
firewall-cmd --add-source=192.168.85.0/24 --zone=drop
firewall-cmd --get-active-zones :查看(活动区域)默认接口和区域。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Xiaomo's blog