iptables入门.docx_第1页
iptables入门.docx_第2页
iptables入门.docx_第3页
iptables入门.docx_第4页
iptables入门.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

iptables入门:邮件服务器简单防护本文针对iptables初学者。如果你刚刚学习了iptables的原理和基本语法,但还不清楚在线上服务器环境中如何实际的利用这个工具,那么建议阅读本文。iptables的两种主要工作模式对于iptables的数据包而言,有以下几个流向:PREROUTINGFORWARDPOSTROUTINGPREROUTINGINPUT本机OUTPUTPOSTROUTING大家可以留意下,数据包的主要两种流向(其实也是我们后面iptables的两种工作模式):一是做为NAT路由器,另一种是做为主机防火墙。iptables数据流入和流出详细流程建议参考下图:图 iptables数据包流入和流出详细流程图iptables根据不同的数据包处理功能使用不同的规则表。它包括如下三个表:filter、nat和mangle。 filter是默认的表,它包含真正的防火墙过滤规则。内建的规则链包括:INPUT、OUTPUT和FORWARD。 nat表包含源和目的地址及端口转换使用的规则,内建的规则链包括PREROUTING、OUTPUT和POSTROUTING。 mangle表包含用于设置特殊的数据包路由标志的规则,这些标志随后被filter表中的规则检查。内建的规则链包括:PREROUTING、INPUT、FORWARD、POSTROUTING和OUTPUT。表对应的相关规则链的功能如下: INPUT链:当一个数据包由内核中的路由计算确定为本地的Linux系统后,它会通过INPUT链的检查。 OUTPUT链:保留给系统自身生成的数据包。 FORWARD链:经过Linux系统路由的数据包(即当iptables防火墙用于连接两个网络时,两个网络之间的数据包必须流经该防火墙)。 PREROUTING链:用于修改目的地地址(DNAT)。 POSTROUTING链:用于修改源地址(SNAT)。iptables详细语法如下所示:iptables -t表名 链名规则编号 -i | o 网卡名称 -p 协议类型 -s 源IP地址 | 源子网-sport 源端口号 -d 目标IP地址 | 目标子网-dport 目标端口号 注:此语法规则详细,逻辑清晰,推荐以此公式记忆。我们在刚开始写iptables规则时就应该养成好习惯,用公式来规范脚本,这对于我们的以后工作大有帮助。这一节我们通过编写一个简单的用于邮件主机防护iptables脚本来熟悉iptables语法规则。网络拓朴很简单,iptables本身机器IP为:01/24,另一台机器的IP为:02。普通的邮件主机防护脚本普通的邮件主机防护脚本比较容易实现。邮件主机主要开放二个端口:80和25,其他端口则关闭,另外由于这里没有涉及多少功能,所以模块的载入也很简单,只涉及Filter表,而且脚本的初始化也很简单。我们可以按照编写iptables的流程顺序来写脚本,脚本内容如下:(注:此服务器置于自己的机房内,所以没有开放22端口,调试时直接进机房调试。如果远程操作,需要打开22端口。)#/bin/bashiptables -Fiptables -Xiptables -Zmodprobe ip_tablesmodprobe iptable_natmodprobe ip_nat_ftpmodprobe ip_conntrackiptables -P INPUT DROPiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTiptables -A INPUT -i lo -j ACCEPTiptables -A OUTPUT -o lo -j ACCEPTiptables -A INPUT -p tcp -m multiport -dports 25,80 -j ACCEPTiptables -A INPUT -m state -state RELATED,ESTABLISHED -j ACCEPT说明一下:前面三条可以将iptables初始化。modprobe这段是手动加载模块的过程。一般如果用 service iptables start 来启动iptables,会加载很多不必要的模块,所以这里我们采用手动加载的方式。ip_conntrack模块在平时的测试学习环境可以开启,方便追踪数据包的流向。不过,生产环境下我不建议大家开启此模块,以免加重服务器的负载。默认规则下方的两条用于开启系统回环端口,以免造成不必要的麻烦。具体是什么样的麻烦?大家可以先想一想,文末会给出解答。最后一条是允许RELATED和ESTABLISHED状态的连接通过iptables。为什么要这样设置,也会在文末解答。iptables脚本开启后,我们可以用命令查看一下结果,如下所示:iptables -nv -L此命令显示结果如下:Chain INPUT (policy DROP 13539 packets, 763K bytes)pkts bytes target prot opt in out source destination 0 0 ACCEPT all - lo * /0 /0 480 32744 ACCEPT tcp - * * /0 /0 multiport dports 25,80 13 1411 ACCEPT all - * * /0 /0 state RELATED,ESTABLISHEDChain FORWARD (policy ACCEPT 0 packets, 0 bytes)pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 472 packets, 52779 bytes)pkts bytes target prot opt in out source destination 0 0 ACCEPT all - * lo /0 /0 这时80和25之外的端口就被iptables成功隐蔽了。比如我们尝试在另一台机器上nmap扫描这台服务器:nmap -sT 01此命令显示结果如下:Starting Nmap 4.11 ( /nmap/ ) at 2011-05-25 00:46 CSTInteresting ports on 01:Not shown: 1678 filtered portsPORT STATE SERVICE25/tcp open ssh80/tcp open httpMAC Address: 00:E0:62:12:7B:65 (Host Engineering)Nmap finished: 1 IP address (1 host up) scanned in 37.721 seconds看到这个结果说明iptables生效了。另外,对刚刚学习iptables的朋友提供一个建议。一开始玩iptables很容易犯的一个错误就是把自己锁在服务器外面了。针对这种情况,我们可以编写一个crontab计划任务,每5分钟关闭一次防火墙,等完全调试完后再关闭此crontab任务:vim /etc/crontab*/5 * * * * /etc/init.d/iptables stop以上只是初级的防护脚本。至于其它的SYN和Ping及其它攻击,等大家熟悉了解其原理后,可以在此脚本的基础上添加。以下是上文中两个问题的解答:一、为什么要打开系统回环接口?Linux系统默认会有一块名为lo的环回网络接口,而真正的网卡一般则被Linux系统识别成名为eth0, eth1这样的网络接口。一般,lo接口对应的ip地址为。当你从一台linux主机向自身发送数据包时,实际上的数据包是通过虚拟的lo接口来发送接受的,而不会通过你的物理网卡eth0/eth1。如果lo接口被墙,会发生ping/telnet/ssh本机(本机域名、localhost和)不通的情况,会给调试带来一些麻烦。二、为什么要设置RELATED、ESTABLISHED状态检测?相对于纯IP过滤,状态防火墙更加智

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论