Вивчаємо firewalld: простий і потужний файрвол для Linux на заміну iptables

  1. Зміст статті Налаштування брандмауера за допомогою iptables в Linux присвячена не одна стаття, і,...
  2. можливості firewalld
  3. Продовження доступно тільки учасникам
  4. Варіант 2. Відкрий один матеріал

Зміст статті

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

Iptables і інші

Проект iptables, розроблений Рости Расселом (Rusty Russell) в 1999 році для управління netfilter і замінив в ядрі 2.4 ipchains і ряд інших інструментів на кшталт ipnatctl, пропонує більш розширюваний спосіб фільтрації пакетів, що забезпечує сисадміну більший контроль при спрощення самих правил. Так, в ipchains потрібно було створювати правило в кожної ланцюжку, простежуючи весь маршрут пакета, тепер достатньо одного. Поява модулів дозволяло дуже просто розширювати можливості. У процесі розвитку проекту iptables був портований для IPv6 (в 2011 році, ip6tables), додавалися додаткові модулі (ULOG, nf_conntrack), він навчився виробляти різні маніпуляції з пакетами, класифікувати трафік (до сьомого рівня OSI), балансувати навантаження і багато іншого. З ростом кількості функцій ускладнилися і настройки. При цьому, навіть незважаючи на деяку уніфікацію, кожне розширення має свій синтаксис, одні підтримують діапазони, заперечення, префікси, інші - ні. Спочатку кожна зміна правил вимагало повного перезапуску брандмауера, включаючи вивантаження модулів, що призводило до розриву встановлених з'єднань. Зараз такої проблеми немає.

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

Не дивно, що для вирішення цих проблем були придумані різні надбудови. Так, в Ubuntu для простого налаштування правил використовується ufw (Uncomplicated Firewall - нескладний файрвол). Наприклад, щоб відкрити доступ до SSH-порту, досить ввести

$ Sudo ufw allow 22

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

Ще один відомий проект, що дозволяє легко підтримувати складні правила, - FERM ( for Easy Rule Making ). У FERM все правила зберігаються в одному файлі, який легко читається, редагується і завантажується однією командою. Такий файл просто переносити між комп'ютерами. Самі правила групуються в блоки, містять змінні, списки, що дозволяє задати ті ж настройки в більш короткому і зрозумілому вигляді. Підсумковий розмір правил FERM рази в три менше аналогічних для iptables. Наприклад, забороняємо всі з'єднання, крім HTTP, SSH і FTP.

chain INPUT {policy DROP; mod state state (RELATED ESTABLISHED) ACCEPT; proto tcp dport (http ssh ftp) ACCEPT; }

Під капотом FERM знаходиться звичайний Perl-скрипт, який конвертує конфігураційні файли в правила iptables.

У Fedora 18 був анонсований демон firewalld , Що став офіційним додатком для управління настройками netfilter в RHEL 7 / CentOS 7. Останні стають дедалі популярнішими на VDS, а значить, доведеться зіткнутися з їх особливостями.

можливості firewalld

Firewalld запускається як демон, нові правила додаються без перезапуску і без скидання встановленого файрволу. Зміни в конфігурації можуть бути зроблені в будь-який час і застосовуються миттєво: зберігати або застосовувати зміни не потрібно. Підтримується IPv4, IPv6, автоматичне завантаження модулів ядра і мережеві зони, що визначають рівень довіри з'єднань. Надається простий інтерфейс додавання правил для служб і додатків, білий список додатків, які мають право змінювати правила. В даний час таку можливість підтримує libvirt, Docker, fail2ban, Puppet, скрипт установки Virtuozzo і багато інших проектів. У репозиторії YUM вже є пакети fail2ban-firewalld і puppet-firewalld, тому підключити їх можна однією командою.

