实例解析Linux下iptables的相关配置与命令使用技巧
启动和停止1、命令:
代码如下:
或者直接去找/etc/init.d/下的2、配置文件:/etc/sysconfig/iptables没有的话,可以用iptables-save生成
框架: tables > chains > rules(target)整体上可认为iptables就是由许多chain组成的,要不然其老版本怎么叫做ipchains呢。但是划分层次为:一个table可由多个chain组成,一个chain可由多个rules组成(一个rule对应一个target)。target概念的好处是:系统预置了一些target,如ACCEPT,DROP,REJECT,LOG等,意思是如果这个包匹配这条rule,其处理办法就是target。这里引入target的好处在于,允许用户自定义一条chain,然后用chain名做为新的target,这样,就可以聚合一些rule!形成了层次性的rule,就是说如果满足这条rule,那么再看其target里面的rule。1、iptables由四张table组成,每张table由默认的chain组成:(1)filter: 默认有三个chain——INPUT,OUTPUT和FORWARD(2)nat: 做NAT工作,默认三个chain——OUTPUT,PREROUTING,POSTROUTING(3)mangle: 对包的一些参数进行修改,默认有五个chain——INPUT,OUTPUT,FORWARD,PREROUTING,POSTROUTING(4)raw:作用未明,默认有两个chain——OUTPUT,PREROUTING不同的table分管不同的方面。iptables的默认命令是对filter生效。可以用-t nat指定对nat生效。2、所谓的配置防火墙就是:(1)向chain添加rule:每个chain都是由一系列rule组成的,比如你要更改INPUT这个chain来允许用户访问你机器上的某个端口。比如这个INPUT有两个rule,一个用于允许用户访问你的5901端口,一个用于允许用户访问你的5902端口
一般安全策略:1、从最严厉的安全措施开始,当你发现有用的东西不能工作时再一点点儿的放宽限度。2、防火墙不能当作防范入侵的主要手段,它只能作为每台主机上独立保护措施的一个补充罢了。每台主机上的独立保护措施包括crack,tcpd,nmap,COPS,tripwire和相应的策略。
规则和命令:规则很简单,相应的包,会交给相应的内置chain,然后对于chain中的rules,是从上到下的顺序进行匹配,和break语句一样。所以,比如你要开放某些端口,就写上面,最后才写封闭所有端口。静态规则:1、iptables -F chain-name: 清除名为chain-name的chain中的所有rule,只写-F清除所有的chain中的所有rule,但保留chain。这默认只对filter table的。如果要清除如nat table的,要用 iptables -t nat -F2、iptables -P chain-name target:给名为chain-name的chain设置默认的rule。这个通常是放在给该chain设置的所有rule的开头。相当于break语句中的default。 注意,如果给nat或mangle中的chain设置,则别忘了用 -t table。 但是注意的是,这里的target只能用内置的3、iptables -A chain-name rule给名为chain-name的chain添加一条规则,后面rule是一下的组合:-j target 预置target或用户自定义的chain-i interface 如eth0-p proto 协议,有tcp,udp-s source-ip 源ip-d dest-ip 目的ip–sport source-port 源端口–dport dest-port 目的端口–icmp-type type 匹配ICMP类型,比如你允许哪些类型的ICMP包通过,后面跟数字! 否定-t table4、iptables -I chain-name rulenum rule:这个和-A的区别是:插入,而不是加在末尾。rulenum为1表示加在最前面。5、iptables -X chain-name:删除非系统内置(用户自定义)的chain,这个不同于-F,这个是把chain整个删除,名字都没了,即你用iptables -L -v看不到了。6、iptables -D chain-name rule/rulenum这个同iptable -A chain-name rule完全相反,如果你要删除chain-name中的一条rule,就按照-A时的写法就可以删除之。或者用rulenum,即该chain的从上往下数的num数,第一条rule的rulenum为1。 7、iptables -L chain-name打印名为chain-name的chain的rules。不给出chain-name,则打印所有chain。8、iptables -L -v chain-name在6的基础上加了些有用信息,如从开机到现在,匹配每条rule的包的数量!
动态规则: 针对connection(TCP连接)1、有三种动态参数:NEW:指收到的第一次TCP连接ESTABLISHED:当连接建立后,属于该connection的包RELATED:当连接建立后,又有相关的连接建立(典型的是ftp的passive模式,由client发起到server的数据连接,这个端口是由server指定的,但由client发起) 2、命令:
代码如下:
上面两条命令,拒绝所有NEW的外来包。但允许自己发出的连接收到外来的数据(ESTABLISHED)再加上:
代码如下:
则表示可以允许外界访问21端口(FTP,并假设采用passive模式),结合上面的状态,则允许外界主动发起到自己的ftp数据连接———可能是任意端口,但这里已不用写了!!所以,一般,先写上动态规则,然后再写静态规则,就可以做到处理一些像FTP Passive模式这种不知道用户会访问哪个端口的情况。3、注意:有状态的规则需要内核相应模块支持,如果没有编译进,或没有加载,则不会生效的。
iptables对请求的URL作IP访问控制 下面来看一个实例。服务器运行环境是Tomcat,现在要实现的目的是,只允许特定的IP访问某个目录,一种方法是在tomcat配置文件server.conf中,使用RemoteAddrValve对虚拟主机做访问控制。另外一种方法可以通过iptables规则。个人比较喜欢iptables例如:禁止访问http://192.168.137.254:10000/managersns 这个路径,只允许192.168.137.101访问
代码如下:
以上规则是正对eth0网卡,可以跟踪自己需求修改。参数说明:-m string使用string功能,string是iptables的一个module,也就是做字符串匹配的。–string “xxxx”定义字符串内容,可以是URL里任意字符,如果是需要block下载某些类型的文件或请求,这个有很大的发挥空间,可自由想象喔。–algo bm设置字符匹配的查询算法,一般默认使用bm算法效果就可以了,另外还可以设置kmp算法,那是一种更复杂的算法,详细内容可自行参见高等数学里的资料。(bm = Boyer-Moore, kmp = Knuth-Pratt-Morris)-j DROP这在公司网络禁用视频网站是非常有效的,在网关服务器上设置:
代码如下:
其中各项参数的意义如下:-A FORWARD增加FORWARD链的规则,以上规则是针对启用了路由功能(即:echo 1 > /proc/sys/net/ipv4/ip_forward)如果是直接访问,可使用的INPUT或OUTPUT。设置符合此条件的包的处理方式,DROP即是丢弃,也是reject的意思。
代码如下:
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » 实例解析Linux下iptables的相关配置与命令使用技巧
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 织梦模板使用说明
- 你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html