我已经快要疯了……
我需要使用 snmptrap 命令来欺骗发送 snmp 陷阱的主机。
snmptrap 的手册页指出,你可以利用snmp命令. snmpcmd 指出您可以利用 snmp.conf 中现有的选项,如下所示:--name="value"。管理控制台指出有一个 clientAddr 选项,允许您指定陷阱是从另一台主机发送的。
这是我正在运行的命令:
[root@***** objects]# /usr/bin/snmptrap --clientAddr="<clientipaddr>" -v 2c -c <communityString> <destipaddr> '' NAGIOS-NOTIFY-MIB::nSvcEvent nHostname s "testHost" nSvcDesc s "testService" nSvcStateID i 2 nSvcOutput s "testOutput"
这是我收到的输出:
snmptrap: Unknown host (<destipaddr>) (Cannot assign requested address)
当我在没有 --clientAddr 参数的情况下运行它时,陷阱接收器可以正常看到它。
知道我在这里做错了什么吗?
答案1
我尝试做同样的事情,但最终得到的是 IP 表而不是 net-snmp。需要在发送陷阱的主机上设置以下内容:
iptables -t nat -A POSTROUTING -s <IP which you send originally traps from> -p udp --dport 162 -j SNAT --to-source <IP you want to spoof>
答案2
你没有做错什么。只是主机希望指定的 IP(或名称)是本地的,即连接到某个本地接口。欺骗主机的一种方法是临时设置一些具有所需 IP 地址的别名接口,例如 Linux 上的 1.2.3.4:
ifconfig lo:0 1.2.3.4 netmask 255.255.255.248
答案3
在我的例子中,我希望能够独立于最初使用的 IP 模拟源 IP,因此我修改了左心室对此的命令:
sudo iptables -t nat -A POSTROUTING -p udp --dport 162 --destination <IP of snmptrapd server> -j SNAT --to-source <Fake IP of sender>
snmptrapd 服务器的 IP - 您想要发送陷阱的地址
发送者的虚假 IP - snmptrapd 将视为发送者地址的地址
要查看当前规则,请使用:sudo iptables -t nat -v -L -n --line-number
按行号删除规则,例如,第 3 行:sudo iptables -t nat -D POSTROUTING 3