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