Рецепты доктора Брауна
реально безопасная оболочка SSH Напуганы записями о неудачных попытках входа в систему по SSH, кишащими в файлах журналов? Задрайте люки по плану о шести пунктах.
Е
сли ваш SSHсервер или компьютер открыт для доступа через Интернет, то число неудачных попыток входа в систе му будет достигать сотен и тысяч в день. Феноменально? Кто не верит, загляните в файлы журна лов. И что тут можно пред принять, кроме как струхнуть? Рассмотрим шесть способов повы сить защищенность входа в систему через SSH.
1 Надежные пароли На дежные пароли – первый рубеж обороны. Изу чите критерии на дежности пароля (и обучите своих пользователей, если они у вас есть). В Интернете можно найти массу материа лов, но по су ти, на дежные пароли должны быть достаточно длинными, содержать смесь букв, цифр и спецсимволов, и не походить на слова из сло варя. Если у вас есть пользователи, которым разрешено брать себе пароли самостоятельно, воспользуйтесь модулями PAM, например, pam_cracklib или pam_passwdqc, для принудительной проверки стойкости.
2
Запретим вход как root
Если установить параметр PermitRootLogin в файле конфигура ции sshd в no, то вход в систему от имени root будет запрещен. Это усложнит за дачу злоумышленника: снача ла ему придется уга дать имя обычного пользователя и его пароль, а потом – пароль суперпользователя root. Такая защита по умолчанию включена в Ubuntu, хотя и по другой причине – пароль root там заблокиро ван. Однако это не особо удобно и для клиентов, которым нужно войти в систему как root, потому что им снача ла нужно будет сде лать это под обычным пользователем, а потом – под root.
3
уберем подключение с паролем
Хотя SSH под держивает несколько механизмов ау тентифика ции, по умолчанию обычно ак тивны только два – парольная ау тентификация и ау тентификация с публичным/приватным клю чом RSA. Установив параметр PasswordAuthentication в файле конфигурации sshd в no, вы заставите sshd использовать ау тенти фикацию RSA. Перед этим, впрочем, нужно скопировать публич ный ключ на сервер. Это нетрудно: если у вас еще нет пары пуб
личный/приватный ключ, запустите sshkeygen, чтобы создать ее, за дайте парольную фразу и воспользуйтесь sshcopyid, чтобы скопировать публичный ключ в файл authorized_keys на сервере. Это в самом деле эффек тивная защита, но если вы регулярно входите в систему с разных компьютеров, на до носить закрытый ключ с собой.
4
Запустим SSH на нетипичном порту
Порт, который слушает sshd, можно изменить, установив пара метр Port в конфигурационном файле сервера. Измените его но мер на «случайный» и большой. Конечно, его нужно будет указы вать при подключении: $ ssh p 22550 chris@myserver.example.com Как вариант, можно так же настроить это на ка ж дом хосте, в конфигурационном файле клиента SSH (/etc/ssh/ssh_config). Пуристы в информационной безопасности ука жут мне, что полной безопасности нельзя добиться, только пустив пыль в гла за. Если вы твердо решите взломать мой компьютер, то без труда определите порт, который слушает sshd, с помощью сканера пор тов nmap. Но в большинстве атак на SSH методом перебора ис пользуется только порт 22. Могу предположить (хотя это только предположение), что перемещение SSH с порта 22 уменьшит чис ло атак на добрых 90 %. Обеспечит ли это безопасность компью тера? Не абсолютно. Снизит ли риск? Да. Так или иначе, это, види мо, самая слабая мера из здесь приведенных.
5
Гоним нарушителейрецидивистов
Недавно мне попа лась программа fail2ban, которая блокиру ет сайты, неудачные попытки входа в систему с которых повто ряются. Ее идея очень проста. Время от времени она заглядыва ет в журна лы, на ходит сообщения о неудачных попытках входа в систему (с помощью регулярных выра жений) и извлекает IPад рес нарушителя. По превышении определенного порогового зна чения (его можно за дать), fail2ban меняет правила брандмауэра Iptables таким образом, что IPадреса нарушителей полностью блокируются. Запрет может быть постоянным или сниматься по истечении определенного времени.
6
Ограничим частоту подключений
Идея здесь состоит в том, чтобы ограничить частоту, с которой можно устанавливать новые SSHсоединения с одного IPадре са. Если она превышена, поместите IPадрес в черный спи сок (предполагая, что это злоумышленник) и отбрасывайте (DROP) все со единения с данного адреса час или около того. Все это умеет делать новый модуль Iptables. Обратите внимание, что дан ное решение работает только на IPуровне, и отличить удачный вход в систему от неудачного невозможно – ограничивается только число попыток. Хоро шее обсу ж дение данной технологии имеется на сай те www.sollers.ca/blog/2008/iptables_recent. если вы хотите узнать об SSH больше, материалов очень много��
Август 2009 Linux Format 41