firewall

systemctl

systemctl unmask firewalld #执行命令,即可实现取消服务的锁定
systemctl mask firewalld # 下次需要锁定该服务时执行
systemctl start firewalld.service #启动防火墙
systemctl stop firewalld.service #停止防火墙
systemctl reloadt firewalld.service #重载配置
systemctl restart firewalld.service #重启服务
systemctl status firewalld.service #显示服务的状态
systemctl enable firewalld.service #在开机时启用服务
systemctl disable firewalld.service #在开机时禁用服务
systemctl is-enabled firewalld.service #查看服务是否开机启动
systemctl list-unit-files|grep enabled #查看已启动的服务列表
systemctl --failed #查看启动失败的服务列表

firewall-cmd

firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #更新防火墙规则
firewall-cmd --state #查看防火墙状态
firewall-cmd --reload #重载防火墙规则
firewall-cmd --list-ports #查看所有打开的端口
firewall-cmd --list-services #查看所有允许的服务
firewall-cmd --get-services #获取所有支持的服务

区域相关

firewall-cmd --list-all-zones #查看所有区域信息
firewall-cmd --get-active-zones #查看活动区域信息
firewall-cmd --set-default-zone=public #设置public为默认区域
firewall-cmd --get-default-zone #查看默认区域信息
firewall-cmd --zone=public --add-interface=eth0 #将接口eth0加入区域public

丢弃区域(Drop Zone):如果使用丢弃区域,任何进入的数据包将被丢弃。这个类似与我们之前使用iptables -j drop。使用丢弃规则意味着将不存在响应,只有流出的网络连接有效。
阻塞区域(Block Zone):阻塞区域会拒绝进入的网络连接,返回icmp-host-prohibited,只有服务器已经建立的连接会被通过。
公共区域(Public Zone):只接受那些被选中的连接,而这些通过在公共区域中定义相关规则实现。服务器可以通过特定的端口数据,而其它的连接将被丢弃。
外部区域(External Zone):这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,而其它的连接将被丢弃或者不被接受。
隔离区域(DMZ Zone):如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义。它也拥有只通过被选中连接的特性。
工作区域(Work Zone):在这个区域,我们只能定义内部网络。比如私有网络通信才被允许。
家庭区域(Home Zone):这个区域专门用于家庭环境。我们可以利用这个区域来信任网络上其它主机不会侵害你的主机。它同样只允许被选中的连接。
内部区域(Internal Zone):这个区域和工作区域(Work Zone)类似,只有通过被选中的连接。
信任区域(Trusted Zone):信任区域允许所有网络通信通过。

接口相关

firewall-cmd --zone=public --remove-interface=eth0 #从区域public中删除接口eth0
firewall-cmd --zone=default --change-interface=eth0 #修改接口eth0所属区域为default
firewall-cmd --get-zone-of-interface=eth0 #查看接口eth0所属区域

端口控制

firewall-cmd --add-port=80/tcp --permanent #永久添加80端口例外(全局)
firewall-cmd --remove-port=80/tcp --permanent #永久删除80端口例外(全局)
firewall-cmd --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(全局)
firewall-cmd --zone=public --add-port=80/tcp --permanent #永久添加80端口例外(区域public)
firewall-cmd --zone=public --remove-port=80/tcp --permanent #永久删除80端口例外(区域public)
firewall-cmd --zone=public --add-port=65001-65010/tcp --permanent #永久增加65001-65010例外(区域public)
firewall-cmd --query-port=8080/tcp # 查询端口是否开放
firewall-cmd --permanent --add-port=80/tcp # 开放80端口
firewall-cmd --permanent --remove-port=8080/tcp # 移除端口
firewall-cmd --reload #重启防火墙(修改配置后要重启防火墙)

改用iptables.service

yum install iptables-services #安装iptables
systemctl stop firewalld.service #停止firewalld
systemctl mask firewalld.service #禁止自动和手动启动firewalld
systemctl start iptables.service #启动iptables
systemctl start ip6tables.service #启动ip6tables
systemctl enable iptables.service #设置iptables自启动
systemctl enable ip6tables.service #设置ip6tables自启动

