CentOS(Linux) firewall 防火墙的设置与命令

  • A+
所属分类:服务器 PHP Linux LNMP

一次安装 CentOS 防火墙时发现一个问题,CentOS 7 默认防火墙已经从 iptables 变成了 firewall。但是启动 firewall 后默认会屏蔽所有端口,所以ssh的默认 22 端口也会被屏蔽;这就造成了服务器断开连接并且无法连接的问题了。

首先如果系统没有安装防火墙,或者装的是 iptables 防火墙,我们需要先检查是否安装了 iptables:service iptables status (查看iptables是否运行,查看iptable运行状态) ;如果显示正在运行,那我们就把它关闭:iptables:chkconfig iptables off(因为我们要安装最新的firewalld);最后安装firewalld:yum install firewalld 或者 apt-get install firewalld 。

一、firewall防火墙的启动过程

1、首先我们要先手动修改 firewall 防火墙配置文件

首先放行ssh默认的 22 端口的 TCP 规则防止启动防火墙后无法连接服务器!(当然你要是修改了ssh端口了的话,就放行你自己修改后的端口);在目录 /etc/firewalld/zones 下找到 public.xml 配置文件,打开后添加如下代码:

<?xml version="1.0" encoding="utf-8"?> 
<zone>  
 <short>Public</short>  
 <description>For use in public areas. You do not trust the other computers  on networks to not harm your computer. Only selected incoming connections are accepted.</description>  
 <service name="ssh"/>  
 <service name="dhcpv6-client"/>  
 <port protocol="tcp" port="22"/> #添加如此句代码 
</zone>

2、开启或重启或禁用firewall防火墙:

systemctl start firewalld.service  //开启防火墙命令 
firewall-cmd --reload 或者 service firewalld restart  //重启防火墙命令
systemctl stop firewalld   //禁用防火墙 
注:执行”systemctl start firewalld.service”时出现”Failed to start firewalld.service: Unit is masked.”错误。
附上解决办法: 输入”systemctl unmask firewalld.service”就能使用命令”systemctl start firewalld.service”

3、设置开机启动防火墙或者停止并禁用开机启动 :

systemctl enable firewalld.service 或者 systemctl enable firewalld  //设置开机启动 
sytemctl disable firewalld 或者 sytemctl mask firewalld   //停止并禁用开机启动 

4、查看防火墙状态:

systemctl status firewalld 或者 firewall-cmd --state 
iptables -nL --line-number #查看所有已开放端口 
iptables -L -n #查看已添加的iptables规则

5、开启或关闭自己需要开启或关闭的端口(这里以开放80端口为例,其他端口一样;UDP端口只要把命令里的TCP换成UDP):

1. #添加即开启端口(--permanent永久生效,没有此参数重启后失效) 
firewall-cmd --zone=public --add-port=80/tcp --permanent  
2. #删除即关闭端口(--permanent永久生效,没有此参数重启后失效) 
firewall-cmd --zone=public --remove-port=80/tcp --permanent   
3. #重新载入(修改规则后使其生效) 
firewall-cmd --reload  
4. #查看 
firewall-cmd --zone=public --query-port=80/tcp  

6、批量添加区间端口:

firewall-cmd --zone=public --add-port=4400-4600/udp --permanent 
firewall-cmd --zone=public --add-port=4400-4600/tcp --permanent 

7、查看某个端口是否开放:

firewall-cmd --zone=public --query-port=80/tcp 
firewall-cmd --query-port=8080/tcp 

8、查看端口列表:

firewall-cmd --permanent --list-port 

二、一些常用的 firewall 命令

启动, 停止, 重启firewalld 
1. #停止 
systemctl stop firewalld.service 
2. #启动 
systemctl start firewalld.service 
3. #重启 
systemctl restart firewalld.service 
4. #查看状态 
systemctl status firewalld 
5. #禁止firewall开机启动 
systemctl disable firewalld 
6. #设置开机启用防火墙
systemctl enable firewalld.service 
7. #停止firewalld服务 
systemctl stop firewalld 
8. #禁用firewalld服务 
systemctl mask firewalld 

查看firewall规则与状态: 
1. #查看默认防火墙状态(关闭后显示notrunning,开启后显示running) 
firewall-cmd --state 
2. #查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略) firewall-cmd --list-all 
3. #查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略) 
firewall-cmd --list-all-zones 
4. #重新加载配置文件 
firewall-cmd --reload 

开启自己需要放行的端口: 
1. #添加(--permanent永久生效,没有此参数重启后失效) 
firewall-cmd --zone=public --add-port=80/tcp --permanent 
2. #重新载入(修改规则后使其生效) 
firewall-cmd --reload 
3. #查看 
firewall-cmd --zone=public --query-port=80/tcp 
4. #删除 
firewall-cmd --zone=public --remove-port=80/tcp --permanent 

配置 firewalld-cmd 
1. #查看版本:  
firewall-cmd --version 
2. #查看帮助
firewall-cmd --help 
3. #显示状态
firewall-cmd --state 
4. #查看所有打开的端口
firewall-cmd --zone=public --list-ports 
5. #更新防火墙规则
firewall-cmd --reload 
6. #查看区域信息
firewall-cmd --get-active-zones 
7. #查看指定接口所属区域
firewall-cmd --get-zone-of-interface=eth0 
8. #拒绝所有包
firewall-cmd --panic-on 
9. #取消拒绝状态
firewall-cmd --panic-off 
10. #查看是否拒绝
firewall-cmd --query-panic 

systemctlCentOS7的服务管理工具中主要的工具,它融合之前servicechkconfig的功能于一体。 
1. #启动一个服务
systemctl start firewalld.service 
2. #关闭一个服务
systemctl stop firewalld.service 
3. #重启一个服务
systemctl restart firewalld.service 
4. #显示一个服务的状态
systemctl status firewalld.service 
5. #在开机时启用一个服务
systemctl enable firewalld.service 
6. #在开机时禁用一个服务
systemctl disable firewalld.service 
7. #查看服务是否开机启动
systemctl is-enabled firewalld.service 
8. #查看已启动的服务列表
systemctl list-unit-files|grep enabled 
9. #查看启动失败的服务列表
systemctl --failed

关于 iptables 防火墙的设置与命令请看我的另一篇文章(但推荐用firewalld防火墙): CentOS(Linux) iptables 防火墙的设置与命令

  • 资源分享QQ群
  • weinxin
  • 官方微信公众号
  • weinxin
沙海
Linux服务器网站环境安装
美女讲师教你学C语言
TripodCloud:性价比最高的CN2 GIA服务器
动力节点最牛Java自学基础教程

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: