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.

 

Оставить мнение

Check Also

Конкурс хаков: пишем на PowerShell скрипт, который уведомляет о днях рождения пользователей Active Directory

В компаниях часто встречается задача уведомлять сотрудников о приближающихся днях рождения…