Linux系统下iptables防火墙配置完全指南
作为Linux系统管理员,掌握iptables防火墙配置是必备技能。本文将详细介绍iptables的工作原理、基本语法以及常用配置示例,帮助您构建强大的网络安全防线。
一、iptables基础概念
iptables是Linux内核内置的防火墙工具,通过Netfilter框架实现网络数据包过滤功能。它主要包含以下几个核心概念:
- 表(Table):filter(默认)、nat、mangle等
- 链(Chain):INPUT、OUTPUT、FORWARD等
- 规则(Rule):匹配条件和目标动作
数据包会按照预定义的顺序依次通过各个表和链,直到匹配到某条规则或到达默认策略。
二、iptables基本语法
iptables命令的基本格式为:
iptables [-t 表名] 命令选项 [链名] [规则匹配条件] -j 目标动作
常用命令选项:
- -A:追加规则
- -I:插入规则
- -D:删除规则
- -L:列出规则
- -F:清空规则
- -P:设置默认策略
常见匹配条件:
- -p:协议(tcp/udp/icmp等)
- -s:源IP地址
- -d:目标IP地址
- --sport/--dport:源/目标端口
- -i/-o:输入/输出接口
三、实用配置示例
1. 基本安全策略
# 设置默认策略为拒绝
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
# 允许本地回环通信
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
2. Web服务器配置
# 允许HTTP/HTTPS访问
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 允许SSH访问(限制源IP)
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
3. 端口转发配置
# 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 转发外部8080到内部80端口
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
四、规则管理与持久化
配置好的iptables规则默认不会保存,重启后会丢失。可以通过以下方式持久化:
1. 保存当前规则
# CentOS/RHEL
service iptables save
# Debian/Ubuntu
iptables-save > /etc/iptables.rules
2. 开机自动加载
在/etc/rc.local中添加:
iptables-restore < /etc/iptables.rules
3. 使用iptables-persistent包(Ubuntu)
apt-get install iptables-persistent
netfilter-persistent save
五、调试与排错技巧
- 使用
iptables -L -v -n查看详细规则和计数器 - 通过
iptables -L --line-numbers显示规则编号 - 使用
tcpdump抓包分析数据包流向 - 检查系统日志
/var/log/syslog或/var/log/messages
iptables是Linux系统强大的防火墙工具,虽然学习曲线较陡,但掌握后将极大提升系统安全性。建议从简单规则开始,逐步构建适合自己环境的防火墙策略。配置完成后务必进行测试,确保既保障安全又不影响正常服务。
