25+ найпоширеніших команд iptables із прикладами

Categories:

Якщо ви використовуєте Linux, у вас є багато варіантів захисту вашого пристрою. Він поставляється з iptables, утилітою брандмауера командного рядка, яка пропонує гнучкість і чудовий захист.

Однак, оскільки це утиліта командного рядка, вона вимагає невеликого навчання.

Отже, якщо ви системний адміністратор або вивчаєте Linux, ви знаходитесь у правильному місці, оскільки ми розглядаємо типові команди iptables із прикладами.

Зміст

Що таке iptables?

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

Це означає, що ви можете використовувати iptables для створення правил блокування або дозволу трафіку через порт, вихідну IP-адресу, мережеві інтерфейси тощо.

Коли ви визначите правила, весь трафік має проходити через них. Так, наприклад, для кожного нового підключення iptables перевірятиме будь-які заздалегідь визначені правила, які відповідають підключенню. Якщо це так, правило буде застосовано до підключення. Однак, якщо немає пов’язаних відповідних правил, буде застосовано правило за замовчуванням.

Щоб використовувати iptables, потрібно використати таку команду.

$ iptables -L -n -v 

Тут параметри такі:

  • -L для переліку всіх правил.
  • -n забезпечує швидшу роботу числового виводу.
  • -v для показу результатів у детальному форматі.

Якщо ви запустите команду iptables без будь-яких параметрів, вона поверне такий результат:

iptables v1.8.7 (nf_tables): no command specified

