学而实习之 不亦乐乎

Centos 中防火墙(firewalld-cmd)的使用

2022-08-16 08:57:55

一、简介

CentOS 7 采用新的firewalld,而 CentOS 6 及以前版本采用 iptables,不过firewalld底层仍然调用的是iptables。firewalld-cmd 则是 firewalld 的命令行工具。

二、基本操作

1.启动、查看、停止和禁用防火墙

# systemctl start firewalld             //启动
# systemctl status firewalld            //查看状态
# systemctl disable firewalld           //禁用
# systemctl stop firewalld              //停止

2.开放服务

暂时开放 ftp 服务

# firewall-cmd --add-service=ftp

永久开放 ftp 服务

# firewall-cmd --add-service=ftp --permanent

永久关闭

# firewall-cmd --remove-service=ftp --permanent
success

3.让设定生效

# systemctl restart firewalld

检查设定是否生效

# iptables -L -n | grep 21
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:21 ctstate NEW

4.检查防火墙状态

# firewall-cmd --state
running

# systemctl stop firewalld
# firewall-cmd --state
not running

查看已经开放的端口

# firewall-cmd --list-all
public (default)
  interfaces:
  sources:
  services: dhcpv6-client ftp ssh
  ports:
  masquerade: no
forward-ports:
  icmp-blocks:
  rich rules:

5.查看 firewalld 支持的所有服务

# firewall-cmd --get-service
amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms-wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

6.查询服务的启用状态

# firewall-cmd --query-service ftp
yes
# firewall-cmd --query-service ssh
yes
# firewall-cmd --query-service samba
no
# firewall-cmd --query-service http
no

三、开放端口

1.开放端口基本命令

firewall-cmd --zone=public --permanent --add-port=80/tcp 

参数含义
–-zone 作用域
–-add-port=80/tcp #添加端口,格式为:端口/通讯协议
–-permanent #永久生效,没有此参数重启后失效

2.常用实例

禁用某个IP访问服务器  

# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="10.10.16.2" drop'

禁用一个IP段

# firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="10.10.16.0/24" drop'

删除之前添加的规则(禁用某个IP访问服务器)

# firewall-cmd --permanent --remove-rich-rule='rule family=ipv4 source address="10.10.16.2" drop'

通过服务名称定义规则-添加

# firewall-cmd --permanent --add-service=http

通过服务名称定义规则-移除

# firewall-cmd --permanent --remove-service=http

通过端口定义规则-允许端口:80

# firewall-cmd --permanent --add-port=80/tcp

通过端口定义规则-允许端口:1-80

# firewall-cmd --permanent --add-port=1-80/tcp

通过端口定义规则-移除放行中端口:80 

# firewall-cmd --permanent --remove-port=80/tcp

指定IP授权访问

# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.10.16.2" port protocol="tcp" port="22" accept"

拒绝(指定IP授权访问)

# firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.10.16.2" port protocol="tcp" port="22" drop"

移除(指定IP授权访问)

# firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="10.10.16.2" port protocol="tcp" port="22" accept"