防火墙
web | des |
---|---|
防火墙 |
firewalled
在CentOS 7中,默认使用的是firewalld
作为防火墙管理工具
置默认区域
CentOS 7中的firewalld将网络接口分配到不同的区域。下面是一些常见的区域及其用途:
bash
public:用于公共网络,通常是不受信任的网络
trusted:用于受信任的网络,例如内部网络
home:用于家庭网络
work:用于工作网络
查看当前的默认区域:
bash
sudo firewall-cmd --get-default-zone
设置默认区域:将 <zone>
替换为希望设置为默认的区域。
bash
sudo firewall-cmd --set-default-zone=<zone>
查看防火墙状态和规则
查看防火墙状态
bash
sudo firewall-cmd --state
使用firewall-config
图形界面(可选)
检查开放的端口
要检查哪些端口已经被开放,可以使用以下命令:
bash
sudo firewall-cmd --zone=public --list-ports
查看特定区域的规则:将 <zone>
替换为要查看的区域名称。
bash
sudo firewall-cmd --zone=<zone> --list-all
添加和删除规则
添加开放端口规则:
将在公共区域添加一个开放的TCP端口规则。将
<zone>
替换为要添加规则的区域名称,将<port>
替换为实际的端口号。
sh
sudo firewall-cmd --zone=<zone> --add-port=<port>/tcp --permanent
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
添加允许指定服务的规则:
将在公共区域添加一个允许指定服务的规则。将
<zone>
替换为要添加规则的区域名称,将<service>
替换为实际的服务名称,例如 http。
sh
sudo firewall-cmd --zone=<zone> --add-service=<service> --permanent
sudo firewall-cmd --zone=public --add-service=redis --permanent
sudo firewall-cmd --reload
删除规则:
将从公共区域永久删除指定的规则。将
<zone>
替换为要添加规则的区域名称,将<rule>
替换为实际要删除的规则。
sh
sudo firewall-cmd --zone=<zone> --remove-rule=<rule> --permanent
重新加载和永久生效配置
重新加载防火墙配置:
bash
sudo firewall-cmd --reload
永久生效配置:
bash
sudo firewall-cmd --runtime-to-permanent
iptables
centos和Ubuntu都有的防火墙规则
使用 iptables
安装 iptables 服务(如果尚未安装)
通常CentOS 7及以下版本默认安装了
iptables
服务,但在CentOS 8中默认使用firewalld
。如果你确实需要使用iptables
,可以尝试以下命令:bashsudo yum install iptables-services
启动 iptables 服务
bashsudo systemctl start iptables
设置 iptables 开机自启
bashsudo systemctl enable iptables
查看当前 iptables 规则
bashsudo iptables -L -v -n
开放端口
例如,开放端口 80:
bashsudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
保存规则(取决于你的系统版本,可能需要额外的步骤):
bashsudo service iptables save # CentOS 6 或较老版本的系统可能需要此命令保存规则,CentOS 7 使用 firewalld。在 CentOS 8 中通常不需要这一步,因为规则会持久化。
重新加载 iptables 以应用更改(在某些系统上不需要此步骤):
bashsudo systemctl restart iptables # 在 CentOS 7 或 CentOS 8 使用 firewalld 时,这一步通常不需要。在 CentOS 6 或较老版本中可能需要。