Try `iptables -h' or 'iptables --help' for more information.

Вам потрібно встановити його, якщо він стикається з помилкою, наприклад, команда «iptables» не знайдена.

Щоб установити iptables у вашому дистрибутиві Linux, виконайте таку команду.

$ sudo apt-get install iptables

Він поверне наступне, оскільки його вже попередньо встановлено в моєму дистрибутиві Linux.

#output
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
iptables is already the newest version (1.8.7-1ubuntu5).
iptables set to manually installed.
0 upgraded, 0 newly installed, 0 to remove, and 35 not upgraded.

Що таке брандмауер?

Брандмауери — це найосновніша форма захисту систем, мереж і персональних комп’ютерів. Він може базуватися на апаратному чи програмному забезпеченні та покладатися на правила для належного функціонування.

Більшість брандмауерів можна налаштувати, що дозволяє створювати або редагувати правила. Наприклад, оскільки пакети з Інтернету використовують порти для потрапляння в систему, сканування на основі портів може допомогти вам відфільтрувати їх. Крім того, ви також можете дозволити або заблокувати служби за IP-адресою джерела або мережевим інтерфейсом.

Якщо ви використовуєте Linux, ви отримуєте доступ до вбудованих iptables. Однак ви також можете використовувати окремий брандмауер Linux, щоб допомогти вам у процесі захисту вашої системи.

Навіщо вам потрібні iptables для налаштування брандмауера?

Але навіщо вам взагалі використовувати iptables? Зрештою, існують хороші альтернативні утиліти командного рядка брандмауера, такі як ufw і firewalld. Крім того, ви можете використовувати автономні брандмауери Linux, які прості у використанні та пропонують більше функцій.

Отже, що робить iptables таким привабливим під час налаштування брандмауера? Причини його використання включають:

  • Він пропонує чудову гнучкість із коробки. Ви можете встановити правила на рівні пакетів.
  • Його відносно легко використовувати, якщо ви знаєте, як це працює.
  • Блокуйте небажаний трафік простим способом.
  • Перенаправлення пакетів на альтернативну IP-адресу.
  • Захистіть свої системи від атак типу «Відмова в обслуговуванні» (DoS).

І багато іншого!

Розуміння архітектури iptables та її зв’язку з Netfilter

Щоб правильно зрозуміти iptables, нам потрібно дізнатися про їх архітектуру. По-перше, це дасть нам чітке розуміння різних компонентів iptables. Тоді, як тільки ми дізнаємось про кожен із них, ми зможемо використовувати їх для написання правил брандмауера.

І коли ми говоримо про iptables, Netfilter також з’являється на увазі. Ви можете вважати «Netfilter» старшим братом iptables. Він створений на основі iptables і пропонує кращий набір функцій для керування брандмауером. Однак він використовує iptables як один із засобів досягнення відмінних можливостей брандмауера.

Iptables — це інтерфейс командного рядка для підхоплень на рівні ядра Netfilter. Ці хуки можуть взаємодіяти з мережевим стеком Linux, що впливає на пакети на найглибшому рівні.

Отже, як виглядає архітектура iptables:

Таблиці

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

Різні таблиці, які пропонує iptables, включають:

  • Таблиця фільтрів: визначає тип рішення для фільтрації пакетів. Простіше кажучи, він визначає, чи має пакунок дістатися до місця призначення чи ні.
  • Таблиця NAT: визначає тип рішення для трансляції адреси. Тут маршрутизація пакетів визначається на основі мереж NAT. Наприклад, якщо пакет не може отримати доступ до NAT, він пропустить і спробує знайти мережу без NAT.
  • Mangle table: керує спеціальними потребами обробки пакета. Наприклад, ви можете налаштувати його на зміну інформації заголовка пакета, як-от значення TTL.
  • Необроблена таблиця: необроблена таблиця дає змогу старанно працювати з аспектом стану брандмауера iptables. Використовуючи таблицю, ви можете маршрутизувати пакети на основі їх «стану» до того, як ядро ​​Linux почне відстежувати його стан. Він в основному використовується для позначення пакетів, незалежно від того, обробляє їх система відстеження з’єднань чи ні. Якщо пакет не відстежується, для нього встановлюється ціль NOTRACK.

Ланцюжки

І тоді ми маємо «ланцюжки» всередині «таблиць».

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

  Створіть онлайн-спільноту та форум за допомогою цих 8 найкращих програм

Як і столи, ви також отримуєте різні ланцюги. До них належать:

  • Ланцюжок PREROUTING: тут правила обробляють пакети, щойно надійшли до мережевого інтерфейсу.
  • Ланцюжок INPUT: правила, згадані в ланцюжку INPUT, керують поведінкою вхідного з’єднання. Після завершення вони передаються локальному процесу.
  • Ланцюжок OUTPUT: Ланцюжок OUTPUT працює з пакетами, які створюють процеси.
  • Ланцюг FORWARD: ланцюг FORWARD керує пакетами, не призначеними для локальних систем. Це носій для інших призначених систем, наприклад маршрутизатора.
  • Ланцюжок POSTROUTING: Нарешті, ми маємо ланцюжок POSTROUTING, який працює з пакетами, які збираються вийти через мережевий інтерфейс.

Не всі ланцюги доступні в кожній таблиці. Наприклад, ланцюжок FORWARD доступний лише в таблиці mangle, filter і security. Подібним чином ланцюжок POSTROUTING доступний для mangle і nat (SNAT). У всіх таблицях доступний лише ланцюжок OUTPUT.

Цільова

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

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

Цілями можуть бути ACCEPT, DROP і REJECT. Це кінцеві цілі, які вирішують долю пакета.

  • ACCEPT: приймає пакети.
  • DROP: скидає пакет, унеможливлюючи для відправника дізнатися, присутня система чи ні.
  • REJECT: Відхилення пакета.

Існують також незавершені цілі, які в основному використовуються для зберігання інформації про пакет.

Найпоширеніші команди iptables із прикладами

Перш ніж почати виконувати команду iptables, переконайтеся, що:

  • Ви маєте права адміністратора для виконання команд. Якщо команда не виконується через права адміністратора, повторно запустіть команду з командою sudo перед нею.
  • Стаття не є посібником з налаштування iptables на Ubuntu.
  • Ми використаємо команду iptables, яка працює з IPv4. Якщо ви маєте намір працювати з IPv6, замість цього вам потрібно використовувати ip6tables.

Перевірка стану iptables

Щоб перевірити поточний статус iptables, потрібно виконати таку команду.

$ iptables -L -n -v
#output

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Наведені вище результати містять багато інформації. Однак це також натякає на неактивний брандмауер. Це тому, що наразі всі ланцюжки налаштовані на ПРИЙНЯТИ і не мають правил.

Вам потрібно буде почати додавати правила, щоб активувати брандмауер.

Додавання правил до ланцюжка

Коли ви додаєте правило, воно завжди додається до ланцюжка. Тому ви повинні використовувати параметр -A (Додати). Його синтаксис такий:

$ sudo iptables - A

Однак, коли ви запускаєте його, він повертає наступне:

iptables v1.8.7 (nf_tables): option "-A" requires an argument

Try `iptables -h' or 'iptables --help' for more information.

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

  • – i: це означає інтерфейс. Тут ви можете згадати інтерфейс, для якого ви додаєте правила. Це може бути ppp0, eth0 і так далі.
  • – p: це означає протокол. Тут ви згадуєте правило використання мережевого протоколу для фільтрації пакувальників. Наприклад, ви можете сказати ICMP, TCP, UDP тощо. Якщо ви хочете, щоб правило працювало з усіма протоколами, вкажіть «усі» як значення аргументу.
  • – s: Далі йде аргумент джерело, у якому згадується джерело трафіку (як IP-адреса або ім’я хоста)
  • – dport: dport означає порт призначення, де ви згадуєте номер порту, до якого призначено пакет.
  • – j: Нарешті, у нас є аргумент TARGET, де ви можете згадати назву TARGET, ACCEPT, DROP або RETURN

