ChinaUNIX 技术沙龙 iptables 基础及模块高级应用 marsaber 2009.6.20 西安.

Slides:



Advertisements
Similar presentations
一、软件简介 二、功能介绍 三、产品优势 四、应用范围 五、成功客户 目录目录 软件简介 ●员工工作时间,都认真工作了? ●还是在玩游戏? ●浏览与工作无关的网站? ●收发私人邮件? ●甚至将公司的机密资料拷贝带 走?或是通过邮件或聊天工具泄 密? …… 解决之道.
Advertisements

晏宏斌工程师 2014 年 9 月 “ 宽带网络校校通 ” 校园网建设要点和基础维护方法. – 中小学校园网络建设要点 – 常见网络故障处理基本方法 目 录目 录.
支援不同網際網路供應商路由 之線路備援機制 黃政欽 育達商業技術學院資管研究所
新多益擬真英檢系統 以專區帳密登入 選擇任一項目 注意:限用IE瀏覽器!!.
华特汽车配件有限公司网络改造解决方案 班级:网络技术-1101 答辩人:丁奇志 指导老师:欧阳炜昊.
第6章:计算机网络基础 网考小组.
校园网的基本使用和 常见问题 主讲:高 健 信息部.
江西省委组织部远教办 ( 地 市 小 集 成 系 统 )培 训
计算机文化基础教学课件 计算机网络基础.
计算机网络基础 Internet基础.
计算机基础知识培训 信息所网络研究室.
网络常用命令.
了 解 从 Internet IP 开 始.
第六章 计算机网络应用基础.
中国科学技术大学 肖 明 军 《网络信息安全》 中国科学技术大学 肖 明 军
计算机网络安全培训 京承山希望小学 网络安全员:宋春辉.
《计算机网络技术》 课程整体设计介绍.
威海电大开放教育 入学技术培训 2012年4月15日.
热烈欢迎 华容县各位领导参加教育信息化网络培训! 2015年8月.
本著作除另有註明外,採取創用CC「姓名標示-非商業性-相同方式分享」台灣3.0版授權釋出
计算机网络安全技术实验 启动虚拟机、GIF、measpoilt、.
通州区 小学语文13班培训总结 暑期研修,行走在生命的渴望里——
了 解 Internet 从 ip 开 始.
做一个智慧快乐的班主任.
2017/4/6 课程整体设计 计算机组网技术 梁建华.
Netman Linux 的防火牆設計與應用 Netman
海信FW3010PF防火墙介绍 北京海信数码科技有限公司
宽带路由器配置与应用.
学习目标: 1)理解包和包过滤 2)理解包过滤的方法 3)设置特殊的包过滤规则
第5章 總算走到Web伺服器 ~探險防火牆、Web伺服器~
文档维护者:白金(platinum)、陈绪(bjchenxu)
網路概論.
網路指令 講師 : 郭育倫
教师:陈有为 TCP/IP与Internet(A) 教师:陈有为
利用 ISA Server 2004 建置應用層防護機制
本 章 重 點 18-1 Internet的由來與對生活的影響 18-2 Internet的服務與相關名詞簡介 18-3 IP位址表示法
第 16 章 Internet架構.
網路伺服器應用 Linux Server Andres, Wen-Yuan Liao
第5章 下载和上传Internet资源 2018/11/19.
NetFilter IPTables.
利用Netflow即時偵測蠕蟲攻擊 報告人:王明輝 報告日期:民國95年11月2日.
讲议: PXE 介绍及实现 Jarvis
基 礎 網 路 管 理 台東大學電算中心 郭俊賢 技術師.
第 2 章 TCP / IP 簡介.
防火墙技术介绍   严峻的网络安全形势,促进了防火墙技术的不断发展。防火墙是一种综合性的科学技术,涉及网络通信、数据加密、安全决策、信息安全、硬件研制、软件开发等综合性课题。
Windows 2003 server 進階介紹 麋鹿.
考试题型 填空题(30) 选择题(20) 名词解释(10) 问答题(24) 计算题(16) 附加题(30) 成绩核算:
第9章 维护Linux网络 Linux的强大功能体现在网络上,网络用户无论是将Linux作为客户机还是服务器来使用都需要对其网络进行管理和维护,在管理和维护网络时,尤其在网络通信时更侧重于对信息安全性的考虑。 本章从网络的基础知识出发,详细介绍Linux下防火墙的功能与作用、路由器的原理以及SSH协议和相关的软件。通过本章的学习,使读者熟悉Linux下网络的相关知识,具备掌握管理和维护Linux网络的基本技能。
岗位技能(二)Linux系统配置与管理 项目3 TCP/IP网络接口配置
江西财经大学信息管理学院 《组网技术》课程组
NetST®防火墙培训教程 清华得实® 保留所有权利.
项目三 构建小型办公网络网络实现文件服务 项目描述
E地通VPN设备部署.
Linux防火牆與NAT架設 2013/02/03.
英码摄像机报警抓拍发微信 设置方法 V
第2讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
TANet PROTOCOL ANALYSIS - WIRESHARK - 350.
蘋果電腦的作業系統可以和Windows作業系統一樣,可以做Scan to Folder
常見網路設備簡介 A 周緯龍.
網路安全管理 期末報告 A 許之青 24/04/2019.
_01基本概念扫盲 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
DoS、DDoS網路攻擊 A 沈惇鈺 指導教授:梁明章.
蘋果電腦的作業系統可以和Windows作業系統一樣,可以做Scan to Folder
IP Layer Basics, Firewall, VPN, and NAT
目 录: 一、网络存储系统的登录 二、网络存储系统的基本使用 三、学生提交作业功能的使用 四、教师开放资源功能的使用.
第10讲 Web服务.
RHCE.
Linux网络配置管理.
IP Layer Basics & Firewall
第 4 章 网络层.
Presentation transcript:

ChinaUNIX 技术沙龙 iptables 基础及模块高级应用 marsaber 西安

主 题 大 纲 一、防火墙的作用及分类 二、 iptables 概述 三、 iptables 流程图 四、 iptables 语法 五、 iptables 模块应用 六、实例分析

说明 参考文档 : CU_platinum 的《 2 小时玩转 iptables 讲义企业版 v1.5.4 》 iptables 指南 iptables 的 man 文档 互联网 测试平台: CentOS 5.3 ( kernel 、 iptables )

一、防火墙的作用 作用: 过滤两个网络间流入流出的数据包,由 预先制定的策略来控制访问行为。

防火墙种类(一) 1 、简单包过滤防火墙; 优点:速度快、性能高,对应用程序透明; 缺点:只检查报头,不检查数据区,不建立连接状态表,安 全性低,应用控制层很弱; 2 、状态检测包过滤防火墙; 优点:安全性高,性能高, 缺点:只检查报头,但建立连接状态表,不检查数据区,安 全性高,应用控制层很弱;

防火墙种类(二) 3 、应用代理防火墙; 优点:安全性高,提供应用层的安全; 缺点:性能差,只支持有限的应用,不透明,不检查报头, 不建立连接状态表,检查数据区,网络层保护较弱; 4 、核检测防火墙; 优点:重组并检查会话内容,建立连接状态表;网络层保护 强、应用层保护强、会话保护强; 缺点:性能差,不透明。

二、 iptables 概述 Kernel 0.01(1991.9) Kernel 2.0( ) ipfwadm Kernel 2.2( ) ipfwadm Kernel 2.4( ) Netfilter/iptables Kernel 2.6( ) Netfilter/iptables

三、 iptables 流程图  PREROUTING—[Route]  FORWARD  POSTROUTING  ︱ ↑ ︱ ↓ ︱ INPUT OUTPUT ↓ ↑ ---——— local ———---

四、 iptables 基本语法 iptables 基本语法: iptables [-t table] command [match] [target] 1 、 table ,表, filter 、 nat 、 mangle 、 raw ; 2 、 command , iptables 最重要的部分; 3 、 match ,匹配数据包的特征; 4 、 target ,对匹配的数据包进行的操作;

