防火墙
| 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-permanentiptables
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 或较老版本中可能需要。