Також важливо написати команду в такому порядку:

$ sudo iptables -A <chain-name> -i <interface-name> - p <protocool-name> - s <source> --dport <port no.> -j <target>

Збереження змін до iptables

Додавши правило, ви можете зберегти його за допомогою команди iptables -save.

$ sudo iptables -save

Результат виглядає наступним чином:

[email protected]:~$ sudo iptables-save

# Generated by iptables-save v1.8.7 on Sun May 14 13:37:34 2023

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 392 -j REJECT --reject-with icmp-port-unreachable

-A OUTPUT -o lo -j ACCEPT

COMMIT

# Completed on Sun May 14 13:37:34 2023

Збереження правил вручну

За замовчуванням iptables не зберігає правила. Отже, якщо ви перезавантажите комп’ютер, це видалить усі правила. Вам потрібно буде використати наступні команди, щоб переконатися, що вам не доведеться повторно налаштовувати iptables.

Для правил IPv4 напишіть команду:

$ sudo iptables-save > /etc/iptables/rules.v4

А для правил IPv6 напишіть команду:

$ sudo iptables-save > /etc/iptables/rules.v6

Автоматичне збереження правил

Щоб правила залишалися навіть після перезапуску, і це теж автоматично, вам потрібно буде встановити пакет iptables-presistent.

Для цього виконайте таку команду.

$ sudo apt-get install iptables-persistent

Відкриється наступне вікно. Натисніть enter на <Так>.

Оскільки ми працюємо з таблицею IPv4, у ній відображатимуться лише правила IPv4. Якщо ви працюєте з IPv6, відобразиться відповідне вікно.

Примітка. Пакет завантажує лише ваші збережені правила iptables. Отже, коли ви змінюєте iptables, вам потрібно буде зберегти його за допомогою команди iptables -save.

Правила перезавантаження після перезавантаження

Після збереження правил ви повинні відновити їх за допомогою наступної команди.

$ sudo iptables-restore < /etc/iptables/rules.v4

І

$ sudo iptables-restore < /etc/iptables/rules.v6

Увімкнення трафіку на локальному хості / увімкнення петлі

Щоб увімкнути трафік на Localhost, скористайтеся такою командою:

$ sudo iptables -A INPUT -i lo -j ACCEPT

Тут lo означає петлевий інтерфейс для всіх комунікацій локального хосту.

Так само ми можемо дозволити пакетам залишати через інтерфейс петлі.

$ sudo iptables -A OUTPUT -o lo -j ACCEPT

Щоб перевірити, як це змінило правила, запустіть iptables -L -n -V

#output

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Увімкнення трафіку на окремих портах

Ви можете ввімкнути трафік на ПРИЙНЯТИ або ВІДХИЛИТИ на певних портах.

  Передача файлів і налаштувань зі старого ПК на новий

Наприклад, порти SSL, HTTP і SSH важливі для нормального функціонування ваших програм. Ви можете додати правила до пакету ACCEPT через номери портів, щоб переконатися, що вони працюють належним чином.

Для SSL виконайте таку команду.

