Как отклонить соединение при 10 и более запросов TTL 58?

Всех приветствую. Есть один эксплоит, проанализировав tcpdump, я пришел к выводу, что абсолютно всегда, TTL = 58.
Возник вопрос, можно ли с использованием iptables отклонить такого клиента и не обрабатывать его запросы при 10 запросах, к примеру за 5 секунд со значением ttl = 58. Подскажите, если есть специалисты в этом.
  • Вопрос задан
  • 353 просмотра
Решения вопроса 1
karabanov
@karabanov
Системный администратор
Устанавливаешь ipset (возможно уже установлен) и добавляешь список:
sudo ipset -N BANNED_IP nethash

Добавляешь правила:
# Отбрасываем пакет если TTL 58 и IP есть в списке BANNED_IP
sudo iptables -A INPUT -m ttl --ttl-eq 58 -m set --match-set BANNED_IP src -j DROP

# Надо как-то добавлять IP отвечающие критериям в список BANNED_IP, для этого
# Добавляем кастомную цепочку RATE-LIMIT
sudo iptables -N RATE-LIMIT

# Если TTL 58 передаём пакет на обработку в цепочку RATE-LIMIT
sudo iptables -A INPUT -m ttl --ttl-eq 58 -j RATE-LIMIT

# Если количество пакетов не превышает 2 в секунду, то пропускаем
sudo iptables -A RATE-LIMIT -m limit --limit 2/second -j ACCEPT

# Когда лимит превышен добавляем в лог запись об этом событии
sudo iptables -A RATE-LIMIT -j LOG --log-prefix "LIMIT_EXCEEDED: "

# Затем добавляем IP в список BANNED_IP
sudo iptables -A RATE-LIMIT -m ttl --ttl-eq 58 -j SET --add-set BANNED_IP src

# Не обязательно, но отбрасываем пакет
sudo iptables -A RATE-LIMIT -j DROP


Посмотреть, кто попался sudo ipset list BANNED_IP
Удалить из списка если надо sudo ipset del BANNED_IP <Забаненый IP>

Проверить, что работает sudo ping -i 0,1 -t 58 <IP сервера>
Посмотреть лог tail -F /var/log/syslog | grep LIMIT_EXCEEDED
Или так dmesg | tail | grep LIMIT_EXCEEDED

PS
Себя только не забань. Убедись, что при любом раскладе ты сможешь подключиться к серверу по IPMI или физически присутствуя рядом с ним с монитором и клавиатурой.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
5 секунд не получится, максимум - 10 штук насчитал и откллонил
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы