Linux 系统以其开源、稳定、高效的特点,在服务器领域占据了举足轻重的地位
然而,即便是这样强大的操作系统,如果没有合适的防火墙保护,也会变得脆弱不堪
本文将详细介绍 Linux 防火墙的常用命令,帮助读者构建一道坚不可摧的安全防线
一、Linux 防火墙概述 Linux 防火墙主要依赖于 `iptables`和 `firewalld`两大工具
`iptables` 是 Linux 内核自带的防火墙工具,功能强大但配置复杂;`firewalld` 则是一个动态管理防火墙的区域和服务的守护进程,提供了更为直观和友好的配置界面
1.1 iptables `iptables` 是 Linux 下用于设置、维护和检查 IPv4 数据包过滤规则的工具
通过定义规则,`iptables` 可以允许或拒绝进出系统的网络流量,从而保护系统免受攻击
1.2 firewalld `firewalld` 提供了动态防火墙管理功能,支持区域(zones)和服务(services)的概念
区域定义了网络连接的信任级别,而服务则是一组预定义的端口和协议
`firewalld` 使得防火墙配置更加直观和易于管理
二、iptables 基本命令 2.1 查看当前规则 sudo iptables -L -v -n - `-L`:列出规则
- `-v`:显示详细信息(如数据包计数和字节计数)
- `-n`:以数字形式显示地址和端口
2.2 添加规则 sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT - `-A INPUT`:将规则添加到 INPUT 链
- `-p tcp`:指定协议为 TCP
- `--dport 22`:指定目标端口为 22(SSH)
- `-j ACCEPT`:指定动作为接受
2.3 删除规则 sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT - `-D INPUT`:从 INPUT 链中删除规则
2.4 保存规则 由于 `iptables` 规则在系统重启后会丢失,因此需要将其保存到配置文件中
对于基于 Debian 的系统(如 Ubuntu): sudo apt-get install iptables-persistent sudo netfilter-persistent save 对于基于 Red Hat 的系统(如 CentOS): sudo service iptables save 2.5 阻止特定 IP 地址 sudo iptables -I INPUT -s 192.168.1.100 -j DROP - `-I INPUT`:将规则插入到 INPUT 链的开头
- `-s 192.168.1.100`:指定源 IP 地址
- `-j DROP`:指定动作为丢弃
三、firewalld 基本命令 3.1 启动和停止 firewalld sudo systemctl start firewalld sudo systemctl stop firewalld 3.2 启用和禁用 firewalld 开机自启 sudo systemctl enable firewalld sudo systemctl disable firewalld 3.3 查看当前区域和规则 sudo firewall-cmd --get-active-zones sudo firewall-cmd --list-all 3.4 添加服务到区域 sudo firewall-cmd --zone=public --add-service=http --permanent sudo firewall-cmd --reload - `--zone=public`:指定区域为 public
- `--add-service=http`:添加 HTTP 服务
- `--permanent`:永久生效
- `--reload`:重新加载防火墙配置
3.5 开放特定端口 sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent sudo firewall-cmd --reload - `--add-port=8080/tcp`:开放 TCP 8080 端口
3.6 允许特定 IP 地址访问 sudo firewall-cmd --zone=public --add-rich-rule=rule family=ipv4 source address=192.168.1.100 accept --permanent sudo firewall-cmd --reload - `--add-rich-rule`:添加富规则
- `family=ipv4`:指定 IP 版本为 IPv4
- `source address=192.168.1.100`:指定源 IP 地址
四、高级配置与优化 4.1 日志记录 为了更好地监控和分析网络流量,可以启用 `iptables` 的日志记录功能
sudo iptables -A INPUT