CentOS7使用firewalld打开关闭防火墙与端口

systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

firewalld的基本使用

启动:          systemctl start firewalld
关闭:          systemctl stop firewalld
查看状态:      systemctl status firewalld
开机启用:      systemctl enable firewalld
开机禁用:      systemctl disable firewalld
服务列表:      systemctl list-unit-files
启动失败:      systemctl --failed
firewall的状态

查看防火墙的状态

firewalld --state

重新加载防火墙,中断用户的连接,将临时配置清掉,加载配置文件中的永久配置

firewalld --reload

重新加载防火墙,不中断用户的连接(防火墙出严重故障时使用)

firewalld --complete-reload

紧急模式,强制关闭所有网络连接,--panic-off是关闭紧急模式

firewalld --panic-on
动作:
--get-icmptypes             # 查看支持的所有ICMP类型
--get-zones                 # 查看所有区域
--get-default-zone          # 查看当前的默认区域
--get-active-zones          # 查看当前正在使用的区域
--get-services              # 查看当前区域支持的服务
--list-services             # 查看当前区域开放的服务列表
--list-all                  # 查看此区域内的所有配置,类似与iptables -L -n
--set-default-zone=work     # 更改默认的区域
--add                       # 新建
--remove                    # 删除
规则

--add-interface=eth0 ##将网络接口添加到默认的区域内

--add-port=12222/tcp --permanent ##添加端口到区域开放列表中

--add-port=5000-10000/tcp --permanent ##将端口范围添加到开放列表中

--add-service=ftp --permanent # 添加服务到区域开放列表中(注意服务的名称需要与此区域支持的服务列表中的名称一致)

--add-source=192.168.1.1 # 添加源地址的流量到指定区域

--remove-source=192.168.1.1 # 删除源地址的流量到指定区域

--change-interface=eth1 # 改变指定的接口到其他区域

--remove-service=http # 在home区域内将http服务删除在开放列表中删除

--add-masquerade # 开启SNAT(源地址转换)

--query-masquerade # 查询SNAT的状态

--remove-interface=eth0 # 将网络接口在默认的区域内删除

--query-interface=eth0 # 确定该网卡接口是否存在于此区域

--add-forward-port=port=513:proto=tcp:toport=22:toaddr=192.168.100.101 # 端口转发

配置firewalld-cmd

查看版本: firewall-cmd --version

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

查看所有打开的端口: firewall-cmd --zone=public --list-ports

更新防火墙规则: firewall-cmd --reload

查看区域信息: firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

那怎么开启一个端口呢(--permanent永久生效,没有此参数重启后失效)

添加端口

sed -i '$i \ \ <port protocol="tcp" port="28828"/>' /etc/firewalld/zones/public.xml
firewall-cmd --add-port=2882/tcp --permanent
firewall-cmd --zone=public --add-port=8989/tcp --permanent
firewall-cmd --zone=public --add-port=8989/udp --permanent

添加服务

firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --add-service=mysql --permanent

设置IP伪装

firewall-cmd --zone=public  --permanent --add-masquerade
firewall-cmd --zone=public  --permanent --add-icmp-block=destination-unreachable
firewall-cmd --zone=public  --permanent --add-icmp-block=echo-reply
firewall-cmd --zone=public  --permanent --add-icmp-block=parameter-problem
firewall-cmd --zone=public  --permanent --add-icmp-block=redirect
firewall-cmd --zone=public  --permanent --add-icmp-block=router-advertisement
firewall-cmd --zone=public  --permanent --add-icmp-block=router-solicitation
firewall-cmd --zone=public  --permanent --add-icmp-block=source-quench
firewall-cmd --zone=public  --permanent --add-icmp-block=time-exceeded

firewall-cmd --zone=public  --permanent --add-icmp-block=echo-replyecho-request

重新载入

firewall-cmd --reload

查看

firewall-cmd --zone=public --query-port=80/tcp
firewall-cmd --zone=public --query-service=http

删除端口

firewall-cmd --zone=public --remove-port=80/tcp --permanent
firewall-cmd --zone=public --remove-port=8080/tcp --permanent

删除服务

firewall-cmd --zone=public --remove-service=dhcpv6-client --permanent
firewall-cmd --zone=public --remove-service=ssh --permanent
如果觉得我的文章对你有用,请随意赞赏