赞
踩
一次安装 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 配置文件,打开后添加如下代码:
Public
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.
#添加如此句代码
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
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
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. #查看服务是否开机启动
systemctlis-enabled firewalld.service
8. #查看已启动的服务列表
systemctl list-unit-files|grep enabled
9. #查看启动失败的服务列表
systemctl--failed
关于 iptables 防火墙的设置与命令请看我的另一篇文章(但推荐用firewalld防火墙):CentOS(Linux) iptables 防火墙的设置与命令
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。