Centos7 防火墙 firewalld 实用操作

 

firewall-cmd --add-forward-port=port=10080:proto=tcp:toport=22    #将本地端口 10080 转发到 22 端口
firewall-cmd --remove-forward-port=port=10080:proto=tcp:toport=22    

firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.6.168" accept"    #允许 172.16.6.168 的所有流量
firewall-cmd --remove-rich-rule="rule family="ipv4" source address="172.16.6.168" accept"

firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.6.168"  protocol value="icmp" drop"    #拒绝 172.16.6.168 ping 协议
firewall-cmd --remove-rich-rule="rule family="ipv4" source address="172.16.6.168"  protocol value="icmp" drop"

firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.6.168" port protocol="tcp" port="5901" accept"        #允许 172.16.6.168 访问 5901 端口
firewall-cmd --remove-rich-rule="rule family="ipv4" source address="172.16.6.168" port protocol="tcp" port="5901" accept"

firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.6.168" service name="vnc-server" accept"    #允许 172.16.6.168 访问 vnc 服务
firewall-cmd --remove-rich-rule="rule family="ipv4" source address="172.16.6.168" service name="vnc-server" accept"

firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.6.0/24" port protocol="tcp" port="5901" accept"        #允许 172.16.6.0/24 网段访问 5901 端口
firewall-cmd --remove-rich-rule="rule family="ipv4" source address="172.16.6.0/24" port protocol="tcp" port="5901" accept"

firewall-cmd --add-rich-rule="rule family="ipv4" source address="172.16.6.0/24" port protocol="tcp" port="5901" reject"        #拒绝 172.16.6.0/24 网段访问 5901 端口(返回 timeout 连接超时)
firewall-cmd --remove-rich-rule="rule family="ipv4" source address="172.16.6.0/24" port protocol="tcp" port="5901" reject"    

firewall-cmd --zone=public --query-port=1521/tcp     #查看 1521 是否在防火墙开启开启
firewall-cmd --add-port=1521/tcp    #允许 1521 端口通过


参考文档:https://blog.csdn.net/u012486840/article/details/52635263
参考文档:http://www.itlnmp.com/373.html

Firewall 能将不同的网络连接归类到不同的信任级别,Zone 提供了以下几个级别
drop: 丢弃所有进入的包,而不给出任何响应
block: 拒绝所有外部发起的连接,允许内部发起的连接
public: 允许指定的进入连接
external: 同上,对伪装的进入连接,一般用于路由转发
dmz: 允许受限制的进入连接
work: 允许受信任的计算机被限制的进入连接,类似 workgroup
home: 同上,类似 homegroup
internal: 同上,范围针对所有互联网用户
trusted: 信任所有连接

二、端口转发
#firewall-cmd --permanent --add-forward-port=port=5423:proto=tcp:toport=80     把端口5423转发到80端口上
#firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.X.0/24 forward-port port=5423 to-port=80 protocol=tcp accept'

Centos7 防火墙 firewalld 实用操作
一.前言
Centos7以上的发行版都试自带了firewalld防火墙的,firewalld去带了iptables防火墙。其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤器来处理的,而firewalld则是交由内核层面的nftables包过滤框架来处理。 相较于iptables防火墙而言,firewalld支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是firewalld预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。

区域对于 firewalld 来说是一大特色,但是对于我们使用Centos7一般是在服务器上,需要切换zone的需求比较少,所以本文不做介绍了,网上资料也比较多,大家可以去百度找找资料。

二.操作与配置
1.服务操作
systemctl start firewalld    #启动服务(这里不用担心启用了防火墙以后无法通过ssh远程,22端口默认加入了允许规则)
systemctl stop firewalld    #停止服务
systemctl restart firewalld    #重启服务
systemctl status firewalld    #查看服务状态

参考文档:https://blog.csdn.net/u012486840/article/details/52635263
firewall-cmd --get-active-zones    #查看已被激活的 zone 信息
firewall-cmd --get-zone-of-interface=ens192    #查看指定接口的 zone 信息
firewall-cmd --zone=public --list-interfaces    #查看指定接口的 Zone 信息
firewall-cmd --zone=public --list-all        #查看指定级别所有信息,譬如 public
firewall-cmd --get-service            #查看所有级别被允许的信息
firewall-cmd --get-service --permanent        #查看重启后所有 Zones 级别中被允许的服务,即永久放行的服务

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

firewall-cmd --zone=public --add-interface=eth0 --permanent    #添加某接口至某信任等级,譬如添加 eth0 至 public,再永久生效
firewall-cmd --set-default-zone=public    #设置 public 为默认的信任级别
firewall-cmd --zone=dmz --list-ports    #列出 dmz 级别的被允许的进入端口

    

2.配置文件说明
firewalld 存放配置文件有两个目录,/usr/lib/firewalld 和 /etc/firewalld,前者存放了一些默认的文件,后者主要是存放用户自定义的数据,所以我们添加的service或者rule都在后者下面进行。
server 文件夹存储服务数据,就是一组定义好的规则。
zones 存储区域规则
firewalld.conf 默认配置文件,可以设置默认使用的区域,默认区域为 public,对应 zones目录下的 public.xml

示例文件:
cat /etc/firewalld/zones/public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="vnc-server"/>
</zone>

其中 service name 的值就是 firewall-cmd --list-all 中看到的值


三.命令
这里需要首先说明的是,在执行命令时,如果没有带 --permanent 参数表示配置立即生效,但是不会对该配置进行存储,相当于重启服务器就会丢失。如果带上则会将配置存储到配置文件,,但是这种仅仅是将配置存储到文件,却并不会实时生效,需要执行 firewall-cmd --reload 命令重载配置才会生效。

firewall-cmd --reload    #重载防火墙配置
firewall-cmd --state    #查看防火墙运行状态
firewall-cmd --list-all    #查看默认区域的设置

#应急命令
firewall-cmd --panic-on     # 拒绝所有流量,远程连接会立即断开,只有本地能登陆
firewall-cmd --panic-off     # 取消应急模式,但需要重启firewalld后才可以远程ssh
firewall-cmd --query-panic     # 查看是否为应急模式

#服务
firewall-cmd --add-service=<service name>     #添加服务
firewall-cmd --remove-service=<service name>     #移除服务

#端口
firewall-cmd --add-port=<port>/<protocol>     #添加端口/协议(TCP/UDP)
firewall-cmd --remove-port=<port>/<protocol>     #移除端口/协议(TCP/UDP)
firewall-cmd --list-ports             #查看开放的端口

#协议
firewall-cmd --add-protocol=<protocol>         # 允许协议 (例:icmp,即允许ping)
firewall-cmd --remove-protocol=<protocol>     # 取消协议
firewall-cmd --list-protocols             # 查看允许的协议


firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" accept"    #允许指定ip的所有流量
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" accept"     # 表示允许来自192.168.2.1的所有流量

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" protocol value="<protocol>" accept"    # 允许指定ip的指定协议
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" protocol value="icmp" accept"     # 允许192.168.2.208主机的icmp协议,即允许192.168.2.208主机ping

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" service name="<service name>" accept"    #允许指定ip访问指定服务
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.208" service name="ssh" accept"     # 允许192.168.2.208主机访问ssh服务

firewall-cmd --add-rich-rule="rule family="ipv4" source address="<ip>" port protocol="<port protocol>" port="<port>" accept"    #允许指定ip访问指定端口
firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.2.1" port protocol="tcp" port="22" accept"         # 允许192.168.2.1主机访问22端口


#将指定ip改为网段(8-11 的各个命令都支持 source address 设置为网段,即这个网段的ip都是适配这个规则)
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" accept"    #表示允许192.168.2.0/24网段的主机访问22端口 。


#禁止指定ip/网段(8-12 各个命令中,将 accept 设置为 reject 表示拒绝,设置为 drop表示直接丢弃(会返回timeout连接超时))
firewall-cmd --zone=drop --add-rich-rule="rule family="ipv4" source address="192.168.2.0/24" port protocol="tcp" port="22" reject"    #表示禁止192.168.2.0/24网段的主机访问22端口 。

firewall-cmd --add-forward-port=port=10080:proto=tcp:toport=22    #将本地端口 10080 转发到 22 端口
firewall-cmd --remove-forward-port=port=10080:proto=tcp:toport=22    #删除

firewall-cmd --zone=dmz --add-port=8080/tcp    #允许 tcp 端口 8080 至 dmz 级别
firewall-cmd --zome=public --add-port=5060-5059/udp --permanent    #允许某范围的 udp 端口至 public 级别,并永久生效
firewall-cmd --zone=work --add-service=smtp    #添加 smtp 服务至 work zone
irewall-cmd --zone=work --remove-service=smtp    


firewalld 端口转发(需要先打开伪装):
firewall-cmd --add-masquerade    #查看默认区域伪装是否开启

firewalld 伪装:
参考文档:https://blog.csdn.net/u012486840/article/details/52635263
firewall-cmd --zone=external --query-masquerade        #查看external区域是否开启伪装
firewall-cmd --zone=external --add-masquerade        #打开伪装
firewall-cmd --zone=external --remove-masquerade    #关闭伪装


 firewall-cmd --list-all |grep masquerade
  masquerade: yes        #yes 表示开启,no 表示没有开启

##将 10080 端口转发到 10.0.13.54 的 3389 端口(10080 端口可以没有打开,也可以是已打开的端口)
firewall-cmd --add-forward-port=port=10080:proto=tcp:toport=3389:toaddr=10.0.13.54
firewall-cmd --add-forward-port=port=5902:proto=tcp:toport=3389:toaddr=10.0.13.54

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值