Найти в Дзене
DeSoft.ru

Базовая защита от перебора паролей на виртуальном сервере

Очередную виртуалку атакуют переборщики паролей десятками и сотнями итераций. Достаточно оставить публичную машину всего на ночь, и логи пополнятся большим списком попыток авторизации под разными стандартными и не только именами пользователей на разные порты. Убедиться в этом можно, например, полистав логи less /var/log/auth.log 🔨 Сразу настраиваю на любой Linux VPS минимальный набор ограничений, чтобы отправить таких в бан или просто проигнорировать. 📌 Идем в файл /etc/ssh/sshd_config. Меняем порт SSH, отключаем вход по паролю (ключи же есть!). Можно и root вход заблокировать. Port 2202
PasswordAuthentication no
PermitEmptyPasswords no
PermitRootLogin no 📌 Настраиваем firewall с помощью ufw. # установка
apt update
apt install ufw -y
# базовые правила
ufw default deny incoming
ufw default allow outgoing
# открываем только нужные порты
ufw allow 2202/tcp # новый ssh порт
ufw allow http # 80
ufw allow https # 443
# отключаем ipv6
vi /etc/default/ufw
# IPV6=no
# перезапускае

Очередную виртуалку атакуют переборщики паролей десятками и сотнями итераций. Достаточно оставить публичную машину всего на ночь, и логи пополнятся большим списком попыток авторизации под разными стандартными и не только именами пользователей на разные порты.

Убедиться в этом можно, например, полистав логи

less /var/log/auth.log

🔨 Сразу настраиваю на любой Linux VPS минимальный набор ограничений, чтобы отправить таких в бан или просто проигнорировать.

📌 Идем в файл /etc/ssh/sshd_config. Меняем порт SSH, отключаем вход по паролю (ключи же есть!). Можно и root вход заблокировать.

Port 2202
PasswordAuthentication no
PermitEmptyPasswords no
PermitRootLogin no

📌 Настраиваем firewall с помощью ufw.

# установка
apt update
apt install ufw -y

# базовые правила
ufw default deny incoming
ufw default allow outgoing

# открываем только нужные порты
ufw allow 2202/tcp
# новый ssh порт
ufw allow http
# 80
ufw allow https
# 443

# отключаем ipv6
vi /etc/default/ufw
# IPV6=no

# перезапускаем
ufw disable && ufw enable

# проверяем
ufw status

📌 Настраиваем fail2ban для автоматической блокировки ip адресов после множественных неудачных попыток авторизации. Для этого создадим jail и пропишем параметры.

# устанавливаем утилиту
apt install python3-systemd fail2ban -y

# добавляем конфигурацию для мониторинга логов авторизации
vi /etc/fail2ban/jail.local

Указываем количество попыток, после которых наступает бан, промежуток времени, в пределах которого считаются попытки, и длительность бана.

[DEFAULT]
banaction = ufw

[sshd]
backend=systemd
enabled = true

maxretry = 4
findtime = 1h
bantime = 1d
ignoreip = 127.0.0.1
logpath = /var/log/auth.log

# перезапускаем сервис
systemctl restart fail2ban

# проверяем результаты работы
fail2ban-client status sshd

Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 887
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 0
|- Total banned: 131
`- Banned IP list:

Больше полезной информации в моем Telegram-канале.