Несанкціонований доступ та зламування серверів - серйозні загрози, тому вам слід впровадити брандмауер як частину вашої техніки безпеки мережі. Знання того, як працювати з правилами Iptables, є одним з основних набутків для зменшення цих ризиків на ваших системах Linux. Цей посібник допоможе вам ознайомитися з базовими концепціями брандмауера, такими як переглядання правил iptables та видалення правил iptables в Ubuntu, що допоможе вам виконувати прості команди для досягнення цього. Перш ніж говорити про те, як вивести список правил iptables або видалити їх, давайте обговоримо, що таке правила iptables і чому ми їх використовуємо.
Що таке Iptables?
iptables — це утиліта брандмауера командного рядка, яка дозволяє або блокує трафік через ланцюги політик. Коли на вашій системі спробують встановити з'єднання, iptables шукає у списку правило, яке їм відповідає, надаючи вам надійного помічника в забезпеченні мережевої безпеки. Якщо воно не знайде відповідне правило, то використовує дію за замовчуванням.
iptables майже завжди попередньо встановлений на будь-яку дистрибутив Linux. Ви можете використати таку команду для оновлення або встановлення:
sudo apt-get install iptables
Чому ми використовуємо Iptables?
Як брандмауер командного рядка Linux, iptables дозволяє системним адміністраторам керувати вхідним і вихідним трафіком через налаштовувані правила таблиць. Iptables використовують набір таблиць з ланцюгами, які містять набір вбудованих або визначених користувачем правил.
Як було згадано в попередньому розділі, iptables грають важливу роль у мережевій безпеці для більшості систем Linux. Решта цієї статті в основному зосереджена на описанні способів виведення всіх правил iptables, включаючи поняття про те, як показати iptables та видалити правила iptables.
Більш конкретно, ця стаття обговорює деякі з основних завдань iptables, щоб показати вам, як вивести правила, видалити лічильники пакетів і байтів, видалити правило Iptables, очистити ланцюги та видалити всі ланцюги й прийняти весь трафік.
Повний посібник з Iptables у Ubuntu
Перед перевіркою правил iptables майте на увазі, що ви повинні використовувати сервер Linux з установленою командою iptables. Крім цих вимог, необхідно мати привілеї sudo. При роботі з брандмауерами уважно стежте, щоб не заблокувати собі доступ до сервера, заблокувавши трафік SSH (порт 22 за замовчуванням). Якщо ви втратите доступ через параметри брандмауера, вам може знадобитися підключитися до нього через консоль поза смугою для виправлення.
Читайте також: Як змінити порт SSH у Linux | Покрокова інструкція
Список правил за специфікацією
Ви можете переглянути активні правила iptables у таблиці або як список специфікацій правил. Майже обидва методи надають однакову інформацію в різних форматах. Щоб вивести всі правила активного iptables за специфікацією, потрібно запустити команду iptables з опція -S:
sudo iptables -S
Після запуску цієї команди перегляду правил iptables ви побачите результат на зразок цього:

Перегляд конкретного ланцюга
Якщо ви хочете обмежити результат перегляду iptables на конкретний ланцюг, такий як INPUT, OUTPUT, або TCP, ви можете вказати назву ланцюга безпосередньо після опції -S. Наприклад, наступна команда перегляду правил iptables допомагає вказати в ланцюзі TCP:
sudo iptables -S TCP

Як ми згадували раніше, існує інший спосіб перегляду правил iptables: перегляд правил iptables як таблиці правил. Розглянемо цей метод.
Список правил у вигляді таблиць
Використання команди для перегляду правил iptables в таблицях допомагає порівняти різні правила. Вам потрібно запустити наступну команду перегляду iptables з опція -L щоб вивести всі ці активні правила в таблицю:
sudo iptables -L
Ця команда виведе всі поточні правила, відсортовані за ланцюгами. Існує спосіб обмежити результат на конкретний ланцюг, такий як INPUT, OUTPUT, TCP тощо; вам потрібно вказати назву ланцюга безпосередньо після опції -L. Ось приклад обмеження перегляду правил iptables на ланцюг INPUT:
sudo iptables -L INPUT

