1️⃣ Использование Port Knocking. Это механизм, при котором порт остаётся закрытым до тех пор, пока клиент не отправит правильную последовательность пакетов.
🔧 Как настроить (пример для
iptables):
iptables -A INPUT -p tcp --dport 22 -j DROP
iptables -A INPUT -p udp --dport 22 -j DROP
iptables -A INPUT -m recent --rcheck --seconds 60 --name KNOCKED -j ACCEPT
iptables -A INPUT -p tcp --dport 2222 -m recent --set --name KNOCKED -j DROP
🔹 Сначала сервер блокирует порт 22 (SSH).
🔹 Если кто-то стучится в порт 2222, ему временно разрешается доступ к 22-му.
🔹 Без правильного "стука" SSH остаётся невидимым.
Автоматизировать можно с помощью
knockd или fwknop.2️⃣ Маскировка открытых портов (TARPIT, REJECT). Чтобы сбить с толку сканеры, можно замедлить или исказить их работу:
Используем iptables TARPIT (затягивает соединение):
iptables -A INPUT -p tcp --dport 23 -j TARPIT
Теперь порт 23 (Telnet) будет притормаживать атакующих, вместо того чтобы сразу отклонять соединение.
Или можно возвращать ложный REJECT:
iptables -A INPUT -p tcp --dport 22 -j REJECT --reject-with tcp-reset
Вместо стандартного "порта нет", сервер отправит "порт есть, но сбрасывает соединение", что может запутать.
3️⃣ Использование iptables для блокировки сканеров. Если ваш сервер замечает подозрительную активность (сканирование портов, частые подключения), можно автоматически блокировать IP.
Простой бан подозрительных сканеров:
iptables -A INPUT -m recent --rcheck --seconds 60 --name PORTSCAN -j DROP
iptables -A INPUT -p tcp --syn -m recent --set --name PORTSCAN -j DROP
🔹 Если IP подключается слишком часто - он автоматически блокируется на 60 секунд.
🔹 Можно адаптировать под другие сервисы (например, SSH).
5️⃣ Размещение сервисов за реверс-прокси (Cloudflare, Nginx, HAProxy). Если сервис не должен быть доступен напрямую, можно скрыть его за прокси-сервером.
🔧 Настройка Nginx как реверс-прокси для скрытия SSH:
server {
listen 443 ssl;
server_name myserver.com;
location /ssh {
proxy_pass http://127.0.0.1:2222;
}
}
Теперь SSH-доступ будет идти через HTTPS (порт 443), а не через стандартный 22-й.
#security
🧑💻 NetworkAdmin