在基于RHEL7的服务器上,firewalld是一个可动态管理的防火墙服务,提供IPv4和IPv6防火墙规则定义和区域的支持。它可以直接代替iptables管理服务器的网络活动,能直接作用于内核的netfilter代码。
本文简要介绍了如何通过firewall-cmd命令管理和配置防火墙,假定所有命令都以root权限执行。
$ firewall-cmd --state
如果返回not running,表示服务没有启动,输入下面命令启动firewallD
$ service firewalld start
对firewalld做了修改,通过下面的命令执行
$ firewall-cmd --reload
配置好firewalld之后,通过systemd命令使服务开机启动
$ systemctl enable firewalld
$ firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http ssh ssh-custom
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
添加httpservice
$ firewall-cmd --permanent --zone=public --add-service=http
删除httpservice
$ firewall-cmd --permanent --zone=public --remove-service=http
允许放行7777 TCP端口
$ firewall-cmd --permanent -zone=public --add-port=7777/tcp
允许放行多个端口
$ firewall-cmd --permanent -zone=public --add-port=7777-8000/tcp
删除端口
$ firewall-cmd --permanent --zone=public --remove-port=7777/tcp
查看当前打开的端口
$ firewall-cmd --zone=public --list-ports
rich rule 命令的格式和结构如下所示
rule [family="rule family"]
[ source [NOT] [address="address"] [mac="mac-address"] [ipset="ipset"] ]
[ destination [NOT] ]
[ element ]
[ log [prefix="prefix text"] [level="log level"] [limit] ]
[ audit ]
[ action ]
NOTE: 一条rule作用于一个特定的zone。一个zone可以包含多条rule。如果几条rule互相影响或产生冲突,第一条匹配的rule会生效。
$ firewall-cmd --permanent --add-rich-rule="rule source reject"
$ firewall-cmd --permanent --add-rich-rule="rule source reject"
更详细rich rule的介绍参见redhat文档:
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html
192.168.0.0/24
表示网络码占24位,就是说该网络上可以有254个主机(2^8-2)
IP范围:192.168.0.1~192.168.0.254 192.168.0.255是广播地址,不能被主机使用
192.168.0.0/16
表示网络码占16位,也就是说该网络上可以有65534个主机(2^16-2)
IP范围:192.168.0.1~192.168.255.254 192.168.255.255是广播地址,不能被主机使用。