Перший рядок наведеного вище результату показує назву ланцюга (INPUT в цьому випадку) та його політику за замовчуванням (DROP). Наступний рядок містить заголовки кожного стовпця в таблиці та правила ланцюга. Розглянемо їх, щоб допомогти вам навчитися:
- Target: якщо пакет відповідає правилу, мета визначає, що з ним робити. Ви можете прийняти пакет, відкинути його, залогувати або відправити до іншого ланцюга для порівняння з більшою кількістю правил.
- prot: протокол (наприклад TCP, udp, ICMP або all)
- opt: вказує на IP-параметри (рідко використовується)
- source: показує вихідну IP-адресу/підмережу трафіку
- destination: вказує цільову IP-адресу/підмережу трафіку
Стовпець без мітки пропонує параметри правила, і це будь-яка частина правила, яка не була вказана в попередніх стовпцях. Ця інформація може бути будь-чим, від портів вихідного та цільового до стану з'єднання пакета.
Читайте також: Встановлення OpenVPN на VPS — налаштування клієнта OpenVPN 🔑
Як показати кількість пакетів та сукупний розмір?
При переліку правил iptables ми можемо показати кількість пакетів та сукупний розмір пакетів у байтах, які відповідають кожному конкретному правилу iptables; це часто допомагає зрозуміти, які правила відповідають пакетам. Вам потрібно використовувати -L та -v параметри разом, щоб це здійснити цей
Ось приклад, у якому ми будемо використовувати ланцюг INPUT знову з параметром -v:
sudo iptables -L INPUT -v

Зверніть увагу, що наш список тепер містить два додаткові стовпці з назвами pkts та bytes. Ми розглянули різні способи виконання команд iptables для показу всіх правил, і тепер пора дізнатися, як скинути лічильники пакетів та сукупний розмір.
Як скинути лічильники пакетів та сукупний розмір?
Використовуйте опцію -Z, якщо хочете очистити або обнулити лічильники пакетів і байтів для ваших правил. Вони також скидаються при перезавантаженні, що корисно, якщо ви хочете з'ясувати, чи отримує сервер новий трафік, який відповідає вашим існуючим правилам.
Ви можете очистити лічильники для всіх ланцюгів і правил за допомогою опція -Z саме по собі:
sudo iptables -Z
Щоб видалити лічильники для всіх правил у певному ланцюгу, необхідно використати опцію -Z і вказати ланцюг. Наприклад, наступна команда використовується для очищення лічильників ланцюга INPUT:
sudo iptables -Z INPUT
Якщо ви хочете видалити лічильники для певного правила, необхідно точно вказати назву ланцюга і номер правила. Наприклад, ви можете виконати наступну команду, щоб обнулити лічильники для першого правила в ланцюгу INPUT:
sudo iptables -Z INPUT 1
Крім знання команд iptables для показу всіх правил та способів скидання лічильників пакетів і байтів, корисно знати, як видалити правило iptables.
Читайте також: Як встановити PPTP сервер VPN на VPS
Як видалити правила iptables?
Ви можете використовувати кілька команд для видалення правил Iptables або навіть видалення всіх правил в ланцюгу. Тут ми обговоримо ці методи.
Видалення правил за специфікацією
Один зі способів видалення правил iptables полягає у використанні специфікації правила. Це дозволяє вам запустити команду iptables з опція -D та специфікацією правила. Якщо ви хочете видалити правила за допомогою цієї техніки, ви можете скористатися результатом списку правил iptables -S для довідки.
Наприклад, щоб видалити правило, яке відкидає недійсні вхідні пакети (-A INPUT -m conntrack –ctstate INVALID -j DROP), ви можете виконати наступну команду:
sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP
Зверніть увагу, що опція -A призначена для вказівки позиції правила під час створення і має бути виключена тут.
Видалення правил за ланцюгом та номером
Інший метод, який ви можете використовувати для видалення правил iptables, полягає у використанні його ланцюга та номера рядка. Введіть наступну команду, щоб вибрати номер рядка правила, вивести правила в форматі таблиці та додати опцію –line-numbers:
sudo iptables -L --line-numbers

Після виконання цього всі правила iptables отримують номер рядка, показаний заголовком num.
Коли ви знаєте, яке правило ви хочете видалити, майте на увазі його ланцюг і номер рядка. Ви повинні використовувати команду iptables -D з ланцюгом і номером правила. Наприклад, якщо ви хочете видалити вхідне правило, яке відкидає недійсні пакети, ви можете побачити, що це правило 3 ланцюга INPUT. Тож запустіть цю команду:
sudo iptables -D INPUT 3
Як очистити ланцюги?
Існує спосіб видалити все правила Iptables в ланцюгу, який ми називаємо очищення ланцюга. Тут ми розглянемо різні методи для цього. Перш ніж йти далі, звертайте увагу на те, щоб не заблокувати себе на сервері за допомогою SSH при очищенні ланцюга з політикою за замовчуванням drop або deny. Тому що якщо ви це зробите, вам може знадобитися підключитися до нього через консоль, щоб виправити ваш доступ.
Очищення одного ланцюга
Для очищення певного ланцюга, тобто видалення всіх правил в ланцюгу, ви можете використовувати -F або еквівалент –опція flush та назву вибраного ланцюга. Скажімо, ви хочете видалити всі правила в ланцюгу INPUT; що робити? Ну, це просто, запустіть наступну команду:
sudo iptables -F INPUT
Очищення всіх ланцюгів
Щоб видалити всі ланцюги або очистити їх, ви можете використовувати опцію -F або еквівалентну –flush окремо:
sudo iptables -F
Як очистити всі правила, видалити всі ланцюги та прийняти все?
На цьому етапі ми опишемо, як очистити всі правила брандмауера, таблиці та ланцюги і дозволити весь мережевий трафік. Зверніть увагу, що цей процес фактично вимкне брандмауер. Тому слідуйте цьому розділу лише якщо хочете почати налаштування брандмауера з нуля.
Спочатку вам потрібно встановити політики за замовчуванням для кожного вбудованого ланцюга на ACCEPT. Основна причина, по якій ми це робимо, полягає в тому, щоб переконатися, що вас не заблокують на сервері SSH:
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
Далі вам потрібно очистити таблиці nat та mangle та очистити всі ланцюги (-F)та видалити всі нестандартні ланцюги (-X) так:
sudo iptables -t nat -F
sudo iptables -t mangle -F
sudo iptables -F
sudo iptables -X
Після запуску попередніх команд брандмауер дозволить увесь мережевий трафік. Якщо ви хочете переглянути свої правила, то побачите, що їх немає; залишаться тільки три стандартні ланцюги: INPUT, FORWARD та OUTPUT.
Як налаштувати iptables на Ubuntu?
Як і при будь-якій базовій роботі брандмауера, правила iptables читаються в порядку, у якому вони перелічені у кожному ланцюзі. Це означає, що вам потрібно встановлювати правила в правильному порядку. Коли ви додаєте нові правила, вони додаються в кінець списку. Ви можете додати нові правила на конкретну позицію в списку, вставляючи їх за допомогою iptables -I <index> -command. Той <index> це номер позиції, в яку ви хочете вставити правило в цій команді. Ви можете використовувати наступну команду, щоб дізнатися, який номер індексу вводити:
sudo iptables -L --line-numbers
Число на початку кожного рядка правила показує позицію у ланцюзі. Щоб додати нове правило перед конкретним існуючим правилом, ви повинні використовувати номер індексу цього існуючого правила. Наприклад, якщо ви хочете додати нове правило на початок ланцюга, вам потрібно використовувати наступну команду з номером індексу 1:
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
Чим iptables відрізняється від firewalld?
Як iptables, так і firewalld є практичними інструментами для керування брандмауерами на різних системах Linux, спеціально розроблених для фільтрування пакетів (статичного фільтрування). Фільтрування пакетів - це стратегія брандмауера, яка дозволяє користувачам контролювати доступ до конкретної мережі шляхом керування вхідними та вихідними пакетами інформації. Вони дозволяють їм проходити або блокують на основі заздалегідь встановлених правил брандмауера щодо їхніх протоколів джерела та призначення, портів та IP-адрес. Ці правила забезпечують дуже ефективні механізми безпеки, що робить фільтрування пакетів інформації відмінним захистом від пристроїв, маршрутизованих поза локальною мережею системи (LAN).
Зверніть увагу, що firewalld був спочатку введений як програмне забезпечення для керування iptables, щоб допомогти користувачам легше в ньому орієнтуватися. Маючи цей вступ до firewalld та iptables, давайте порівняємо їх більш детально.
iptables проти firewalld: конфігурація системи
Firewalld та iptables використовують різні конфігурації та параметри зберігання за замовчуванням. З iptables кожна зміна означає очищення всіх старих правил та читання нових, тому система повинна перезавантажитися. Однак за допомогою firewalld правила не перестворюються; натомість відмінності та внесені модифікації застосовуються до змінення існуючих правил, щоб ви могли бачити, як вони вступають у силу під час виконання.
iptables проти firewalld: інтерфейс користувача
Firewalld використовує графічний користувальницький інтерфейс (GUI). Однак iptables використовує інтерфейс командного рядка (CLI), що може бути складним для деяких людей при доступі до правил брандмауера ядра Linux за допомогою iptables, що робить firewalld більш простим варіантом. Варто врахувати, що iptables мають коротший час відклику, оскільки ви використовуєте лише короткі команди. Крім усього цього, обидва мають свої сценарії використання, тому виберіть той, з яким вам комфортніше працювати.
Висновки: список правил iptables
Iptables - це дуже гнучкий інструмент брандмауера, спеціально створений для операційних систем Linux. Неважливо, чи ви новачок у світі Linux чи професійний системний адміністратор; iptables має способи, якими можуть бути корисними вам. Ця стаття в основному представила базові команди цього інструменту брандмауера, включаючи показ правил iptables та видалення правил iptables, з метою коротко розглянути можливості Linux. Крім того, ви можете використовувати наші Linux VPS хостинг-рішення щоб розкрити справжній потенціал цієї чудової операційної системи. Компанія Cloudzy пропонує різні плани Linux VPS на базі KVM, підходящі для різних сценаріїв використання, таких як веб-хостинг, розгортання веб-додатка або навіть налаштування середовища для розробки, тестування та автоматизації коду.
Часто задавані питання
Як вивести всі правила iptables на Linux за специфікацією?
Якщо ви хочете переглянути всі поточні активні правила iptables за їхніми специфікаціями або функціональністю, ви можете це зробити за допомогою команди iptables, за якою слідує прапор -S. Зверніть увагу на використання sudo ключового слова в цьому випадку:
sudo iptables -S
Як видалити правила iptables?
Щоб видалити конкретний ланцюг, що вилучить всі правила в ланцюзі, ви повинні використовувати опцію -F або –flush та назву ланцюга. Припустимо, ми хочемо видалити всі правила у ланцюзі OUTPUT. Що робити? Вам потрібно виконати цю команду:
sudo iptables -F OUTPUT
Як iptables працюють на Ubuntu?
Брандмауер iptables порівнює мережевий трафік із набором правил. Правила iptables визначають характеристики пакета для відповідності правилу та яку дію слід вжити, якщо пакети відповідають правилу. Звичайно, існує багато опцій для встановлення того, які пакети відповідають певному правилу.
Чи вступають правила iptables в силу негайно? Чому?
Так, правила iptables вступають в силу миттєво, оскільки ваш скрипт додає їх до ланцюгів INPUT і OUTPUT, а нові правила добавляються в кінець цих ланцюгів.