Ronny Seffner ronny@seffner.de (Do 15 Mär 2012 14:46:50 CET):
Ich stelle gerade verwundert fest, dass meine Regeln nicht für "den Angreifer" funktionieren sondern offenbar "nur" für meinen Test. Ich habe von einem zweiten Rechner aus den bind durch 10 verkettete 'dig A domain.tld' befeuert und dabei mittels 'tailf /var/log/named/named.log' die queries beobachtet. 5 kommen sofort durch und dann - nach einer kurzen Verzögerung von vllt. 3 Sekunden - immer drei. Ich denke diese "Verzögerung ist in "--haslimit-htable-expire" definiert, was ich noch nicht gesetzt habe und wo ich auch den default noch nicht herausgefunden habe. Grundsätzlich schaffen die obigen Regeln aber das Verhalten, welches ich dachte. Nun kommen die "Chinesen" wieder und deren queries laufen einfach durchs Log, ganz ohne bei 5 zu stoppen. Was machen die anders als ich? Ich habe mich mal vom state NEW getrennt, das hilft aber auch nicht.
Hier meine neuen Regeln:
iptables -A INPUT -i $EXT_IF -s 0.0.0.0/0 -d $EXT_IP -m tcp -p tcp --dport 53 -m hashlimit --hashlimit 3/second --hashlimit-mode srcip,dstport --hashlimit-name dns -j ACCEPT iptables -A INPUT -i $EXT_IF -s 0.0.0.0/0 -d $EXT_IP -m udp -p udp --dport 53 -m hashlimit --hashlimit 3/second --hashlimit-mode srcip,dstport --hashlimit-name dns -j ACCEPT
Und dazu ein Auszug der queries:
15-Mar-2012 14:27:52.686 queries: info: client 121.12.104.150#47472: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:27:53.398 queries: info: client 121.12.104.150#20757: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:27:53.508 queries: info: client 121.12.104.150#44659: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:27:53.971 queries: info: client 121.12.104.150#30994: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:27:53.987 queries: info: client 121.12.104.150#36569: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:27:54.113 queries: info: client 121.12.104.150#56850: query: domain.tld IN ANY + (7x.4y.zz.zz)
…
15-Mar-2012 14:28:04.599 queries: info: client 121.12.104.150#31762: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:28:04.823 queries: info: client 121.12.104.150#63690: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:28:05.679 queries: info: client 121.12.104.150#28204: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:28:05.792 queries: info: client 121.12.104.150#22906: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:28:06.313 queries: info: client 121.12.104.150#57963: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:28:06.464 queries: info: client 121.12.104.150#59050: query: domain.tld IN ANY + (7x.4y.zz.zz) 15-Mar-2012 14:28:06.771 queries: info: client 121.12.104.150#56741: query: domain.tld IN ANY + (7x.4y.zz.zz)
Ich meine, Du müsstest mal nach Hashlimit-Burst gucken. Da sind per default 5 drin, und damit passen die Chinesen durch Deinen Maschendrahtzaun.