4.1 、表 filter ,用于一般的数据包过滤,针对本机; iptables 默认的 表;链 :INPUT 、 FORWARD 、 OUTPUT ; nat ,仅用于 NAT ,也就是转换数据包的源地址或目标地址; 链 :PREROUTING 、 POSTROUTING 、 OUT ; mangle ,用来修改流经防火墙的数据包内容,不能做任何 NAT ,它只是改变数据包的 TTL , TOS 或 MARK ,而不是其 源目地址。强烈建议你不要在这个表里做任何过滤; 链 :PREROUTING 、 POSTROUTING 、 OUTPUT 、 INPUT 和 FORWARD ; raw , 负责加快数据包穿越防火墙的速度,借此提高防火 墙的性能;

4.2 、命令 (1) -L :查看规则; iptables -L iptables -L -n iptables -t nat -L -n iptables -L -n --line-number iptables -t nat -L -n --line-number -P :修改默认规则; iptables -P INPUT DROP 备注:为链设置默认的 target ( 可用的是 DROP 和 ACCEPT ) ,做为最后一条 规则被执行

4.2 、命令 (2) -A :追加规则,做为最后一条规则; iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -t nat -A PREROUTING -i eth0 -p tcp --dport J DNAT --to :22 -I :插入规则,不写规则数,默认第 1 条; iptables -I INPUT 1 -p icmp -j ACCEPT iptables -I INPUT 3 -p tcp --dport 22 -j ACCEPT iptables -t nat -I PREROUTING -i eth0 -p tcp --dport J DNAT --to :22

4.2 、命令 (3) -D :删除规则; iptables -D INPUT 3 iptables -D INPUT -s j DROP -R :修改规则; iptables -R INPUT 3 -s j ACCEPT iptables -t nat -R POSTROUTING 1 -s /24

4.2 、命令 (4) -F :清空规则; iptables -F iptables -F INPUT iptables -t nat -F iptables -t nat -F POSTROUTING -Z :把指定链的所有计数器归零; iptables -Z iptables INPUT -Z iptables -t nat -Z iptables -t nat POSTROUTING -Z

4.3 匹配条件 出、入接口( -o 、 -i ) 源、目的地址( -s 、 -d ) 协议类型( -p ) 源、目的端口( --sport 、 --dport )

4.3 匹配条件 (1) 按网络接口匹配 -o 匹配数据流出的网络接口 iptables -A INPUT -o eth0 -j DROP iptables -A INPUT -o ppp0 -j DROP 备注:将接口 eth0 、 ppp0 流出的数据 DROP 掉; -i 匹配数据流入的网络接口 iptables -A INPUT -i eth0 -j DROP iptables -A INPUT -i ppp0 -j DROP 备注:将流入到接口 eth0 、 ppp0 的数据 DROP 掉;

4.3 匹配条件 (2) 按地址匹配 -s 匹配源地址 iptables -A INPUT -s j DROP # 将来自 的任何 请求 DROP 掉; -d 匹配目的地址 iptables -A INPUT -d j DROP # 将本机发往 的 任何请求 DROP 掉; 备注: 可以是单个 IP ( )、网段( /24 )、域名 ( ),不设则表示任何地址;

4.3 匹配条件 (3) 按协议类型匹配 -p 匹配协议类型 iptables -A INPUT -s /24 -p tcp --dport 22 -j DROP # 禁止 /24 的客户机连接本机 22 端口 iptables -A INPUT -p icmp -j DROP # 禁 ping iptables -A INPUT -p 1 --icmp-type 8 -j DROP # 可以 ping 通其他客户机, 但是其他客户机 ping 不通该机; 备注:第三条规则中 1 对应的协议类型是 icmp ,详情请参照 /etc/protocols

4.3 匹配条件 (4) 按端口匹配 --sport 匹配源端口 iptables -A INPUT -p tcp --sport 80 -j DROP # 将来自 80 端口的请求 DROP 掉 (比如,我向 发出请求, 回应后, 遇到该规则后回应就被拒绝掉); --dport 匹配目的端口 iptables -A INPUT -s /24 -p tcp --dport 80 -j DROP # 将来自 /24 的针对本机 80 端口的请求 DROP 掉; 备注: 1 、 --sport 、 --dport 必须配合参数 -p 使用; 2 、可以指定某个端口,也可以是端口范围,比如 :2000 ( 2000 以下端 口)、 2000:3000 ( 端口)、 3000: ( 3000 以上端口)