$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Для HTTPS виконайте таку команду.

$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Для дозволу всього трафіку HTTPS на інтерфейсі eth0.

$ iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

$ iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Для SSH виконайте таку команду.

$ sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

А щоб прийняти ВЕСЬ вхідний трафік SSH на інтерфейсі eth0, виконайте наступне:

$ iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

$ iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Іншим прикладом може бути ввімкнення трафіку порту на певному порту для вашої програми. Скажімо, порт 233.

Щоб відкрити підключення до цього порту, запустіть.

$ sudo iptables -A INPUT -p tcp --dport 233 -j ACCEPT

Подібним чином ви також можете вимкнути з’єднання на певному порту за допомогою параметра REJECT target.

Давайте заблокуємо всі підключення на порту 392.

$ sudo iptables -A INPUT -p tcp --dport 392 -j REJECT

Щоб перевірити, виконайте команду iptables -L -n -v.

#output

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:233

    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

 0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0

Видалити існуючі правила

Щоб видалити існуючі правила, потрібно виконати таку команду.

$ iptables -F

або

$ iptables --flush

Примітка. Якщо ви не зберегли свої правила, вони втрачені назавжди й не можуть бути відновлені за допомогою iptables -restore

Видалити правила з номерами рядків

Щоб видалити певне правило, потрібно отримати список правил із номерами.

$ sudo iptables -L --line-numbers
#output

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh

2    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

3    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https

4    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:233

5    REJECT     tcp  --  anywhere             anywhere             tcp dpt:392 reject-with icmp-port-unreachable

Виконайте наступну команду, якщо ви бажаєте видалити правило номер 4 для ланцюжка INPUT.

$ sudo iptables -D INPUT 4

І якщо ви знову запустите команду iptables -n -v -L.

#output

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

    0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

Відображати лише правила ланцюга ВХІД або ВИВІД

Щоб відобразити лише правила ланцюжка INPUT, виконайте таку команду.

$ sudo iptables -L INPUT -n -v --line-numbers
#ouput

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

num   pkts bytes target     prot opt in     out     source               destination

1        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22

2        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

3        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443

4        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

Подібним чином, якщо ви хочете бачити лише правила ланцюжка OUTPUT, виконайте:

$ sudo iptables -L OUTPUT -n -v --line-numbers
#output

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

num   pkts bytes target     prot opt in     out     source               destination

1        0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0

Запуск/зупинка/перезапуск брандмауера

Якщо ви використовуєте RHEL/Fedora Linux або CentOS, ви можете запустити/зупинити або перезапустити брандмауер, виконавши команди.

$ service iptables stop

$ service iptables start

$ service iptables restart

Ви також можете використовувати команду systemctl.

  Надішліть повідомлення, щоб повідомити комусь, чому ви дзвоните

Однак це не працюватиме на Ubuntu.

Вставте правила в певне місце

Якщо ви хочете вставити правила в певну позицію, ви повинні використовувати такі команди.

Спочатку перевірте правила.

$ sudo iptables -L INPUT -n --line-numbers
#output

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

3    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443

4    REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

Виконайте наступну команду, якщо ви хочете вставити правила між 2 і 3.

$ sudo iptables -I INPUT 3 -s 252.32.1.2 -j DROP

Тепер перевірте оновлені правила.

#output

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:22

2    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

3    DROP       all  --  252.32.1.2           0.0.0.0/0

4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:443

5    REJECT     tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:392 reject-with icmp-port-unreachable

Блокувати вхідний трафік, але дозволяти вихідний

Вам потрібно буде ввести наступну команду, щоб заблокувати весь вхідний трафік.

$ iptables -P INPUT DROP

$ iptables -P FORWARD DROP

$ iptables -P OUTPUT ACCEPT

$ iptables -A INPUT -m state --state NEW,ESTABLISHED -j ACCEPT

$ iptables -L -v -n

Таким чином ви можете перевіряти або завантажувати пакети, але блокувати будь-який невідомий вхідний трафік.

Заблокувати конкретну IP-адресу

Щоб заблокувати певну IP-адресу, виконайте таку команду.

$ iptables -A INPUT -s 14.23.59.9 -J DROP

Ви також можете визначити змінну для збереження заблокованої IP-адреси, а потім виконати команду.

BLOCK_THE_IP = “a.b.c.d”

А потім запустіть:

$ iptables -A INPUT -s “BLOCK_THE_IP” -j DROP

Примітка. Змініть «abcd» на бажану IP-адресу.

Дозвіл пінгування системи ззовні

Ви можете змусити зовнішніх користувачів перевіряти ваш сервер, щоб зробити вашу мережу видимою.

$ sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

$ sudo iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

Дозвол внутрішній мережі спілкуватися із зовнішньою мережею

Виконайте наступну команду, щоб дозволити внутрішній мережі (скажімо, eth0) до зовнішньої мережі (скажімо, eth1).

$ sudo iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

Дозволити вихідний DNS

Щоб дозволити підключення DNS до вашого сервера, виконайте таку команду.

$ iptables -A OUTPUT -p udp -o eth0 --dport 53 -j ACCEPT

$ iptables -A INPUT -p udp -i eth0 --sport 53 -j ACCEPT

Дозволити Rsycn із певної мережі

Якщо ви використовуєте команду Rsync і хочете ввімкнути її в певній мережі, виконайте таку команду.

iptables -A INPUT -i eth0 -p tcp -s 192.168.101.0/24 --dport 873 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 873 -m state --state ESTABLISHED -j ACCEPT

Блокувати порт

Виконайте наступну команду, щоб заблокувати певний порт і будь-які вхідні запити.

iptables -A INPUT -p tcp --dport 80 -j DROP

iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

Блокувати вихідний трафік на певну IP-адресу

Ви можете заблокувати трафік до будь-якої IP-адреси, виконавши таку команду.

$ host -t a techukraine.net.com

#вихід

techukraine.net.com має адресу 172.66.40.93

Щоб заблокувати вихідний трафік на цю конкретну IP-адресу, виконайте таку команду.

iptables -A OUTPUT -d 72.66.40.93 -j DROP

Так само ви можете заблокувати соціальні медіа-платформи, такі як Instagram, Twitter і Facebook.

Знайдіть IP-адресу соціальної мережі, виконавши таку команду:

$ host -t a social-media-web-adrress.com

Наприклад, для Instagram це буде:

$ host -t a www.instagram.com

Тепер вам потрібно буде знайти CIDR для IP-адреси конкретної платформи соціальних мереж.

$ whois 185.89.219.11 | grep CIDR

Примітка. Вам може знадобитися інсталювати пакет whois, запустивши sudo apt-get install whois

Тепер введіть значення CIDR таким чином:

$ iptables - A OUTPUT -p tcp -d CIDR-value -j DROP

Примітка. Не забудьте змінити значення CIDR відповідно.

Дозволити або заблокувати запит ICMP Ping

Щоб дозволити або заблокувати запити ping ICMP, виконайте наведені нижче команди.

$ iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

$ iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP

Відкрийте певний діапазон портів

Щоб відкрити діапазон портів, виконайте таку команду.

$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 8933: 8500 -j ACCEPT

Список правил NAT

Щоб отримати список правил NAT, виконайте таку команду:

$ sudo iptables -t nat -L -n -v

Або

$ sudo iptables -t nat -v -L -n --line-number

Скинути лічильники пакунків

Щоб перевірити поточний лічильник iptables:

$ sudo iptables -L -n -v

Щоб скинути або очистити лічильники, виконайте наступне:

$ sudo iptables -Z

$ sudo iptables -L -n -v

Щоб скинути лише лічильник ланцюжка INPUT, запустіть:

$ iptables -Z INPUT

Щоб скинути лічильник певного правила, виконайте наступне:

$ iptables -z INPUT RULE-NUMBER

Обов’язково змініть ПРАВИЛО-НОМЕР на це конкретне правило.

Заключні слова

iptables — потужна утиліта командного рядка брандмауера. Ви можете налаштувати майже все, що стосується мережевих ресурсів, пакетів, інтерфейсів і окремих сценаріїв.

Крім того, iptables пропонує багато варіантів. Перегляньте його головну сторінку за допомогою команди man, щоб отримати повну картину.

$ man iptables
$ man ip6tables

Далі перевірте мережевий брандмауер і те, як він допомагає зупиняти атаки.