防御
当然,最好的防御是首先防止出现入侵和root级别的安全威胁,这样你的系统就不会被安装了trinoo主服务器/守护服务器。在理想的世界中,所有系统都打了所有的补丁,是安全的,是被监控的,入侵监测系统和防火墙都能成功监测和拒绝攻击数据包,而我则是一个六个月生活在巴里岛、六个月生活在法国阿尔卑斯山的百万富翁。:) 但在现实世界中,这是无法实现的(至少在可预见的将来)。
如果现在你的网络可能已安装了数个运行中的trinoo守护程序,并随时准备对其它系统进行DoS攻击,如何才能发现并阻止它们呢?
因为这些程序在通讯和攻击中都使用了高级UDP端口,要想直接阻塞这些通讯是非常困难的(但不是不可能),除非你修改那些使用高级UDP端口的程序。
最简单的检查是否存在trinoo主服务器和守护程序的方法也许是在共享的以太网数据段中监视所有的UDP数据包,寻找在本文中提到的关于主服务器与守护程序通讯标记。然而不幸的是,这些活动只能在目标主机受到DoS攻击时/后才有可能被发现和检测到。
如果怀疑系统存在正在进行攻击的trinoo守护程序,对运行了守护程序的系统中运行Solaris的"truss"程序将会得到如下输出:
. . .
getmsg(3, 0xEFFFF830, 0xEFFFF83C, 0xEFFFF81C)= 0
getmsg(3, 0xEFFFF830, 0xEFFFF83C, 0xEFFFF81C) (sleeping...)
getmsg(3, 0xEFFFF830, 0xEFFFF83C, 0xEFFFF81C)= 0
time()= 938385467
open("/dev/udp", O_RDWR)= 5
ioctl(5, I_PUSH, "sockmod")= 0
ioctl(5, I_STR, 0xEFFFF748)= 0
ioctl(5, I_SETCLTIME, 0xEFFFF7FC)= 0
ioctl(5, I_SWROPT, 0x00000002)= 0
sigprocmask(SIG_SETMASK, 0xEFFFF7EC, 0xEFFFF7DC) = 0
ioctl(5, I_STR, 0xEFFFF660)= 0
sigprocmask(SIG_SETMASK, 0xEFFFF7DC, 0xEFFFF7B8) = 0
sigprocmask(SIG_BLOCK, 0xEFFFF548, 0xEFFFF5C0)= 0
ioctl(5, I_STR, 0xEFFFF548)= 0
sigprocmask(SIG_SETMASK, 0xEFFFF5C0, 0x00000000) = 0
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
putmsg(5, 0xEFFFF83C, 0xEFFFF7A0, 0)= 0
time()= 938385467
. . .
当出现攻击单个目标时,使用"tcpdump"监听网络通讯有如下输出:
# tcpdump ip host 192.168.0.1
. . . 192.168.0.1.27444: udp 25 216.160.XX.YY.16838: udp 4 (DF) 216.160.XX.YY.5758: udp 4 (DF) 216.160.XX.YY.10113: udp 4 (DF) 216.160.XX.YY.17515: udp 4 (DF) 216.160.XX.YY.31051: udp 4 (DF) 216.160.XX.YY.5627: udp 4 (DF) 216.160.XX.YY.23010: udp 4 (DF) 216.160.XX.YY.7419: udp 4 (DF) 216.160.XX.YY.16212: udp 4 (DF) 216.160.XX.YY.4086: udp 4 (DF) 216.160.XX.YY.2749: udp 4 (DF) 216.160.XX.YY.12767: udp 4 (DF) 216.160.XX.YY.9084: udp 4 (DF) 216.160.XX.YY.12060: udp 4 (DF) 216.160.XX.YY.32225: udp 4 (DF)