linux系统中,防火墙(Firewall),网址转换(NAT),数据包(package)记录,流量统计,这些功能是由Netfilter子系统所提供的,而iptables是控制Netfilter的工具. iptable能够为Unix、Linux和BSD个人工作站创建一个防火墙,也可以为一个子网创建防火墙以保护其它的系统平台。 1. 术语解释
2. iptable 概述2.1. iptable的链和表结构如上图可以看出,iptable总体结构. 2.2. 5个链(chain)
注意: 链 是每个数据包流需要经过的不同环节,你可以在不同的环节根据需要设置不同的过滤策略,每个链的默认策略都是Accept 2.3. 4个表(table)
注意: 表 是规则的集合组,每个表中的规则条目是按顺序匹配的,你可以在数据包经过的不同环节设置规则,表的处理优先级:raw > mangle > nat > filter 2.4. 详细的数据包流程从上图可以看出,数据包流环节和表的配合使用方法 3. iptable应用场景上图是应用场景的简单拓扑描述,下面的应用场景举例,都以上图为参考. 3.1. 网关服务器安全策略目标 : 网关服务器系统自生安全策略,只对内网用户开放22端口(sshd服务) #清空 filter table [root@localhost]# iptables -F -t filter [root@localhost]# iptables -X -t filter [root@localhost]# iptables -Z -t filter #清空 nat table [root@localhost]# iptables -F -t nat [root@localhost]# iptables -X -t nat [root@localhost]# iptables -Z -t nat #设置默认策略(INPUT链默认为DROP) [root@localhost]# iptables -t filter -P INPUT DROP [root@localhost]# iptables -t filter -P OUTPUT ACCEPT [root@localhost]# iptables -t filter -P FORWARD ACCEPT #回环接口(lo),默认accept [root@localhost]# iptables -A INPUT -p ALL -i lo -j ACCEPT #只对内网用户开放sshd服务 [root@localhost]# iptables -A INPUT -p tcp -s 192.168.138.0/24 --dport 22 -j ACCEPT 说明: 防火墙的策略顺序一般都是 从 非信任 ==> 信任,默认关闭所有访问权限,然后按照需要逐条开放访问权限. 3.2. 共享上网(nat)目标:使局域网的用户都可以访问外网的服务器 [root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 说明: SNAT 和 MASQUERADE 区别 SNAT : 不管是几个地址,必须明确的指定要SNAT的ip,适合网关服务器有固定地址或者是固定地址范围. MASQUERADE : 是针对ADSL动态拨号这种场景而设计,从服务器的网络接口上,自动获取当前ip地址来做NAT,这样就实现了动态SNAT地址转换 3.3. 内网的服务器对外服务(端口映射)目标:使外网用户可以访问到局域网192.168.138.21这台HTTP服务 [root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@localhost]# iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.138.21 [root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 3.4. 在网关服务器进行透明代理目标: 使局域网用户,访问外网web服务时,自动使用squid作web透明代理服务器。 [root@localhost]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@localhost]# iptables -t nat -A PREROUTING -s 192.168.138.0/24 -p tcp --dport 80 -i eth0 -j DNAT --to 192.168.138.1 [root@localhost]# iptables -t nat -A PREROUTING -s 192.168.138.0/24 -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128 [root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
转载请注明:爱开源 ? linux iptable 使用指南 |
|
来自: 昵称28748685 > 《待分类1》