作者:Raodi
出处:http://www.cnblogs.com/Raodi/
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。

为应用程序设置规则

向您的区域添加服务
获取全部的服务

firewall-cmd --get-services

您可以在/usr/lib/firewalld/services目录中,通过{service}.xml,获得关于这些服务的更多细节。。例如,SSH服务是这样定义的:

域中添加服务

firewall-cmd --zone=public --add-service=http
ps: --zone= 未设置表示默认域

查看某域的服务

firewall-cmd --zone=public --list-services
永久生效的添加

firewall-cmd --zone=public --permanent --add-service=http
查看永久生效的服务

firewall-cmd --zone=home --permanent --list-services
删除服务

firewall-cmd --zone=public --permanent --add-service=http
永久删除服务

firewall-cmd --zone=public --permanent --add-service=http
ps: --permanent 没有使用的话,–reload就会失效

五、查看为域打开端口
例如,如果我们的应用程序在端口5000上运行,并且使用TCP,我们可以使用–add-port= 端口号将这个会话添加到这个会话的“公共”区域。协议可以是tcp或udp

firewall-cmd --zone=public --add-port=5000/tcp
永久添加或删除

//添加
firewall-cmd --zone=home --permanent --add-port=1194/udp
//删除
firewall-cmd --zone=home --permanent --remove-port=1194/udp
查看域下端口状况

firewall-cmd --zone=public --permanent --list-ports
六、编写手动服务
为您的区域打开端口是很容易的,但是要跟踪每一个区域的目的是很困难的。如果您在服务器上进行了一个服务的分解,那么您可能很难记住哪些端口已经被打开了。为了避免这种情况,可以定义一个服务。
服务仅仅是具有相关名称和描述的端口集合。使用服务比端口更容易管理,但是需要一些前期工作。最简单的方法是复制现有的脚本/etc/firewalld/services到/usr/lib/firewalld/services

cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

<?xml version="1.0" encoding="utf-8"?> Example Service This is just an example service. It probably shouldn't be used on a real system.

//重新加载配置
firewall-cmd --reload
//查找服务
firewall-cmd --get-services |grep example

您现在可以像往常一样在您的区域使用该服务。

七、创建自己的域
添加域

sudo firewall-cmd --permanent --new-zone=publicweb
sudo firewall-cmd --permanent --new-zone=privateDNS
删除域

sudo firewall-cmd --permanent --delete-zone=publicweb
八、实现伪装IP
防火墙可以实现伪装 IP 的功能,下面的端口转发就会用到这个功能。

firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade # 允许防火墙伪装IP
firewall-cmd --remove-masquerade# 禁止防火墙伪装IP
八、端口转发
端口转发可以将指定地址访问指定的端口时,将流量转发至指定地址的指定端口。转发的目的如果不指定 ip 的话就默认为本机,如果指定了 ip 却没指定端口,则默认使用来源端口。
如果配置好端口转发之后不能用,可以检查下面两个问题:

比如我将 80 端口转发至 8080 端口,首先检查本地的 80 端口和目标的 8080 端口是否开放监听了
其次检查是否允许伪装 IP,没允许的话要开启伪装 IP

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 将80端口的流量转发至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口
当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端口,之后配置防火墙的端口转发,将流量转发过去。
端口转发还可以做流量分发,一个防火墙拖着好多台运行着不同服务的机器,然后用防火墙将不同端口的流量转发至不同机器。

配置规则

“firewall-cmd --permanent --add-source=192.168.1.107 --zone=trusted”。表示来自"192.168.1.107"的数据全部通过。如果开启,firewall不添加http,且改为8080端口后不添加到firewall,"192.168.1.107"主机也可以访问Apache。"add"改为"remove"可以取消。
作者:vbscript
链接:https://www.jianshu.com/p/4d5551f5cf5b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值