Я пытаюсь сбросить все входящие подключения к моему серверу, кроме определенных сетей. В то же время я хочу, чтобы все исходящие соединения от моего сервера к внешней сети (любой сети по любому протоколу) были открыты. Он работает, внеся два изменения в цепочку INPUT:
Примечание. Тестирование проводилось на 3 серверах (ВМ) с IP-адресами в сети 192.168.0.0/24 и всеми правилами, определенными на сервере 3 (IP: 192.168.0.3).
a. iptables -P INPUT DROP
b. iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
[root@server3 ~]# iptables -nvL
Chain INPUT (policy DROP 124 packets, 22308 bytes)
pkts bytes target prot opt in out source destination
265 34603 ACCEPT all -- * * 192.168.0.0/24 0.0.0.0/0
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 433 packets, 34693 bytes)
pkts bytes target prot opt in out source destination
Тем не менее, мой первый вопрос:
- Когда я определил первое правило выше (изменив политику по умолчанию для цепочки INPUT), оно также остановило все исходящие соединения (ssh, ping) с моего сервера (IP: 192.168.0.3). Почему это происходит, если моя политика цепочки OUTPUT по умолчанию все еще принимается, и у меня нет правил, определенных в цепочке OUTPUT?
Я хотел добиться того же, не меняя политику по умолчанию для цепочки INPUT, например:
c. iptables -I INPUT -j DROP
d. iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
Но он все еще блокирует все входящие / исходящие соединения с / с моего сервера3. Это подводит меня ко второму вопросу:
- Как правила
c.
a.
работать по-другому? Пожалуйста, помогите понять, как я новичок в брандмауэрах Linux.