ipfw ipfwadmin
ipchains ipchains
netfilter iptables
firewall
防火墙的工作原理:防火墙工作在网络的边缘位置
netfilter/iptables
一、防火墙结构
1、防火墙的规则表
raw:跟踪
mangle:标记
nat:转换
filter:过滤
2、防火墙的规则链
INPUT:入站
OUTPUT:出站
FORWARD:转发
PREROUTING:路由前
POSTROUTING:路由后
3、表和链的对应关系
raw: PREROUTING OUTPUT
mangle: all
nat: PREROUTING OUTPUT POSTROUTING
filter: INPUT OUTPUT FORWARD
4、规则表的应用顺序
raw - mangle - nat - filter
5、规则链的应用顺序
入站数据流:
PREROUTING - INPUT
出站数据流:
OUTPUT - POSTROUTING
转发数据流:
PREROUTING - FORWARD - POSTROUTING
6、规则的应用顺序
a、从上到下依次匹配,匹配即停止(LOG除外)
b、没有匹配项时,采用默认规则(policy规则,只有ACCEPT和DROP)
二、防火墙规则
1、语法:
iptables -t 表名 选项 链名 条件匹配 -j 控制类型
注意:
不指定表名时,默认是filter表
不指定链名时,默认是所有链
除非设置默认规则,否则必须指定条件
选项、链名、控制类型必须是大写
2、选项:
-A 链尾添加
-I 链首添加
-L 查看
-n 数字形式显示地址信息
-v 显示规则详细信息
--line-number 显示规则序号
-D 删除指定规则
-F 清空所有规则
-P 设置默认规则
-X 清空自定义的链
3、控制类型
ACCEPT 接受
DROP 丢弃
REJECT 拒绝
LOG 日志
REDIRECT 重定向
4、条件匹配
-p 协议类型
-s 源地址
-d 目标地址
-i 入站网卡
-o 出站网卡
--sport 源端口
--dport 目标端口
--icmp-type 指定icmp协议类型
一.SNAT
实现局域网主机共享单个公网IP地址接入Internet
前提条件:局域网各主机正确配置IP地址/子网掩码
局域网各主机正确设置默认网关地址
linux网关支持IP路由地址转发
网关添加俩块网卡,eth0:内网网卡 eth1:外网网卡
编写SNAT转换规则 source [s??s] 来源地址
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31
二.MASQUERADE —— 地址伪装
适用于外网IP地址非固定的情况
对于ADSL拨号连接,接口通常为 ppp0、ppp1
将SNAT规则改为MASQUERADE即可
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
三.DNAT策略的典型应用环境
在Internet中发布位于企业局域网内的服务器
DNAT策略的原理
目标地址转换,Destination Network Address Translation
修改数据包的目标地址
前提条件
局域网的Web服务器能够访问Internet
网关的外网IP地址有正确的DNS解析记录
Linux网关支持IP路由转发
实现方法
编写DNAT转换规则
# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6
发布时修改目标端口
在DNAT规则中以“IP:Port”的形式指定目标地址
# iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 2346 -j DNAT --to-destination 192.168.1.6:22
保存和恢复 iptables 规则
防火墙规则只在计算机处于开启状态时才有效。如果系统被重新引导,这些规则就会自动被清除并重设。要保存规则以便今后载入,请使用以下命令:
sbin/service iptables save
保存在 /etc/sysconfig/iptables 文件中的规则会在服务启动或重新启动时(包括机器被重新引导时)被应用。
导出(备份)规则 iptables-save 工具
iptables-save > 1.ip
导入(还原)规则 iptables-restore 工具
iptables-restore < 1.ip
例子
常见的通用匹配条件
协议匹配:-p 协议名
地址匹配:-s 源地址、-d 目的地址
接口匹配:-i 入站网卡、-o 出站网卡
# iptables -A FORWARD -s 192.168.1.11 -j REJECT
# iptables -I INPUT -s 10.20.30.0/24 -j DROP
# iptables -I INPUT -p icmp -j DROP
# iptables -A FORWARD -p ! icmp -j ACCEPT
# iptables -A INPUT -i eth1 -s 192.168.0.0/16 -j DROP
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP
常用的隐含匹配条件
端口匹配:--sport 源端口、--dport 目的端口
ICMP类型匹配:--icmp-type ICMP类型
# iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT
# iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
# iptables -A INPUT -p icmp --icmp-type 8 -j DROP
# iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
# iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
# iptables -A INPUT -p icmp -j DROP
常用的显式匹配条件
多端口匹配:-m multiport --sport 源端口列表
-m multiport --dport 目的端口列表
IP范围匹配:-m iprange --src-range IP范围
MAC地址匹配:-m mac –mac1-source MAC地址
状态匹配:-m state --state 连接状态
# iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT
# iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT
# iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP
# iptables -P INPUT DROP
# iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT
# iptables -I INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT