>А по мне довольно изящно.Правда в конце я бы все таки добавлял,
>а не замещал.
да я, вобщем-то, о команде добавления в таблицу.
это ipfw - специнтерфейс.
Каждый ИПшник добавляеться _отдельным_ процессом ipfw.
Может на деле оно и пофигу, но все же технически не оптимально.
Линух. Как аналогичный пример, модуль iptables recent.
# iptables -I INPUT -i w0 -m recent --name bad_guys --rcheck -j DROP
(clear - спец команда очистки таблицы. Опционально :)
# cat bad_guys.txt
clear
1.2.3.4
5.6.7.8
9.10.11.12
# while read ip; do echo $ip > /proc/net/ipt_recent/bad_guys ; done < bad_guys.txt
(вот это все происходит в текущем процессе bash, без создания новых процессов)
(echo - встроенная команда bash, если кто не вкурсе ;)
можно посмотреть содержимое:
# cat /proc/net/ipt_recent/bad_guys
src=1.2.3.4 ttl: 0 last_seen: 4358612828 oldest_pkt: 1 4358612828
src=9.10.11.12 ttl: 0 last_seen: 4358612828 oldest_pkt: 1 4358612828
src=5.6.7.8 ttl: 0 last_seen: 4358612828 oldest_pkt: 1 4358612828
кроме того, с этими таблицами recent модуля можно работать прямо из фаервола,
динамичиски пополняя ее или удаляя IP адреса ;)
- динамичиское добавление (пример из мана :)
# iptables -A INPUT -i w0 -p tcp --dport 139 -m recent --name bad_guys --set -j DROP
все, кто ломиццо на 139 порт автоматом попадают в black list
- динамичиское удаление:
# iptables -A INPUT -i w0 -p udp --dport 34097 -m length --length 500 \
-m recent --name bad_guys --remove
кто владеет тайным знанием, тот пошлет UDP пакет длинной 500 байт на спец порт и будет разблокирован :)
для остроты ощущений можно добавить проверку по содержимому пакета и т.д.
Не флейма ради, но правды для, хоть пофлеймить и люблю ;)
Сильна ли BSD подобными средствами?
Их маны читать влом, да и вряд ли прочуствуешь все не попробовав.
А вот посмотреть готовых команд знающих людей - было бы нагляднее.
|