Практикум:
Безопасный SSH
Настройка ключей, fail2ban и порт-нокинг для создания "неприступного" сервера.
🖥️ Ваше Окружение
Вам понадобится две машины: ваш локальный компьютер (клиент) и удаленный сервер. Все команды для сервера требуют sudo. Если сервера нет, используйте localhost.
1. Основы SSH
SSH — протокол для безопасного подключения. Начнем с базовых команд.
ssh user@192.168.1.100
ssh user@192.168.1.100 -p 2222
Config File (Лайфхак)
Создайте файл ~/.ssh/config на клиенте, чтобы не вводить IP каждый раз.
Host myserver
HostName 192.168.1.100
User user
Port 22
Теперь можно просто писать: ssh myserver.
🚀 ЧЕЛЛЕНДЖ:
1. Подключитесь к серверу.
2. Создайте ~/.ssh/config на клиенте.
3. Подключитесь, используя псевдоним.
2. Настройка SSH-ключей
Вход по паролю ненадежен. Используем криптографические ключи.
Как это работает?
id_ed25519(Приватный ключ): Ваш паспорт. Хранится на клиенте. Никому не давать!id_ed25519.pub(Публичный ключ): Замок. Копируется на сервер.
Генерация и Копирование
ssh-keygen -t ed25519 -C "admin@example.com"
ssh-copy-id user@192.168.1.100
3. Защита Сервера
Самый важный шаг: отключаем вход по паролю.
⚠️ КРИТИЧЕСКОЕ ПРЕДУПРЕЖДЕНИЕ
Перед отключением пароля откройте ВТОРОЙ терминал и подключитесь к серверу. Не закрывайте его! Это ваш запасной вход, если что-то пойдет не так.
sudo nano /etc/ssh/sshd_config
PasswordAuthentication no
PermitRootLogin no
PubkeyAuthentication yes
sudo systemctl restart sshd
4. Установка Fail2Ban
Банит IP-адреса ботов, которые пытаются подобрать пароль (даже если он отключен, они создают нагрузку).
sudo apt update
sudo apt install fail2ban
# Создаем локальный конфиг (никогда не меняйте jail.conf!)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Откройте jail.local и проверьте секцию [sshd]:
[sshd]
enabled = true
port = ssh
# bantime = 1h
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
5. Порт-нокинг (PRO)
Техника "безопасности через неизвестность". SSH-порт закрыт для всех. Чтобы открыть его, нужно "постучать" по портам в правильном порядке (напр. 7000 -> 8000 -> 9000).
⚠️ ТОЛЬКО ДЛЯ ОПЫТНЫХ
Высокий риск заблокировать себя. Практикуйтесь только на VM с консольным доступом!
1. Установка и Firewall
sudo apt install knockd iptables
# Разрешаем текущие соединения
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Блокируем SSH (порт 22)
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
2. Настройка Knockd
Редактируем /etc/knockd.conf:
[openSSH]
sequence = 7000,8000,9000
seq_timeout = 5
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9000,8000,7000
seq_timeout = 5
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
3. Как стучать (с клиента)
# Стук
knock 192.168.1.100 7000 8000 9000
# Теперь порт 22 открыт для вас!
ssh user@192.168.1.100