检查
- 查看防火墙的状态
$ systemctl status firewalld ( 或者 firewall-cmd --state ) //running 表示运行
Centos7默认安装了firewalld,如果没有这条命令,那就尝试安装一下
安装
- 查看是否已经安装 firewalld 防火墙
$ rpm -qa | grep firewalld
- 如果你的系统上没有安装,使用命令安装firewalld 防火墙
$ yum install -y firewalld firewalld-config
常用操作
- 启动防火墙:
$ systemctl start firewalld ( 或者 )
- 关闭防火墙:
$ systemctl stop firewalld ( 或者 )
- 设置开机启用防火墙:
$ systemctl enable firewalld.service
- 设置开机禁用并停止防火墙:
$ systemctl disable firewalld.service ( 或者 )
- 在不改变状态的条件下重新加载防火墙(修改配置后要重启防火墙):
$ systemctl reload firewalld ( 或者 $ firewall-cmd --reload 或者 $ service firewalld restart)
使用firewall-cmd配置端口:
-
获取活动的区域
$ firewall-cmd --get-active-zones
这条命令将用以下格式输出每个区域所含接口:
<zone1>: <interface1> <interface2> …<zone2>: <interface3> … -
查看开放的端口:
$ firewall-cmd --list-all # 显示: public (default) interfaces: sources: services: dhcpv6-client ftp ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules: $ firewall-cmd --list-ports( 或者 $ firewall-cmd --permanent --list-port
查询服务的启动状态
$ firewall-cmd --query-service ftp yes $ firewall-cmd --query-service ssh yes $ firewall-cmd --query-service samba no $ firewall-cmd --query-service http no
查看开启的端口 或 服务:
$ firewall-cmd --permanent --zone=public --list-services //服务空格隔开 例如 dhcpv6-client https ss $ firewall-cmd --permanent --zone=public --list-ports //端口空格隔开 例如 8080-8081/tcp 8388/tcp 80/tcp
查询端口是否开放:
$ firewall-cmd --query-port=8080/tcp
-
开启端口 或 服务:
$ firewall-cmd --permanent --add-port=80/tcp $ firewall-cmd --zone=public --add-port=9200/tcp //临时 $ firewall-cmd --zone=public --add-port=80/tcp --permanent //永久 $ firewall-cmd --zone=public--add-port=4400-4600/udp --permanent //批量添加区间端口 $ firewall-cmd --zone=public --add-service=https //临时 $ firewall-cmd --permanent --zone=public --add-service=https //永久
-
移除(关闭)端口:
$ firewall-cmd --permanent --remove-port=8080/tcp $ firewall-cmd --zone=public --remove-port=9200/tcp --permanent
-
设置某个ip 访问某个服务
$ firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept" ip 192.168.0.4/24 访问 http
-
删除上面设置的规则
$ firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.0.4/24" service name="http" accept"
-
检查设定是否生效
$ iptables -L -n | grep 21 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ctstate NEW
命令含义:
--zone #作用域
--add-port=9200/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
注意:添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效
编辑 iptables配置文件
$ vi /etc/sysconfig/iptables
$ service iptables restart