CentOS 5.5上的iptables; 我想允许来自远程机器的snmp查询

我试图让snmp陷阱发送到一个远程机器的仙人掌graphics。 这是我现在的,但它不工作:

链条input(政策DROP)
 ACCEPT udp  -  0.0.0.0/0 xxxx udp dpt:161
 ACCEPT udp  -  0.0.0.0/0 xxxx udp dpt:162
 ACCEPT udp  -  0.0.0.0/0 xxxx udp spts:1023:2999

最后一行是某人的build议,但没有帮助。 我认为这会很简单,而且我做了大量的search引擎,但是我碰到了一堵墙。

感谢任何指针!

编辑:这是iptables -L -n -v的输出:

链INPUT(策略DROP 0包,0字节)
  pkts字节目标人选退出源目的地         
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 184.105.134.14 udp spts:1023:2999 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 184.105.135.57 udp spts:1023:2999 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 184.105.135.57 udp dpt:161 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 184.105.134.14 udp dpt:161 
  2678 195K fail2ban-SSH tcp  -  * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 
  2585 188K fail2ban-ssh tcp  -  * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 
 37790 5151K ACCEPT all  -  lo * 0.0.0.0/0 0.0.0.0/0           
     0 0全部拒绝 -  * * 67.210.96.146 0.0.0.0/0 reject-with icmp-port-unreachable 
  2585 188K ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 
    27 8856 DROP udp  -  * * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 
     0 0 DROP udp  -  * * 0.0.0.0/0 0.0.0.0/0 udp dpt:68 
  229K 77M ACCEPT all  -  * * 0.0.0.0/0 0.0.0.0/0状态RELATED,ESTABLISHED 
     0 0 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:20 
     0 0 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:21 
  5096 256K ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:25 
   695 44360 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:53 
   125 6648 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:80 
     4 160 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:123 
    10 600 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:443 
     0 0 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:514 
    63 3780 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:110 
     0 0 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:143 
     0 0 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:220 
     0 0 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:993 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:143 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 0.0.0.0/0 state new udp dpt:220 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 0.0.0.0/0 state new udp dpt:993 
     3 144 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:995 
    50 3088 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:587 
     0 0 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:873 
     0 0 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:5038 
     1 40 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpts:32768:65535 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 0.0.0.0/0 state new udp dpt:20 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 0.0.0.0/0 state new udp dpt:21 
 20839 1442K ACCEPT udp  -  * * 0.0.0.0/0 0.0.0.0/0 state new udp dpt:53 
 86707 6588K ACCEPT udp  -  * * 0.0.0.0/0 0.0.0.0/0 state新udp dpt:123 
     1 48 ACCEPT tcp  -  * * 0.0.0.0/0 0.0.0.0/0 state new tcp dpt:10000 
  4244 619K ACCEPT icmp  -  * * 0.0.0.0/0 0.0.0.0/0状态新build 
 18386 1220K LOGDROP all  -  * * 0.0.0.0/0 0.0.0.0/0           

链FORWARD(策略接受0包,0字节)
  pkts字节目标人选退出源目的地         
     0 0全部接受 -  * * 0.0.0.0/0 0.0.0.0/0状态RELATED,ESTABLISHED 

链OUTPUT(策略ACCEPT 0包,0字节)
  pkts字节目标人选退出源目的地         
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 184.105.134.14 udp dpt:161 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 184.105.134.14 udp dpt:162 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 184.105.135.57 udp dpt:161 
     0 0 ACCEPT udp  -  * * 0.0.0.0/0 184.105.135.57 udp dpt:162 
 37790 5151K ACCEPT all  -  * lo 0.0.0.0/0 0.0.0.0/0           
  279K 82M ACCEPT all  -  * eth0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 
 29306 2262K ACCEPT all  -  * eth0 0.0.0.0/0 0.0.0.0/0           

链式LOGDROP(1参考)
  pkts字节目标人选退出源目的地         
 18386 1220K全部login -  * * 0.0.0.0/0 0.0.0.0/0 LOG标志0级别4前缀`\'* IPT * \' 
 18386 1220K DROP全部 -  * * 0.0.0.0/0 0.0.0.0/0           

链fail2ban-SSH(1引用)
  pkts字节目标人选退出源目的地         
  2585 188K RETURN全部 -  * * 0.0.0.0/0 0.0.0.0/0           

链fail2ban-ssh(1引用)
  pkts字节目标人选退出源目的地         
  2585 188K RETURN全部 -  * * 0.0.0.0/0 0.0.0.0/0           

据我了解你的问题,你想这台机器(我们与iptables斗争的那个)能够发送陷阱到远程服务器,对吧?

在这种情况下,有趣的部分是OUTPUT链,它是什么调节来自盒子的数据包的命运。

debugging第一步:closuresiptables并validation陷阱发送是否工作。 如果不是这个问题不是SNMP陷阱源的防火墙configuration。 不要继续执行第二步,直到你的iptables停止工作。

debugging第二步: grep -i /etc/services显示了各种与SNMP有关的东西的大量条目。 你可以阅读文档,找出你的软件在哪个端口上通信,或者是巧妙的。 假设后者在OUTPUT链configuration的末尾添加一行,将所有内容发送到LOGDROP链。 然后启动iptables,validation规则是否存在于OUTPUT链中,并发送一个陷阱。 然后看一下你的/ var / log / messages,你会看到LOGDROP生成的一个条目,它会告诉你,从本地机器到使用协议UDP的远程机器的目的地为XXX的数据包已经下降。 答对了!

debugging步骤三。 在debugging步骤三中确定的端口XXX(– --dport XXX )上,向OUTPUT链规则(在LOGDROP条目之上)添加一行,用于接受传出UDP数据包( -p udp )到远程服务器( -d <IP_ADDRESS> ) 。 validation( iptables -L -n -v ),规则在那里。 做一个陷阱被发送,并看到它安全到达目的地。 如果没有到达,您的软件可能会在多个端口上进行通信,但是随后会出现GOTO Debug步骤二。 在病态的情况下,您应该确定软件使用的大量(数十,数百个)端口,并且如果您的安全策略允许,您可以允许从该盒到远程的所有(或全部UDP)传出stream量机。

利润;)

我从INPUT规则中删除了特定的IP地址,并且向全世界打开了161和162个udp,现在就可以运行了。 所以这就告诉我,那个应该收到陷阱的人给了我他的机器的错误的IP地址。 D'哦! 谢谢大家,因为你试图用我没有考虑到的variables来解决问题。

丹尼尔