(Это для системы, основанной на antiX, сама основанная на растяжке Debian.) У меня есть следующие правила для iptables:
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.10.0/24 -d 192.168.10.0/24 -j ACCEPT
iptables -A OUTPUT -s 192.168.10.0/24 -d 192.168.10.0/24 -j ACCEPT
iptables -A OUTPUT -m owner --uid-owner root -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner internet_access -j ACCEPT
iptables -nvL
Идея состоит в том, что внешний трафик разрешен для всего, что делает root, и для всего, что находится в группе, называемой internet_access. Кажется, это (в основном) работает как надо. Однако synaptic (как и другие программы в семействе apt), похоже, не нравится этот набор правил. Он не может перезагрузить свои базы данных и вместо этого зависает. Я поискал решение и нашел, что добавление этой строки помогает:
iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
Я (кажется, я) знаю, что это делает, но я не понимаю, зачем это нужно в первую очередь. Synaptic запускается с правами root и поэтому должен иметь полный доступ к Интернету (другие приложения, запущенные с правами root, имеют доступ к Интернету в порядке).
И во-вторых, если я изменю правило выше на это:
iptables -A OUTPUT -p tcp --dport 80 -m owner --uid-owner root -m state --state NEW -j ACCEPT
он перестает работать снова. Однако, если я перечислю синаптический процесс с помощью psgrep, он будет показан как пользователь root и группа root. Я озадачен.
(Я новичок в Linux (и даже новее в iptables, если можно так выразиться), если вы этого не сделали.)