Защита ssh от брутфорса

Аватар пользователя ttys

Содержание:

Блокировка брутфорс атак на ssh средствами Packet Filter (pf)

PF поддерживает как IPv4 так и IPv6

OpenSSH предоставляет защищенную альтернативу протоколам первого поколения, таким как telnet и ftp, где логины и пароли передаются открытым текстом. Но простого использования SSH вместо telnet в наше время уже не достаточно.
Если используются простые пароли в SSH, то взломать их также легко, как если бы они передавались открытым текстом.

И нам предстоит защититься от перебора паролей средствами Packet Filter (pf)

Есть и другие способы защиты, такие как sshguard-ipfilter, sshguard-ipfw, sshguard-pf, sshguard.

Редактируем файл конфигурации PF:

vi /etc/pf.conf

table <sshblock> persist #создаём таблицу
set skip on lo0 #пропускаем проверку на петле
set block-policy return #для отброшенных пакетов TCP отсылается пакет TCP RST
#для прочих ICMP Unreachable
#если DOSят то можно указать "drop"
# set block-policy drop #пакет молча отбрасывается
scrub in all #собираем все части пакета перед отправкой
block all #запретим все отовсюду
block in log quick from <sshblock> #блокируем тех кто попал в sshblock
 
pass in on $int_if proto tcp from $int_if:network to $int_if port ssh \
synproxy state (max-src-conn-rate 2/60, overload <sshblock> flush global)
#пропускаем на ssh из внутренней подсети, а злодеев заносим в таблицу
pass in on $ext_if proto tcp from any to $ext_if port ssh \
synproxy state (max-src-conn-rate 2/60, overload <sshblock> flush global)
#пропускаем на ssh из вешней подсети, и тоже заносим злодеев в таблицу
pass in on $int_if from any to any #разрешаем всё из локальной сети 
pass out on $ext_if from $ext_if to any #разрешаем серверу доступ в интернет 
pass in inet proto icmp all icmp-type echoreq #разрешаем ping 

Если вы получаете ip адрес по DHCP, то вместо переменной $ext_if вы можете указать имя WAN интерфейса в круглых скобках (rl0), тогда при смене ip адреса pf подменит его на лету.

посмотреть тех кто в таблице можно так:
pfctl -t sshblock -T show

Удалить ip адрес (например 192.168.1.9), из таблицы можно так:
pfctl -t sshblock -T delete 192.168.1.9

осталось настроить cron
crontab -e

30 * * * * root /sbin/pfctl -t sshblock -T expire 86400

Каждые час (в 30 минут) "-T expire 86400" удаляет все записи из таблицы старше 86400 секунд (сутки)

max number

Ограничение максимального количества записей в таблице состояний, которое может сделать данное правило. По достижении этого предела, будет отброшен любой пакет, который должен был бы завести новую запись в таблице состояний. Пакеты будут отбрасываться до тех пор, пока число записей в таблице состояний не уменьшится.

source-track

Эта опция даёт возможность отслеживать количество записей в таблице состояний в пересчёте на каждый адрес источника. Возможные форматы опции:

* source-track rule — Максимальное количество записей в таблице состояний созданных данным правилом ограничивается опциями max-src-nodes и max-src-states, заданными в этом правиле. Счётчики заводятся не глобальные, а локальные.

* source-track global — То же что и в предыдущем слуаче, но счётчики ведутся глобально. При этом каждое правило может иметь свои пределы max-src-nodes и max-src-states, однако счётчики будут общими для всех правил.

Общее количество адресов источников, для которых осуществляется глобальный контроль количества строк в таблице состояний, ограничивается при помощи опции src-nodes.

max-src-nodes number

При использовании опции source-track опция max-src-nodes ограничивает количество IP-адресов с которых можно одновременно открыть соединения.

max-src-states number

При использовании опции source-track опция max-src-states ограничивает количество соединений с одного IP-адреса.

max-src-conn number

Ограничение максимального количества TCP соединений прошедших тройное рукопожатие, которые можно открыть с одного IP-адреса.
max-src-conn-rate number / interval

Ограничение скорости с которой можно открывать новые соединения. Задаётся количество соединений за интервал времени.

Обе опции автоматически включают опцию state-track rule и не совместимы с state-track global.

В комбинации с данными опциями можно употреблять более агрессивные опции, для «наказания» «провинившихся».overload

При превышении лимитов занести адрес источника в таблицу.
flash [global]

Уничтожить все записи в таблице состояний соответствующие соединениям с данного IP-адреса. При указании опции global записи в таблице состояний сбрасываются независимо от того, какое правило её создало.

Блокировка брутфорс атак на ssh при помощи sshguard

Нам предстоит защититься от перебора паролей средствами sshguard который контролирует активность на 22м порту.

