iptables у Linux: практичний, повний та зрозумілий посібник

Останнє оновлення: 9 вересня 2025
Автор: TecnoDigital
  • Структура та потік: таблиці, ланцюжки та течії трафіку
  • Правила та політика: команди, матчі та ключові цілі
  • NAT та видавнича справа: SNAT/MASQUERADE та DNAT у реальних сценаріях
  • Безпечний дизайн: функціональна демілітаризована зона та належна операційна практика

Брандмауер iptables у Linux

Якщо вам вдається Дистрибутиви Linux для захисту вашої безпеки та конфіденційності, рано чи пізно вам доведеться мати справу з iptables. Ця система фільтрації пакетів є серцем класичного брандмауера в GNU/Linux, здатний вирішувати, який трафік входить, виходить або пересилається між мережами. Правильно налаштований, він схожий на дуже точного вартового біля дверей вашої мережі, який без здригань та з хірургічною точністю забезпечує дотримання ваших правил.

У наступних рядках ви знайдете повний та оновлений посібник, який охоплює основні моменти: концепції брандмауера, Netfilter, таблиці та ланцюжки, потік пакетів, ключові команди, розширення правил та цілі просунутий, а також практичні сценарії, такі як NAT, перенаправлення, політики за замовчуванням та функціональна DMZ. Все це пояснюється зрозумілою, але чіткою мовою, щоб ви могли одразу застосувати це до своєї інфраструктури.

Брандмауери в контексті: від охоронців нічних клубів до демілітаризованої зони

Брандмауер, по суті, є фільтром між мережами, який застосовує правила для визначення пункту призначення кожного пакета. Уявіть собі це як викидайла нічного клубу зі списком критеріївЯкщо пакет відповідає вимогам, він проходить перевірку; якщо ні, він вибуває. Ця метафора допомагає зрозуміти, що важлива логіка правил та порядок, у якому вони оцінюються.

У проектуванні мереж деякі топології є безпечнішими, ніж інші. Демілітаризована зона (DMZ) – це проміжна мережа, яка забезпечує надання державних послуг. (наприклад, веб- або FTP-сервер), що відокремлює їх від корпоративної локальної мережі. Чому? Тому що, якщо зловмисник скомпрометує публічний сервер, сегментація не дозволить йому отримати прямий доступ до решти внутрішньої мережі.

Linux як брандмауер: Netfilter та iptables

Ядро Linux містить Netfilter, фреймворк з перехоплювачами для перехоплення та маніпулювання пакетамиУ просторі користувача iptables — це утиліта, яка визначає правила, які ядро ​​застосовуватиме до потоку трафіку. Таке розділення ядра та користувача забезпечує високу продуктивність з великою гнучкістю.

Зручно розрізняти утиліти за протоколом: iptables (IPv4), ip6tables (IPv6), arptables (ARP) та ebtables (кадри Ethernet)У ядрі спільним модулем є x_tables, який використовує ту саму логіку для зіставлення розширень та цілей. І історична примітка: iptables замінив ipchains і, у свою чергу, nftables прийшов на зміну iptables у ядрі 3.13, хоча iptables все ще дуже присутній у багатьох системах.

Для роботи вам знадобляться права адміністратора. Запустіть iptables від імені root (або за допомогою sudo), зазвичай у /usr/sbin/iptables (Debian/похідні версії) або /sbin/iptables (Red Hat/похідні). Офіційна документація знаходиться за адресою man iptables та на сайті netfilter.org.

Дистрибутиви Linux для серверів
Пов'язана стаття:
Найкращі дистрибутиви Linux для серверів

Структура iptables: таблиці, ланцюжки та правила

Iptables організовує свою логіку в таблиці, складені з ланцюжків, повних правилКожне правило визначає умови збігу та ціль, яка застосовується, коли пакет збігається.

  • Таблиця фільтрів (за замовчуванням, чиста фільтрація)
    • ВХІД: трафік, спрямований до самої машини.
    • ВПЕРЕДтрафік, що проходить через обладнання (маршрутизація).
    • ВИХІД: трафік, згенерований локально.
  • Таблиця Nat (трансляція адрес; оцінюється для нових з'єднань)
    • ПЕРЕДПРАВЛЕННЯ: перед визначенням маршруту; ідеально підходить для DNAT/переадресації портів.
    • ВИХІД: локально створені пакети перед маршрутизацією.
    • ПОСТРАУТУВАННЯ: після маршрутизації; типово для SNAT/MASQUERADE.
  • Мангровий стіл (точне налаштування заголовка: TOS, TTL, маркування тощо)
    • ПОПЕРЕДНЯ МАРШРУТИЗАЦІЯ, ВХІД, ПЕРЕПРАВЛЕННЯ, ВИХІД, ПОСТМАРШРУТИЗАЦІЯ: доступно на всіх етапах.
  • Таблиця необроблених даних (контроль відстеження з’єднань/conntrack)
    • ПЕРЕДПРАВЛЕННЯ y ВИХІД: для позначення трафіку, який conntrack має пропускати.

Коли пакет надходить до ланцюга, послідовно порівнюється з кожним правилом; якщо збігається, його мета виконується, і обхід зупиняється. Якщо він досягає кінця без жодного збігу, і ланцюжок визначений заздалегідь, політика за замовчуванням (ланцюгова політика) того ланцюга.

  Як перейти з Linux на Windows 11 та об'єднати їх на одному ПК

Потік пакетів: де вони проходять і коли

Розуміння маршруту, яким рухається транспорт, є ключем до правильного визначення правил. Пакет, що залишає вашу локальну мережу (LAN) до Інтернету Зазвичай це обробляється так: спочатку ПЕРЕДПРАВЛЕННЯ (можливо, ДНК/мангрові зарості), проходить через ВПЕРЕД (фільтрація трафіку), а перед тим, як залишити команду, дотики ПОСТРАУТУВАННЯ (SNAT/MASQUERADE, якщо застосовується).

Однак, якщо місцем призначення є сам брандмауер, ПОПЕРЕДНЯ МАРШРУТИЗАЦІЯ → ВХІД втрутиться; якщо видано локальною машиною, шлях буде ВИВІД → ПОСТРОУТИНГЦя ментальна матриця позбавляє вас головного болю, коли щось не складається.

Основні команди: список, очищення, створення та політики за замовчуванням

Щоб перевірити поточний стан, США iptables -L (необов'язково) -v для деталей та -n (щоб не розпізнавати імена)Ви також можете створювати та видаляти ланцюжки за допомогою -N y -X відповідно, та встановіть політики за замовчуванням за допомогою -P.

Коли потрібно починати з нуля, чіткі правила з -F (врівень) і, якщо можливо, лічильники. Пам’ятайте, що ви можете вказати таблиці за допомогою -t та конкретні ланцюги; наприклад, iptables -F -t nat для NAT.

Під час визначення правил найпоширеніші варіанти є простими: -A качка, -I вставка, -R замінює та -D стертиПотім ви додаєте селектори, такі як -p (протокол), -s/-d (пункт відправлення/пункт призначення), -i/-o (інтерфейси) та ціль з -j (наприклад, ПРИЙНЯТИ, ВІДХИЛИТИ або ВІДХИЛИТИ).

The політики за замовчуванням визначити, що відбувається, якщо жодні правила не збігаються. Типова схема захисту на хості буде такою INPUT DROP, FORWARD DROP, OUTPUT ACCEPT, блокування всього вхідного, окрім того, що явно дозволено і дозволяючи тому, що виходить.

Розширення відповідності (-m): TCP, UDP, ICMP, MAC, з функцією збереження стану та багатопортові

Iptables розширює свої фільтри відповідними модулями, використовуючи -m. TCP дозволяє налаштування за портами та прапорцями: --dport/--sport y --syn наприклад, для нових відкриттів з'єднань.

Для UDP, Ви також можете розмежувати порти відправлення та призначенняКласичний випадок: відкриття 80/443 для веб-сервера або дозвіл вихідних DNS-запитів на 53/UDP.

З ICMP, --icmp-type дозволяє розрізняти типи (наприклад, ехо-запит y ехо-відповідь (для пінгу). Це корисно для проведення діагностики, не залишаючи двері відкритими для повного ICMP.

Також є модуль mac фільтрувати за MAC-адресою з --mac-sourceКорисно, якщо ви хочете авторизувати керований комп’ютер з динамічною IP-адресою для надсилання запитів на брандмауер без використання цієї IP-адреси.

І, мабуть, найважливіше на операційному рівні, модуль state (або conntrack) з --state NEW, ESTABLISHED, RELATEDЦе дозволяє приймати відповіді від уже встановлених з'єднань, що значно зменшує кількість необхідних правил.

Щоб згрупувати порти, multiport додати --sports y --dports зі списками, розділеними комамиЗручно відкривати HTTP, HTTPS та SSH в одному правилі.

Цілі після ACCEPT/DROP: NAT та компанія

Окрім прийняття або відхилення, iptables може перезапис адрес та портів підключати приватні мережі до Інтернету або публікувати внутрішні сервіси.

МАСКАРАДPOSTROUTING зі столу nat) замінює вихідну IP-адресу вихідною IP-адресою брандмауера, ідеально, коли Публічна IP-адреса є динамічною (DHCP). Це типовий вихідний NAT для всієї локальної мережі.

СНАТ (також у POSTROUTING) явно встановлює вихідну IP-адресу/порт за допомогою --to-source. Використовується, коли у вас статична публічна IP-адреса і ви хочете точно контролювати переклад.

ДНАТPREROUTING o OUTPUT) змінити IP-адресу призначення на --to-destination. Це знамениті «відкриті порти»Ви отримуєте трафік через публічну IP-адресу та перенаправляєте його на сервер у демілітаризованій зоні, наприклад, на внутрішній веб-сайт за адресою 192.168.1.2.

  10 ключів до розуміння: що таке двофакторна автентифікація?

Простий приклад: фільтрація трафіку між двома мережами

Уявіть собі машину, яка діє як маршрутизатор/брандмауер між двома підмережами. Якщо ви хочете, щоб лише хост B спілкувався з C і лише через TCP, стіл буде filter а правильний рядок — FORWARD, оскільки трафік проходить через обладнання.

Спочатку ви б застосували політика за замовчуванням ВІДКИДАННЯ при ПЕРЕСИЛАННІ а потім ви б явно дозволили трафік B→C по TCP (і, якщо можливо, C→B). Цей шаблон «заборонити за замовчуванням, дозволити якомога менше» є основою надійної системи безпеки.

Повсякденні справи на подіумі: типові правила

Наприклад, шлюз із двома інтерфейсами eth1 (локальна мережа) та eth0 (глобальна мережа), зазвичай потребує пересилання пакетів з локальної мережі до Інтернету. Для цього він додає FORWARD -i eth1 -o eth0 -j ACCEPTІ дозволяє лише зворотний рух ESTABLISHED,RELATED з -m state.

У самому брандмауері бажано авторизувати вхідний трафік, що є відповіддю на вихідні з'єднання з INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTі завжди дозволяти зворотний зв'язок: INPUT -i lo -j ACCEPT.

Щоб дозволити комп’ютерам локальної мережі переглядати дані, застосуйте вихідний NAT: -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to-source X.Y.Z.W (o MASQUERADE (якщо IP-адреса динамічна). Це перетворює приватні IP-адреси на вашу публічну IP-адресу.

Базове загартування - це блокування Вхідні пакети через WAN з неправильними IP-адресами джерел (ваша власна публічна IP-адреса, приватні діапазони 192.168.0.0/24, 127.0.0.0/8 тощо), оскільки вони зазвичай свідчать про підробку.

Щоб розкрити сервіси на брандмауері (наприклад, SMTP 25, HTTP 80, HTTPS 443 або SSH 22), ви можете дозволити TCP-пакети з прапорцем SYN до цих портів призначенняЯкщо ви хочете звузити пошук за IP-адресою призначення, додайте -d до IP-адреси сервісу.

Спільні інфраструктурні послуги: DHCP (трафік з порту 68 на 67) на інтерфейсі локальної мережі та DNS від авторизованого розпізнавальника (UDP 53), якщо ви фільтруєте за джерелом. Ці отвори дозволяють клієнтам отримувати IP-адреси та розпізнавати імена.

Якщо вам доведеться закрити доступ, DROP для вхідного SSH/Telnet Це безпосередньо; ви також можете ВІДХИЛИТИ виходи на заборонені IP-адреси з локальної мережі, щоб відправник отримав сповіщення про відхилення.

Встановлення та керування сервісом на системах Red Hat/CentOS

У застарілих середовищах із CentOS/RHEL 5/6 цього було достатньо встановити за допомогою yum -y install iptablesХоча багато нових дистрибутивів сьогодні надають перевагу nftables, iptables все ще присутній у виробничих системах та пристроях.

Інтеграція з Сервіси SysV дозволено керувати та зберігати правила: service iptables start|stop|restart y service iptables save, заощадження в /etc/sysconfig/iptablesЩоб увімкнути під час завантаження: chkconfig iptables on на рівнях 2–5.

У сучасних системах, хоча обгортки, ідея залишається актуальною: визначте правила, протестуйте їх та дотримуйтесь щоб вони вижили після перезавантажень, або за допомогою системних інструментів, або за допомогою скриптів.

Точне перерахування, видалення та редагування правил

Щоб переглянути статус із номерами правил, США iptables -L --line-numbers -n -vТаким чином, ви можете видаляти за індексом за допомогою -D INPUT 3 або замінити на -R без плутанини.

Якщо вам потрібне вибіркове видалення, Чистіть лише ланцюг або дошку, якої торкається (-F FORWARD o -F -t natУникайте віддалених глобальних перевірок без «мережі безпеки», інакше ви можете втратити доступ до SSH.

Як поширена практика, Спочатку встановіть правила, які дозволяють ваш SSH-сеанс, застосовувати зміни поступово та мати вікно відкату (наприклад, cron, який відновлює правила за 5 хвилин, якщо ви не зробите фіксацію змін).

Збереження даних за допомогою iptables-save та iptables-restore

Щоб зберегти налаштування, iptables-save > /ruta/backup/iptables.rules Генерує машинозчитуваний дамп усіх таблиць. Ідеально підходить для контролю змін та міграцій.

  Різниця між режимом інкогніто та VPN: повний посібник

Щоб зарядити його, використовуйте iptables-restore < /ruta/backup/iptables.rulesВи можете автоматизувати відновлення завантаження за допомогою systemd, скриптів ініціалізації або завдання cron. @reboot, що гарантує, що брандмауер залишатиметься активним після перезавантаження.

Додайте до цього належні операційні практики: працює з відповідними привілеями, зберігати файли зовні /tmp та узгодьте їх із середовищем (правильні інтерфейси та підмережі), щоб уникнути несподіванок.

Деталізована зона: повний та реалістичний приклад

Припустимо, що брандмауер Linux підключено до маршрутизатора в режимі «однокористувацький» (без NAT) з трьома інтерфейсами: eth0 (LAN 192.168.1.1/24), eth1 (DMZ 192.168.2.1/24) та eth2 (WAN з IP-адресою через DHCP)У демілітаризованій зоні знаходиться Веб-сервер Apache (192.168.2.2) та один FTP (192.168.2.3).

Цілі політики: публікація HTTP/HTTPS та FTP з DMZ до Інтернету, дозволити адміністрування SSH з локальної мережі до брандмауера та дозволити локальній мережі перегляд (HTTP/HTTPS), передачу даних через FTP та розв'язання DNS. Все інше заборонено.

Загалом кажучи: у фільтр/ВПЕРЕД дозволяє транзит LAN→WAN з відповіддю, та WAN→DMZ лише до опублікованих портів з ESTABLISHED,RELATED для відповідей. У nat/ПЕРЕДМАРШРУТИЗАЦІЯзастосовує DNAT для публікації послуг; в nat/ПОСТРОУТІНГ, SNAT/MASQUERADE для виводу LAN/DMZ.

Приклади отворів: DNAT 80/443 до 192.168.2.2 та 21/20 (залежно від режиму) до 192.168.2.3 з відповідним FORWARD Дозвіл цих портів. Захистіть канали керування та передачі даних для FTP (активний/пасивний) або обмежте пасивний діапазон і відобразіть це на брандмауері.

Для локальної мережі: дозволяє виїзд на 80, 443, 21 та 53 та його повернення, застосовуючи вихідний NAT у POSTROUTINGУ брандмауері авторизуйте Вхідний SSH лише з підмережі 192.168.1.0/24 та блокує небажаний доступ з WAN.

Не забувайте про гігієну: DROP до недійсних діапазонів через WAN (приватний, зворотний зв'язок, ваш власний публічний) та записуйте все, що вас цікавить. Завдяки обмежувальним політикам за замовчуванням та мінімальним можливостям доступу, ваш ризик зведено до мінімуму.

Корисні практики та операційні хитрощі

Завжди працюйте за планом: документуйте, що ви дозволяєте та чому, перевірте очікуваний потік за допомогою простої діаграми та застосуйте правила у правильному порядку, щоб уникнути дублювання.

Використовуйте комбінацію модулів з головкою: state/conntrack для відповідей, tcp con --syn у отворах, та multiport групуватиТаким чином ви спростите та зменшите ризик невідповідностей.

Для середовищ із частими змінами розгляньте можливість розділення правил за функціями: ланцюги на замовлення-N) виклики з INPUT/OUTPUT/FORWARD, щоб збереження або повернення частин було чистішим.

Перехід на nftables вже триває в багатьох дистрибутивах, але якщо ваша платформа/продукт використовує iptables, Глибоке знання цих складових дасть вам повний контроль.А якщо ви мігруєте, то легко зрозумієте еквівалентну ментальну карту в nftables.

З огляду на побачене, у вас є міцна основа для розгортання та підтримки iptables у продакшені: Ви розумієте архітектуру (таблиці, ланцюжки та потік), володієте основними командами, застосовуєте NAT та публікацію за допомогою DNAT/SNAT, а також знаєте, як налаштувати безпечну DMZ.Звідси вам вирішувати, як підлаштовуватися під ваш конкретний випадок, періодично проводити аудит і підтримувати чіткість правил, як і ваша мережева модель.