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

Материал из Энциклопедия хостинга
Перейти к: навигация, поиск

Содержание

Защита с помощью DenyHosts

Каждый из нас постоянно подвергается брутфорс-атакам. Пытаются подобрать пароли в основном к SSH или FTP, о чем свидетельствуют логи авторизации:

# cat /var/log/auth.log

Начинаем с этим бороться. Ставим нужное программное обеспечение:

# cd /usr/ports/security/denyhosts
# make install clean

Далее делаем поправку в файле /etc/hosts.allow:

sshd : /etc/hosts.denied : deny (запрещаем доступ по ssh с хостов из файла /etc/hosts.denied)

sshd : ALL : allow (остальным доступ даем)

Естественно, в конфиге denyhosts - /usr/local/etc/denyhosts.conf укажем опцию:

HOSTS_DENY = /etc/hosts.denied

и расскоментируем строку, иначе denyhosts не запустится:

BLOCK_SERVICE = ALL

Не забудем это дело добавить в автозагрузку:

# echo 'denyhosts_enable="YES"' >> /etc/rc.conf

Чтобы denyhosts не ругался во время запуска об отсутствующем файле, создадим его:

# touch /etc/hosts.denied

И сразу запустим denyhosts :

# /usr/local/etc/rc.d/denyhosts start

Всё! Теперь злодеи попадают в списки запрещенных хостов, которые ведет демон denyhosts автоматом.

Всё это можно сделать также с FTP, httpd и любым другим открытым портом.

Защита с помощью inetd

Установка

FreeBSD

На FreeBSD установка не требуется По умолчанию на FirstVDS через inetd на операционных системах FreeBSD запускаются FTP и SSH сервисы:

# /etc/inetd.conf
ftp     stream  tcp     nowait    root    /usr/local/sbin/in.proftpd      proftpd
ssh     stream  tcp     nowait    root    /usr/sbin/sshd          sshd -i -4

Centos

# yum install inetd

Debian/Ubuntu

# apt-get install xinetd

Технические подробности

Интересующие нас параметры inetd:

-c maximum
Определение максимального числа одновременных запусков каждой службы; по умолчание не ограничено.
Может быть переопределено индивидуально для каждой службы при помощи параметра max-child.

-C rate
Определение по умолчанию максимального количества раз, которое служба может быть вызвана с одного
IP-адреса в минуту; по умолчанию не ограничено. Может быть переопределено для каждой службы
параметром max-connections-per-ip-per-minute.

-R rate
Определяет максимальное количество раз, которое служба может быть вызвана в минуту; по умолчанию
256. Частота, равная 0, не ограничивает число вызовов.

-s maximum
Задает максимальное количество процессов, одновременно обслуживающих один сервис для одного IP
адреса; по умолчанию не ограничено. Может переопределяться для каждой службы параметром max-child-per-ip.

Строки в файле /etc/inetd.conf имеют такой формат:

service-name
socket-type
protocol
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]
user[:group][/login-class]
server-program
server-program-arguments

Реализация

Модифицируем параметры для сервисов FTP и SSH следующим образом:

FreeBSD

# /etc/inetd.conf

Centos/Debian/Ubuntu

# /etc/xinetd.conf

Содержимое:

ftp     stream  tcp     nowait/5/1/2    root    /usr/local/sbin/in.proftpd      proftpd
ssh     stream  tcp     nowait/5/1/2    root    /usr/sbin/sshd          sshd -i -4

Перезапускаем inetd:

FreeBSD

# /etc/rc.d/inetd restart

Centos 6/Debian/Ubuntu

# /etc/init.d/xinetd restart

Centos 7

# systemctl restart xinetd

В данном случае к службам одновременно могут обратиться 5 клиентов, с одного IP-адреса возможно одновременно 2 подключения, причем c одного IP-адреса нельзя будет подключиться чаще 1 раза в минуту.

Дополнительная защита для ssh

В файл /etc/sshd_config добавляем следующую опцию:

MaxAuthTries 1

Это означает, что пользователь имеет право на MaxAuthTries + 1 = 2 попытки авторизации.

Чтобы разрешить только одну попытку авторизации, необходимо выставить значение MaxAuthTries в 0:

MaxAuthTries 0

Дополнительная защита для proftpd

В файл /usr/local/etc/proftpd.conf добавляем:

MaxLoginAttempts 1

Теперь при соединении возможна только 1 попытка авторизации

Защищаем почту (dovecot)

В прочем, я этим не ограничился, и решил dovecot (POP3 и IMAP сервер) также пустить через inetd.

Для этого останавливаем dovecot:

# /usr/local/etc/rc.d/dovecot stop

После чего в файле /etc/rc.conf комментируем запись про dovecot:

#dovecot_enable="YES"

И добавляем в /etc/inetd.conf следующие записи:

imap           stream  tcp     nowait/5/1/2  root    /usr/libexec/tcpd /usr/local/libexec/dovecot/imap-login
imaps          stream  tcp     nowait/5/1/2  root    /usr/libexec/tcpd /usr/local/libexec/dovecot/imap-login --ssl
pop3           stream  tcp     nowait/5/1/2  root    /usr/libexec/tcpd /usr/local/libexec/dovecot/pop3-login
pop3s          stream  tcp     nowait/5/1/2  root    /usr/libexec/tcpd /usr/local/libexec/dovecot/pop3-login --ssl

После чего перезапускаем inetd: FreeBSD

# /etc/rc.d/inetd restart

Centos 6/Debian/Ubuntu

# /etc/init.d/xinetd restart

Centos 7

# systemctl restart xinetd

Заключение

Выставив ограничения, мы ограничиваем активность нежелательных на нашем сервере персон.

Разумеется, вы предпочтете модифицировать лимиты по вашему усмотрению, соответственно вашим потребностям.

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты

Заметили ошибку?

Выделите ее и нажмите CTRL+ENTER