Защита SSH
Несколько базовых методов, которые должны защитить Ваш сервер.
Al-Sher
Данная статья посвящена защите вашего сервера от брутфорса. Методы, представленные в данном материале, не гарантируют защиту сервера от взлома, но в то же время стремиться усложнить жизнь взломщику. Все действия вы выполняете на свой страх и риск!
Перенос порта
Данный метод не является результативным, если злоумышленник нацелился именно на ваш сервер. Но, в то же время, многие боты атакуют именно стандартный ssh-порт, чем "забивают" лог. Попробуем избежать данной проблемы путем переноса порта для ssh клиентов.
Итак, настройки SSH находятся в файле /etc/ssh/sshd_config, следовательно откроем его:
nano /etc/ssh/sshd_config
Давайте изменим 22 порт на 5500, заменив
Port: 22
на
Port: 5500
После редактирования файлов не забываем перезагрузить SSH:
/etc/init.d/sshd restart
Отключение пользователя root
Второй метод связан с учетной записью "root", которая является администратором сервера по-умолчанию. Так как именно root является администратором по-умолчанию, взломщики частенько пытаются получить доступ именно к данному "аккаунту".
Перед отключением root нам необходимо создать пользователя, например username:
adduser username
Далее необходимо установить пароль для данного аккаунта:
passwd username
Заблокируем доступ root через ssh. Для этого следует снова обратиться к файлу /etc/ssh/sshd_config и изменить PermitRootLogin на no.
Как же мы будем выполнять в дальнейшем действия, требующие владение правами root`a? Ответ прост - su. То есть, изначально мы авторизовываемся под обычным юзером(username), а далее используем команду su для входа под root.
Это, конечно же, не избавит нас от пользователя root, но защитит от "внешних" попыток подбора пароля, а так же будет требовать два различных пароля(для username и root).
Fail2Ban
Для ограничения количества попыток авторизации следует прибегнуть к дополнительному ПО. В данной статье мы воспользуемся Fail2Ban, так как он прост в использовании и не требует больших усилий по настройке.
Установим fail2ban:
yum install fail2ban
В большинстве случаев установки хватает, но если Вы хотите изменить "стандартные" настройки, чтобы еще чуть-чуть усложнить жизнь взломщику, следует подправить файл конфигурации расположенный по следующему пути: /etc/fail2ban/jail.conf.
Данный файл поделен на секции, каждая из которых отвечает за защиту определенного процесса. Содержимое секции DEFAULT относится ко всем сервисам, в случае если те не предопределены.
Рассмотрим некоторые параметры, доступные нам для настройки:
- ignoreip - "белый" лист ip адресов, разделенных через запятую;
- bantime - время бана в секундах;
- maxretry - количество неудачных попыток перед блокировкой пользователя;
- port - порт, отслеживаемый fail2ban. Если вы изменили порт для ssh, то не забудьте поправить его в данной конфигурации;
- filter - имя фильтра, по которому идет просмотр логов;
- logpath - путь к логам, которые будет смотреть fail2ban.
После всех изменений не забываем перезагрузить fail2ban:
service fail2ban restart
SSH ключи
Наверное использование SSH ключей, вместо паролей, является самым надежным способом защиты сервера, но требует защиты данных ключей...
В общем-то данный способ увеличит кол-во попыток подбора ключа в несколько раз, но, если вдруг Ваш ключ потеряется или его украдут, то данный способ Вас не защитит. Это как ключи от дверей ?
Все публичные ключи хранятся по пути ~/.ssh/. Зайдем в данную папку:
cd ~/.ssh/
Если вдруг данной папки не существует, то её необходимо создать:
mkdir ~/.ssh/
Далее создадим ключи типа dsa и размером в 1024 бита:
ssh-keygen -b 1024 -t dsa
Вам зададут некоторые вопросы, пройдемся по их смыслу:
- Enter file in which to save the key (/root/.ssh/id_dsa) - куда сохранить ключ;
- Enter passphrase (empty for no passphrase) - парольная фраза для приватного ключа;
- Enter same passphrase again - повтор парольной фразы.
После создания ключей нам необходимо переименовать публичный ключ в authorized_keys:
mv id_dsa.pub authorized_keys
А приватный ключ(id_dsa) сохранить в надежном месте. Данный ключ будет требоваться при подключении к нашему серверу.
Так же зададим права на файл authorized_keys лишь владельцу:
chmod 600 authorized_keys
Заключение
Данные методы не дают 100% защиты, но они должны сделать взлом сервера чуть сложнее.