Четыре шага в защите SSH
Secure Shell можно найти повсюду. С момента выпуска в 1995 году, SSH получил широкое распространение как мощный протокол удаленного доступа для Linux.
Однако, как известно, большая сила – большая ответственность. Неправильно сконфигурированный SSH демон может быть больше угрозой, нежели помощью. В этой статье мы рассмотрим пять шагов по усилению безопасности SSH.
1. Отключаем root логин.
Самый простой шаг. Очевидно, что существует мало причин разрешения захода root через SSH. Отключить же такой доступ довольно просто и это позволит усилить безопасность.
Найдем /etc/ssh/sshd_config (возможно он находиться в другом каталоге, это зависит от дистрибутива). В нем определим место PermitRootLogin и заменим значение на “no”:
PermitRootLogin no |
Конечно, это не помешает никому вломиться в систему под обычным юзером, однако лишней преградой на пути возобладания системой все же послужит.
2. Запрещаем интерактивный логон.
Следующий очевидный шаг – сделать авторизацию не на основе вводимых пользователем данных, а на основе ключей.
local$ cd ~/.ssh local$ ssh-keygen -t dsa -f mysuperkey |
пару раз enter (лечится -N ” )
local$ cat mysuperkey >>id_dsa local$ scp mysuperkey.pub host:.ssh/ local$ ssh host host$ cd .ssh host$ cat mysuperkey.pub >>authorized_keys host$ chmod 600 authorized_keys |
и посмотреть в конфиге /etc/ssh/sshd_config
чтоб было вот так:
RSAAuthentication yes (необязательно, но если ключи будут RSA ...) PubkeyAuthentication yes AuthorizedKeysFile %h/.ssh/authorized_keys |
ну и рестартануть sshd (не обязательно, но на всяк случай не помешает)
Убедившись, что все работает, можно запретить интерактивный ввод:
PasswordAuthentication no ChallengeResponseAuthentication no |
3. Черный список DenyHosts
Используя этот Python-скрипт администратор может автоматические вносить хосты при неудачном логине в черный список, баня их навечно. Простейший способ установки:
srv ~ # 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 srv ~ # emerge denyhosts |
Документации по программе не очень много (если чего – есть, например FAQ), однако все опции конфигурирования нормально описаны в конфигурационном файле.
srv $ 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 сервер. Подробнее о технологии можно почитать на Gentoo Wiki