Сегодня в статье поговорим о правильной настройке SSH на Ubuntu Server 18.04 LTS.
Практически сразу после запуска сервера на порту 22 наблюдается бурная активность ботов-брутфорсчиков. Для того чтобы защититься от их атак и снизить нагрузку на сервер первым делом устанавливаем и настраиваем Fail2Ban для SSH.
Далее переходим к настройке конфигурационного файла ssh
Настройка sshd_config
Открываем в терминале конфигурационный файл SSH
sudo nano /etc/ssh/sshd_config
Первое что нужно сделать, так это сменить порт ssh с 22 на любой другой. Ищем строку Port 22 и заменяем её например на Port 2222
Port 2222
Порты 21, 22, 80, 139, 443, 1194, 3306, 8080 — советую не использовать.
Второе — ограничим тип адресов для подключения (IPv6 либо IPv4). Если у вас на сервере не используется IPv6, то дописываем в файл:
AddressFamily inet
Третье — запретим root авторизацию
PermitRootLogin no
Четвертое — разрешаем подключение только под определенным логином:
AllowUsers user
где список пользователей пишется через пробел.
Пятое — запрещаем попытку входа с пустым паролем:
PermitEmptyPasswords no
Шестое — настраиваем вход по ключу.
PubkeyAuthentication yes
Далее на машине с который будете подключаться к серверу набираем следующие команды:
ssh-keygen
Будет предложено указать место размещения пары ключей, парольная фраза на них и их название. Можете оставить все как есть просто нажимая Enter.
Далее копируем наш публичный ключ на сервер:
ssh-copy-id ваш_user@IP_сервера.ru
Проверьте, что можете зайти на сервер по ключу, без ввода пароля!!!
ssh ваш_user@IP_сервера.ru
Седьмое — запрещаем вход по паролю
PasswordAuthentication no
Не забываем до выполнения этого пункта настроить вход по ключу, иначе можете остаться без сервера!!!
Восьмое — сохраняем правки и перезапускаем ssh демон:
sudo /etc/init.d/ssh restart
Соединение по SSH с сервером
Теперь можем перезайти с новыми параметрами на ваш сервер. В терминале набираем:
ssh -p 2222 user@sshserver
На всякий случай посмотрим открытые порты:
netstat -tupln | grep LISTEN
Вы должны увидеть порт 2222
В случае ошибок полезно бывает смотреть лог /var/log/secure
либо использовать опции -v
, -vv
или -vvv
для вывода детального лога соединения:
ssh -vvv user@sshserver
[endtxt]