IPFW: редактирование таблиц

Автор: | 07/21/2012
 

В статье FreeBSD: борьба с bruteforce — IPFW+Sshit  уже упоминалось о добавлении динамической таблицы правил для IPFW.

Т.к. там все описано довольно кратко — в этой статье более подробно будет описана работа с таблицами в IPFW.

Добавим в файл конфигурации IPFW правило блокировки по данным из таблицы:

$cmd 00020 deny all from «table(1)» to any via $pif

где:

#префикс для команд
cmd=»ipfw -q add»

#задаем карту интернет-сети
pif=»em0″

И перезагружаем фаервол для применения новых правил:

# /etc/rc.d/ipfw restart
net.inet.ip.fw.enable: 1 -> 0
net.inet6.ip6.fw.enable: 1 -> 0
Firewall rules loaded.
Firewall logging enabled.

Добавить определенный адрес можно командой:

# ipfw table 1 add 194.0.200.1

Можно заблокировать целую подсеть:

# ipfw table 1 add 194.0.200.0/24

Посмотреть список заблокированных IP можно так:

# ipfw table 1 list
194.0.200.0/24 0
194.0.200.1/32 0

Для удаления IP из таблицы IPFW:

# ipfw table 1 delete 194.0.200.0/24

И проверим:

# ipfw table 1 list
194.0.200.1/32 0

Подсеть из блока убрали, уберем 1 IP такой же командой:

# ipfw table 1 delete 194.0.200.1

Что бы не удалять адреса по одному, а сразу очистить всю таблицу — выполняем:

# ipfw table 1 flush

И напоследок — удобный скрипт для добавления целого списка IP-адресов из файла blockip.txt:

# cat blockip.sh
#!/bin/sh
ipfw table 1 flush
cat /home/setevoy/blockip.txt | while read ip; do
ipfw table 1 add $ip
done

Файл создавался под root, что бы выполнять его от другого пользователя — сменим владельца:

# chgrp setevoy blockip.sh

Не забудем установить права на выполнение скрипта:

# chmod ug+x blockip.sh

ug значит «добавить права для User и Group« — только пользователю root и пользователям группы setevoy, т.е. себе.

Теперь имеем:

-rwxr-xr—  1 root     wheel          107 Jul 21 10:11 blockip.sh

IP адреса в файл blockip.txt добавляем каждый с новой строки, можно использовать подсети:

# cat blockip.txt
194.0.200.1
194.0.200.2
194.0.200.0/24

# ipfw table 1 list
194.0.200.0/24 0
194.0.200.1/32 0
194.0.200.2/32 0