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