

SSH — основной инструмент администрирования серверов. Однако стандартная конфигурация по умолчанию часто оставляет "дыры" в безопасности.
Чтобы минимизировать риск взлома, нужно:
- Отключить root-доступ
* запретить логин по паролю - Разрешить вход только по SSH-ключу
* перенести SSH на нестандартный порт

Работа под root напрямую — крайне рискованна. Лучше использовать sudo, давая обычному пользователю ограниченные привилегии.
Создаём пользователя (если ещё не создан):
Код:
adduser yourname
usermod -aG sudo yourname
Теперь пользователь
yourname
может выполнять команды от root, вводя свой пароль:
Код:
sudo apt update

sudo
:
Код:
groups yourname

Откройте конфигурацию:
Код:
sudo nano /etc/ssh/sshd_config
Измените или добавьте строки:
Код:
PermitRootLogin no
PasswordAuthentication no
После этого перезапустите SSH:
Код:
sudo systemctl restart sshd

На локальной машине:
Код:
ssh-keygen -t ed25519 -C "[email protected]"
По умолчанию ключи сохранятся в:
Код:
~/.ssh/id_ed25519 и ~/.ssh/id_ed25519.pub
Добавляем ключ на сервер:
Код:
ssh-copy-id -i ~/.ssh/id_ed25519.pub [email protected]
Или вручную:
Код:
cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Открываем тот же файл:
Код:
/etc/ssh/sshd_config
И указываем нестандартный порт, например:
Код:
Port 2222
Открываем его в фаерволе:
Код:
sudo ufw allow 2222/tcp

После всех изменений:
Код:
sudo systemctl restart sshd
Проверяем новое подключение:
Код:
ssh -p 2222 [email protected]

Теперь ваш сервер:
- Не допускает вход под root
* Не принимает пароли (только ключи) - Работает на другом порту (если вы его сменили)

fail2ban — это инструмент, который автоматически блокирует IP-адреса после нескольких неудачных попыток входа по SSH (и не только).
Установка:
Код:
sudo apt install fail2ban -y
Создаём локальный конфиг:
Код:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Редактируем файл:
Код:
sudo nano /etc/fail2ban/jail.local
Найдите секцию
[sshd]
и убедитесь, что она активирована:
Код:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 5

Перезапуск службы:
Код:
sudo systemctl restart fail2ban
Проверка статуса:
Код:
sudo fail2ban-client status sshd
Пример вывода:
Status for the jail: sshd
|- Filter
| └─ Currently failed: 0
|- Actions
└─ Currently banned: 1

Кроме SSH, fail2ban поддерживает:
- nginx (404-спам, brute-force на формы)
- Postfix / Dovecot (почтовые сервера)
- FTP-сервисы
- WordPress wp-login.php (если интегрировать)

Теперь сервер:
- Отключает root-доступ
- Принимает только SSH-ключи
- Позволяет управлять через sudo без root
- Блокирует IP при подозрительной активности

Код:
sudo systemctl status sshd
journalctl -xe | grep ssh

Оставляйте комментарии ниже — обсудим, подскажем, дополним!
Последнее редактирование: