Донецкий техникум промышленной автоматики

Iptables - захист VPS на Ubuntu фаєрволом Linux

  1. вступ Міжмережевий екран Linux Iptables використовується для моніторингу вхідного і вихідного трафіку...
  2. Базові поняття в Iptables
  3. 2. Перевірка поточного статусу Iptables
  4. Крок 2 - Визначення ланцюжка правил
  5. 1. Дозвіл трафіку на localhost
  6. 2. Як дозволити встановлювати з'єднання HTTP, SSH, і SSL портам
  7. 3. Фільтрація пакетів на підставі вмісту
  8. 4. Відкидання всього іншого трафіку
  9. 5. Видалення правил
  10. Крок 3 - Збереження змін
  11. висновок

вступ

Міжмережевий екран Linux Iptables використовується для моніторингу вхідного і вихідного трафіку на сервер і його фільтрації. Його робота заснована на правилах, які визначаються користувачами і покликана захистити систему від несанкціонованого доступу кого-небудь. Використовуючи Iptables, ви можете визначити правила, які будуть дозволяти тільки певний трафік на ваш сервер. У цьому керівництві по Iptables ви побачите, як захистити ваше веб-додаток використовуючи Iptables.

Примітка: Для користувачів RHEL / CentOS вже встановлений в операційній системі сервіс firewallD. Якщо ви хочете використовувати Iptables, вам потрібно спочатку його відключити.

що знадобиться

Перш ніж приступити до виконання керівництва, перевірте наявність:

Якщо ви хочете дізнатися більше про SSH і SSH командах дотримуйтесь цього керівництву.

Базові поняття в Iptables

Всі дані відправляються через інтернет в формі пакетів. Ядро Linux забезпечує інтерфейс для фільтрації як входять, так і вихідних пакетів використовуючи таблиці для фільтра пакетів. Iptables - це додаток командного рядка, міжмережевий екран Linux. Ви можете використовувати його для встановлення, обслуговування та перевірки цих таблиць. Можуть бути визначені складні таблиці. У кожній таблиці може бути кілька ланцюжків. Ланцюжки - це ні що інше, як набір правил. Кожне правило визначає, що робити з пакетом, якщо він відповідає деякому заданим шаблоном. Коли пакет відповідає, задається TARGET (дія). Дія може бути виявити відповідність з іншого ланцюжком або одному з трьох спеціальний значень:

  • ACCEPT (прийняти): Що означає, пакету буде дозволено проходження.
  • DROP (скинути): Що означає, пакет не буде дозволено проходження, він буде скинутий і "забутий".
  • RETURN (повернуть): Чи означає, пропустити поточну ланцюжок і повернутися до наступного правила в ланцюжку, з якої він був викликаний.

В рамках даного керівництва ми збираємося працювати з однією з таблиць за замовчуванням під назвою filter. Таблиця фільтрів має три ланцюжки (набору правил).

  • INPUT - Цей ланцюжок використовується для контролю вхідних на сервер пакетів. Ви можете дозволити / заблокувати підключення, в залежності від порту, протоколу або IP-адреси джерела.
  • FORWARD - Дана ланцюжок використовується для фільтра входять на сервер пакетів, але перенаправляє кудись ще.
  • OUTPUT - Цей ланцюжок використовується для фільтра вихідних з вашого сервера пакетів.

Крок 1 - Установка брандмауера Linux Iptables

1. Установка Iptables

Додаток Iptables йде встановленим в багатьох дистрибутивах Linux. Але, якщо раптом у вашій системі Ubuntu / Debian воно не встановлено, виконайте команди:

sudo apt-get update sudo apt-get install updates

2. Перевірка поточного статусу Iptables

Цією командою ви можете перевірити статус конфігурації вашого Iptables. Тут ключ -L використовується для відображення списку всіх правил і ключ -v - для більш детального списку. Будь ласка, зверніть увагу, що ці ключі є чутливими до регістру (case sensitive).

sudo iptables -L -v

Приклад виведення:

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

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

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

Крок 2 - Визначення ланцюжка правил

Визначення правила значить додати його в список (ланцюжок). Ось команди Iptables, доповнені певними параметрами. Нам не обов'язково визначати їх все.

sudo iptables -A -i <interface> -p <protocol (tcp / udp)> -s <source> --dport <port no.> -j <target>

Тут -A вказує на додаток (append). Ланцюжок вказує на ланцюжок, яку ми хочемо доповнити нашими правилами. Значення interface - це мережевий інтерфейс, де ми хочемо виробляти фільтрацію трафіку. Значення protocol вказує на мережевий протокол пакетів, які ви хочете фільтрувати. Також ви можете визначити номер порту - port, за яким ви хочете фільтрувати трафік.

Для отримання більш детальної інформації про командах Iptables і їх параметрах, ви можете відвідати головну сторінку Iptables (Англ).

1. Дозвіл трафіку на localhost

Ми хочемо, щоб все взаємодії між додатком і базою даних на сервері тривали, як зазвичай.

sudo iptables -A INPUT -i lo -j ACCEPT

Приклад виведення на екран:

Chain INPUT (policy ACCEPT 7 packets, 488 bytes) pkts bytes target prot opt ​​in out source destination 0 0 ACCEPT all - lo any anywhere anywhere

Тут опція -A використовується для того, щоб додати до ланцюжка INPUT правило вживати всіх підключення на інтерфейс lo. lo означає петлевий (loopback) інтерфейс. Він використовується для всіх комунікацій на localhost, як взаємодія між базою даних і веб-додатком на одній і тій же машині.

2. Як дозволити встановлювати з'єднання HTTP, SSH, і SSL портам

Ми хочемо, щоб наші постійні підключення по HTTP (порт 80), https (порт 443), ssh (порт 22) працювали як зазвичай. Введіть наступні команди для вирішення цього. Ми визначимо протокол, опція -p і відповідний порт для кожного протоколу опцією -dport (порт призначення - destination port).

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

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

3. Фільтрація пакетів на підставі вмісту

Якщо ви хочете прийняти або відхилити пакети, грунтуючись на IP-адресу або діапазоні IP-адрес, ви можете визначити їх за допомогою опції -s. Наприклад, для прийняття пакетів з адреси 192.168.1.3 -

sudo iptables -A INPUT -s 192.168.1.3 -j ACCEPT

Ви можете налаштувати скидання пакетів з IP-адреси подібної командою з опцією DROP.

sudo iptables -A INPUT -s 192.168.1.3 -j DROP

Якщо вам потрібно скинути пакети з діапазону IP-адрес, вам потрібно використовувати модуль Iprange з опцією -m і задати діапазон IP-адрес з ключем -src-range.

sudo iptables -A INPUT -m iprange --src-range 192.168.1.100-192.168.1.200 -j DROP

4. Відкидання всього іншого трафіку

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

sudo iptables -A INPUT -j DROP

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

sudo iptables -L -v

5. Видалення правил

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

sudo iptables -F

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

sudo iptables -L --line-numbers

Тепер у вас є список правил з номерами.

Chain INPUT (policy ACCEPT) num target prot opt ​​source destination 1 ACCEPT all - 192.168.0.4 anywhere 2 ACCEPT tcp - anywhere anywhere tcp dpt: https 3 ACCEPT tcp - anywhere anywhere tcp dpt: http 4 ACCEPT tcp - anywhere anywhere tcp dpt: ssh

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

sudo iptables -D INPUT 3

Крок 3 - Збереження змін

Правила Iptables, які ми створили, збережені в пам'яті. Це означає, що нам доведеться їх перевизначати після перезавантаження. Для того, щоб зробити ці зміни постійними і після перезавантаження, використовуйте команду в системі Ubuntu / Debian:

sudo / sbin / iptables-save

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

sudo iptables -F sudo / sbin / iptables-save

висновок

У нашому керівництві по Iptables ми використовували міжмережевий екран Linux для дозволу трафіку за певними портам. Ми також переконалися, що наші правила будуть збережені після перезавантаження. Даний міжмережевий екран Linux буде скидати небажані пакети, але тут є застереження - Iptables обробляє тільки трафік ipv4. Якщо на вашому VPS дозволена мережева конфігурація ipv6, вам потрібно встановити інші правила для трафіку з ip6tables.