Базовая защита от перебора паролей на виртуальном сервере
Очередную виртуалку атакуют переборщики паролей десятками и сотнями итераций. Достаточно оставить публичную машину всего на ночь, и логи пополнятся большим списком попыток авторизации под разными стандартными и не только именами пользователей на разные порты.
Убедиться в этом можно, например, полистав логи
1
less /var/log/auth.log
🔨 Сразу настраиваю на любой Linux VPS минимальный набор ограничений, чтобы отправить таких в бан или просто проигнорировать.
📌 Идем в файл /etc/ssh/sshd_config. Меняем порт SSH, отключаем вход по паролю (ключи же есть!). Можно и root вход заблокировать.
1
2
3
4
Port 2202
PasswordAuthentication no
PermitEmptyPasswords no
PermitRootLogin no
📌 Настраиваем firewall с помощью ufw.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# установка
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 и пропишем параметры.
1
2
3
4
5
# устанавливаем утилиту
apt install python3-systemd fail2ban -y
# добавляем конфигурацию для мониторинга логов авторизации
vi /etc/fail2ban/jail.local
Указываем количество попыток, после которых наступает бан, промежуток времени, в пределах которого считаются попытки, и длительность бана.
1
2
3
4
5
6
7
8
9
10
11
12
[DEFAULT]
banaction = ufw
[sshd]
backend=systemd
enabled = true
maxretry = 4
findtime = 1h
bantime = 1d
ignoreip = 127.0.0.1
logpath = /var/log/auth.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# перезапускаем сервис
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:
