Инструменты пользователя

Инструменты сайта


freebsd:denyhosts

Настройка Denyhosts

Технология получения несканционированного доступа к серверу по протоколу telnet/ssh1) с помощью перебора паролей «ботами» - старый, как мир, способ «взлома». Единственным верным методом защиты является:

  • настройка авторизации «по ключу»;
  • настройки подключения только с определённых хостов (фильтрация по IP);
  • настройка прав доступа для учётной записи от имени которой выполняется вход в систему2).

Разумеется, это - «идеальная ситуация»! :-) В большинстве же случаев подключение осуществляется с разных IP, да и не всегда удобно использовать «ключ». Например, при подключении с мобильного устройства…
В таком случае остаётся не так много средств «защиты»! Основным из которых, разумеется, является использование "хорошего пароля", а также регулярные обновления OS и компонентов, а ещё - ограничение количества попыток доступа к вашему хосту с целью «подобрать пароль», либо с целью поиска и эксплуатации уязвимостей. Об одном из программных средств, которые, работая в автоматическом режиме, позволяют запретить доступ при превышении разрешённого количества попыток подключения. Программа называется Denyhosts.

Установка

  • 1. Установить ПО из «портов»:
# cd /usr/ports/security/denyhosts
# make install clean
  • 2. Отредактировать файл rc.conf3):
# vi /etc/rc.conf
...
inetd_enable="YES"
denyhosts_enable="YES"
syslogd_flags="-c"
# sshd_enable="YES"
...
:wq
  • 3. Создать файл /etc/hosts.deniedssh в котором будет содержаться список «заблокированных IP»:
# touch /etc/hosts.deniedhosts
  • 4. Отредактировать файл /etc/hosts.allow, добавив строчки
#sshd : .evil.cracker.example.com : deny
sshd : /etc/hosts.deniedssh        : deny
sshd : ALL : allow

Пример файла /etc/hosts.allow

Пример файла /etc/hosts.allow

Пример файла /etc/hosts.allow

ALL : ALL : allow
sshd : 192.168.100.0/255.255.255.0 : allow
sshd : /etc/hosts.deniedssh        : deny
sshd : ALL : allow
ALL : PARANOID : RFC931 20 : deny
ALL : localhost 127.0.0.1 : allow
ALL : [::1] : allow
sendmail : localhost : allow
sendmail : ALL : allow
exim : localhost : allow
exim : ALL : allow
rpcbind : ALL : deny
ypserv : localhost : allow
ypserv : ALL : deny
ftpd : localhost : allow
ftpd : ALL : allow
fingerd : ALL \
        : spawn (echo Finger. | \
         /usr/bin/mail -s "tcpd\: %u@%h[%a] fingered me!" root) & \
        : deny
ALL : ALL \
        : severity auth.info \
        : twist /bin/echo "You are not welcome to use %d from %h."


  • 5. Отредактировать файл /usr/local/etc/denyhosts.conf, добавив строчку:
BLOCK_SERVICE = sshd

Дополнительные параметры denyhosts.conf

Дополнительные параметры denyhosts.conf

Дополнительные параметры denyhosts.conf

  • ADMIN_EMAIL - e-mail адрес для отправки отчётов;
  • DAEMON_LOG - log-файл;
  • HOSTS_DENY - путь к файлу, содержащему «заблокированные IP»;
  • SECURE_LOG - информация о соединения;
  • DENY_THRESHOLD_INVALID - максимальное количество попыток авторизоваться с неверным именем / паролем.


  • 6. Создать и отредактировать файл /usr/local/share/denyhosts/data/allowed-hosts, добавив в него IP-адрес (или несколько адресов), которые никогда не будут заблокированы:
# touch /usr/local/share/denyhosts/data/allowed-hosts
# vim /usr/local/share/denyhosts/data/allowed-hosts
212.44.130.6
:wq
  • 7. Наконец, следует отредактировать файл /etc/inetd.conf, добавив строчку:
ssh     stream  tcp     nowait  root    /usr/sbin/sshd          sshd -i -4
  • 8. Выполнить запуск сервиса denyhosts и останов sshd:
# /usr/local/etc/rc.d/denyhosts start
# service sshd stop
1) напоминаю, что протокол telnet является небезопасным средством удалённого доступа и от него настоятельно рекоумендуется отказаться
2) затем настоятельно рекомендуется выполнять su с предложением ввода пароля
3) внимание! строчка sshd_enable должна быть закомментирована
freebsd/denyhosts.txt · Последние изменения: 2014/09/26 13:23 — Alex