在 Linux 系统中可以使用 iptables
或 firewalld
来部署防火墙。以下是分别介绍它们的部署方法:
一、使用 firewalld
- 安装 firewalld(如果系统没有预装):
- 在基于 Red Hat 的系统(如 CentOS、Fedora)上:
sudo yum install firewalld
- 在基于 Debian 的系统(如 Ubuntu)上:
sudo apt install firewalld
- 启动 firewalld 服务:
sudo systemctl start firewalld
- 设置为开机自启动:
sudo systemctl enable firewalld
3. 配置区域:
- firewalld 有不同的区域,如 `public`、`internal`、`dmz` 等。默认情况下,新连接会被分配到 `public` 区域。
- 可以使用 `firewall-cmd --get-default-zone` 查看默认区域。
4. 开放端口:
- 例如,要开放 HTTP(80 端口)和 HTTPS(443 端口):
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
- `--permanent` 参数表示永久生效,需要重新加载防火墙配置使其生效:
sudo firewall-cmd --reload
5. 阻止特定 IP 或 IP 范围:
- 例如,阻止 IP 地址为 192.168.1.100 的访问:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject' --permanent
sudo firewall-cmd --reload
**二、使用 iptables**
1. 查看当前规则:
- ```
sudo iptables -L
- 开放端口:
- 例如,开放 80 端口:
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
- 保存规则(在系统重启后规则会丢失,需要保存):
- 在基于 Red Hat 的系统上,可以使用
iptables-save
和iptables-restore
:- 保存当前规则:
- 在基于 Red Hat 的系统上,可以使用
sudo iptables-save > /etc/sysconfig/iptables
- 在系统启动时恢复规则,可以在
/etc/rc.d/rc.local
文件中添加iptables-restore < /etc/sysconfig/iptables
。 - 在基于 Debian 的系统上,可以使用
iptables-persistent
包:- 安装包:
sudo apt install iptables-persistent
- 在安装过程中会提示你保存当前规则,之后系统启动时会自动加载保存的规则。
需要注意的是,配置防火墙时要谨慎操作,确保不会意外阻止必要的服务和连接。在进行重大配置更改之前,最好先测试并备份现有配置。