Блокировка всех исходящих подключений - плохая идея, так как это помешает вам устанавливать программное обеспечение из онлайн-репозиториев, выполнять поиск DNS (что было бы ужасно в большинстве сред), обновлять время с помощью NTP и т.д. В любом случае, если вы все еще хотите чтобы сделать это, попробуйте это:
# Drop all connections initiated from this host
iptables -t filter -I OUTPUT 1 -m state --state NEW -j DROP
# Additionally, log the event (optional)
iptables -t filter -I OUTPUT 1 -m state --state NEW -j LOG --log-level warning \
--log-prefix "Attempted to initiate a connection from a local process" \
--log-uid
Вы можете сделать правила умнее, разрешив определенный трафик, например DNS. Вы можете достичь этого двумя способами:
Сделайте спички более сложными. Было бы хорошо для одного или двух "белых" пунктов. Пример:
# Only forbid non-UDP traffic
iptables -t filter -I OUTPUT 1 -m state --state NEW \! -p udp -j DROP
Предшествующие правила, которые соответствуют некоторым из желаемых сервисов, которые разрешено запускать с локального хоста с целью "-j ПРИНЯТЬ". Пример:
# Run this after the "DROP" rule to allow connection to ports
#+ 80 and 443, mostly used for HTTP and HTTPS traffic
iptables -t filter -I OUTPUT 1 -p udp -m multiport --ports 80,443 -j ACCEPT