Firewalld надає інформацію про поточні настройки брандмауера через D-Bus API, а також приймає зміни через D-Bus з використанням методів аутентифікації PolicyKit. Як бекенд використовуються iptables, ip6tables, ebtables, ipset і планується nftables . Але самі правила, створені безпосередньо цими утилітами, firewalld не може розібрати, тому обидва методи використовувати не можна.

Управління проводиться за допомогою утиліт командного рядка firewall-cmd або графічної firewall-config, що дозволяє налаштувати всі правила в зручній середовищі. Для допомоги в міграції поточних правил iptables на firewalld використовується утиліта firewall-offline-cmd, за замовчуванням зчитує / etc / sysconfig / system-config-firewall. В останніх релізах з'явилася утиліта firewallctl, що має простий синтаксис і дозволяє отримувати інформацію про стан служби, конфігурації брандмауера і змінювати правила.

В останніх релізах з'явилася утиліта firewallctl, що має простий синтаксис і дозволяє отримувати інформацію про стан служби, конфігурації брандмауера і змінювати правила

Графічна firewall-config підтримує firewalld

Графічна firewall-config підтримує firewalld   Параметри firewall-cmd Параметри firewall-cmd

Дивимося статус:

# Systemctl status firewalld # firewall-cmd --state running

Дозволити з'єднання на певний порт дуже просто:

# Firewall-cmd --permanent --add-port = 22 / tcp

Щоб будь-які зміни вступили в силу, завжди після правок повинна бути запущена команда

# Firewall-cmd --reload

Для видалення порту з правил використовується параметр --remove-port:

# Firewall-cmd --remove-port = 22 / tcp

Взагалі, багато команд --add- * мають значення для перевірки статусу --query- *, --list- * - список, зміни --change- * або видалення --remove відповідного значення. Для стислості на цьому не будемо далі загострювати увагу. Після релоад правил перевіряємо:

# Firewall-cmd --list-ports

У firewalld передбачений режим, що дозволяє однією командою заблокувати всі з'єднання:

# Firewall-cmd --panic-on

Для перевірки, в якому режимі знаходиться файрвол, є спеціальний ключ:

# Firewall-cmd --query-panic

Відключається panic mode:

# Firewall-cmd --panic-off

У firewalld необов'язково знати, який порт прив'язаний до сервісу, достатньо вказати назву сервісу. Все інше утиліта візьме на себе.

Після установки firewalld знає настройки більше 50 сервісів, отримуємо їх список.

# Firewall-cmd --get-services

Дозволимо підключення до HTTP:

# Firewall-cmd --add-service = http

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

# Firewall-cmd --info-service = http

Firewalld зберігає всі настройки в XML-файлах в каталогах в / usr / lib / firewalld. Зокрема, сервіси лежать в services. Всередині файлу опис: назва, протокол і порт.

&lt;? Xml version = "1.0" encoding = "utf-8"?> <Service> <short> MySQL </ short> <description> MySQL Database Server </ description> <port protocol = "tcp" port = "3600" /> </ service>

Це каталог системний, і міняти там нічого не можна. Якщо потрібно перевизначити налаштування або створити свій сервіс, то копіюємо будь-який файл як шаблон в / etc / firewalld / services, правимо під свої умови і застосовуємо налаштування.

Для настройки ICMP використовується окремий набір правил. Отримуємо список підтримуваних типів ICMP:

# Firewall-cmd --get-icmptypes

Перевіряємо статус:

# Firewall-cmd --zone = public --query-icmp-block = echo-reply # firewall-cmd --zone = public --add-icmp-block = echo-reply

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

Варіант 1. Приєднайся до товариства «Xakep.ru», щоб читати всі матеріали на сайті

Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score! Детальніше

Варіант 2. Відкрий один матеріал

Зацікавила стаття, але немає можливості стати членом клубу «Xakep.ru»? Тоді цей варіант для тебе! Зверни увагу: цей спосіб підходить тільки для статей, опублікованих більше двох місяців тому.


Lt;?
Encoding = "utf-8"?
Ru»?