HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Зачем нужен iptables?</a><ul><li><a>Stateless и stateful фильтрация: в чём разница?</a><ul><li><a>Правила (Rules)</a></li>
1 <ul><li><a>Зачем нужен iptables?</a><ul><li><a>Stateless и stateful фильтрация: в чём разница?</a><ul><li><a>Правила (Rules)</a></li>
2 <li><a>Пример: блокировка SSH-доступа</a></li>
2 <li><a>Пример: блокировка SSH-доступа</a></li>
3 </ul></li>
3 </ul></li>
4 <li><a>Цепочки (Chains)</a><ul><li><a>INPUT</a></li>
4 <li><a>Цепочки (Chains)</a><ul><li><a>INPUT</a></li>
5 <li><a>OUTPUT</a></li>
5 <li><a>OUTPUT</a></li>
6 <li><a>FORWARD</a></li>
6 <li><a>FORWARD</a></li>
7 <li><a>PREROUTING</a></li>
7 <li><a>PREROUTING</a></li>
8 <li><a>POSTROUTING</a></li>
8 <li><a>POSTROUTING</a></li>
9 <li><a>nat</a></li>
9 <li><a>nat</a></li>
10 <li><a>mangle</a></li>
10 <li><a>mangle</a></li>
11 <li><a>raw</a></li>
11 <li><a>raw</a></li>
12 <li><a>security</a></li>
12 <li><a>security</a></li>
13 </ul></li>
13 </ul></li>
14 <li><a>Как выбрать нужную таблицу?</a></li>
14 <li><a>Как выбрать нужную таблицу?</a></li>
15 </ul></li>
15 </ul></li>
16 <li><a>Действия (Targets)</a><ul><li><ul><li><a>ACCEPT</a></li>
16 <li><a>Действия (Targets)</a><ul><li><ul><li><a>ACCEPT</a></li>
17 <li><a>DROP</a></li>
17 <li><a>DROP</a></li>
18 <li><a>REJECT</a></li>
18 <li><a>REJECT</a></li>
19 <li><a>LOG</a></li>
19 <li><a>LOG</a></li>
20 <li><a>QUEUE</a></li>
20 <li><a>QUEUE</a></li>
21 <li><a>RETURN</a></li>
21 <li><a>RETURN</a></li>
22 </ul></li>
22 </ul></li>
23 <li><a>Особые targets (для таблицы nat):</a><ul><li><a>DNAT</a></li>
23 <li><a>Особые targets (для таблицы nat):</a><ul><li><a>DNAT</a></li>
24 <li><a>SNAT</a></li>
24 <li><a>SNAT</a></li>
25 <li><a>MASQUERADE</a></li>
25 <li><a>MASQUERADE</a></li>
26 </ul></li>
26 </ul></li>
27 - <li><a>Синтаксис iptables: ключи и параметры</a><ul><li><a>Опции фильтрации трафика</a></li>
27 + <li><a>Синтаксис iptables: ключи и параметры</a><ul><li><a>Опции фиьтрации трафика</a></li>
28 </ul></li>
28 </ul></li>
29 </ul></li>
29 </ul></li>
30 </ul><p><strong>Что такое iptables?</strong></p>
30 </ul><p><strong>Что такое iptables?</strong></p>
31 <p>iptables - это один из самых надёжных инструментов для настройки межсетевого экрана (firewall) в Linux. Он встроен прямо в ядро системы и работает на уровне сетевого стека. Это значит: когда к вашему серверу летит пакет - iptables решает, пустить его или нет. И хотя на первый взгляд он выглядит как "утилита для терминала", под капотом у него мощный механизм управления сетевым трафиком: от базовой фильтрации до сложных сценариев NAT, логирования и контроля доступа.</p>
31 <p>iptables - это один из самых надёжных инструментов для настройки межсетевого экрана (firewall) в Linux. Он встроен прямо в ядро системы и работает на уровне сетевого стека. Это значит: когда к вашему серверу летит пакет - iptables решает, пустить его или нет. И хотя на первый взгляд он выглядит как "утилита для терминала", под капотом у него мощный механизм управления сетевым трафиком: от базовой фильтрации до сложных сценариев NAT, логирования и контроля доступа.</p>
32 <p>С 2001 года, начиная с версии ядра 2.4, iptables предустановлен во всех основных дистрибутивах Linux. </p>
32 <p>С 2001 года, начиная с версии ядра 2.4, iptables предустановлен во всех основных дистрибутивах Linux. </p>
33 <p>Работает iptables через командную строку, и для любых действий нужен root-доступ. Чтобы проверить, установлен ли инструмент в системе и какая версия используется, достаточно ввести:</p>
33 <p>Работает iptables через командную строку, и для любых действий нужен root-доступ. Чтобы проверить, установлен ли инструмент в системе и какая версия используется, достаточно ввести:</p>
34 <p>Если вы видите ответ - всё готово к работе. Теперь можно переходить к правилам, цепочкам и таблицам - именно они задают логику работы firewall.</p>
34 <p>Если вы видите ответ - всё готово к работе. Теперь можно переходить к правилам, цепочкам и таблицам - именно они задают логику работы firewall.</p>
35 <h2><strong>Зачем нужен iptables?</strong></h2>
35 <h2><strong>Зачем нужен iptables?</strong></h2>
36 <p>iptables - это многофункциональный инструмент, который помогает вам контролировать,<strong>что именно происходит с трафиком на сервере</strong>- от простых фильтров до гибкой маршрутизации и настройки качества обслуживания.</p>
36 <p>iptables - это многофункциональный инструмент, который помогает вам контролировать,<strong>что именно происходит с трафиком на сервере</strong>- от простых фильтров до гибкой маршрутизации и настройки качества обслуживания.</p>
37 <p>Вот ключевые задачи, которые решает iptables:</p>
37 <p>Вот ключевые задачи, которые решает iptables:</p>
38 <ul><li><strong>Фильтрация пакетов</strong> Можно настраивать как простую фильтрацию (по IP-адресам, портам, протоколам), так и отслеживать состояния соединений. Вы можете, например, разрешить только входящие ответы на исходящие запросы - и автоматически отбрасывать остальное.</li>
38 <ul><li><strong>Фильтрация пакетов</strong> Можно настраивать как простую фильтрацию (по IP-адресам, портам, протоколам), так и отслеживать состояния соединений. Вы можете, например, разрешить только входящие ответы на исходящие запросы - и автоматически отбрасывать остальное.</li>
39 <li><strong>Настройка NAT, PAT и NAPT</strong><strong></strong>iptables позволяет настроить NAT (Network Address Translation) - трансляцию адресов, которая необходима, если у вас частная подсеть за роутером. PAT (Port Address Translation) и NAPT (Network Address and Port Translation) дают возможность "подвязывать" внешние запросы к конкретным внутренним машинам и портам. Это основа для работы практически всех домашних и корпоративных сетей.</li>
39 <li><strong>Настройка NAT, PAT и NAPT</strong><strong></strong>iptables позволяет настроить NAT (Network Address Translation) - трансляцию адресов, которая необходима, если у вас частная подсеть за роутером. PAT (Port Address Translation) и NAPT (Network Address and Port Translation) дают возможность "подвязывать" внешние запросы к конкретным внутренним машинам и портам. Это основа для работы практически всех домашних и корпоративных сетей.</li>
40 <li><strong>Управление приоритетами через QoS</strong><strong></strong>Хотите, чтобы VoIP-трафик шёл быстрее, чем фоновые обновления? iptables поддерживает метки и классификацию трафика, что позволяет реализовать управление приоритетами (Quality of Service). Это особенно полезно в системах с ограниченной пропускной способностью, где важно обеспечить стабильность критичных сервисов.</li>
40 <li><strong>Управление приоритетами через QoS</strong><strong></strong>Хотите, чтобы VoIP-трафик шёл быстрее, чем фоновые обновления? iptables поддерживает метки и классификацию трафика, что позволяет реализовать управление приоритетами (Quality of Service). Это особенно полезно в системах с ограниченной пропускной способностью, где важно обеспечить стабильность критичных сервисов.</li>
41 <li><strong>Изменение заголовков пакетов</strong><strong></strong>Благодаря таблице mangle, iptables даёт возможность переписывать отдельные поля в заголовках IP-пакетов - например, менять TTL, маркировать трафик, настраивать маршруты по политике (policy routing) и многое другое. Это уже тонкая инженерия, но она даёт полный контроль над тем, как ваш трафик ведёт себя внутри сети.</li>
41 <li><strong>Изменение заголовков пакетов</strong><strong></strong>Благодаря таблице mangle, iptables даёт возможность переписывать отдельные поля в заголовках IP-пакетов - например, менять TTL, маркировать трафик, настраивать маршруты по политике (policy routing) и многое другое. Это уже тонкая инженерия, но она даёт полный контроль над тем, как ваш трафик ведёт себя внутри сети.</li>
42 </ul><p>Прежде чем переходить к более сложным функциям - таким как NAT или QoS, - важно чётко понимать,<strong>как работает фильтрация трафика на базовом уровне</strong>. Именно с этого начинается настройка firewall: с понимания разницы между<strong>stateless</strong>и<strong>stateful</strong>фильтрацией. От этого зависит, насколько точно вы сможете управлять входящими и исходящими соединениями.</p>
42 </ul><p>Прежде чем переходить к более сложным функциям - таким как NAT или QoS, - важно чётко понимать,<strong>как работает фильтрация трафика на базовом уровне</strong>. Именно с этого начинается настройка firewall: с понимания разницы между<strong>stateless</strong>и<strong>stateful</strong>фильтрацией. От этого зависит, насколько точно вы сможете управлять входящими и исходящими соединениями.</p>
43 <h3><strong>Stateless и stateful фильтрация: в чём разница?</strong></h3>
43 <h3><strong>Stateless и stateful фильтрация: в чём разница?</strong></h3>
44 <p><strong>Stateless-фильтрация</strong>- это самый базовый уровень проверки. Она работает с каждым пакетом по отдельности, не вникая в контекст. Если в правиле указан IP, порт или протокол - iptables просто сверяет входящий пакет с этими условиями и сразу принимает решение: пропустить или отклонить. Это быстро и просто, но не даёт представления о том, к какому соединению относится пакет и в каком он состоянии.</p>
44 <p><strong>Stateless-фильтрация</strong>- это самый базовый уровень проверки. Она работает с каждым пакетом по отдельности, не вникая в контекст. Если в правиле указан IP, порт или протокол - iptables просто сверяет входящий пакет с этими условиями и сразу принимает решение: пропустить или отклонить. Это быстро и просто, но не даёт представления о том, к какому соединению относится пакет и в каком он состоянии.</p>
45 <p><strong>Stateful-фильтрация</strong>идёт дальше. Она отслеживает полную картину соединения: знает, был ли установлен сеанс, какие пакеты уже прошли, и ожидается ли ответ. Благодаря встроенному<strong>механизму отслеживания состояний (connection tracking)</strong>, iptables может отличать новые соединения от уже существующих и автоматически блокировать подозрительный трафик. Например, можно разрешить входящие ответы только на исходящие соединения, а всё остальное - отбрасывать.</p>
45 <p><strong>Stateful-фильтрация</strong>идёт дальше. Она отслеживает полную картину соединения: знает, был ли установлен сеанс, какие пакеты уже прошли, и ожидается ли ответ. Благодаря встроенному<strong>механизму отслеживания состояний (connection tracking)</strong>, iptables может отличать новые соединения от уже существующих и автоматически блокировать подозрительный трафик. Например, можно разрешить входящие ответы только на исходящие соединения, а всё остальное - отбрасывать.</p>
46 <p>Теперь подробнее поговорим о правилах и из чего они состоят</p>
46 <p>Теперь подробнее поговорим о правилах и из чего они состоят</p>
47 <h4><strong>Правила (Rules)</strong></h4>
47 <h4><strong>Правила (Rules)</strong></h4>
48 <p>В iptables всё строится на правилах - они задают конкретные условия обработки пакетов. Каждое правило - это своего рода<strong>инструкция для ядра Linux</strong>, объясняющая, что делать с пакетом, если он соответствует определённым признакам.</p>
48 <p>В iptables всё строится на правилах - они задают конкретные условия обработки пакетов. Каждое правило - это своего рода<strong>инструкция для ядра Linux</strong>, объясняющая, что делать с пакетом, если он соответствует определённым признакам.</p>
49 <p>Структура любого правила включает три ключевых компонента:</p>
49 <p>Структура любого правила включает три ключевых компонента:</p>
50 <p><strong>1. Критерий (условие)</strong><strong></strong>Это то, по чему система будет "опознавать" нужный трафик. В качестве критериев можно использовать:</p>
50 <p><strong>1. Критерий (условие)</strong><strong></strong>Это то, по чему система будет "опознавать" нужный трафик. В качестве критериев можно использовать:</p>
51 <ul><li>IP-адрес источника (-s 192.168.1.10)</li>
51 <ul><li>IP-адрес источника (-s 192.168.1.10)</li>
52 <li>IP-адрес назначения (-d 10.0.0.1)</li>
52 <li>IP-адрес назначения (-d 10.0.0.1)</li>
53 <li>Порт (-dport 22)</li>
53 <li>Порт (-dport 22)</li>
54 <li>Протокол (-p tcp, -p udp)</li>
54 <li>Протокол (-p tcp, -p udp)</li>
55 <li>Интерфейс (-i eth0, -o eth1)</li>
55 <li>Интерфейс (-i eth0, -o eth1)</li>
56 <li>Состояние соединения (-state NEW, ESTABLISHED, RELATED)</li>
56 <li>Состояние соединения (-state NEW, ESTABLISHED, RELATED)</li>
57 </ul><p>Вы можете комбинировать сразу несколько условий, чтобы точно задать, какой трафик нужно обрабатывать.</p>
57 </ul><p>Вы можете комбинировать сразу несколько условий, чтобы точно задать, какой трафик нужно обрабатывать.</p>
58 <p><strong>2. Действие (target)</strong><strong></strong>Когда критерий совпал, iptables должен выполнить какое-то действие. Это и есть "решение" правила. Основные варианты:</p>
58 <p><strong>2. Действие (target)</strong><strong></strong>Когда критерий совпал, iptables должен выполнить какое-то действие. Это и есть "решение" правила. Основные варианты:</p>
59 <ul><li>ACCEPT - пропустить пакет</li>
59 <ul><li>ACCEPT - пропустить пакет</li>
60 <li>DROP - молча отбросить</li>
60 <li>DROP - молча отбросить</li>
61 <li>REJECT - отклонить с уведомлением</li>
61 <li>REJECT - отклонить с уведомлением</li>
62 <li>LOG - записать в лог (но не блокировать)</li>
62 <li>LOG - записать в лог (но не блокировать)</li>
63 <li>RETURN - вернуться к предыдущей цепочке</li>
63 <li>RETURN - вернуться к предыдущей цепочке</li>
64 <li>Специальные действия, например DNAT, SNAT, MASQUERADE - для работы с NAT</li>
64 <li>Специальные действия, например DNAT, SNAT, MASQUERADE - для работы с NAT</li>
65 </ul><p><strong>3. Счётчик</strong><strong></strong>У каждого правила есть встроенный счётчик: он показывает, сколько раз правило сработало - сколько пакетов (и байт) оно обработало. Это удобно для отладки, мониторинга и понимания, какие правила действительно задействованы в работе.</p>
65 </ul><p><strong>3. Счётчик</strong><strong></strong>У каждого правила есть встроенный счётчик: он показывает, сколько раз правило сработало - сколько пакетов (и байт) оно обработало. Это удобно для отладки, мониторинга и понимания, какие правила действительно задействованы в работе.</p>
66 <h4><strong>Пример: блокировка SSH-доступа</strong></h4>
66 <h4><strong>Пример: блокировка SSH-доступа</strong></h4>
67 <p>Допустим, вы хотите заблокировать доступ к серверу по SSH (порт 22). Пример простого правила:</p>
67 <p>Допустим, вы хотите заблокировать доступ к серверу по SSH (порт 22). Пример простого правила:</p>
68 <p>iptables -A INPUT -p tcp --dport 22 -j DROP</p>
68 <p>iptables -A INPUT -p tcp --dport 22 -j DROP</p>
69 <p>Что здесь происходит:</p>
69 <p>Что здесь происходит:</p>
70 <ul><li>-A INPUT - добавляем правило в цепочку входящих соединений</li>
70 <ul><li>-A INPUT - добавляем правило в цепочку входящих соединений</li>
71 <li>-p tcp - фильтруем TCP-пакеты</li>
71 <li>-p tcp - фильтруем TCP-пакеты</li>
72 <li>-dport 22 - применяем только к трафику, идущему на порт 22</li>
72 <li>-dport 22 - применяем только к трафику, идущему на порт 22</li>
73 <li>-j DROP - действие: отбросить пакет</li>
73 <li>-j DROP - действие: отбросить пакет</li>
74 </ul><p>Результат: любое входящее подключение по SSH будет тихо отклонено, без ответа. Удобно, если вы хотите закрыть доступ без лишнего шума.</p>
74 </ul><p>Результат: любое входящее подключение по SSH будет тихо отклонено, без ответа. Удобно, если вы хотите закрыть доступ без лишнего шума.</p>
75 <p>(В конце статьи вы найдёте таблицу синтаксиса для iptables с подробным описанием действий)</p>
75 <p>(В конце статьи вы найдёте таблицу синтаксиса для iptables с подробным описанием действий)</p>
76 <h3><strong>Цепочки (Chains)</strong></h3>
76 <h3><strong>Цепочки (Chains)</strong></h3>
77 <p>Чтобы iptables знал, когда и где применять определённые правила, все они объединяются в<strong>цепочки</strong>. Цепочка - это<strong>набор последовательных условий</strong>, через которые поэтапно проходит каждый сетевой пакет. В зависимости от того, на каком этапе обработки находится пакет, он попадает в одну из цепочек.</p>
77 <p>Чтобы iptables знал, когда и где применять определённые правила, все они объединяются в<strong>цепочки</strong>. Цепочка - это<strong>набор последовательных условий</strong>, через которые поэтапно проходит каждый сетевой пакет. В зависимости от того, на каком этапе обработки находится пакет, он попадает в одну из цепочек.</p>
78 <p>Цепочки бывают двух типов:</p>
78 <p>Цепочки бывают двух типов:</p>
79 <ul><li><strong>Базовые (встроенные)</strong>- всегда присутствуют по умолчанию </li>
79 <ul><li><strong>Базовые (встроенные)</strong>- всегда присутствуют по умолчанию </li>
80 <li><strong>Пользовательские (custom)</strong>- создаются вручную пользователем для логической группировки</li>
80 <li><strong>Пользовательские (custom)</strong>- создаются вручную пользователем для логической группировки</li>
81 </ul><h4><strong>INPUT</strong></h4>
81 </ul><h4><strong>INPUT</strong></h4>
82 <p>Обрабатывает<strong>все входящие пакеты</strong>, направленные<strong>непосредственно на этот хост</strong>.Если ваш сервер получает SSH-соединение, HTTP-запрос или пинг - этот трафик проходит через цепочку INPUT.</p>
82 <p>Обрабатывает<strong>все входящие пакеты</strong>, направленные<strong>непосредственно на этот хост</strong>.Если ваш сервер получает SSH-соединение, HTTP-запрос или пинг - этот трафик проходит через цепочку INPUT.</p>
83 <p>Пример: разрешить входящие соединения на порт 443 (HTTPS):</p>
83 <p>Пример: разрешить входящие соединения на порт 443 (HTTPS):</p>
84 <p>iptables -A INPUT -p tcp --dport 443 -j ACCEPT</p>
84 <p>iptables -A INPUT -p tcp --dport 443 -j ACCEPT</p>
85 <h4><strong>OUTPUT</strong></h4>
85 <h4><strong>OUTPUT</strong></h4>
86 <p>Отвечает за<strong>все исходящие пакеты</strong>, которые<strong>отправляет сам хост</strong>.Например, когда сервер делает запрос к внешнему API или скачивает обновления - эти пакеты проходят через OUTPUT.</p>
86 <p>Отвечает за<strong>все исходящие пакеты</strong>, которые<strong>отправляет сам хост</strong>.Например, когда сервер делает запрос к внешнему API или скачивает обновления - эти пакеты проходят через OUTPUT.</p>
87 <p>Пример: запретить серверу отправлять любые DNS-запросы:</p>
87 <p>Пример: запретить серверу отправлять любые DNS-запросы:</p>
88 <p>iptables -A OUTPUT -p udp --dport 53 -j DROP</p>
88 <p>iptables -A OUTPUT -p udp --dport 53 -j DROP</p>
89 <h4><strong>FORWARD</strong></h4>
89 <h4><strong>FORWARD</strong></h4>
90 <p>Используется для<strong>транзитного трафика</strong>, который проходит<strong>через хост</strong>, но не предназначен ему напрямую.Актуально, если сервер используется как роутер или NAT-шлюз. Всё, что перенаправляется - идёт через FORWARD.</p>
90 <p>Используется для<strong>транзитного трафика</strong>, который проходит<strong>через хост</strong>, но не предназначен ему напрямую.Актуально, если сервер используется как роутер или NAT-шлюз. Всё, что перенаправляется - идёт через FORWARD.</p>
91 <p>Пример: разрешить форвардинг трафика между двумя интерфейсами:</p>
91 <p>Пример: разрешить форвардинг трафика между двумя интерфейсами:</p>
92 <p>iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT</p>
92 <p>iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT</p>
93 <h4><strong>PREROUTING</strong></h4>
93 <h4><strong>PREROUTING</strong></h4>
94 <p>Эта цепочка применяется<strong>до маршрутизации</strong>, то есть до того, как ядро определит, куда направить пакет.Обычно используется для<strong>изменения адреса назначения (DNAT)</strong>. Полезно, если вы перенаправляете внешний трафик на внутренние ресурсы.</p>
94 <p>Эта цепочка применяется<strong>до маршрутизации</strong>, то есть до того, как ядро определит, куда направить пакет.Обычно используется для<strong>изменения адреса назначения (DNAT)</strong>. Полезно, если вы перенаправляете внешний трафик на внутренние ресурсы.</p>
95 <p>Пример: перенаправить HTTP-запросы на внутренний сервер:</p>
95 <p>Пример: перенаправить HTTP-запросы на внутренний сервер:</p>
96 <p>iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80</p>
96 <p>iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80</p>
97 <h4><strong>POSTROUTING</strong></h4>
97 <h4><strong>POSTROUTING</strong></h4>
98 <p>Срабатывает<strong>после маршрутизации</strong>, перед тем как пакет покинет интерфейс.Используется для<strong>маскарадинга (MASQUERADE)</strong>или изменения адреса источника (SNAT) - чтобы сервер подставлял нужный внешний IP.</p>
98 <p>Срабатывает<strong>после маршрутизации</strong>, перед тем как пакет покинет интерфейс.Используется для<strong>маскарадинга (MASQUERADE)</strong>или изменения адреса источника (SNAT) - чтобы сервер подставлял нужный внешний IP.</p>
99 <p>Пример: скрыть локальные IP-адреса за внешним интерфейсом:</p>
99 <p>Пример: скрыть локальные IP-адреса за внешним интерфейсом:</p>
100 <p>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</p>
100 <p>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</p>
101 <p>Каждая цепочка обрабатывает пакеты строго<strong>в своей зоне ответственности</strong>, и важно правильно выбирать, куда вы добавляете правило. Ошибка в выборе цепочки может привести к тому, что правило не сработает, даже если оно написано корректно.</p>
101 <p>Каждая цепочка обрабатывает пакеты строго<strong>в своей зоне ответственности</strong>, и важно правильно выбирать, куда вы добавляете правило. Ошибка в выборе цепочки может привести к тому, что правило не сработает, даже если оно написано корректно.</p>
102 <p>Все правила и цепочки в iptables не существуют сами по себе - они сгруппированы внутри<strong>таблиц</strong>. О них и поговорим ниже.</p>
102 <p>Все правила и цепочки в iptables не существуют сами по себе - они сгруппированы внутри<strong>таблиц</strong>. О них и поговорим ниже.</p>
103 <p><strong>Таблицы (Tables)</strong></p>
103 <p><strong>Таблицы (Tables)</strong></p>
104 <p>Таблица - это логический контейнер, определяющий<strong>цель обработки трафика</strong>. В зависимости от задачи (фильтрация, трансляция, модификация и т.д.), iptables применяет соответствующую таблицу.</p>
104 <p>Таблица - это логический контейнер, определяющий<strong>цель обработки трафика</strong>. В зависимости от задачи (фильтрация, трансляция, модификация и т.д.), iptables применяет соответствующую таблицу.</p>
105 <p>Каждая таблица содержит<strong>свои цепочки</strong>, и в одном правиле обязательно нужно понимать, в какой таблице вы работаете.</p>
105 <p>Каждая таблица содержит<strong>свои цепочки</strong>, и в одном правиле обязательно нужно понимать, в какой таблице вы работаете.</p>
106 <p>Вот основные таблицы, которые используются на практике:</p>
106 <p>Вот основные таблицы, которые используются на практике:</p>
107 <p><strong>filter</strong></p>
107 <p><strong>filter</strong></p>
108 <p>Это<strong>основная и самая часто используемая таблица</strong>. Именно она отвечает за принятие решений:<strong>пропускать, отклонять или блокировать трафик</strong>.</p>
108 <p>Это<strong>основная и самая часто используемая таблица</strong>. Именно она отвечает за принятие решений:<strong>пропускать, отклонять или блокировать трафик</strong>.</p>
109 <p>Если вы не указываете таблицу вручную, iptables по умолчанию работает именно с filter.Цепочки внутри: INPUT, OUTPUT, FORWARD.</p>
109 <p>Если вы не указываете таблицу вручную, iptables по умолчанию работает именно с filter.Цепочки внутри: INPUT, OUTPUT, FORWARD.</p>
110 <p>Пример:</p>
110 <p>Пример:</p>
111 <p>iptables -A INPUT -p tcp --dport 22 -j ACCEPT</p>
111 <p>iptables -A INPUT -p tcp --dport 22 -j ACCEPT</p>
112 <h4><strong>nat</strong></h4>
112 <h4><strong>nat</strong></h4>
113 <p>Таблица для настройки<strong>сетевой трансляции адресов (Network Address Translation)</strong>.Используется при перенаправлении портов, подмене исходного или конечного адреса. Без nat не обойтись при создании шлюзов, маршрутизаторов, прокси и организации доступа из внешнего мира к внутренним сервисам.</p>
113 <p>Таблица для настройки<strong>сетевой трансляции адресов (Network Address Translation)</strong>.Используется при перенаправлении портов, подмене исходного или конечного адреса. Без nat не обойтись при создании шлюзов, маршрутизаторов, прокси и организации доступа из внешнего мира к внутренним сервисам.</p>
114 <p>Цепочки внутри: PREROUTING, POSTROUTING, OUTPUT.</p>
114 <p>Цепочки внутри: PREROUTING, POSTROUTING, OUTPUT.</p>
115 <p>Типичные действия:</p>
115 <p>Типичные действия:</p>
116 <ul><li>SNAT - подмена источника</li>
116 <ul><li>SNAT - подмена источника</li>
117 <li>DNAT - подмена назначения</li>
117 <li>DNAT - подмена назначения</li>
118 <li>MASQUERADE - маскарадинг (динамический SNAT)</li>
118 <li>MASQUERADE - маскарадинг (динамический SNAT)</li>
119 </ul><p>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</p>
119 </ul><p>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</p>
120 <h4><strong>mangle</strong></h4>
120 <h4><strong>mangle</strong></h4>
121 <p>Эта таблица предназначена для<strong>глубокой настройки пакетов</strong>. Она позволяет модифицировать заголовки, маркировать трафик и использовать эти метки для дальнейшей маршрутизации или приоритизации.</p>
121 <p>Эта таблица предназначена для<strong>глубокой настройки пакетов</strong>. Она позволяет модифицировать заголовки, маркировать трафик и использовать эти метки для дальнейшей маршрутизации или приоритизации.</p>
122 <p>Используется при настройке<strong>QoS</strong>, сложных схем маршрутизации, балансировке нагрузки и firewall’ах с политиками.</p>
122 <p>Используется при настройке<strong>QoS</strong>, сложных схем маршрутизации, балансировке нагрузки и firewall’ах с политиками.</p>
123 <p>Цепочки внутри: PREROUTING, OUTPUT, INPUT, FORWARD, POSTROUTING.</p>
123 <p>Цепочки внутри: PREROUTING, OUTPUT, INPUT, FORWARD, POSTROUTING.</p>
124 <p>Пример:</p>
124 <p>Пример:</p>
125 <p>iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1</p>
125 <p>iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1</p>
126 <h4><strong>raw</strong></h4>
126 <h4><strong>raw</strong></h4>
127 <p>Специализированная таблица, которая<strong>работает до включения механизма отслеживания соединений (connection tracking)</strong>. Используется, если нужно<strong>исключить определённые пакеты из stateful-фильтрации</strong>, либо настроить приоритет обработки вручную.</p>
127 <p>Специализированная таблица, которая<strong>работает до включения механизма отслеживания соединений (connection tracking)</strong>. Используется, если нужно<strong>исключить определённые пакеты из stateful-фильтрации</strong>, либо настроить приоритет обработки вручную.</p>
128 <p>Цепочки внутри: PREROUTING, OUTPUT.</p>
128 <p>Цепочки внутри: PREROUTING, OUTPUT.</p>
129 <p>Пример:</p>
129 <p>Пример:</p>
130 <p>iptables -t raw -A PREROUTING -p icmp -j NOTRACK</p>
130 <p>iptables -t raw -A PREROUTING -p icmp -j NOTRACK</p>
131 <h4><strong>security</strong></h4>
131 <h4><strong>security</strong></h4>
132 <p>Редко используемая таблица, связанная с<strong>метками SELinux</strong>. Она применяется для реализации<strong>дополнительных политик безопасности на уровне ядра</strong>. Используется в специализированных окружениях, где настроен SELinux и нужны ограничения доступа к ресурсам на основе контекста безопасности.</p>
132 <p>Редко используемая таблица, связанная с<strong>метками SELinux</strong>. Она применяется для реализации<strong>дополнительных политик безопасности на уровне ядра</strong>. Используется в специализированных окружениях, где настроен SELinux и нужны ограничения доступа к ресурсам на основе контекста безопасности.</p>
133 <p>Цепочки внутри: INPUT, OUTPUT, FORWARD.</p>
133 <p>Цепочки внутри: INPUT, OUTPUT, FORWARD.</p>
134 <h3><strong>Как выбрать нужную таблицу?</strong></h3>
134 <h3><strong>Как выбрать нужную таблицу?</strong></h3>
135 <ul><li>Если нужно просто разрешить или запретить трафик - используйте<strong>filter</strong></li>
135 <ul><li>Если нужно просто разрешить или запретить трафик - используйте<strong>filter</strong></li>
136 <li>Хотите настроить переадресацию или NAT - используйте<strong>nat</strong></li>
136 <li>Хотите настроить переадресацию или NAT - используйте<strong>nat</strong></li>
137 <li>Нужно пометить трафик или изменить заголовки - берите<strong>mangle</strong></li>
137 <li>Нужно пометить трафик или изменить заголовки - берите<strong>mangle</strong></li>
138 <li>Хотите исключить соединение из трекинга - подходит<strong>raw</strong></li>
138 <li>Хотите исключить соединение из трекинга - подходит<strong>raw</strong></li>
139 <li>Работаете с SELinux - используйте<strong>security</strong></li>
139 <li>Работаете с SELinux - используйте<strong>security</strong></li>
140 </ul><p>Правильный выбор таблицы - это залог того, что правило сработает так, как вы задумали. Поэтому всегда начинайте с вопроса:<strong>какой эффект вы хотите получить?</strong>- и уже от этого отталкивайтесь при выборе таблицы и цепочки.</p>
140 </ul><p>Правильный выбор таблицы - это залог того, что правило сработает так, как вы задумали. Поэтому всегда начинайте с вопроса:<strong>какой эффект вы хотите получить?</strong>- и уже от этого отталкивайтесь при выборе таблицы и цепочки.</p>
141 <p>Теперь, когда вы понимаете, как работают<strong>цепочки</strong>и в какие<strong>таблицы</strong>они сгруппированы, пора разобраться с тем,<strong>что именно делает iptables, когда пакет соответствует заданному правилу</strong>. На этом этапе в дело вступают<strong>действия</strong>, или по-другому -<strong>targets</strong>.</p>
141 <p>Теперь, когда вы понимаете, как работают<strong>цепочки</strong>и в какие<strong>таблицы</strong>они сгруппированы, пора разобраться с тем,<strong>что именно делает iptables, когда пакет соответствует заданному правилу</strong>. На этом этапе в дело вступают<strong>действия</strong>, или по-другому -<strong>targets</strong>.</p>
142 <h2><strong>Действия (Targets)</strong></h2>
142 <h2><strong>Действия (Targets)</strong></h2>
143 <p>Каждое правило в iptables заканчивается действием - это команда, которую ядро должно выполнить, если пакет прошёл все фильтры и условия правила. Именно<strong>действие определяет судьбу пакета</strong>: разрешить, заблокировать, переадресовать или просто записать в лог.</p>
143 <p>Каждое правило в iptables заканчивается действием - это команда, которую ядро должно выполнить, если пакет прошёл все фильтры и условия правила. Именно<strong>действие определяет судьбу пакета</strong>: разрешить, заблокировать, переадресовать или просто записать в лог.</p>
144 <p>Вот основные типы действий, которые вы будете использовать чаще всего:</p>
144 <p>Вот основные типы действий, которые вы будете использовать чаще всего:</p>
145 <h4><strong>ACCEPT</strong></h4>
145 <h4><strong>ACCEPT</strong></h4>
146 <p>Пропустить пакет дальше по стеку, как ни в чём не бывало. Это означает, что пакет прошёл проверку и может быть доставлен приложению или передан дальше по маршруту.Используется для разрешения трафика.</p>
146 <p>Пропустить пакет дальше по стеку, как ни в чём не бывало. Это означает, что пакет прошёл проверку и может быть доставлен приложению или передан дальше по маршруту.Используется для разрешения трафика.</p>
147 <p><strong>Пример:</strong>разрешить входящие соединения на порт 80:</p>
147 <p><strong>Пример:</strong>разрешить входящие соединения на порт 80:</p>
148 <p>iptables -A INPUT -p tcp --dport 80 -j ACCEPT</p>
148 <p>iptables -A INPUT -p tcp --dport 80 -j ACCEPT</p>
149 <h4><strong>DROP</strong></h4>
149 <h4><strong>DROP</strong></h4>
150 <p>Молча отбросить пакет. Никаких уведомлений, никаких ICMP-ответов - пакет просто исчезает. Это самый строгий и "тихий" способ блокировки. Особенно полезен при защите от сканеров и брутфорса.</p>
150 <p>Молча отбросить пакет. Никаких уведомлений, никаких ICMP-ответов - пакет просто исчезает. Это самый строгий и "тихий" способ блокировки. Особенно полезен при защите от сканеров и брутфорса.</p>
151 <p><strong>Пример:</strong>заблокировать пинг:</p>
151 <p><strong>Пример:</strong>заблокировать пинг:</p>
152 <p>iptables -A INPUT -p icmp -j DROP</p>
152 <p>iptables -A INPUT -p icmp -j DROP</p>
153 <h4><strong>REJECT</strong></h4>
153 <h4><strong>REJECT</strong></h4>
154 <p>Отбросить пакет, но<strong>уведомить отправителя</strong>, что соединение запрещено. В зависимости от протокола, может вернуться ICMP-сообщение или TCP RST. Используется, если хотите вести себя вежливо и явно показать, что соединение не разрешено.</p>
154 <p>Отбросить пакет, но<strong>уведомить отправителя</strong>, что соединение запрещено. В зависимости от протокола, может вернуться ICMP-сообщение или TCP RST. Используется, если хотите вести себя вежливо и явно показать, что соединение не разрешено.</p>
155 <p><strong>Пример:</strong>отклонить вход по Telnet с уведомлением:</p>
155 <p><strong>Пример:</strong>отклонить вход по Telnet с уведомлением:</p>
156 <p>iptables -A INPUT -p tcp --dport 23 -j REJECT</p>
156 <p>iptables -A INPUT -p tcp --dport 23 -j REJECT</p>
157 <h4><strong>LOG</strong></h4>
157 <h4><strong>LOG</strong></h4>
158 <p>Не влияет на прохождение пакета - просто записывает информацию о нём в системный журнал (/var/log/syslog или journalctl). Это удобно для мониторинга, отладки и анализа трафика. Часто используется вместе с DROP.</p>
158 <p>Не влияет на прохождение пакета - просто записывает информацию о нём в системный журнал (/var/log/syslog или journalctl). Это удобно для мониторинга, отладки и анализа трафика. Часто используется вместе с DROP.</p>
159 <p><strong>Пример:</strong>логировать все SSH-подключения:</p>
159 <p><strong>Пример:</strong>логировать все SSH-подключения:</p>
160 <p>iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix \"SSH attempt: \"</p>
160 <p>iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix \"SSH attempt: \"</p>
161 <h4><strong>QUEUE</strong></h4>
161 <h4><strong>QUEUE</strong></h4>
162 <p>Передаёт пакет в пользовательское пространство - например, для обработки с помощью nfqueue или других внешних приложений. Это используется редко, но полезно в сложных конфигурациях, например, при интеграции с антивирусами, IDS/IPS или кастомной логикой.</p>
162 <p>Передаёт пакет в пользовательское пространство - например, для обработки с помощью nfqueue или других внешних приложений. Это используется редко, но полезно в сложных конфигурациях, например, при интеграции с антивирусами, IDS/IPS или кастомной логикой.</p>
163 <h4><strong>RETURN</strong></h4>
163 <h4><strong>RETURN</strong></h4>
164 <p>Прекращает выполнение текущей цепочки и<strong>возвращает управление</strong>в предыдущую (например, в базовую). Полезно при использовании<strong>пользовательских цепочек</strong>, когда вы хотите завершить их выполнение и передать обработку дальше.</p>
164 <p>Прекращает выполнение текущей цепочки и<strong>возвращает управление</strong>в предыдущую (например, в базовую). Полезно при использовании<strong>пользовательских цепочек</strong>, когда вы хотите завершить их выполнение и передать обработку дальше.</p>
165 <h3><strong>Особые targets (для таблицы</strong><strong>nat</strong><strong>):</strong></h3>
165 <h3><strong>Особые targets (для таблицы</strong><strong>nat</strong><strong>):</strong></h3>
166 <h4><strong>DNAT</strong></h4>
166 <h4><strong>DNAT</strong></h4>
167 <p>Изменяет адрес назначения пакета. Используется в PREROUTING для переадресации внешнего трафика на внутренние сервисы.</p>
167 <p>Изменяет адрес назначения пакета. Используется в PREROUTING для переадресации внешнего трафика на внутренние сервисы.</p>
168 <p><strong>Пример:</strong>перенаправить порт 80 на внутренний сервер:</p>
168 <p><strong>Пример:</strong>перенаправить порт 80 на внутренний сервер:</p>
169 <p>iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.10:8080</p>
169 <p>iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.10:8080</p>
170 <h4><strong>SNAT</strong></h4>
170 <h4><strong>SNAT</strong></h4>
171 <p>Изменяет адрес источника. Применяется в POSTROUTING, когда вы хотите, чтобы внешний мир видел другой IP-адрес, например, IP-шлюза.</p>
171 <p>Изменяет адрес источника. Применяется в POSTROUTING, когда вы хотите, чтобы внешний мир видел другой IP-адрес, например, IP-шлюза.</p>
172 <p><strong>Пример:</strong>подменить исходящий адрес:</p>
172 <p><strong>Пример:</strong>подменить исходящий адрес:</p>
173 <p>iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1</p>
173 <p>iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1</p>
174 <h4><strong>MASQUERADE</strong></h4>
174 <h4><strong>MASQUERADE</strong></h4>
175 <p>Вариант SNAT, который<strong>автоматически подставляет внешний IP интерфейса</strong>. Удобен, когда IP динамический (например, при подключении через PPPoE или мобильный интернет).</p>
175 <p>Вариант SNAT, который<strong>автоматически подставляет внешний IP интерфейса</strong>. Удобен, когда IP динамический (например, при подключении через PPPoE или мобильный интернет).</p>
176 <p><strong>Пример:</strong>маскарадинг для всей локальной сети:</p>
176 <p><strong>Пример:</strong>маскарадинг для всей локальной сети:</p>
177 <p>bash</p>
177 <p>bash</p>
178 <p>Копировать код</p>
178 <p>Копировать код</p>
179 <p>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</p>
179 <p>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</p>
180 <p>Каждое действие играет свою роль в цепочке принятия решений. И чем точнее вы их используете - тем эффективнее работает ваш firewall. Главное - не путать контексты: ACCEPT и DROP работают в таблице filter, а SNAT и DNAT - только в nat.</p>
180 <p>Каждое действие играет свою роль в цепочке принятия решений. И чем точнее вы их используете - тем эффективнее работает ваш firewall. Главное - не путать контексты: ACCEPT и DROP работают в таблице filter, а SNAT и DNAT - только в nat.</p>
181 <p>Ну а теперь давайте закрепим на практике - как же использовать всю полученную информацию и как<strong>правильно составить правило в iptables? </strong></p>
181 <p>Ну а теперь давайте закрепим на практике - как же использовать всю полученную информацию и как<strong>правильно составить правило в iptables? </strong></p>
182 <p>Каждое правило в iptables строится по одному и тому же принципу:<strong>определить условия</strong>(фильтры) и<strong>назначить действие</strong>. Чем точнее вы зададите параметры - тем эффективнее будет защита или обработка трафика.</p>
182 <p>Каждое правило в iptables строится по одному и тому же принципу:<strong>определить условия</strong>(фильтры) и<strong>назначить действие</strong>. Чем точнее вы зададите параметры - тем эффективнее будет защита или обработка трафика.</p>
183 <p>Вот пример:Допустим, вы хотите<strong>заблокировать доступ к веб-серверу на порту 80 от конкретного IP-адреса</strong>- например, от 192.168.2.2.</p>
183 <p>Вот пример:Допустим, вы хотите<strong>заблокировать доступ к веб-серверу на порту 80 от конкретного IP-адреса</strong>- например, от 192.168.2.2.</p>
184 <p>iptables -A INPUT -p tcp -s 192.168.2.2 --dport 80 -j DROP</p>
184 <p>iptables -A INPUT -p tcp -s 192.168.2.2 --dport 80 -j DROP</p>
185 <p>Давайте разберем по частям что здесь указано:</p>
185 <p>Давайте разберем по частям что здесь указано:</p>
186 <ul><li>-A INPUTДобавляем правило в<strong>цепочку INPUT</strong>, то есть это правило будет применяться ко всем входящим соединениям, направленным к самому хосту.</li>
186 <ul><li>-A INPUTДобавляем правило в<strong>цепочку INPUT</strong>, то есть это правило будет применяться ко всем входящим соединениям, направленным к самому хосту.</li>
187 <li>-p tcpУказываем протокол - в данном случае<strong>TCP</strong>, потому что HTTP работает поверх TCP.</li>
187 <li>-p tcpУказываем протокол - в данном случае<strong>TCP</strong>, потому что HTTP работает поверх TCP.</li>
188 <li>-s 192.168.2.2Это<strong>IP-адрес источника</strong>. Мы фильтруем только пакеты, отправленные с этого адреса.</li>
188 <li>-s 192.168.2.2Это<strong>IP-адрес источника</strong>. Мы фильтруем только пакеты, отправленные с этого адреса.</li>
189 <li>-dport 80Порт назначения -<strong>80</strong>, стандартный порт для HTTP. То есть правило будет применяться только к трафику, направленному к веб-серверу.</li>
189 <li>-dport 80Порт назначения -<strong>80</strong>, стандартный порт для HTTP. То есть правило будет применяться только к трафику, направленному к веб-серверу.</li>
190 <li>-j DROPДействие:<strong>отбросить пакет</strong>. Клиент не получит ответа, соединение будет просто прервано.</li>
190 <li>-j DROPДействие:<strong>отбросить пакет</strong>. Клиент не получит ответа, соединение будет просто прервано.</li>
191 </ul><p>Если вы хотите отменить действие правила - не редактируйте его вручную. Вместо этого используйте<strong>тот же синтаксис</strong>, но замените -A (append) на -D (delete):</p>
191 </ul><p>Если вы хотите отменить действие правила - не редактируйте его вручную. Вместо этого используйте<strong>тот же синтаксис</strong>, но замените -A (append) на -D (delete):</p>
192 <p>iptables -D INPUT -p tcp -s 192.168.2.2 --dport 80 -j DROP</p>
192 <p>iptables -D INPUT -p tcp -s 192.168.2.2 --dport 80 -j DROP</p>
193 <p>Это удалит ранее добавленное правило. Именно поэтому важно<strong>документировать правила или сохранять их в файл</strong>- чтобы потом было легко откатить изменения.</p>
193 <p>Это удалит ранее добавленное правило. Именно поэтому важно<strong>документировать правила или сохранять их в файл</strong>- чтобы потом было легко откатить изменения.</p>
194 <p>Писать правила - несложно, если вы понимаете структуру и порядок аргументов. Но чтобы делать это уверенно и без ошибок, важно знать<strong>основной синтаксис iptables</strong>- какие ключи использовать, за что они отвечают, и как задаются условия фильтрации</p>
194 <p>Писать правила - несложно, если вы понимаете структуру и порядок аргументов. Но чтобы делать это уверенно и без ошибок, важно знать<strong>основной синтаксис iptables</strong>- какие ключи использовать, за что они отвечают, и как задаются условия фильтрации</p>
195 <h3><strong>Синтаксис iptables: ключи и параметры</strong></h3>
195 <h3><strong>Синтаксис iptables: ключи и параметры</strong></h3>
196 <p>Команда iptables строится по принципу:<strong>таблица → цепочка → условия → действие</strong>.</p>
196 <p>Команда iptables строится по принципу:<strong>таблица → цепочка → условия → действие</strong>.</p>
197 <p>Чаще всего таблица по умолчанию - filter, и её можно не указывать. Но остальные элементы всегда задаются явно.</p>
197 <p>Чаще всего таблица по умолчанию - filter, и её можно не указывать. Но остальные элементы всегда задаются явно.</p>
198 <p>Ниже -<strong>основные ключи</strong>, которые используются для управления правилами:</p>
198 <p>Ниже -<strong>основные ключи</strong>, которые используются для управления правилами:</p>
199 <strong>Ключ</strong><strong>Назначение</strong>-AДобавить правило в конец цепочки-DУдалить правило из цепочки-IВставить правило в начало цепочки или по индексу-RЗаменить правило по номеру-FОчистить цепочку (удалить все правила)-PЗадать политику по умолчанию для цепочки (ACCEPT/DROP)<h4><strong>Опции фильтрации трафика</strong></h4>
199 <strong>Ключ</strong><strong>Назначение</strong>-AДобавить правило в конец цепочки-DУдалить правило из цепочки-IВставить правило в начало цепочки или по индексу-RЗаменить правило по номеру-FОчистить цепочку (удалить все правила)-PЗадать политику по умолчанию для цепочки (ACCEPT/DROP)<h4><strong>Опции фильтрации трафика</strong></h4>
200 <p>Именно с помощью этих ключей вы описываете<strong>условия</strong>, по которым iptables будет определять, какому правилу соответствует пакет:</p>
200 <p>Именно с помощью этих ключей вы описываете<strong>условия</strong>, по которым iptables будет определять, какому правилу соответствует пакет:</p>
201 <strong>Опция</strong><strong>Назначение</strong>`-p tcpudp-sIP-адрес источника-dIP-адрес назначения-iВходной сетевой интерфейс (например, eth0)-oВыходной сетевой интерфейс-dportПорт назначения (например, -dport 80 для HTTP)-sportПорт источника-jДействие, которое нужно выполнить (ACCEPT, DROP, LOG и т.д.)<p><strong>Подведем итоги:</strong></p>
201 <strong>Опция</strong><strong>Назначение</strong>`-p tcpudp-sIP-адрес источника-dIP-адрес назначения-iВходной сетевой интерфейс (например, eth0)-oВыходной сетевой интерфейс-dportПорт назначения (например, -dport 80 для HTTP)-sportПорт источника-jДействие, которое нужно выполнить (ACCEPT, DROP, LOG и т.д.)<p><strong>Подведем итоги:</strong></p>
202 <p>В этой статье мы разобрали:</p>
202 <p>В этой статье мы разобрали:</p>
203 <ul><li>Что такое iptables и зачем он нужен</li>
203 <ul><li>Что такое iptables и зачем он нужен</li>
204 <li>Разницу между stateless- и stateful-фильтрацией</li>
204 <li>Разницу между stateless- и stateful-фильтрацией</li>
205 <li>Основы: как устроены правила, цепочки и таблицы</li>
205 <li>Основы: как устроены правила, цепочки и таблицы</li>
206 <li>Какие действия (targets) применяются к пакетам</li>
206 <li>Какие действия (targets) применяются к пакетам</li>
207 <li>Как писать и редактировать правила</li>
207 <li>Как писать и редактировать правила</li>
208 <li>Как работает синтаксис, ключи и параметры</li>
208 <li>Как работает синтаксис, ключи и параметры</li>
209 </ul><p>Чем вам помогут эти навыки?</p>
209 </ul><p>Чем вам помогут эти навыки?</p>
210 <ul><li>Эффективно строить правила для защиты серверов и сетей</li>
210 <ul><li>Эффективно строить правила для защиты серверов и сетей</li>
211 <li>Отлаживать и тестировать настройки без риска "запороть" соединение</li>
211 <li>Отлаживать и тестировать настройки без риска "запороть" соединение</li>
212 <li>Быстро реагировать на сетевые угрозы - от DDoS до нежеланных сканеров</li>
212 <li>Быстро реагировать на сетевые угрозы - от DDoS до нежеланных сканеров</li>
213 <li>Понимать, где и как в системе проходит каждый сетевой пакет</li>
213 <li>Понимать, где и как в системе проходит каждый сетевой пакет</li>
214 </ul><p>iptables - это инструмент, который действительно стоит освоить. Даже базовое владение позволяет существенно повысить уровень защиты и стабильности работы Linux-сервера. А по мере роста компетенций вы сможете выстраивать более сложные схемы маршрутизации, балансировки, фильтрации и приоритезации трафика.</p>
214 </ul><p>iptables - это инструмент, который действительно стоит освоить. Даже базовое владение позволяет существенно повысить уровень защиты и стабильности работы Linux-сервера. А по мере роста компетенций вы сможете выстраивать более сложные схемы маршрутизации, балансировки, фильтрации и приоритезации трафика.</p>
215 <p>Если вы хотите идти глубже - изучите nftables, firewalld или настройку fail2ban в связке с iptables. Но именно iptables остаётся классикой и фундаментом, с которого стоит начать.</p>
215 <p>Если вы хотите идти глубже - изучите nftables, firewalld или настройку fail2ban в связке с iptables. Но именно iptables остаётся классикой и фундаментом, с которого стоит начать.</p>
216  
216