Welcome 微信登录

首页 / 操作系统 / Linux / iptables使用总结

iptables是Linux中的防火墙,在Linux中可以过滤数据包。下面简单的介绍下iptables的应用。①iptables在Linux中有五个钩子函数(hook function)PREROUTING:数据包进入了主机,但是还没有被路由的阶段。INPUT:数据包进入到主机内部。FORWARD:数据包将由从本主机转发出去。POSTROUTING:数据包马上由本级发送出去。OUTPUT:数据包从本主机发送出去。②iptables在Linux中的四个链fileter:可以应用在 INPUT FORWARDOUTPUT上面nat:可以应用在PREROUTINGPOSTROUTING OUTPUT上面mangle:可以应用在PREROUTINGPOSTROUTING OUTPUT INPUT FORWARD。raw:可以应用在PREROUTINGOUTPUT上面。③iptables通用匹配-s:指定过滤数据包的源地址。-d:指定过滤数据包的目标地址。-p:指定过滤的协议类型。-i:指定过滤的数据包进入的网卡接口。-o:指定过滤的数据包流出的网卡接口。-j:对指定的数据包的动作I:ACCEPT---------接受指定的数据包。II:DROP----------丢弃指定的数据包。III:REJECT-------丢弃指定的数据包。eg:对192.168.5.1访问192.168.5.10的http数据包进行丢弃的操作iptables –A INPUT –s 192.168.5.1 –d192.168.5.10 –p tcp --dport 80 –j DROPeg:对192.168.5.1访问192.168.5.10的http数据包进行接受的动作iptables –A INPUT –s 192.168.5.1 –d192.168.5.10 –p tcp –doprt 80 –j ACCEPTiptables –A OUTPUT –s 192.168.5.10 –d192.168.5.1 –p tcp –sport 80 –j ACCEPT在对接受的数据包进行处理的时候,需要注意的是数据包一来一回的双向处理。对自定义的iptables规则就行保存service iptables saveiptables –L –nv  --line-numbers //查看自定义的防火墙规则。④管理规则-A:添加一条规则,添加的位置在规则的末尾。-I:添加一条规则,如果省略添加的位置,默认的添加的位置在规则的最上方。-D:删除一条规则。-R:对某条指定的规则进行修改。对链进行管理:-F:清空一条链上面的所有的规则。-P:更改制定链的默认规则。-N:自定义一条新的空链。-X:删除一个自定义的空链。⑤扩展选项使用eg:对于http的服务请求,192.168.5.1服务器段进行连接状态的控制iptables –A INPUT  -d 192.168.5.1 –p tcp –dport 80 –m state–state NEW,ESTABLISHED –j ACCEPTiptables –A OUTPUT –s 192.168.5.1 –p tcp–sport 80 –m state –state ESTABLISHED –j ACCEPT//服务器对于INPUT服务器的NEW和ESTABLISHED状态的报文给予响应,对于OUTPUTon服务器的报文只响应ESTABLISHED类型的报文。eg:多端口的相应iptables –A INPUT –d 192.168.5.1 –p tcp –m–multiport –destination-ports 21,22,80 –m state –state NEW,ESTABLISHED –jACCEPT//在INPUT链上给予21,22,80端口并且是NEW或者是ESTABLISHED的报文放行处理。eg:编写规则,一个IP地址的ssh连接最多可以有三个。当超过三个的时候过5分钟之后在进行连接处理。iptables –A INPUT –d 192.168.5.1 –p tcp–dport 22 –m connlimit –connlimit-above 3 –j DROPiptables –A INPUT –d 192.168.5.1 –p tcp–dport 22 –m state –state NEW –m recent –set –name SSH //记录访问ssh的新的连接,记录来源IP地址。iptables –A INPUT –d 192.168.5.1 –p tcp–dport 22 –m state –state NEW –m recent –update –seconds 300 –hitcount 3 –nameSSH –j DROP //当超过三次之后,300秒内不许连接—seconds和—hitcount 必须和—update一起使用。eg:在请求http的过程中,如果请求的页面还有H7N9则不允许显示iptables –A OUTPUT –d 192.168.5.1 –p tcp–dport 80 –m string –algo kmp –string “H7N9” –j DROP//注意方向是OUTPUT方向。⑥nat:DNAT:目标地址转换SNAT:源地址转换eg:访问外网时,将192.168.5.0/24地址转化为172.16.10.1iptables –A POSTROUTING –s 192.168.5.0/24 –jSNAT –to-source 172.16.10.1iptables –A POSTROUTING –s 192.168.5.0/24 –jSNAT MASQUERADE //如果需要转化的地址是一个动态变化的地址,那么可以使用MASQUERADE来进行自动的转换。eg:当访问外放的服务器172.16.10.1的时候转换到内网的192.168.5.1进行访问iptables –A PREROUTING –d 172.16.10.1 –p tcp–dport 80 –j DNAT –to-destination 192.168.5.1同样可以进行端口映射iptables –A PREROUTING –d 172.16.10.1 –p tcp–dport 80 –j DNAT –to-destination 192.168.5.1:8080⑦在打开了iptables的过程中。利用lsmod|grepip 可以查看加载了那些模块。在Linux6.4系统中,在/proc/sys/net/nf_conntrack_max可以查看iptables允许的最大的连接数量。如果一个服务器非常繁忙的话,当连接数量超过了配置文件的数量的时候,那么就会有大量的请求被丢弃。在/proc/net/nf_conntrack中记录了当前连接的状态信息。这些状态信息也可以利用iptstate来查看。--------------------------------------分割线 --------------------------------------CentOS 7.0关闭默认防火墙启用iptables防火墙  http://www.linuxidc.com/Linux/2015-05/117473.htmiptables使用范例详解 http://www.linuxidc.com/Linux/2014-03/99159.htmLinux防火墙iptables详细教程 http://www.linuxidc.com/Linux/2013-07/87045.htmiptables的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htmLinux下防火墙iptables用法规则详解 http://www.linuxidc.com/Linux/2012-08/67952.htm--------------------------------------分割线 --------------------------------------本文永久更新链接地址