CentOS 7 FirewallD

简介

就是一个防火墙,用来替代iptables。

基本概念

Zones

区域,就是你电脑所在的区域,每个区域有一个基本规则。比如说你的电脑在家,那么各种共享端口是打开的。比如你在公共场所,不仅共享会禁用,而且ping也是不会响应。
然而,服务器建好就不会变更区域。所以只要选好一个区域,之后的规则都添加到这个区域中。
下面是系统自带的区域:

  • drop 丢掉所有入包,不返回任何响应,只能发出连接。
  • block 丢掉所有入包,返回icmp-host-prohibited或者icmp6-adm-prohibited。
  • public 允许指定连接连入。
  • external 估计和public差不多。For use on external networks with masquerading enabled - - especially for routers. You do not trust the other computers on networks to not harm - your computer. Only selected incoming connections are accepted.
  • internal 内网中使用,信任内网中的电脑。允许指定连接。
  • dmz 内网中,一台与外界完全联通,允许部分连接内网其他电脑的电脑。允许指定连接连入。
  • work 工作场所使用,允许指定连接。
  • home 家中使用,允许指定连接。
  • trusted 允许所有连接。

规则

可以针对单个端口写一条规则,也可以把多个相关联的规则合并为一个服务,对服务进行启用和禁用,从而达到批量管理规则的目的。

生效时间

新建规则立即生效,无需重启服务。重启系统后立即失效。要是不小心把ssh端口关掉了,可以重启解决。

  • 加上--permanent 后,规则永久保存。

规则写法

开启端口

firewall-cmd --zone=public --add-port=5000/tcp
firewall-cmd --zone=public --permanent --add-port=4990-4999/udp

关闭端口

firewall-cmd --zone=public --add-remove=5000/tcp
firewall-cmd --zone=public --permanent --remove=4990-4999/udp

查看打开的端口

此处只能查看单条规则打开的E端口,看不到服务,也就是规则集合打开的端口。
firewall-cmd --zone=public --permanent --list-ports

查看允许的服务(规则集)

firewall-cmd --zone=public --list-services

允许一个服务(规则集)

firewall-cmd --zone=public --permanent --add-service=http

禁用一个服务(规则集)

firewall-cmd --zone=public --permanent --remove-service=http

服务(规则集)编写

<?xml version="1.0" encoding="utf-8"?>
<service>
 <short>此处填服务名称</short>
 <description>该服务是干嘛干嘛的,需要打开以下端口</description>
 <port protocol="udp" port="12345"/>
 <port protocol="tcp" port="12345"/>
 <port protocol="udp" port="12346"/>
 <port protocol="udp" port="12346"/>
 <module name="nf_conntrack_netbios_ns"/>
</service>
添加新评论