iptables_cacti_nagios
http://www.cnblogs.com/jerryxing/archive/2012/05/27/2520589.html
http://blog.c1gstudio.com/archives/1046
在第一条插入充许192.168.0.16(监控机)以udp协议访问snmpd默认161端口的规则
- /sbin/iptables -I INPUT -p udp -m udp -s 192.168.0.16 --dport 161 -j ACCEPT
保存一下,防止重启服务后失效
http://dinglin.blogspot.com/2008/12/cacti-udp-pingiptables.html
在centos5.2使用cacti监控网络,默认防火墙开启的情况下,需要设置本机80端口的开放,udp161端口的开发以及icmp的相关链接的开发,否则cacti会收不到数据。
cacti使用udp ping,就是发送一个udp到对方的高端口,然后对方自动产生并返回一个icmp的包,cacti如果收到这个包,就会再次发送snmp的请求过去,对方收到后返回对应的数据。
用tcpdump看到的icmp的信息的,
tcpdump host 192.168.0.11 and 192.168.0.10
14:18:34.423454 IP demo2.1028 > demo.33439: UDP, length 27
14:18:34.424331 IP demo > demo2: ICMP demo udp port 33439 unreachable, length 63
14:18:36.985281 IP demo2.1028 > demo.33439: UDP, length 27
14:18:36.986240 IP demo > demo2: ICMP demo udp port 33439 unreachable, length 63
14:18:39.423301 arp who-has demo tell demo2
14:18:39.423324 arp reply demo is-at 00:0c:29:7b:19:84 (oui Unknown)
解决方法
命令行添加:
iptables -A INPUT -p udp -m udp --dport 161 -j ACCEPT
iptables -A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dports 80 -j ACCEPT
或修改/etc/sysconfig/iptables
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -p udp -m udp -m multiport --dports 631,161 -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -m multiport --dports 22,80 -j ACCEPT
具体情况请对号入座。
使用配置文件修改后重启iptables或restore
shell > service iptables restart
或
shell > iptables-restore
reference:http://linux.chinaunix.net/bbs/viewthread.php?tid=910326
http://yunwei.blog.51cto.com/381136/872162
通常我们在配置iptables时,需要一条一条命令敲上去,其实我们可以所敲的命令会保存在/etc/sysconfig/iptables文件中,在系统启动时,/etc/init.d/iptable文件会自动调用/etc/sysconfig/iptables文件进行防火墙配置。
- vi /etc/sysconfig/iptables
- # Firewall configuration written by system-config-securitylevel
- # Manual customization of this file is not recommended. *filter
- :INPUT ACCEPT [0:0]
- :FORWARD ACCEPT [0:0]
- :OUTPUT ACCEPT [0:0]
- :RH-Firewall-1-INPUT - [0:0]
- //上面的内容定义了内建的INPUT、FORWARD、OUTPUT链,还创建了一个名为RH-Firewall
- //-1-INPUT 的新链。
- -A INPUT -j RH-Firewall-1-INPUT
- //上面这一条规则将添加到INPUT链上,所有发往INPUT链上的数据包将跳转到RH-Firewall
- //-1-INPUT链上。
- -A FORWARD -j RH-Firewall-1-INPUT
- //上面这行功能与前行相同,,只是它将规则应用到FORWARD所有链,至此所有发往INPUT和
- //和FORWARD链的数据包都会转到RH-Firewall-1-INPUT上。
- -A RH-Firewall-1-INPUT -i lo -j ACCEPT
- //上面的规则将被添加到 RH-Firewall-1-INPUT链,它可以匹配所有的数据包,其中流入接口
- //是一个环回接口(lo),匹配这条规则的数据包将全部通过 。
- -A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
- //上面的规则匹配所有的协议ICMP的数据包,该规则将允许icmp类型的数据包通过防火墙 。
- -A RH-Firewall-1-INPUT -p 50 -j ACCEPT
- //上面的规则允许协议类型为50的数据流通过,类型50的协议是一种加密的IPV6协议头。
- -A RH-Firewall-1-INPUT -p 51 -j ACCEPT
- //上面的规则允许协议类型为51的数据流通过,类型51作为一种IPV6协议的验证头。
- -A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.12.13.14 -j drop
- //上面的规则拒绝目的地地址是224.12.13.14、目的端口是5353的UDP数据包通过。
- -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
- //上面的规则允许目的地的端口是80的用于新建连接的TCP数据包通过,因为这条规则没有提到接口,所以,
- //它会允许所有新的外来连接到达端口80。
- -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
- //拒绝所有其他不能匹配上述任何一条规则的数据包,决绝数据包时,还会发出一条icmp-host-prohibited消息。
- COMMIT
记得每次修改都不要忘记执行service iptables reload!!!(否则修改不生效)
总结
IPtables有三张表,每个表都有内建的链
filter表:用于路由网络数据包,不会对数据包进行修改,是系统的默认表,如果没指定“-t”选项,iptables就是用该表。filter表有三个链。
●INPUT:网络数据包流向服务器
●OUTPUT:网络数据包从服务器流出
●FORWARD:网络数据包经服务器路由
nat表:用于地址转换的表,是一种将内部IP地址转换成外部IP地址的方法
mangle表:用于更改网络数据包的表,可以实现对数据包的修改,也可以给数据包附加一些外带数据
当数据包进入服务器时,Linux内核会查找对应表中的对应链,直到找到一条规则与数据包匹配。如果该规则的目标是ACCEPT,就会跳过其余的规则,而数据包会继续被发送。如果规则的目标是DROP数据包,该数据包会在其路径上被拦截,就不会再考虑其他规则,所以规则越详细的要写在靠前的位置
iptables命令参数表
本文出自 “继续奋斗” 博客,请务必保留此出处http://yunwei.blog.51cto.com/381136/872162