блокировка всего трафика, кроме IP-адресов из белого списка.

Функция daemon () в glibc выполняет только одну вилку, как показано в ] его исходный код .

То, что вы изначально видели, находится в исходном коде ядра и не упоминается извне напрямую.

Использование двойной вилки зависит от реализации, используемой для фактического вызова программы-демона, и не требуется в большинстве проектов, поскольку демоны не запускаются из обычного сеанса.

Двойное форкование, как вы видели в исходном коде ядра, полностью отделит процесс от его родителя, поскольку родитель наследуется в первом fork () . Вызов второго fork () и завершение родительского процесса приводит к тому, что процессу назначается 1 в качестве его PPID (идентификатор родительского процесса), что также полностью удаляет все назначенные TTY. .

3
30.10.2018, 22:01
1 ответ

iptablesработает по принципу первого совпадения. Давайте разберем ваш пример:

iptables -A INPUT -s 172.217.23.206 -j ACCEPT
iptables -A OUTPUT -d 172.217.23.206 -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

Первая строка указывает iptablesразрешить весь трафик с IP-адреса 172.217.23.206на машину, где применяются эти правила. А весь трафик — это буквально весь трафик . Таким образом, независимо от протокола, порта, параметров и т. д.; пока источник соответствует 172.217.23.206, он проходит.

Вторая строка разрешает весь трафик с вашей машины на 172.217.23.206. Опять же, не имеет значения, какой протокол, порт и т. д.; пока пункт назначения соответствует 172.217.23.206, это разрешено.

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


Я предполагаю, что вы хотите создать сценарий, разрешающий трафик только на пару веб-сайтов. Набор правил, который вы написали, не будет работать для этого сценария;

  • Ваш компьютер не может знать, что google.com может разрешиться как 172.217.23.206. Обычно он может получить эту информацию, запросив DNS-сервер или локальные записи /etc/hosts.
  • В этом сценарии нет причин разрешать любой входящий трафик, так как iptablesдостаточно умен, чтобы отслеживать ваши подключения и разрешать ответы. Этот процесс вызывает состояние сохранения.
  • Разрешать все виды трафика на 172.217.23.206только для того, чтобы получить веб-сайт, не имеет никакого смысла.
  • ICMP-трафик (, включая ping), является особым видом. Вам нужно заблокировать его специально.

Этот набор правил соответствует этому сценарию:

iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -d unix.stackexchange.com --dport 443 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP

Этот набор правил позволяет вашему компьютеру запрашивать DNS-серверы, используя порт 53/udp. Затем он разрешает TCP-трафик на unix.stackexchange.com, на порт 80 (http )и 443 (https ). Он отслеживает соединения и отбрасывает весь остальной трафик.

Вы можете отказаться от правила, разрешающего DNS-запросы, если вы настроили соответствующие записи в /etc/resolv.conf.

7
28.04.2021, 23:40

Теги

Похожие вопросы