Sshguard работает с любыми фаервол системами PF, netfilter/iptables, IPFIREWALL/ipfw, IPFILTER. Он следит за количеством и попытками входа и заносит ip адреса атакующих в таблицу.По умолчанию sshguard добавляет ip адрес в таблицу после 4-х неудачных попыток входа за 20-ти минутный период.
Блокировка происходит по следующей схеме:

первый раз блокируется на 420 секунд и удаляется через 7 минут
второй раз на 2*420 у удаляется через 14 минут
третий раз на 2*2*420 и удаляется через 28 минут и тд...
2^(N-1)*420 N-й раз.


Для использования sshguard-pf необходим Packet Filter (pf)

Устанавливаем sshguard-pf:

cd /usr/ports/security/sshguard-pf && make install clean

Редактируем syslog.conf:
vi /etc/syslog.conf

auth.info;authpriv.info     |exec /usr/local/sbin/sshguard

перезапускаем syslogd
killall -HUP syslogd

Редактируем файл конфигурации PF и добавляем эту строку в раздел таблиц:
vi /etc/pf.conf

table <sshguard> persist

Добавляем эту строку в раздел фильтрации:
block in log quick on $ext_if proto tcp from <sshguard> to any port \
ssh label "ssh bruteforce"

Если вам необходимо заблокировать весь трафик атакующего ip (а не только SSH) то необходимо добавить эту строку вместо предыдущей:
block in log quick from <sshguard> label "ssh bruteforce"


Перечитаем правила pf
pfctl -f /etc/pf.conf 

Просмотрим набор ip адресов, заблокированных sshguard:
pfctl -t sshguard -T show

Удалить ip адрес (например 192.168.1.9), заблокированный sshguard можно так:
pfctl -t sshguard -T delete 192.168.1.9

Документация:

Документация по sshguard

Документация по Packet Filter (pf)

Ваша оценка: Нет Средняя: 5 (2 голоса)

Поскольку статья посвящена

Поскольку статья посвящена защите ssh, от себя добавлю,для ipfw очень удобна и проста в настройке программа Bruteblock.

Защита ssh

Доброе время суток!
Уважаемые подскажите: в PF прописал
table persist
#table persist file "/etc/pf.ssh"
пробывал по разному, при попытке:
# pfctl -Tshow -tsshgua
pfctl: Table does not exist.
Почему не может создать таблицу?

Спасибо!

Доброе время суток! Уважаемые

Доброе время суток!
Уважаемые подскажите: в PF прописал
table persist
#table persist file "/etc/pf.ssh"
пробывал по разному, при попытке:
# pfctl -Tshow -tsshgua
pfctl: Table does not exist.
Почему не может создать таблицу?

Спасибо!

потому что, таблица из файла редактируется руками а читается только по команде pfctl -f /[путь к правилам]
если используется sshguard надо подкрутить syslog.conf

xmpp =))

skype: dtulyakov
jid: dtulyakov@xmpp.ru
icq: 402987764

Настойки iptables от

Настойки iptables от брутфорса
http://wiki.enchtex.info/howto/iptables/ssh-guard

oO

причём тут иптаблес?, каким боком он к бсд?
если уж на то пошло то пинаем "Рейвина" - admin@ignix.ru
и пишим/переносим статью =)

RE:oO

А что сразу Рейвена то??

а кого ещё? или уже мона

а кого ещё? или уже мона регаться самостоятельно?

Вот здесь подробный мануал по

Вот здесь подробный мануал по sshguard + pf + freebsd http://infobsd.ru/content/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%...

а этот менее подробный? :D

а этот менее подробный? :D

мануал

Публикую новый линк на мануал http://infobsd.ru/freebsd/sshguard-pf

мне конечно особо всё равно,

мне конечно особо всё равно, =)
но чем твоя статья отличает от моей?

Подскажите, пожалуйста, а

Подскажите, пожалуйста,
а если интерфейс один (машина с OpenBSD за роутером)
какие должны быть настройки pf.conf ?
(sshwatchd не собирается на OpenBSD 5.4)

Подскажите, пожалуйста, а

Подскажите, пожалуйста,
а если интерфейс один (машина с OpenBSD за роутером)
какие должны быть настройки pf.conf ?
(sshwatchd не собирается на OpenBSD 5.4)

а тазик кто? шлюз проста тачка или днс?

а тазик кто? шлюз проста тачка или днс?
очень размытый вопрос
дай больше информации и самой тачке и о том, что ты хочешь.

Шлюз - простой Dlink, за ним

Шлюз - простой Dlink, за ним ftp на OpenBSD (старый комп с одной сетевухой).
Хочу защитить SSH от брутфорса с помощью PF.

Последние статьи

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer