Страница 1 из 1
PF хитрый трюк
Добавлено: 2009-01-29 8:45:33
GHopper
Здравствуйте!
Наткнулся в интернете на статью, в которой давалась инструкция как средствами iptables разрешить доступ к порту не чаще 3 раз в 3 минуты (
http://undefined.org.ua/blog/2008/03/01/my-iptables/). Я тут подумал - а можно-ли на PF реализовать такой механизм?
Re: PF хитрый трюк
Добавлено: 2009-01-29 8:55:27
paradox
1 я не увидил там таких примеров
2 вы не стой стороны подходите к задаче
3
http://www.openbsd.org/faq/pf/filter.html
Re: PF хитрый трюк
Добавлено: 2009-01-29 9:11:22
GHopper
Плохо смотрите )
# SSH anti-bruteforce
Код: Выделить всё
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource
$IPT -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j LOG --log-prefix "SSH_brute_force "
$IPT -A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --rttl --name SSH --rsource -j DROP
В результате, в течении трёх минут, разрешаем не более трёх попыток соединения, остальные — дропаем с записью в лог. В случае срабатывания, в системном логе получаем чледующее:
Код: Выделить всё
Mar 1 10:30:45 xa4a kernel: SSH_brute_force IN=eth2 OUT= MAC=00:e0:6f:d9:b4:3d:00:d0:88:04:cf:d4:08:00 SRC=202.144.155.53 DST=82.144.198.94 LEN=60 TOS=0x00 PREC=0x00 TTL=49 ID=18235 DF PROTO=TCP SPT=55457 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 1 10:30:48 xa4a kernel: SSH_brute_force IN=eth2 OUT= MAC=00:e0:6f:d9:b4:3d:00:d0:88:04:cf:d4:08:00 SRC=202.144.155.53 DST=82.144.198.94 LEN=60 TOS=0x00 PREC=0x00 TTL=49 ID=18236 DF PROTO=TCP SPT=55457 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0
Mar 1 10:30:54 xa4a kernel: SSH_brute_force IN=eth2 OUT= MAC=00:e0:6f:d9:b4:3d:00:d0:88:04:cf:d4:08:00 SRC=202.144.155.53 DST=82.144.198.94 LEN=60 TOS=0x00 PREC=0x00 TTL=49 ID=18237 DF PROTO=TCP SPT=55457 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0
По строке “SSH_brute_force” запросто выбираем эти записи из лога и анализируем.
Сразу же добавляем
Код: Выделить всё
$IPT -A INPUT -p tcp --dport 22 --syn -m state --state NEW -j ACCEP
T
то есть разрешаем доступ к ssh, дабы не быть отрезанными от роутера последующими правилами.
Re: PF хитрый трюк
Добавлено: 2009-01-29 9:16:43
kirgudu
GHopper писал(а):Здравствуйте!
Наткнулся в интернете на статью, в которой давалась инструкция как средствами iptables разрешить доступ к порту не чаще 3 раз в 3 минуты (
http://undefined.org.ua/blog/2008/03/01/my-iptables/). Я тут подумал - а можно-ли на PF реализовать такой механизм?
конечно.
Для только tcp keep state:
Код: Выделить всё
(max-src-conn-rate 3/10, overload <flooderast> flush global)
не чаще трех соединений за 10 секунд, если превышено - засовываем в таблицу flooderast и глобально чистим стейты по этому IP.
А так, man pf.conf рулит.

Re: PF хитрый трюк
Добавлено: 2009-01-29 9:28:51
GHopper
спасибо добрый человек

Буду пльзовать, а то у меня 22 порт совсем уже задергали жулики...
Re: PF хитрый трюк
Добавлено: 2009-01-29 9:39:07
GHopper
А еще один вопросик по ходу дела:
в файле /etc/pf.conf создаю таблицу <abmins> в которой прописываю все ip, которые имеют доступ до админских ресурсов.
Код: Выделить всё
table <admins> const { \
xxx.xxx.xxx.xxx, \
xxx.xxx.xxx.xxx, \
xxx.xxx.xxx.xxx, \
xxx.xxx.xxx.xxx, \
xxx.xxx.xxx.xxx, \
}
Как можно оставить комментарий к каждому ip-адресу, чтобы потом небыло путаницы? Вариант:
Код: Выделить всё
table <admins> const { \
xxx.xxx.xxx.xxx, \ # Вася
xxx.xxx.xxx.xxx, \ # Феды
xxx.xxx.xxx.xxx, \
xxx.xxx.xxx.xxx, \
xxx.xxx.xxx.xxx, \
}
не проходит (
Re: PF хитрый трюк
Добавлено: 2009-01-29 10:07:18
kirgudu
adm_vasya="111.111.111.111"
adm_petya="123.123.123.123"
table <admins> { $adm_vasya, $adm_petya }
GHopper писал(а):спасибо добрый человек

Буду пльзовать, а то у меня 22 порт совсем уже задергали жулики...
Ничего не стоит ssh перевесить на какой-ньть заоблачный порт.
