firewalld防火墙
作者:互联网
firewalld防火墙
防火墙的概述
firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,firewalld只能做IP/Port相关的限制
防火墙规则
入站规则:
别人的电脑访问自己电脑的规则
出站规则:
自己的电脑访问别人电脑的规则
# 防火墙默认是全部拒绝的
防火墙使用的区域管理
区域选项 | 默认规则策略 |
---|---|
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 | 拒绝流入的流量,除非与流出的流量相关 |
### 三大重点区域
trusted:允许所有流量的入站规则
public:公共区域,默认允许ssh和dhcpv6-client
drop:拒绝所有流量的入站规则
防火墙基本操作命令
区域相关命令
# 获取当前使用的区域
[root@m01 ~]# firewall-cmd --get-default-zone
public
# 切换默认区域
[root@m01 ~]# firewall-cmd --set-default-zone=drop
success
[root@m01 ~]# firewall-cmd --get-default-zone
drop
# 查看所有可用的区域
[root@m01 ~]# firewall-cmd --get-zones
block dmz docker drop external home internal public trusted work
# 新增区域
[root@m01 ~]# firewall-cmd --new-zone=ji --permanent
success
[root@m01 ~]# firewall-cmd --reload
success
[root@m01 ~]# firewall-cmd --get-zones
block dmz docker drop external home internal ji jl public trusted work
服务相关命令
# 查看支持的服务名
[root@m01 ~]# firewall-cmd --get-services
# 添加服务入站规则
[root@m01 ~]# firewall-cmd --add-service=http
# 删除服务入站规则
[root@m01 ~]# firewall-cmd --remove-service=https
## 没有在命令行中加--premantent临时生效,重启防火墙失效,加入了这个永久生效,但是必须要重启防火墙才能生效
端口相关命令
# 开启指定端口
[root@m01 ~]# firewall-cmd --add-port=443/tcp
# 开启范围端口
[root@m01 ~]# firewall-cmd --add-port=1-9999/tcp
# 删除指定端口
[root@m01 ~]# firewall-cmd --remove-port=443/tcp
添加网卡命令
# 将eth0网卡转移到drop区域
[root@m01 ~]# firewall-cmd --add-interface=eth0 --zone=drop
查看相关命令
# 查看指定区域是否允许该服务的流量
[root@m01 ~]# firewall-cmd --zone=public --query-service=https
no
# 查看当前默认区域的所有规则
[root@m01 ~]# firewall-cmd --list-all
public (active) # 当前正在使用的区域
target: default # 当前默认的区域
icmp-block-inversion: no # icmp块
interfaces: eth0 eth1 # 当前区域监听的网卡
sources: # 来源IP
services: ssh dhcpv6-client # 允许访问的服务
ports: # 允许访问的端口
protocols: # 允许访问的协议
masquerade: yes # IP伪装
forward-ports: # 端口转发,端口映射
source-ports: # 来源端口
icmp-blocks: # icmp块
rich rules: # 富语言规则,富规则
# 开启IP伪装
[root@m01 ~]# firewall-cmd --add-masquerade
防火墙防行自定义服务
# 编写自定义服务的xml文件
[root@m01 ~]# vim /usr/lib/firewalld/services/sersync.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>sersync</short>
<description>sersync</description>
<port protocol="tcp" port="874"/>
</service>
# 重启防火墙
[root@m01 ~]# firewall-cmd --reload
success
# 添加自定义的服务名
[root@m01 ~]# firewall-cmd --add-service=sersync
防火墙端口转发策略
# 端口转发公式
firewalld-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
firewalld富语言规则
防火墙中的富语言规则表示更细致,更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址以及目标地址等信息来进行更有针对性的策略配置,优先级在所有的防火墙策略中也是最高的
[root@m01 ~]# man firewalld.richlanguage
rule
[source]
[destination]
service|port|protocol|icmp-block|icmp-type|masquerade|forward-port|source-port
[log]
[audit]
[accept|reject|drop|mark]
rule [family="ipv4|ipv6"]
source address="address[/mask]" [invert="True"]
service name="service name"
port port="port value" protocol="tcp|udp"
protocol value="protocol value"
forward-port port="port value" protocol="tcp|udp" to-port="port value" to-addr="address"
accept|reject [type="reject type"]|drop
## 富语言规则相关命令
--add-rich-rule='<RULE>' # 在指定的区域添加一条富语言规则
--remove-rich-rule='<RULE>' # 在指定的区域删除一条富语言规则
--query-rich-rule='<RULE>' # 找到规则返回0,找不到返回1
--list-rich-rules # 列出指定区里的所有富语言规则
案例
允许 10.0.0.1 主机能够访问 http 服务,允许 172.16.1.0/24 能访问 22 端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.1" service name="http" accept'
firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.16.1.0/24" port port="22" protocol="tcp" accept'
默认public区域对外开放所有人能通过ssh服务连接,但拒绝172.16.1.0/24网段通过ssh连接服务器
firewall-cmd --add-rich-rule='rule family="ipv4" source address="172.16.1.0/24" service name="ssh" drop'
使用firewalld,允许所有人能访问http,https服务,但只有10.0.0.1主机可以访问ssh服务
firewall-cmd --add-service={http,https}
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.1" service name="ssh" accept'
当用户来源IP地址是10.0.0.1主机,则将用户请求的5555端口转发至后端172.16.1.7的22端口
firewall-cmd --add-rich-rule='rule family="ipv4" source address="10.0.0.1" forward-port port="5555" protocol="tcp" to-port="22" to-addr="172.16.1.7"'
标签:--,cmd,firewalld,防火墙,firewall,m01,root,port 来源: https://www.cnblogs.com/zlyj/p/16487511.html