Правила IPtables для блокировки диапазона IP-адресов

я применил следующие правила из текстового файла под названием " iptables."сохранить правила iptables.

но к моему ужасу, я обнаружил, что ip-адрес 107.22.26.176 все еще может получить доступ к моему серверу через TCP.

что я сделал не так? Неправильный ли порядок правил?

Спасибо за любые советы.

iptables.save
===================

*filter

-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
-A INPUT -s 107.20.0.0/14 -j DROP
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT

Update1: вывод iptables-L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
REJECT     all  --  anywhere             loopback/8          reject-with icmp-port-unreachable 

DROP       all  --  ec2-107-20-0-0.compute-1.amazonaws.com/14  anywhere            

ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:https 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:www 
ACCEPT     icmp --  anywhere             anywhere            icmp echo-request 
LOG        all  --  anywhere             anywhere            limit: avg 5/min burst 5 LOG level debug prefix `iptables denied: ' 
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  anywhere             anywhere            reject-with icmp-port-unreachable 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere 

Update2: я думаю, что знаю, почему. Я использую Cloudflare для разрешения моего домена имя, поэтому iptables видит только IP-адреса Cloudflare вместо IP-адресов посетителей. Мой вопрос теперь в том, есть ли способ для iptables увидеть реальные IP-адреса? Благодаря.

15
задан GooDoo
15.05.2023 3:00 Количество просмотров материала 3039
Распечатать страницу

2 ответа

отвечая на второй вопрос - ваш обратный прокси-сервер (как я предполагаю, что это cloudflare) должен давать вам заголовок HTTP, сообщающий вам фактическое подключение IP - x-forwarded-for.

http://en.wikipedia.org/wiki/X-Forwarded-For

однако, это означает, что iptables не является правильным инструментом для работы. Необходимо отфильтровать эти соединения на уровне приложения (в конфигурации веб-сервера на основе значения этого заголовка http). Или может быть cloudflare по-своему блокирует IP-адреса по периметру.

1
отвечен Julian 2023-05-16 10:48

первое правило ввода не должно быть "принять все". Все остальные правила теряют силу. Попробуйте поставить первое правило iptables.сохранить в конце или просто удалить его. Затем снова выполните команду restore.

кроме того, вы можете ввести:

iptables -D INPUT -i lo -j ACCEPT

в терминале

0
отвечен Circuit in the wall 2023-05-16 13:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх