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