
Мои правила iptables следующие:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
-A INPUT -d (my public facing ip)/32 -p udp -m udp --dport 10000 -j DROP
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b -j RETURN
Во всех остальных таблицах также все цепочки на ACCEPT.
Почему 1.1.1.1 не может получить доступ к портам TCP 80 и 443, но все по-прежнему могут получить доступ к порту 10000 на моем публичном IP?
решение1
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
Говорит, если перейти к цепочке с именемф2б
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
Первое правило в цепочке названоф2бсказать ОТКЛОНИТЬ 1.1.1.1/32
Что касается 8.8.8.8, я не вижу трафика, возможно, он использует TCP, а не UDP. 8.8.8.8 — это пункт назначения, поэтому если бы источником был 8.8.8.8, а пунктом назначения было бы что-то другое, то это не соответствовало бы правилу.
Попробуй это:
-I FORWARD 1 -d 8.8.8.8/32 -p udp -m udp --dport 10000 -j DROP
решение2
Если вы хотите заблокировать трафик, который приходитот8.8.8.8 от попадания на ваш порт, вы используете -s
(адрес источника), а не -d
(адрес назначения)
решение3
Я исправил проблему, заменив DROP на REJECT. Не знаю, почему это работает, но вот результат:
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N f2b
-A INPUT -p tcp -m multiport --dports 80,443 -j f2b
-A INPUT -d (my public facing ip)/32 -p udp -m udp --dport 10000 -j REJECT --reject-with icmp-port-unreachable
-A f2b -s 1.1.1.1/32 -j REJECT --reject-with icmp-port-unreachable
-A f2b -j RETURN
EDIT: Я обнаружил, что DROP работает отлично, я использовал nmap, чтобы проверить, открыт ли порт, и забыл, что nmap сообщит, что порт закрыт, только если получит отказ.