Push 163 file(s) from Obsidian
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
#linux #ssh
|
||||
Port Knocking — это метод скрытой защиты, при котором все критически важные порты (например, 22) блокируются файрволлом и открываются только после получения специальной последовательности запросов (knocks) на заранее заданные закрытые порты. Пока атакующий не знает правильного порядка и тайминга, его порт-сканер увидит лишь, что порт 22 просто закрыт.
|
||||
|
||||
Как дополнительный фактор защиты, port knocking может снизить обнаружение сервиса, а не пытаться бороться с последствиями (брутфорс, эксплуатация уязвимости).
|
||||
|
||||
⚙️ **Как настроить knockd на Linux**
|
||||
|
||||
Самый популярный инструмент — демон `knockd`. В большинстве дистрибутивов он ставится стандартным способом.
|
||||
|
||||
**1. Установка:**
|
||||
```bash
|
||||
apt update && apt install knockd iptables-persistent -y
|
||||
```
|
||||
|
||||
**2. Настройка автозапуска:**
|
||||
Редактируем `/etc/default/knockd`. Меняем `START_KNOCKD=0` на `START_KNOCKD=1`.
|
||||
|
||||
**3. Конфигурация knockd в `/etc/knockd.conf`:**
|
||||
|
||||
```ini
|
||||
[options]
|
||||
Interface = eth0
|
||||
logfile = /var/log/knockd.log
|
||||
|
||||
[openSSH]
|
||||
sequence = 661,671,681
|
||||
seq_timeout = 5
|
||||
tcpflags = syn
|
||||
start_command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
|
||||
stop_command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
|
||||
cmd_timeout = 30
|
||||
```
|
||||
|
||||
**Описание параметров:**
|
||||
|
||||
> 🟢 Interface — сетевой интерфейс, который будет прослушиваться.
|
||||
> 🟢 logfile — файл логирования knockd (необязательный параметр).
|
||||
> 🟢 sequence — последовательность портов для «стука». Можно также явно задать протокол (например, 661:udp, 671, 681:tcp).
|
||||
> 🟢 seq_timeout — время в секундах, за которое необходимо завершить «стук».
|
||||
> 🟢 tcpflags — флаги tcp, которые должны быть в «открывающей» последовательности. Можно указать несколько флагов или исключить их явно (например -fin,syn,ack), но в стандартной конфигурации используется флаг syn.
|
||||
> 🟢 start_command — команда, выполняемая после успешного «стука».
|
||||
> 🟢 stop_command — команда, выполняемая по истечении cmd_timeout.
|
||||
> 🟢 cmd_timeout — время в секундах, на которое открывается порт.
|
||||
|
||||
**4. Запуск демона:**
|
||||
```bash
|
||||
systemctl enable knockd && systemctl start knockd
|
||||
```
|
||||
|
||||
🔐 **Как открыть порт (клиент):**
|
||||
|
||||
С удаленного узла мы можем предъявить пропуск — простучать указанные порты в правильной последовательности.
|
||||
|
||||
knock -v target.host 661 671 681
|
||||
|
||||
|
||||
В ответ ты увидишь: `hitting tcp target.host:661` → `hitting tcp target.host:671` → `hitting tcp target.host:681`. После этого соединение по SSH станет возможным.
|
||||
|
||||
💀 **Атака через knockknock**
|
||||
|
||||
Если последовательность слишком простая (например, идущие подряд порты), её можно перебрать. Быстрый способ — специальные брутфорс-утилиты, которые за секунды перебирают тысячи комбинаций, дожидаясь открытия порта.
|
||||
Reference in New Issue
Block a user