#1 2021.11.19 10:11:45
0
В данной статье рассмотрим базовый метод защиты SSH от массовой bruteforce-атаки. Под массовой bruteforce-атакой в данном случае подразумевается не целенаправленный подбор пароля, именно к вашему SSH, а обширный захват диапазона серверов, для последующего выявления из оного неустойчивых к подбору пары login-password.
Основными особенностями массовой bruteforce-атаки SSH, являются обширное сканирование диапазонов IP на открытый порт 22 и использование в качестве имени пользователя и пароля, часто употребляемые (например, root:passwd123, admin:server123 и т.д.).
Чтобы посмотреть статистику из log-файлов неудачных попыток авторизации по SSH у Вас на сервере, введите команду:
На данном скриншоте предоставлена статистика количества неудачных авторизаций по дням. Если Вы уведите у себя похожие данные, то Вам следует принять меры для защиты своего SSH от массового bruteforce.
1. Если Вы не используете для авторизации часто употребляемые имена пользователя, такие как root, admin, administrator, user и т.п. и используете для авторизации сложный пароль, то сразу можете переходить ко второму пункту. Чтобы сменить пароль на более сложный, введите команду:
где #your_login# — Ваше имя пользователя.
При вводе нового пароля, пароль не отображается, курсор будет находится на одном месте.
Зайдем на сервер через SSH, создадим нового пользователя и зададим ему пароль, для этого введем команды:
где #newuser# — Ваше новое имя пользователя, не используйте в качестве имени пользователя часто употребляемые, неплохой вариант ваш_никadmin (например, foxadmin, useralex, rootidler).
2. После этого заходим через SSH с новым логином и паролем. И открываем конфигурацию деймона SSH (sshd_config) командой:
После чего Вы должны увидеть примерно такое содержимое:
Строки, начинающиеся с # являются закомментированными.
Чтобы защитить SSH от массового bruteforce, раскомментируйте и измените, либо добавьте следующие параметры sshd_config файла:
a) port — порт, на котором SSHD принимает и обслуживает соединения. Расскоментируйте (удалите перед началом строки #) и измените стандартное значение 22, на любое другое от 1024 до 65536, кроме зарезервированных — список зарезервированных портов, например:
b) LoginGraceTime — время ожидания регистрации пользователя в системе. Если пользователь, не успел войти в систему в течении отведенного данной директивой времени, сеанс обрывается. Уменьшим это значение:
c) PermitRootLogin — разрешить пользователю root вход через протокол SSH. Изменим на no.
d) AllowUsers — разрешенные для входа через протокол SSH имена пользователей разделенные пробелом. Здесь вместо #your_login# указываем новое созданное имя пользователя.
e) MaxAuthTries — количество попыток входа в систему за один сеанс. При достижении максимально разрешенного числа попыток, сеанс обрывается.
В итоге мы получим:
В этой статье мы закончим настройку SSH для защиты от массового bruteforce. После редактирования sshd_config, нажимаем на клавиатуре :, снизу появляется строка и далее вводим в ней wq и нажимаем клавишу Enter. При этом все сделанные изменения сохранятся.
После завершения настройки SSH, перезапустим деймон командой:
Теперь при подключении через протокол SSH, используйте новый порт 2022 (или тот который Вы указали в настройках) вместо стандартного порта 22.
Основными особенностями массовой bruteforce-атаки SSH, являются обширное сканирование диапазонов IP на открытый порт 22 и использование в качестве имени пользователя и пароля, часто употребляемые (например, root:passwd123, admin:server123 и т.д.).
Чтобы посмотреть статистику из log-файлов неудачных попыток авторизации по SSH у Вас на сервере, введите команду:
cat /var/log/secure* | grep 'Failed password' | grep sshd | awk '{print $1,$2}' | sort -k 1,1M -k 2n | uniq -c
На данном скриншоте предоставлена статистика количества неудачных авторизаций по дням. Если Вы уведите у себя похожие данные, то Вам следует принять меры для защиты своего SSH от массового bruteforce.
1. Если Вы не используете для авторизации часто употребляемые имена пользователя, такие как root, admin, administrator, user и т.п. и используете для авторизации сложный пароль, то сразу можете переходить ко второму пункту. Чтобы сменить пароль на более сложный, введите команду:
passwd #your_login#
где #your_login# — Ваше имя пользователя.
При вводе нового пароля, пароль не отображается, курсор будет находится на одном месте.
Зайдем на сервер через SSH, создадим нового пользователя и зададим ему пароль, для этого введем команды:
adduser #newuser#
passwd #newuser#
где #newuser# — Ваше новое имя пользователя, не используйте в качестве имени пользователя часто употребляемые, неплохой вариант ваш_никadmin (например, foxadmin, useralex, rootidler).
2. После этого заходим через SSH с новым логином и паролем. И открываем конфигурацию деймона SSH (sshd_config) командой:
vi /etc/ssh/sshd_config
После чего Вы должны увидеть примерно такое содержимое:
Строки, начинающиеся с # являются закомментированными.
Чтобы защитить SSH от массового bruteforce, раскомментируйте и измените, либо добавьте следующие параметры sshd_config файла:
a) port — порт, на котором SSHD принимает и обслуживает соединения. Расскоментируйте (удалите перед началом строки #) и измените стандартное значение 22, на любое другое от 1024 до 65536, кроме зарезервированных — список зарезервированных портов, например:
port 2022
LOGIN писал(а)
Чтобы удалить # и изменить значение port 22, нажмите сначала на клавиатуре i, после редактирования необходимой строки нажмите клавишу ESCb) LoginGraceTime — время ожидания регистрации пользователя в системе. Если пользователь, не успел войти в систему в течении отведенного данной директивой времени, сеанс обрывается. Уменьшим это значение:
LoginGraceTime 1m
c) PermitRootLogin — разрешить пользователю root вход через протокол SSH. Изменим на no.
PermitRootLogin no
d) AllowUsers — разрешенные для входа через протокол SSH имена пользователей разделенные пробелом. Здесь вместо #your_login# указываем новое созданное имя пользователя.
AllowUsers #your_login#
e) MaxAuthTries — количество попыток входа в систему за один сеанс. При достижении максимально разрешенного числа попыток, сеанс обрывается.
MaxAuthTries 2
В итоге мы получим:
port 2022
LoginGraceTime 1m
PermitRootLogin no
AllowUsers #your_login#
MaxAuthTries 2
В этой статье мы закончим настройку SSH для защиты от массового bruteforce. После редактирования sshd_config, нажимаем на клавиатуре :, снизу появляется строка и далее вводим в ней wq и нажимаем клавишу Enter. При этом все сделанные изменения сохранятся.
LOGIN писал(а)
Если Вы что-то сделали не так (например, нечаянно что-то удалили), для выхода без сохранения используйте вместо комбинации клавиш wq, клавиши q!После завершения настройки SSH, перезапустим деймон командой:
service sshd restart
Теперь при подключении через протокол SSH, используйте новый порт 2022 (или тот который Вы указали в настройках) вместо стандартного порта 22.