Блокировка подключения IP-адреса

Блокировка подключения IP-адреса

У меня проблема с моим веб-сервером Apache, где есть и IP, чем подключение к моему серверу, используя много соединений и не умирает, что в конечном итоге приводит к тайм-ауту моего веб-сервера. Соединение останется в состоянии SYN_SENT, если я проверю с помощью

netstat -netapu

Я даже очищаю iptables и использую основные правила, но это все равно не работает. IP подключается, когда я запускаю Apache

Основные правила, которые я использую:

iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

iptables -A INPUT -s 89.149.244.117 -j REJECT

iptables -A OUTPUT -s 89.149.244.117 -j REJECT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT

Выделенная жирным часть — это правило, о котором идет речь.

Не уверен, что это связано, но значение tcp_syncookies равно 1.

Может кто-нибудь указать на мою ошибку? Есть ли способ заблокировать ее навсегда.

решение1

Можете ли вы показать нам результат

iptables-save

? Может быть, порядок правил не такой, как вы думаете. Тогда

iptables -A OUTPUT -s 89.149.244.117 -j REJECT

Вероятно, следует читать так:

iptables -A OUTPUT -**d** 89.149.244.117 -j REJECT

Кстати, почему REJECT, а не DROP? Тогда, если вы используете модуль состояния, вы должны написать:

iptables -A INPUT  -m state --state NEW -p tcp --dport 80 -j ACCEPT

Обратите внимание, что если ваш сервер находится за балансировщиком нагрузки в режиме DSR, модуль состояния не будет работать правильно.

решение2

Соединения, застрявшие в состоянии SYN_SENT, называютсяэмбриональные связи. Это происходит, когда вы пытаетесь установить соединение с IP-адресом, и по какой-то причине этот IP не может связаться с вами. Это означает, чтотыпытаетесь связаться с ним, а не наоборот.

Я не знаю, как это выглядело до того, как вы добавили эти два правила, но в том виде, в котором они есть сейчас, вы можете отправить первую часть трехстороннего рукопожатия (SYN), но не можете получить вторую часть (SYN/ACK), и это оставит соединение в состоянии SEN_SENT для каждой попытки.

Подозреваю, что вы скопировали/вставили первое правило, чтобы создать второе, и изменили INPUT на OUTPUT, но забыли изменить -sна -d. Я знаю, потому что сам делал это не раз.

решение3

вам нужно попробовать утилиту Linux "FAIL2BAN", которая блокирует большинство подобных атак методом подбора. Fail2Ban поддерживает защиту от атак методом подбора для ssh, apache и многих других служб. Если, например, IP-адрес пытается установить огромное количество одновременных подключений, то fail2ban заблокирует его, автоматически добавив (и через некоторое время удалив) этот IP-адрес с помощью iptables.

Связанный контент