Установка и обновление SSH-сервера
Перед настройкой SSH-сервера в Debian необходимо убедиться, что установлены актуальные версии всех пакетов. Основной пакет для SSH — это `openssh-server`. Его установка осуществляется через менеджер пакетов APT:
```bash
sudo apt update && sudo apt install openssh-server
```
После установки рекомендуется сразу обновить все системные пакеты для устранения уязвимостей:
```bash
sudo apt upgrade
```
Важно: всегда обновляйте систему перед настройкой безопасности. Это предотвратит использование известных уязвимостей. После установки SSH-сервер запускается автоматически. Статус службы можно проверить командой:
```bash
sudo systemctl status ssh
```
Если служба не активна, её следует запустить с помощью `sudo systemctl start ssh`. Также желательно включить автозапуск при загрузке системы: `sudo systemctl enable ssh`.
Базовые параметры конфигурации
Основной конфигурационный файл SSH-сервера расположен по пути `/etc/ssh/sshd_config`. Перед внесением изменений обязательно создайте резервную копию:
```bash
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
```
Откройте файл в текстовом редакторе, например в `nano`:
```bash
sudo nano /etc/ssh/sshd_config
```
Здесь укажите нестандартный порт, чтобы снизить риск автоматизированных атак:
```
Port 2222
```
Не используйте стандартный порт 22 без крайней необходимости. Также разрешите только протокол версии 2:
```
Protocol 2
```
Отключите вход по паролю, если используете аутентификацию по ключу:
```
PasswordAuthentication no
PermitRootLogin no
```
Запрещённый вход от имени root особенно важен, поскольку root — цель №1 для атак. После изменений перезапустите SSH-сервер:
```bash
sudo systemctl restart ssh
```
Настройка аутентификации по ключу
Аутентификация по ключу обеспечивает более высокий уровень безопасности по сравнению с паролями. На клиентской машине сгенерируйте ключ с помощью:
```bash
ssh-keygen -t ed25519 -C "ваш@email"
```
Формат Ed25519 предпочтительнее RSA, так как он обеспечивает лучшую защиту при меньшем размере ключа. По умолчанию ключи сохраняются в `~/.ssh/`. Чтобы передать публичный ключ на сервер, используйте:
```bash
ssh-copy-id -p 2222 user@host
```
Важно указать правильный номер порта, если вы изменили его. После успешной отправки ключа проверьте, что вход возможен без пароля. Затем отключите PasswordAuthentication, как описано выше.
Совет: не передавайте приватный ключ третьим лицам и не сохраняйте его в общедоступных каталогах.
Ограничение доступа по IP и пользователям
Для усиления контроля доступа можно ограничить круг допустимых пользователей и IP-адресов. В `sshd_config` добавьте:
```
AllowUsers user1 user2
```
Можно также ограничить подключение только с определённых IP:
```
Match Address 192.168.1.0/24
AllowUsers admin
```
Ещё один способ — использовать файрвол `ufw` (или `iptables`) для фильтрации соединений:
```bash
sudo ufw allow from 192.168.1.0/24 to any port 2222 proto tcp
```
Такая комбинация значительно снижает риск внешних атак. Проверяйте активные подключения через `ss` или `netstat`, чтобы убедиться, что несанкционированный доступ отсутствует.
Ограничение числа попыток входа
Для защиты от атак перебора паролей (brute-force) рекомендуется использовать fail2ban. Установите его:
```bash
sudo apt install fail2ban
```
Затем создайте локальную конфигурацию:
```bash
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
```
В файле `/etc/fail2ban/jail.local` найдите секцию `[sshd]` и активируйте:
```
[sshd]
enabled = true
port = 2222
maxretry = 3
findtime = 10m
bantime = 1h
```
Эти параметры означают: при 3 неудачных попытках за 10 минут IP-адрес будет заблокирован на 1 час. Это эффективная защита от автоматических сканеров и ботов.
Дополнительные меры безопасности
Дополнительную защиту можно обеспечить следующими мерами:
- Включение двухфакторной аутентификации (2FA) с помощью Google Authenticator
- Ведение логов входов: убедитесь, что `auditd` или `rsyslog` записывают всю активность
- Использование SELinux или AppArmor для контроля доступа к SSH-процессам
- Отключение X11Forwarding, если он не используется:
```
X11Forwarding no
```
- Установка ограничения на одновременные подключения:
```
MaxSessions 2
MaxAuthTries 3
```
Каждая из этих мер снижает вероятность успешной компрометации сервера.
Частые ошибки и рекомендации
Новички часто совершают ошибки, которые приводят к потере доступа к серверу. Вот основные из них:
1. Изменение порта без предварительного открытия его в файрволе или NAT — приведёт к блокировке.
2. Отключение паролей до проверки работы ключей — приводит к невозможности входа.
3. Включение PermitRootLogin — серьёзная дыра в безопасности.
4. Отсутствие резервной копии конфигураций перед изменениями.
Чтобы избежать этих проблем, всегда тестируйте настройки в отдельной сессии, не закрывая основное подключение. Так вы сможете внести исправления в случае ошибки.
Заключение
Безопасная настройка SSH-сервера в Debian требует комплексного подхода: от смены порта и ограничения пользователей до внедрения аутентификации по ключу и систем активной защиты. Эти меры — не разовые изменения, а постоянная стратегия обеспечения безопасности. Рекомендуется регулярно проверять журналы (`/var/log/auth.log`), обновлять систему и тестировать конфигурацию. Только системный и осознанный подход позволит обеспечить надёжную защиту вашего SSH-сервера от несанкционированного доступа.