4.4 处理方式 (1) ACCEPT 这个 target 没有任何选项和参数,使用也很简单,指定 -j ACCEPT 即可。一旦数 据包满足了指定的匹配条件,就会被 ACCEPT ,并且不会再去匹配当前链中的 其他规则或同一个表内的其他规则; iptables -P INPUT ACCEPT # 修改 INPUT 的默认规则为 ACCEPT iptables -A INPUT -s /24 -j ACCEPT # 允许来自 /24 的所有针对 本机的所有请求;

4.4 处理方式 (2) DROP 如果包符合条件,这个 target 就会把它丢掉,也就是说包的生命到此结束,不 会再向前走一步,效果就是包被阻塞了。在某些情况下,这个 target 会引起意 外的结果,因为它不会向发送者返回任何信息,也不会向路由器返回信息, 这就可能会使连接的另一方因苦等回音而亡,解决这个问题的较好办法较好 的办法是使用 REJECT (除了丢弃数据包之外,还向发送者返回错误信息); iptables -A INPUT -s j DROP # 将来自 的请求全部 DROP 掉; iptables -A INPUT -s j REJECT # 将来自 的请求全部 DROP 掉,并向请求者返回错误信息;

4.4 处理方式 (3) --SNAT 这个 target 是用来做源网络地址转换的,就是重写包的源 IP 地址。先在内核里 打开 ip 转发功能,然后再写一个 SNAT 规则,就可以把所有从本地网络出去的 包的源地址改为 Internet 连接的地址了。 SNAT target 的作用就是让所有从本地 网出发的包看起来都是从一台机子发出的,这台机子一般就是防火墙。 iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to iptables -t nat -A POSTROUTING -s /24 -j SNAT --to\ 备注: eth0 为外网网卡接口, /24 为内网网段;

4.4 处理方式 (4) -j DNAT --to IP[-IP]:port (nat 表的 PREROUTING 链 ) 用来做目的网络地址转换的,就是重写包的目的 IP 地址。如果一个包被匹配了, 那么和它属于同一个流的所有的包都会被自动转换,然后就可以被路由到正 确的主机或网络。 iptables -t nat -A PREROUTING -d p tcp --dport 80 -j DNAT\ --to :80 # 把所有发往地址 ( 端口 80) 的请求都转发到一个 LAN 使用的私有地址中,即 到 iptables -t nat -A PREROUTING -d p tcp --dport 80 -j DNAT\ --to # 把所有发往地址 ( 端口 80) 的请求都 转发到一段 LAN 使用的私有地址中,即 到 备注: 也就是将内网的服务器映射到外网,通俗点就是端口映射;

4.4 处理方式 (5) -j MASQUERADE 和 SNAT target 的作用是一样的,区别就是它不需要指定 --to-source ,被专门设 计用于那些动态获取 IP 地址的连接的,如果你有固定的 IP 地址,还是用 SNAT target 吧。当接口停用时, MASQUERADE 不会记住任何连接,这在我们 kill 掉接 口时是有很大好处的。如果我们使用 SNAT target ,连接跟踪的数据是被保留 下来的,而且时间要好几天,这可是要占用很多连接跟踪的内存的。一般情 况下,这种处理方式对于拨号上网来说是较好的。即使你有静态的 IP ,也可 以使用 MASQUERADE ,而不用 SNAT 。不过,这不是被赞成的,因为它会带来 额外的开销,而且以后还可能引起矛盾。 iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s /24 -j MASQUERADE 备注: eth0 为外网网卡接口, /24 为内网网段;

4.5 规则的匹配方式 规则由第 1 条开始依次匹配,如果第 1 条规则不匹配,则匹配第 2 条规 则,如果第 2 条规则还不匹配则匹配第 3 条规则,依次论之; 如果数据包被第 N 条规则所匹配,则数据包的存活将由该规则决定; 如果规则规定将数据包丢弃,那么数据包就会被丢弃,不会管后面的 规则如何如何; 不论链中有多少个规则,默认规则 (Default Policy) 永远都在每一个链的 最底端,最后被执行;每个链的默认规则各自独立,且只有一种状态, 要么是 ACCEPT ,要么是 DROP ;

4.6 备注 规则配置文件 /etc/sysconfig/iptables iptables-save iptables-restore service iptables save # 将目前 iptables 规则保存 到 /etc/sysconfig/iptables ; chkconfig iptables on chkconfig --level 35 iptables on

五、 iptables 模块应用 很 好 !很 强 大 !很 好 !很 强 大 !

5.1 iptables 模块应用 comment 模块 iptables -A FORWARD -s j DROP -m comment\ --comment “DataServer“ iptables -A FORWARD -d j DROP -m comment\ --comment “DataServer“ # 不允许数据库服务器 访问外网 / 被外网访问; 备注: 1 、 允许你增加一个备注给任何规则,以提高规则的可读性和理解性; 2 、备注最多支持 256 个字符。

5.2 iptables 模块应用 connlimit 模块 iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above\ 50 -j DROP # 只允许每个 IP 同时发起 50 个 80 端口的请求,超过的请求将被丢弃; 备注: 1 、很有效的一个模块,确实不错; 2 、 --connlimit-above n 限制为多少个; --connlimit-mask n 这组主机的掩码, 默认是 connlimit-mask 32 ,即一个 IP ; 3 、可以对付 synflood 这样的攻击,对于 DDoS 无效;

5.3 iptables 模块应用 iprange 模块 iptables -A FORWARD -m iprange --src-range j DROP # 不允许内网客户机 通过网关上网; 备注: 1 、 --src-range 源 IP ; 2 、 --dst-range 目的 IP ;

5.4 iptables 模块应用 layer7 模块 iptables -A FORWARD -m layer7 --l7proto qq -j DROP # 禁 QQ iptables -A FORWARD -m layer7 --l7proto xunlei -j DROP # 禁迅雷 iptables -A FORWARD -m layer7 --l7proto bittorrent -j DROP # 禁 BT iptables -A FORWARD -m layer7 --l7proto edonkey -j DROP # 禁电驴 备注: Layer7 支持的封禁,参照 /etc/l7-protocols/protocols/

5.5 iptables 模块应用 limit 模块 iptables –A INPUT -m limit --limit 20/second -j DROP iptables –A INPUT -m limit –limit-burst 10 -j DROP 备注: 1 、 --limit ,为 limit match 设置最大平均匹配速率,也就是单位时间内 limit match 可以匹配几个包。它的形式是一个数值加一个时间单位,可以 是 /second /minute /hour /day 。默认值是每小时 3 次 ( 用户角度 ) ,即 3/hour ,也就是每 20 分钟一次 (iptables 角度 ) ; 2 、 --limit-burst ,定义的是 limit match 的峰值,就是在单位时间 ( 这个时间 由上面的 --limit 指定 ) 内最多可匹配几个包 ( 由此可见, --limit-burst 的值 要比 --limit 的大 ) ,默认值是 5 ;

5.6 iptables 模块应用 mac 模块 iptables –A INPUT -m mac --limit mac-source XX:XX:XX:XX:XX:XX -j\ DROP 备注: 基于包的 MAC 源地址匹配包,地址格式只能是 XX:XX:XX:XX:XX:XX ,当然 它也可以用英文感叹号取反;

5.7 iptables 模块应用 muluiport 模块 iptables –A INPUT -p tcp -m muluiport --dport 21,22,25,80,110 -j DROP iptables –A INPUT -p tcp -m muluiport --source-port 21,22,25,80,110\ -j DROP iptables –A INPUT -p tcp -m muluiport --destination-port\ 21,22,25,80,110 -j DROP 备注: 1 、 --source-port 源端口多端口匹配,最多可以指定 15 个端口,以英文逗 号分隔,注意没有空格; 2 、 --destination-port 目的端口多端口匹配,使用方法和源端口多端口匹 配一样,唯一的区别是它匹配的是目的端口; 3 、 --dport 同端口多端口匹配,意思就是它匹配的是那种源端口和目的端 口是同一个端口的包,比如:端口 80 到端口 80 的包、 110 到 110 的包等。 使用方法和源端口多端口匹配一样。

5.8 iptables 模块应用 owner 模块 iptables -A OUTPUT -p tcp --dport 22 -m owner --uid-owner 500 -j\ DROP iptables -A OUTPUT -p tcp --dport 22 -m owner --gid-owner 500 -j\ DROP 备注: 1 、比对来自本机的封包,是否为某特定使用者 / 组所产生的,这样可以 避免服务器使用 root 或其它身分将敏感数据传送出去,可以降低系统 被骇的损失,这里的 --uid-owner 和 --gid-owner 可以跟用户名、组名、 用户 ID 、组 ID ; 2 、没有 --pid-owner 、 --cmd-owner ;

5.9 iptables 模块应用 recent 模块 iptables -A INPUT -p tcp --dport 22 --syn -m recent --rcheck –seconds\ hitcount 3 --rttl --name SSH --rsource -j DROP iptables -A INPUT -p tcp --dport 22 --syn -m recent --set --name SSH\ --rsource -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 同一个 IP 在一个小时内只允许建立 ( 或尝试 ) 三次 SSH 联机; 备注: 请注意 rule 顺序 : 先设置 recent 条件 -j DROP, 再设置 recent --set -j ACCEPT

5.10 iptables 模块应用 state 模块 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j\ ACCEPT 备注: 1 、包状态依据 IP 所包含的协议不同而不同,但在内核外部,也就是用户空间里, 只有 4 种状态: NEW , ESTABLISHED , RELATED 和 INVALID 。 2 、 NEW :这个包是我们看到的第一个包; 3 、 ESTABLISHED : 已经注意到两个方向上的数据传输,而且会继续匹配这 个连接的包;只要发送并接到应答,连接就是 ESTABLISHED 的了 4 、 RELATED :当一个连接和某个已处于 ESTABLISHED 状态的连接有关系时, 就被认为是 RELATED 的了; 5 、 INVALID : 数据包不能被识别属于哪个连接或没有任何状态。有几个原 因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的 ICMP 错误信息。一般地,我们 DROP 这个状态的任何东西;

5.11 iptables 模块应用 string 模块 iptables -A FORWARD -m string --algo bm --string sex -j DROP iptables -A FORWARD -m string --algo bm --string qq -j DROP # 过滤关键字; 备注: 1 、 String 字符串匹配, 可以用做内容过滤; 2 、通过一些模式匹配策略,用这个模块匹配给定的一个字符串。要求: 内核版本不能低于 ;

