IPTables防火墙怎么用

发布时间:2022-02-19 10:58:17 作者:小新
来源:亿速云 阅读:203
# IPTables防火墙怎么用

## 目录
1. [IPTables简介](#iptables简介)
2. [基本概念与术语](#基本概念与术语)
3. [安装与启动](#安装与启动)
4. [基础规则配置](#基础规则配置)
5. [高级应用场景](#高级应用场景)
6. [规则持久化](#规则持久化)
7. [常见问题排查](#常见问题排查)
8. [安全最佳实践](#安全最佳实践)

---

## IPTables简介
Linux内核内置的包过滤框架,作为Netfilter项目的用户空间工具,提供:
- 网络地址转换(NAT)
- 数据包过滤
- 状态跟踪
- 流量控制等核心功能

**典型应用场景**:
- 服务器安全防护
- 网络边界控制
- 端口转发服务
- DDoS基础防护

---

## 基本概念与术语
### 规则链(Chains)
| 内置链 | 作用时机 |
|--------|----------|
| INPUT   | 目标为本机的数据包 |
| OUTPUT  | 本机发出的数据包 |
| FORWARD | 经过本机转发的数据包 |
| PREROUTING | 路由决策前 |
| POSTROUTING | 路由决策后 |

### 表(Tables)
```bash
filter表(默认):包含INPUT/OUTPUT/FORWARD链
nat表:用于地址转换(PREROUTING/POSTROUTING)
mangle表:特殊包修改(TTL/TOS等)
raw表:连接跟踪豁免

匹配条件

动作(Targets)

ACCEPT:允许通过
DROP:静默丢弃
REJECT:拒绝并返回错误
LOG:记录日志
SNAT/DNAT:地址转换

安装与启动

主流发行版安装

# Debian/Ubuntu
sudo apt install iptables

# RHEL/CentOS
sudo yum install iptables-services

# 现代系统可能需安装兼容层
sudo apt install iptables-legacy

服务管理

# 传统SysVinit系统
sudo service iptables start
sudo service iptables save

# systemd系统
sudo systemctl enable iptables
sudo systemctl start iptables

内核模块检查

lsmod | grep ip_tables
modprobe ip_tables

基础规则配置

查看当前规则

iptables -L -n -v  # 详细模式查看
iptables -t nat -L # 查看NAT表

清空现有规则

iptables -F
iptables -t nat -F
iptables -X  # 删除自定义链

默认策略设置

iptables -P INPUT DROP    # 默认拒绝所有入站
iptables -P OUTPUT ACCEPT # 允许所有出站
iptables -P FORWARD DROP  # 禁止转发

基础规则示例

# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 允许已建立的连接
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 开放SSH端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许PING
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# 限速HTTP连接(每秒3个新连接)
iptables -A INPUT -p tcp --dport 80 -m limit --limit 3/second -j ACCEPT

高级应用场景

端口转发(DNAT)

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80
iptables -t nat -A POSTROUTING -j MASQUERADE

源地址转换(SNAT)

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.5

防止SYN洪水攻击

iptables -N SYN_FLOOD
iptables -A SYN_FLOOD -m limit --limit 10/s --limit-burst 20 -j RETURN
iptables -A SYN_FLOOD -j DROP
iptables -A INPUT -p tcp --syn -j SYN_FLOOD

按时间控制规则

iptables -A INPUT -p tcp --dport 22 -m time --timestart 09:00 --timestop 17:00 -j ACCEPT

规则持久化

传统保存方式

iptables-save > /etc/iptables.rules
iptables-restore < /etc/iptables.rules

systemd系统推荐

# 安装持久化工具
sudo apt install iptables-persistent

# 保存规则
sudo netfilter-persistent save

开机自动加载

echo "iptables-restore < /etc/iptables.rules" >> /etc/rc.local
chmod +x /etc/rc.local

常见问题排查

调试流程

  1. 检查规则顺序:iptables -L -n --line-numbers
  2. 查看丢包统计:iptables -L -v
  3. 开启日志记录:
    
    iptables -A INPUT -j LOG --log-prefix "[IPTABLES-DENY] "
    tail -f /var/log/syslog
    

典型错误

# 错误:忘记允许ESTABLISHED状态
# 现象:能ping出但收不到回复
# 解决:添加状态规则

# 错误:NAT规则未启用IP转发
# 解决:
echo 1 > /proc/sys/net/ipv4/ip_forward

安全最佳实践

  1. 最小权限原则:只开放必要端口

  2. 日志监控:记录所有DROP/REJECT操作

  3. 防御措施

    • 限制ICMP速率
    • 防范端口扫描
    • 阻止异常TTL包
  4. 定期审计

    # 对比当前规则与保存规则
    diff <(iptables-save) <(cat /etc/iptables.rules)
    
  5. 组合使用:与fail2ban联动实现动态封禁

提示:生产环境建议先通过iptables -P INPUT ACCEPT设置临时宽松策略,测试完成后再改为严格模式。


扩展阅读

”`

注:实际使用时可根据需要调整各章节深度,本文档已包含基础到进阶的核心知识点,完整展开每个示例可达3500字左右。

推荐阅读:
  1. 防火墙iptables
  2. 防火墙 iptables

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

iptables

上一篇:Git版本回退的示例分析

下一篇:linux的ldconfig命令怎么用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》