我正在尝试允许将 snmp trap 发送到远程机器进行 cacti 绘图。这是我现在拥有的,但它不起作用:
链输入(政策删除) 接受 udp -- 0.0.0.0/0 xxxx udp dpt:161 接受 udp -- 0.0.0.0/0 xxxx udp dpt:162 接受 udp -- 0.0.0.0/0 xxxx udp spts:1023:2999
最后一行是有人建议的,但没有帮助。我以为这会很简单,我也在谷歌上搜索了很多次,但还是遇到了麻烦。
谢谢您的指点!
编辑:这是 iptables -L -n -v 的输出:
链输入(策略丢弃 0 个数据包,0 字节) pkts 字节数 目标 协议 选择加入 退出 源 目标 0 0 接受 udp -- * * 0.0.0.0/0 184.105.134.14 udp spts:1023:2999 0 0 接受 udp -- * * 0.0.0.0/0 184.105.135.57 udp spts:1023:2999 0 0 接受 udp -- * * 0.0.0.0/0 184.105.135.57 udp dpt:161 0 0 接受 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 接受全部 -- lo * 0.0.0.0/0 0.0.0.0/0 0 0 全部拒绝 -- * * 67.210.96.146 0.0.0.0/0 拒绝,ICMP 端口不可达 2585 188K 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 27 8856 删除 udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 0 0 删除 udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:68 229K 77M 接受全部 -- * * 0.0.0.0/0 0.0.0.0/0 状态相关,已建立 0 0 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:20 0 0 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:21 5096 256K 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:25 695 44360 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:53 125 6648 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:80 4 160 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:123 10 600 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:443 0 0 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:514 63 3780 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:110 0 0 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:143 0 0 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:220 0 0 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:993 0 0 接受 udp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 udp dpt:143 0 0 接受 udp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 udp dpt:220 0 0 接受 udp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 udp dpt:993 3 144 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:995 50 3088 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:587 0 0 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:873 0 0 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:5038 1 40 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpts:32768:65535 0 0 接受 udp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 udp dpt:20 0 0 接受 udp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 udp dpt:21 20839 1442K 接受 udp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 udp dpt:53 86707 6588K 接受 udp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 udp dpt:123 1 48 接受 tcp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 tcp dpt:10000 4244 619K 接受 icmp -- * * 0.0.0.0/0 0.0.0.0/0 状态 新 18386 1220K LOGDROP 全部 -- * * 0.0.0.0/0 0.0.0.0/0 链转发(策略接受 0 个数据包,0 字节) pkts 字节数 目标 协议 选择加入 退出 源 目标 0 0 接受全部 -- * * 0.0.0.0/0 0.0.0.0/0 状态 RELATED,ESTABLISHED 链输出(策略接受 0 个数据包,0 字节) pkts 字节数 目标 协议 选择加入 退出 源 目标 0 0 接受 udp -- * * 0.0.0.0/0 184.105.134.14 udp dpt:161 0 0 接受 udp -- * * 0.0.0.0/0 184.105.134.14 udp dpt:162 0 0 接受 udp -- * * 0.0.0.0/0 184.105.135.57 udp dpt:161 0 0 接受 udp -- * * 0.0.0.0/0 184.105.135.57 udp dpt:162 37790 5151K 接受全部 -- * lo 0.0.0.0/0 0.0.0.0/0 279K 82M 接受全部 -- * eth0 0.0.0.0/0 0.0.0.0/0 状态相关,已建立 29306 2262K 接受全部 -- * eth0 0.0.0.0/0 0.0.0.0/0 Chain LOGDROP (1 引用) pkts 字节数 目标 协议 选择加入 退出 源 目标 18386 1220K LOG 全部 -- * * 0.0.0.0/0 0.0.0.0/0 LOG 标志 0 级别 4 前缀“\'*IPT*\'' 18386 1220K 全部删除 -- * * 0.0.0.0/0 0.0.0.0/0 Chain fail2ban-SSH (1 引用) pkts 字节数 目标 协议 选择加入 退出 源 目标 2585 188K 返回全部 -- * * 0.0.0.0/0 0.0.0.0/0 链 fail2ban-ssh (1 引用) pkts 字节数 目标 协议 选择加入 退出 源 目标 2585 188K 返回全部 -- * * 0.0.0.0/0 0.0.0.0/0
答案1
据我理解,您的问题您希望这台机器(我们在其上使用 iptables 进行对抗的机器)能够向远程服务器发送陷阱,对吗?
在这种情况下,有趣的部分是 OUTPUT 链,因为它决定了源自盒子的数据包的命运。
调试第一步:关闭 iptables 并验证陷阱发送是否有效。如果无效,则问题不在于 SNMP 陷阱源的防火墙配置。在 iptables 停止工作之前,请勿继续执行第二步。
调试第二步:grep -i /etc/services
显示大量与各种 SNMP 相关的条目。您可以阅读文档并找出您的软件在哪些端口上进行通信,或者发挥自己的聪明才智。假设后者在 OUTPUT 链配置的末尾添加一行,将所有内容发送到 LOGDROP 链。然后启动 iptables,验证规则是否存在于 OUTPUT 链中并创建要发送的陷阱。然后查看您的 /var/log/messages,您将看到由 LOGDROP 生成的条目,它将告诉您,从本地计算机到远程计算机使用协议 UDP 发送到端口 XXX 的数据包已被丢弃。Bingo!
调试步骤三。在 OUTPUT 链规则(LOGDROP 条目上方)中添加一行,接受通过调试步骤三中确定的端口 XXX( )-p udp
向远程服务器()发送的 UDP 数据包() 。验证( )规则是否存在。发送一个陷阱并查看它是否安全到达目的地。如果没有到达,您的软件可能在多个端口上进行通信,但随后转到调试步骤二。在病理情况下,您应该确定软件正在使用大型(数十、数百……)端口,并且如果您的安全策略允许,您可能只允许从此框到远程计算机的所有(或所有 UDP)传出流量。-d <IP_ADDRESS>
--dport XXX
iptables -L -n -v
利润 ;)
答案2
我从 INPUT 规则中删除了特定的 IP 地址,只向全世界开放了 161 和 162 udp,现在就可以正常工作了。所以这告诉我,应该接收陷阱的人给了我错误的机器 IP 地址。哎呀!谢谢大家,感谢你们尝试帮助解决我没有考虑到的变量问题。
丹尼尔