5.12 iptables 模块应用 time 模块 iptables -A FORWARD -m time --timestart 8:00 --timestop 18:00 --weekdays Mon,Tue,Wed,Thu,Fri --datestop j ACCEPT 备注: 1 、 [ --timestart value ] ( 开始时间 ) :只是匹配在这个值之后的 ( 包括格式 HH:MM ; 默认 00:00) ; 2 、 [ --timestop value ] ( 结束时间 ) :只是匹配在这个值之前的 ( 包括格式 HH:MM ; 默认 23:59) ; 3 、 [ --weekdays listofdays ] ( 星期 ) :只是匹配已经给出的天,格式 Mon,Tue,Wed,Thu,Fri,Sat,Sun ,默认每天,非 days ; 4 、 [ --datestart date ] ( 开始日期 ) :只是匹配这个开始日期值之后的 ( 包括, 格式 : YYYY[:MM[:DD[:hh[:mm[:ss]]]]] h,m,s start from 0 ,默认是 1970 ; 5 、 [ --datestop date ] ( 结束日期 ) :只是匹配这个开始日期值之前的 ( 包括, 格式 : YYYY[:MM[:DD[:hh[:mm[:ss]]]]] h,m,s start from 0 ,默认是 2037 ;

六、实例分析 前言: 写规则前须先理清思路,明白需求,不可盲目执 行规则 / 脚本(比如远程时,不慎将 ssh 的 22 端口 DROP 掉了); 建议将 iptables 规则写成脚本(方便修正、方便管 理); 从点点滴滴做起,做好每一件事,养成一个好习 惯;

6.1 ftp 服务器 #!/bin/bash MOD=/sbin/modprobe IPT=/usr/local/sbin/iptables $MOD ip_conntrack_ftp $IPT -F $IPT -X $IPT -P INPUT DROP $IPT -A INPUT -i lo -j ACCEPT $IPT -A INPUT -m state --state RELATED,ESTABLISHED\ -j ACCEPT $IPT -A INPUT -p tcp --sport 21 -j ACCEPT $IPT -A INPUT -p tcp --dport 22 -j ACCEPT

备 注 1 、 FTP 的主动连接模式, 21 为监听 / 响应端口, 20 为数据传输 端口; 2 、 FTP 的被动连接模式, 21 为监听 / 响应端口,数据传输端口 为随机端口; 3 、该脚本适合客户端( FlashFXP 或 IE 浏览器)被动模式下的 连接; 4 、 ip_conntrack_ftp 该模块很重要,不加载该模块、依旧使 用被动连接的话, vsftpd 为例,配置文件中添加: pasv_min_port=9001 pasv_max_port=9999 防火墙规则中需添加: $IPT -A INPUT -p tcp --dport 9001:9999 -j ACCEPT

6.2 网关服务器 #!/bin/bash MOD=/sbin/modprobe IPT=/usr/local/sbin/iptables $MOD ip_conntrack_ftp $MOD ip_nat_ftp echo "1" > /proc/sys/net/ipv4/ip_forward $IPT -F $IPT -t nat -F $IPT -X $IPT -t nat -X $IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE

备 注 1 、这差不多应该是最简单的网关脚本了,这里只是举例,没有一 成不变的规则,根据自己的需要写吧! 2 、 开启数据转发功能 echo “1” > /proc/sys/net/ipv4/ip_forward ; 3 、开启数据转发功能的另外一种办法【推荐】: 编辑 /etc/sysctl.conf , net.ipv4.ip_forward = 1 4 、 eth0 为外网网卡接口; 5 、 关于 MASQUERADE ,参照 4.4 处理方式 (5) ,或者使用 man ; 6 、如果有自己的外网固定 IP ,可以将最后一行规则改成: $IPT -t nat -A POSTROUTING -o eth0 -j SNAT --to 也可以写成: $IPT -t nat -A POSTROUTING -s /24 -j SNAT –to\

6.3 对内网用户的控制 #!/bin/bash MOD=/sbin/modprobe IPT=/usr/local/sbin/iptables $MOD ip_conntrack_ftp $MOD ip_nat_ftp echo "1" > /proc/sys/net/ipv4/ip_forward $IPT -F $IPT -t nat -F $IPT -X $IPT -t nat -X $IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE $IPT -A FORWARD -s j DROP $IPT -A FORWARD -d -j DROP

备 注 1 、 $IPT -A FORWARD -s j DROP # 不允许内网客户机 访问外网; 2 、 $IPT -A FORWARD -d -j DROP # 不允许内网客户机访问 这个网站, 会被解析成 IP 再去匹配的; /etc/resolv.conf 中 要有能使用的 DNS 服务器,否则报错; 3 、尽管 FORWARD 默认规则是 ACCEPT ,但是默认规则永远都 是作为最后一条规则被执行的; 4 、 $IPT -A FORWARD -s d -j DROP # 不允许内网客户机 访问 ,访问其 他网站、收发邮件等都是被允许的;

6.4 映射内网服务器 #!/bin/bash MOD=/sbin/modprobe IPT=/usr/local/sbin/iptables $MOD ip_conntrack_ftp $MOD ip_nat_ftp echo "1" > /proc/sys/net/ipv4/ip_forward $IPT -F $IPT -t nat -F $IPT -X $IPT -t nat -X $IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE $IPT -t nat -A PREROUTING -d p tcp --dport 80\ -j DNAT --to :80

备 注 1 、这也就是所谓的端口映射了; 2 、可以指定 IP , -d ,也可以指定网络接口比如, -i eth0 ; 3 、另外提供回流问题的解决办法: $IPT -t nat -A PREROUTING -d p tcp --dport 80 -j DNAT --to\ :80 $IPT -t nat -A POSTROUTING -s /24 -d –p\ tcp -- dport 80 -j SNAT --to 小注: 为 /24 的网关 IP ; 为提供 web 服务的服务器;

谢 谢!