最全的iptables防火墙详解
iptables /
iptables /
iippttaabblleess官方网站:hhttttpp::nneettffiilltteerr..oorrgg//
• 数据包经过防火墙的路径
• 禁止端口
• 强制访问某站点
• 发布内部网络服务器
• 智能DNS
• 端口映射
• 通过NAT上网
• IP 规则的保存与恢复
• iptables指令语法
• iptables实例
数据包经过防火墙的路径
图1比较完整地展示了一个数据包是如何经过防火墙的,考虑到节省空间,该图实际上包了三种
情况:
来自外部,以防火墙(本机)为目的地的包,在图1中自上至下走左边一条路径。
由防火墙(本机)产生的包,在图1中从“本地进程”开始,自上至下走左边一条路径
来自外部,目的地是其它主机的包,在图1中自上至下走右边一条路径。
图1
如果我们从上图中略去比较少用的mangle 表的图示,就有图2所显示的更为清晰的路径图.
图2
禁止端口的实例
ssh
ssh
禁止sssshh端口
只允许在上使用ssh远程登录,从其它计算机上禁止使用ssh
#iptables-A INPUT -s-p tcp--dport22-j ACCEPT
#iptables-A INPUT -ptcp--dport22-jDROP
禁止代理端口
#iptables-A INPUT -ptcp--dport3128-j REJECT
icmp
icmp
禁止iiccmmpp端口
除外,禁止其它人ping我的主机
#iptables-A INPUT -i eth0-s/32-picmp-m icmp--icmp-type echo-request-j ACCEPT
#iptables-A INPUT -i eth0-picmp --icmp-typeecho-request –j ?DROP
或
#iptables-A INPUT -i eth0-s/32-picmp-m icmp--icmp-type 8-jACCEPT
#iptables-A INPUT -i eth0-picmp -m icmp--icmp-type 8-j DROP
注:可以用iptables--protocolicmp--help 查看ICMP 类型
还有没有其它办法实现?
禁止QQQQ端口
#iptables-D FORWARD-pudp--dport8000-j REJECT
强制访问指定的站点
图3
要使/24网络内的计算机(这此计算机的网关应设为0)强制访问指定的站
点,在做为防火墙的计算机(0)上应添加以下规则:
1. 打开ip包转发功能
echo1> /proc/sys/net/ipv4/ip_forward
2. 在NAT/防火墙计算机上的NAT表中添加目的地址转换规则:
iptables-t nat-IPREROUTING -i eth0-ptcp--dport80-j DNAT --to-destination30:80
iptables-t nat-IPREROUTING -i eth0-pudp--dport80-j DNAT--to-destination30:80
3. 在NAT/防火墙计算机上的NAT表中添加源地址转换规则:
iptables-t nat-IPOSTROUTING-o eth1-ptcp--dport80-s /24-j SNAT --to-source
0:20000-30000
iptables-t nat-IPOSTROUTING-o eth1-pudp--dport80-s/24-jSNAT --to-source
0:20000-30000
4. 测试:在内部网的任一台计算机上打开浏览器,输入任一非本网络的IP,都将指向IP 为
30的网站.
发布内部网络服务器
图4
要使因特网上的计算机访问到内部网的FTP 服务器、WEB 服务器,在做为防火墙的计算机上应
添加以下规则:
1.echo1>/proc/sys/net/ipv4/ip_forward
2. 发布内部网web服务器
iptables-t nat-IPREROUTING -ptcp-i eth1-s/24--dport80-jDNAT --to-destination
5:80
iptables-t nat-IPOSTROUTING-p