Secure Shell можно найти повсюду. С момента
выпуска в 1995 году, SSH получил широкое
распространение как мощный протокол
удаленного доступа для Linux.
Однако, как известно, большая сила -
большая ответственность. Неправильно
сконфигурированный SSH демон может быть
больше угрозой, нежели помощью. В этой
статье мы рассмотрим пять шагов по усилению
безопасности SSH.
1. Отключаем root логин.
Самый простой шаг. Очевидно, что
существует мало причин разрешения захода
root через SSH. Отключить же такой доступ
довольно просто и это позволит усилить
безопасность.
Найдем /etc/ssh/sshd_config (возможно он находиться
в другом каталоге, это зависит от
дистрибутива). В нем определим место
PermitRootLogin и заменим значение на "no":
PermitRootLogin no
Конечно, это не помешает никому вломиться
в систему под обычным юзером, однако лишней
преградой на пути возобладания системой
все же послужит.
2. Запрещаем интерактивный логон.
Следующий очевидный шаг - сделать
авторизацию не на основе вводимых
пользователем данных, а на основе ключей. Мы
несколько раз писали о системе ключевого
доступа в SSH, вы можете прочитать о создании
и использовании ключей в наших статьях:
Защита SSH №1
Защита SSH №2
Ключи в OpenSSH
Прочитав все выше написанное и реализовав
на практике, мы в результате получим ключи
для авторизации на сервере. Убедившись, что
все работает, можно запретить
интерактивный ввод:
PasswordAuthentication no
ChallengeResponseAuthentication no
3. Черный список DenyHosts
Используя этот Python-скрипт администратор
может автоматические вносить хосты при
неудачном логине в черный список, баня их
навечно. Простейший способ установки:
europa ~ # emerge -pv denyhosts
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild R ] app-admin/denyhosts-2.5 0 kB
Total size of downloads: 0 kB
europa ~ # emerge denyhosts
Документации по программе не очень много (если
чего - есть, например FAQ),
однако все опции конфигурирования
нормально описаны в конфигурационном файле.
europa $ nano -w /etc/denyhosts.conf
Не думаю, что конфигурирование DenyHosts
вызовет особые проблемы - достаточно
внимательно прочитать конфиг.
После конфигурирования можно запустить
программу демоном или через шедулер. В Gentoo
демоном:
rc-update add denyhosts default
Через cron, скажем каждые 10 минут:
python /usr/bin/denyhosts -c /etc/denyhosts.conf
Вся радость DenyHost не только в блокировании
хостов, пытающихся пробиться к вашему SSH
серверу, но и в том, что можно
синхронизировать свой "черный список"
с серверами DenyHost. Таким образом создается
коллективный список хостов, содержащий
всех нападающих. Он предотвратит нападение
в самом корне.
4. Изменяем номер порта.
Большинство попыток взлома идет от
автоматических скриптов, сканирующих сеть
на наличие SSH демонов. В подавляющем
количестве случаев они пытаются вломиться
на 22 порт, что только играет нам на руку.
Изменив порт мы автоматически отсечем
большинство попыток несанкционированного
доступа.
В конфиге стоит поменять:
Port 22
Вместо или вместе с изменением порта
можно использовать "стук в порты" (port
knocking). Это еще больше защитит наш SSH сервер. Подробнее
о технологии можешь прочитать в
Декабрьском Хакере: http://www.xakep.ru//magazine/xa/084/032/1.asp.