Как защитить SSH-сервер: хитрости, которые работают на 100%

Практичные советы по надёжной защите SSH-сервера от взлома и несанкционированного доступа.

Как защитить SSH-сервер: хитрости, которые работают на 100%

Как защитить SSH-сервер: хитрости, которые работают на 100%

SSH — ваш надёжный страж, но даже у крепостей бывают слабые места. Представьте: каждую секунду тысячи ботов стучатся в порт 22, как назойливые продавцы. Пора сменить замки и спрятать дверь!

Смените порт — и 90% атак испарится

Порт 22 — это как оставлять ключи под ковриком. Переход на 2222 или 4822 мгновенно отсечёт большинство автоматических атак.

Просто сделайте вот что:

  1. Откройте конфиг:
    sudo nano /etc/ssh/sshd_config
    
  2. Найдите строку Port 22 и замените на любой свободный порт.
  3. Перезапустите SSH:
    sudo systemctl restart sshd
    

Маленькая деталь: не забудьте проверить брандмауэр! Иначе ваш новый порт останется крепостью без дверей.

Ключи вместо паролей: ваш цифровой отпечаток пальца

Пароли? Это вчерашний день. Ключи Ed25519 — это как супер-секретный шифр, который невозможно подделать.

Настройка за 3 шага:

  1. Создайте ключ (и да, добавьте фразу-пароль!):
    ssh-keygen -t ed25519 -a 100
    
  2. Скопируйте его на сервер:
    ssh-copy-id -p 2222 user@server_ip
    
  3. Навсегда заблокируйте пароли в /etc/ssh/sshd_config:
    PasswordAuthentication no
    

Совет от параноика: храните приватный ключ в надёжном месте. Потеряете — и придётся пробиваться на свой сервер как хакер!

Port knocking: дверь, которая появляется по волшебству

Зачем показывать дверь, если можно сделать её невидимой? Port knocking — это как секретный стук в определённой последовательности.

  1. Установите knockd:
    sudo apt install knockd
    
  2. Настройте "волшебную" последовательность (например, 7000, 8000, 9000):
    [openSSH]
    sequence = 7000,8000,9000
    command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 2222 -j ACCEPT
    

Теперь ваш SSH-сервер "проснётся" только после правильного стука:

knock server_ip 7000 8000 9000

Осторожно: если забудете последовательность — сами окажетесь по ту сторону двери!

Фильтрация по IP: только для своих

Если сервер должен быть доступен только с определённых адресов, iptables — ваше оружие:

iptables -A INPUT -p tcp --dport 2222 -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 -j DROP

Добавьте защиту от bruteforce.Пусть злоумышленники получают тайм-аут:

iptables -A INPUT -p tcp --dport 2222 -m recent --name ssh --update --seconds 60 --hitcount 3 -j DROP

Экстра-уровни защиты

Root? Нет, не слышал

Закройте доступ для root — даже если злоумышленник получит ключ, он не станет королём:

PermitRootLogin no

Двухфакторка: двойная броня

Добавьте Google Authenticator — пусть воруют не только ключ, но и ваш телефон!

sudo apt install libpam-google-authenticator
google-authenticator

Fail2ban: автоматический охранник

Настройте бан после трёх попыток — пусть злоумышленники идут искать лёгкие цели:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 1h

Следите за обновлениями

Старый SSH — это как дырявый зонт в ливень. Обновляйтесь!


Главное правило: безопасность — это не пункт назначения, а бесконечный путь. Начните с ключей и нестандартного порта, затем добавьте port knocking или двухфакторку. Чем больше слоёв — тем крепче ваша цифровая крепость!