您现在的位置是:首页> 操作系统> Linux

centos7 防火墙详解

  • 3838人已阅读
  • 时间:2018-12-03 12:37:39
  • 分类:Linux
  • 作者:祥哥

centos 7默认安装了firewall,而取消了iptables

firewall和iptables区别有如下两点:

firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效。
firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

其它版本想要使用firewall可以用下面的命令安装

yum install firewalld firewall-config

基本命令介绍

systemctl start firewalld #启动防火墙
systemctl status firewalld #查看防火墙状态 or firewall-cmd --state
systemctl stop firewalld #停止防火墙
systemctl disable firewalld #禁止开机启动防火墙

配置firewalld常用命令

firewall-cmd --version #查看版本
firewall-cmd --help #查看帮助
firewall-cmd --state #显示状态

firewall-cmd --get-zones #列出支持的zone
firewall-cmd --get-active-zones #查看当前区域
firewall-cmd --set-default-zone=public #设置默认接口区域,立即生效无需重启
firewall-cmd --zone=public --add-interface=eth0 #将接口添加到区域,默认接口都在public
firewall-cmd --zone=public --add-interface=eth0 --permanent #将接口添加到区域,永久生效

firewall-cmd --zone=public --list-ports #查看区域public打开的端口
firewall-cmd --list-ports #查看放行的端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent #永久添加8080端口
firewall-cmd --reload #更新防火墙规则
firewall-cmd --complete-reload #和上面的区别第一个无须断开连接,就是firewall的特性之一动态添加规则,第二个类似了重启服务

firewall-cmd --get-services #列出支持的服务。
firewall-cmd --list-services #显示当前放行的服务.
firewall-cmd --add-service=ftp --permanent #永久开放FTP服务
firewall-cmd --remove-service=ftp --permanent #永久移除FTP服务
firewall-cmd --reload #更新防火墙规则

firewall-cmd --get-zone-of-interface=eth0 #查看指定接口所属的区域
firewall-cmd --panic-on #拒绝所有包
firewall-cmd --panic-off #取消拒绝状态
firewall-cmd --query-panic #查看是否拒绝


特别需要注意的firewalld服务有两份规则策略配置记录,必需能够区分

RunTime:当前正在生效的

Permanent:永久生效的

当下面实验修改的是永久生效的策略记录时,必须执行"--reload"参数后才能立即生效,否则要重启后再生效。

查看当前的区域:

[root@CentOS7 ~]# firewall-cmd --get-default-zone
public

查询网卡的区域:

[root@Centos7 ~]# firewall-cmd --get-zone-of-interface=eno16777736
public

在public中分别查询ssh与http服务是否被允许:

[root@Centos7 ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@Centos7 ~]# firewall-cmd --zone=public --query-service=http
no

实例A:允许https服务流量通过public区域,要求立即生效且永久有效:

方法一:分别设置当前生效与永久有效的规则记录:

[root@Centos7 ~]# firewall-cmd --zone=public --add-service=https
success
[root@Centos7 ~]# firewall-cmd --permanent --zone=public --add-service=https
success

方法二:设置永久生效的规则记录后读取记录:

[root@Centos7 ~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@Centos7 ~]# firewall-cmd --reload
success

实例B:不再允许http服务流量通过public区域,要求立即生效且永久生效:

[root@Centos7 ~]# firewall-cmd --permanent --zone=public --remove-service=http
success

[root@Centos7 ~]# firewall-cmd --reload 
success

实例C:允许8080与8081端口流量通过public区域,立即生效且永久生效:

[root@Centos7 ~]# firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
success
[root@Centos7 ~]# firewall-cmd --reload 
success

实例D:查看模拟实验中的规则:

[root@Centos7 ~]# firewall-cmd --zone=public --list-services 
dhcpv6-client http https ssh
[root@Centos7 ~]# firewall-cmd --zone=public --list-ports 
8080-8081/tcp

实例E:将访问主机888端口的请求转发至22端口:

[root@Centos7 ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.0.100
success
[root@Centos7 ~]# firewall-cmd --reload 
success

例如安装Nagios后,要开放5666端口与服务器连接,命令如下

[root@centos7 ~]# firewall-cmd --add-port=5666/tcp 即时打开,这里也可以是一个端口范围,如1000-2000/tcp
success
[root@centos7 ~]# firewall-cmd --permanent --add-port=5666/tcp 写入配置文件
success
[root@centos7 ~]# firewall-cmd --reload 重启防火墙
success
[root@centos7 ~]#


Top