Контакти

Centos 7 firewall cmd відкрити порт. Установка зони за замовчуванням

Сьогодні я познайомлю вас зі своїм баченням початкової конфігурації універсального сервера на популярній ОС. Я розповім про те, як зробити базову настройку сервера centos відразу після установки для використання його в будь-якій якості на ваш розсуд. наведені практичні поради підвищують безпеку і зручність роботи з сервером. Стаття буде актуальна для двох останніх релізів Centos - 7 і 8.

  1. Перерахувати початкові настройки centos, які я виконую на свіжовстановленому сервері.
  2. Показати приклади конфігурацій, які я використовую в типовій налаштуванні.
  3. Дати поради по налаштуванню centos на основі свого досвіду роботи з системою.
  4. Привести список типових програм і утиліт, які допомагають адмініструвати сервер.

Дана стаття є частиною єдиного циклу статтею про сервер.

Вступ

Після виходу нового релізу Centos 8, стало важко в єдиній статті описувати початкову настройку обох серверів, але мені не захотілося розділяти статтю, так як на неї йде багато вхідних посилань з різних місць. Зручніше підтримувати загальний матеріал по обом релізів, ніж я і займуся. Заодно наочно буде видно відмінності двох версій, які пару років після виходу centos 8 будуть актуальні обидві і використовувати доведеться і ту, і іншу версію, в залежності від ситуації.

У Centos 7 використовується пакетний менеджер yum, А в Centos 8 - dnf. При цьому залишили символьне посилання з yum на dnf, так що можна писати як перша назва, так і друге. Для однаковості я всюди буду використовувати yum, а вас попереджаю, просто щоб ви розуміли, чому я роблю саме так. Реально в CentOS 8 використовується dnf, це інший, більш сучасний пакетний менеджер, які дозволяє працювати з різними версіями одного і того ж софта. Для цього використовуються окремі репозиторії, які з'явилися для centos 8.

Початкова настройка CentOS

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

оновлюємо систему

# Yum update

Для зручності адміністрування, я завжди встановлюю Midnight Commander, або просто mc:

# Yum install mc

І відразу ж для нього включаю підсвічування синтаксису всіх файлів, які не позначені явно в файлі / Usr / share / mc / syntax / Syntax синтаксисом для sh і bash скриптів. Цей універсальний синтаксис нормально підходить для конфігураційних файлів, з якими найчастіше доводиться працювати на сервері. Перезаписуємо файл unknown.syntax. Саме цей шаблон буде застосовуватися к.conf і.cf файлів, так як до них явно не прив'язане ніякого синтаксису.

# Cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax

Далі нам знадобляться мережеві утиліти. Залежно від набору початкових пакетів, які ви вибираєте при установці системи, у вас буде той чи інший набір мережевих утиліт. Ось список тих, до яких звик особисто я - ifconfig, netstat, nslookup і деякі інші. Якщо вона вам потрібні, так само як і мені, то пропоную їх встановити окремо, якщо вони ще не стоять. Якщо вам вони особливо не потрібні і ви ними не користуєтеся, то можете пропустити їх установку. Перевіримо, що у нас є в системі на поточний момент

# ifconfig

Якщо побачите відповідь:

Bash: ifconfig: command not found

Значить утиліта не встановлена. Замість ifconfig в CentOS тепер утиліта ip. Це відноситься не тільки до центос. Така картина майже в усіх популярних сучасних дистрибутивах Linux. Я з давніх часів звик до ifconfig, хоча останнім часом практично не користуюся. Мені завжди подобалося, що в різних дистрибутивах Лінукс все приблизно однакове. За допомогою ifconfig можна налаштувати мережу не тільки в linux, але і в freebsd. Це зручно. А коли в кожному дистрибутиві свій інструмент це не зручно. Хоча зараз це вже не дуже актуально, так як з Freebsd більше не працюю, а утиліта ip є у всіх дистрибутивах linux. Проте, якщо вам потрібен ifconfig, то можете встановити пакет net-tools, В який вона входить:

# Yum install net-tools

Щоб у нас працювали команди nslookup або, наприклад, host необхідно встановити пакет bind-utils. Якщо цього не зробити, то на команду:

# nslookup

Буде висновок:

Bash: nslookup: command not found

Так що встановлюємо bind-utils:

# Yum install bind-utils

відключити SELinux

Відключаємо SELinux. Його використання та налаштування окрема розмова. Зараз я не буду цим займатися. Так що відключаємо:

# Mcedit / etc / sysconfig / selinux

міняємо значення

SELINUX \u003d disabled

Щоб зміни вступили в силу, можна перезавантажитися:

# reboot

А якщо хочете без перезавантаження застосувати відключення SELinux, то виконайте команду:

# Setenforce 0

Постійно отримую дуже багато критики на тему відключення SELinux. Я знаю, як він працює, вмію його налаштовувати. Це реально не дуже складно і освоїти не важко. Це мій свідомий вибір, хоча іноді я його налаштовую. Мій формат роботи з системою такий, що SELinux мені частіше за все не потрібен, тому я не витрачаю на нього час і в базовому налаштуванні centos відключаю. Безпека системи - комплексна робота, особливо в сучасному світі web розробки, де правлять бал мікросервіси і контейнери. SELinux нішевий інструмент, які потрібен не завжди і не скрізь. Тому в даному статті йому не місце. Кому потрібно, буде окремо включати SELinux і налаштовувати.

Вказуємо мережеві параметри

Продовжуємо базову настройку centos після установки. Тепер зробимо, якщо з якоїсь причини не зробили це під час установки, або якщо вам треба їх змінити. У загальному випадку, мережа в Centos налаштовується за допомогою NetworkManager і його консольної утиліти nmtui. Вона йде в базовій устновка системи. Там простий і зрозумілий графічний інтерфейс, Так що розповідати нічого. Я більше звик налаштовувати мережу через конфігураційні файли network-scripts. У centos 7-й версії вони є з коробки, в 8-й версії їх прибрали. Щоб скористатися ними для настройки мережі, треба окремо встановити пакет network-scripts.

# Yum install network-scripts

Тепер вона може змінювати мережі. Для цього відкриваємо файл / Etc / sysconfig / network-scripts / ifcfg-eth0

# Mcedit / etc / sysconfig / network-scripts / ifcfg-eth0

Якщо ви отримуєте мережеві настройки по dhcp, то мінімальний набір налаштувань в файлі конфігурації буде такою.

TYPE \u003d "Ethernet" BOOTPROTO \u003d "dhcp" DEFROUTE \u003d "yes" IPV4_FAILURE_FATAL \u003d "no" NAME \u003d "eth0" DEVICE \u003d "eth0" ONBOOT \u003d "yes"

Для настройки статичного ip адреси настройки будуть наступні.

TYPE \u003d "Ethernet" BOOTPROTO \u003d "none" DEFROUTE \u003d "yes" IPV4_FAILURE_FATAL \u003d "no" NAME \u003d "eth0" DEVICE \u003d "eth0" ONBOOT \u003d "yes" IPADDR \u003d 192.168.167.117 DNS1 \u003d 192.168.167.113 PREFIX \u003d 28 GATEWAY \u003d 192.168.167.113

В поле IPADDR вводимо свою адресу, в PREFIX маску мережі, в GATEWAY шлюз, DNS адресу ДНС сервера. Зберігаємо файл і перезапускаємо мережу для застосування налаштувань:

# Systemctl restart network

налаштовуємо firewall

Додавання репозиторіїв

При налаштуванні centos частенько потрібен софт, якого немає в стандартній ріпі. для інсталяції додаткових пакетів необхідно. Найбільш популярний це EPEL. Раніше був rpmforge, але вже як кілька років закритий. Про нього все забули. Підключаємо репозиторій EPEL. З ним все просто, він додається зі стандартної ріпи:

# Yum install epel-release

Так само для CentOS 7 вкрай корисний репозиторій REMI, який дозволяє встановити больее свіжі версії php, на відміну від тих, що є в стандартному репозиторії. Нагадаю, що це версія php 5.4, яка вже нікуди не годиться і знята з підтримки.

# Rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Для Centos 8 remi поки що не стоїть, але думаю, що це тимчасово. В принципі, мені цих двох репозиторіїв в centos зазвичай вистачає в загальному випадку. Інші підключаються вже під конкретні потреби для установки різного софту.

Налаштування зберігання історії в bash_history

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

  1. За замовчуванням, зберігаються тільки останні 1000 команд. Якщо їх буде більше, то більше старі будуть видалятися і замінюватися новими.
  2. Чи не вказані дати виконання команд, тільки їх список в порядку виконання.
  3. Файл зі списком команд оновлюється після завершення сесії. При паралельних сесіях частина команд може бути загублена.
  4. Зберігаються абсолютно всі команди, хоча в зберіганні деяких немає ніякого сенсу.

Список останніх виконаних команд зберігається в домашній директорії користувача в файлі .bash_history (На початку точка). Його можна відкрити будь-яким редактором і подивитися. Для більш зручного виведення списку, можна в консолі ввести команду:

# history

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

# History | grep yum

Так ми побачимо всі варіанти запуску команди yum, які зберігаються в історії. Виправимо перелічені недоліки стандартних налаштувань зберігання історії команд в CentOS. Для цього потрібно відредагувати файл .bashrc, Який знаходиться в тому ж каталозі, що і файл з історією. Додаємо в нього наступні рядки:

Export HISTSIZE \u003d 10000 export HISTTIMEFORMAT \u003d "% h% d% H:% M:% S" PROMPT_COMMAND \u003d "history -a" export HISTIGNORE \u003d "ls: ll: history: w: htop"

Перший параметр збільшує розмір файлу до 10000 рядків. Можна зробити і більше, хоча зазвичай вистачає такого розміру. Другий параметр вказує, що необхідно зберігати дату і час виконання команди. Третій рядок змушує відразу ж після виконання команди зберігати її в історію. В останньому рядку ми створюємо список виключень для тих команд, запис яких в історію не потрібно. Я навів приклад найпростішого списку. Можете доповнити його на свій розсуд.

Для застосування змін необхідно разлогініться і підключитися заново або виконати команду:

# Source ~ / .bashrc

По налаштуванню зберігання історії команд все. У файлі .bashrc можна багато чого налаштувати цікавого. Я у свій час захоплювався і експериментував, але потім все закинув, так як не має сенсу. Працюючи з серверами замовників я найчастіше бачу дефолтний bash, тому краще звикати і працювати саме в ньому. А окремі настройки і прикрашення це доля особистих комп'ютерів і серверів. Чи не робітників. Так що більше я нічого не налаштовувати за стандартом в centos сервері в цьому плані.

Автоматичне оновлення системи

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

Yum-cron

Для автоматичної перевірки оновлень в Centos 7 нам допоможе утиліта yum-cron. Ставиться вона традиційно через yum зі стандартного сховища.

# Yum install yum-cron

Після установки yum-cron створюється автоматичне завдання на виконання утиліти в /etc/cron.daily і /etc/cron.hourly. За замовчуванням, утиліта викачує знайдені оновлення, але не застосовує їх. Замість цього, адміністратору на локальний поштовий ящик root надсилається повідомлення про оновлення. Далі ви вже в ручному режимі заходите і вирішуєте, встановлювати оновлення чи ні у зручний для вас час. Мені такий режим роботи бачиться найбільш зручним, тому я не змінюю ці настройки.

Налаштовувати yum-cron можна через, конфігураційні файли, які знаходяться за адресою /etc/yum/yum-cron.conf і yum-cron-hourly.conf. Вони непогано прокоментовані, так що в докладних роз'яснень не потребують. Звертаю увагу на розділ , Де можна вказати параметри відправлення повідомлень. За замовчуванням варто відправка пошти через локальний хост. Можна тут змінити параметри і відправляти повідомлення через сторонній поштовий сервер. Але замість цього особисто я віддаю перевагу глобально для всього сервера налаштувати пересилання локальної пошти root на зовнішній поштовий ящик через авторизацію на іншому smtp сервері.

Dnf-automatic

Як я вже говорив раніше, в Centos 8 використовується інший пакетний менеджер - dnf. Налаштування поновлення пакетів там виконується через утиліту dnf-automatic. Поставимо її і налаштуємо.

# Yum install dnf-automatic

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

# Systemctl list-timers * dnf- *

Якщо там немає жодного завдання, то додати таймер можна вручну:

# Systemctl enable --now dnf-automatic.timer

Дефолтний таймер налаштований на запуск dnf-automatic через годину після завантаження сервера і щоденне повторення. Конфиг таймера живе тут - /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.

Конфиг для dnf-automatic живе в /etc/dnf/automatic.conf. За замовчуванням він тільки викачує оновлення, але не застосують їх. Конфиг добре прокоментований, так що можете його налаштувати так, як забажаєте. Окремих пояснень не потрібно. Налаштуйте оновлення пакетів системи на свій розсуд. Як я вже сказав, автоматично тільки качаю їх. Установку завжди тримаю під контролем з ручним керуванням.

Відключаємо флуд повідомлень в / var / log / messages

Продовжуючи настройку centos, виправимо одне невелика незручність. У дефолтной установці системи 7-й версії, весь ваш системний лог / Var / log / messages через деякий час роботи сервера буде забитий такими записами.

Oct 16 14:01:01 xs-files systemd: Created slice user-0.slice. Oct 16 14:01:01 xs-files systemd: Starting user-0.slice. Oct 16 14:01:01 xs-files systemd: Started Session 14440 of user root. Oct 16 14:01:01 xs-files systemd: Starting Session 14440 of user root. Oct 16 14:01:01 xs-files systemd: Removed slice user-0.slice. Oct 16 14:01:01 xs-files systemd: Stopping user-0.slice. Oct 16 15:01:01 xs-files systemd: Created slice user-0.slice. Oct 16 15:01:01 xs-files systemd: Starting user-0.slice. Oct 16 15:01:01 xs-files systemd: Started Session 14441 of user root. Oct 16 15:01:01 xs-files systemd: Starting Session 14441 of user root. Oct 16 15:01:01 xs-files systemd: Started Session 14442 of user root. Oct 16 15:01:01 xs-files systemd: Starting Session 14442 of user root. Oct 16 15:01:01 xs-files systemd: Removed slice user-0.slice. Oct 16 15:01:01 xs-files systemd: Stopping user-0.slice. Oct 16 16:01:01 xs-files systemd: Created slice user-0.slice. Oct 16 16:01:01 xs-files systemd: Starting user-0.slice. Oct 16 16:01:01 xs-files systemd: Started Session 14443 of user root. Oct 16 16:01:01 xs-files systemd: Starting Session 14443 of user root. Oct 16 16:01:01 xs-files systemd: Removed slice user-0.slice.

У Centos 8 я їх не помітив, тому там нічого робити не треба. Ніякої практичної користі повідомлення не несуть, тому відключимо їх. Для цього створимо окремий правило для rsyslog, де перерахуємо всі шаблони повідомлень, які будемо вирізати. Розмістимо це правило в окремому файлі /etc/rsyslog.d/ignore-systemd-session-slice.conf.

# Cd /etc/rsyslog.d && mcedit ignore-systemd-session-slice.conf if $ programname \u003d\u003d "systemd" and ($ msg contains "Starting Session" or $ msg contains "Started Session" or $ msg contains "Created slice "or $ msg contains" Starting user- "or $ msg contains" Starting User Slice of "or $ msg contains" Removed session "or $ msg contains" Removed slice User Slice of "or $ msg contains" Stopping User Slice of " ) then stop

Зберігаємо файл і перезапускаємо rsyslog для застосування налаштувань.

# Systemctl restart rsyslog

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

Установка iftop, atop, htop, lsof на CentOS

І наостанок в завершенні настройки додамо кілька корисних утиліт, Які можуть стати в нагоді в процесі експлуатації сервера.

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

# Yum install iftop

І два цікавих диспетчера задач, я найчастіше користуюся htop, але іноді стане в нагоді і atop. Ставимо обидва, самі подивіться, розберетеся, що вам більше подобається, підходить:

# Yum install htop # yum install atop

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

# Yum install wget bzip2 traceroute gdisk

На цьому у мене все. Базова настройка CentOS закінчена, можна приступати до встановлення та налаштування основного функціоналу.

Налаштування системної пошти

На завершення налаштування сервера CentOS зробимо так, що б пошта, адресована локальному root, відправлялася через зовнішній поштовий сервер на обраний поштову скриньку. Якщо цього не зробити, то вона буде локально складатися в файл / Var / spool / mail / root. А там може бути важлива і корисна інформація. Налаштуємо її відправку в ящик системного адміністратора.

Детально про це я розповів в окремій статті -. Тут коротко тільки команди і швидке налаштування. Ставимо необхідні пакети:

# Yum install mailx cyrus-sasl cyrus-sasl-lib cyrus-sasl-plain postfix

Малюємо приблизно такий конфіг для postfix.

Cat /etc/postfix/main.cf ## DEFAULT CONFIG BEGIN ###################### queue_directory \u003d / var / spool / postfix command_directory \u003d / usr / sbin daemon_directory \u003d / usr / libexec / postfix data_directory \u003d / var / lib / postfix mail_owner \u003d postfix inet_interfaces \u003d localhost inet_protocols \u003d all unknown_local_recipient_reject_code \u003d 550 alias_maps \u003d hash: / etc / aliases alias_database \u003d hash: / etc / aliases debug_peer_level \u003d 2 debugger_command \u003d PATH \u003d / bin: / usr / bin: / usr / local / bin: / usr / X11R6 / bin ddd $ daemon_directory / $ process_name $ process_id & sleep 5 sendmail_path \u003d /usr/sbin/sendmail.postfix newaliases_path \u003d / usr / bin / newaliases.postfix mailq_path \u003d /usr/bin/mailq.postfix setgid_group \u003d postdrop html_directory \u003d no manpage_directory \u003d / usr / share / man sample_directory \u003d /usr/share/doc/postfix-2.10.1/samples readme_directory \u003d / usr / share / doc / postfix-2.10.1 / README_FILES ## DEFAULT CONFIG END ###################### # Ім'я сервера, яке виводить команда hostname myhostname \u003d centos-test. xs.local # Тут п про логіку потрібно залишати тільки домен, але в даному випадку краще залишити повне ім'я сервера, щоб в поле відправник # фігурувало повне ім'я сервера, так зручніше розбирати службові повідомлення mydomain \u003d centos-test.xs.local mydestination \u003d $ myhostname myorigin \u003d $ mydomain # Адреса сервера, через який будемо відправляти пошту relayhost \u003d mailsrv.mymail.ru:25 smtp_use_tls \u003d yes smtp_sasl_auth_enable \u003d yes smtp_sasl_password_maps \u003d hash: / etc / postfix / sasl_passwd smtp_sasl_security_options \u003d noanonymous smtp_tls_security_level \u003d may

Створюємо файл з інформацією про ім'я користувача та пароль для авторизації.

# Mcedit / etc / postfix / sasl_passwd mailsrv.mymail.ru:25 [Email protected]: password

Створюємо db файл.

# Postmap / etc / postfix / sasl_passwd

Тепер можна запустити знову postfix і перевірити роботу.

# Systemctl restart postfix

До стандартного АЛІАС для root в / Etc / aliases, Додайте зовнішню адресу, куди буде дублюватися пошта, адресована root. Для цього редагуємо вказаний файл, змінюючи останній рядок.

#root: marc

Root: root, [Email protected]

Оновлюємо базу сертифікатів:

# newaliases

Відправимо лист через консоль локальному руту:

# Df -h | mail -s "Disk usage" root

Лист повинен піти на зовнішній ящик. Якщо ви будете використовувати ящик від Яндекса, то швидше за все отримаєте помилку в балці поштового сервера і лист не буде відправлено.

Relay \u003d smtp.yandex.ru: 25, delay \u003d 0.25, delays \u003d 0/0 / 0.24 / 0.01, dsn \u003d 5.7.1, status \u003d bounced (host smtp.yandex.ru said: 553 5.7.1 Sender address rejected: not owned by auth user. (in reply to MAIL FROM command))

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

На цьому настройка локальної пошти закінчена. Тепер всі листи, адресовані локальному root, наприклад, звіти від cron, будуть дублюватися на зовнішній поштовий ящик, причому з відправкою через повноцінний поштовий сервер. Так що листи будуть нормально доставлятися, не потрапляючи в спам (хоча не обов'язково, є ще евристичні фільтри).

висновок

Ми виконали деякі початкові кроки по налаштуванню сервера CentOS, які я зазвичай роблю при підготовці сервера відразу після установки. Я не претендую на абсолютну істину, можливо щось пропускаю або роблю не зовсім вірно. Буду радий розумним і осмисленим коментарям і зауваженням з пропозиціями.

..
  • Розуміння особливостей розгортання, налаштування і обслуговування мереж, побудованих на базі Linux.
  • Здатність швидко вирішувати виникаючі проблеми і забезпечувати стабільну і безперебійну роботу системи.
  • Перевірте себе на вступний тест і дивіться докладніше програму по.

    На захист сервера від зовнішніх загроз в першу чергу постає між мережевий екран, Який фільтрує вхідний і вихідний трафік. Налаштуванням iptables - окремого випадку фаервола на CentOS я хочу зайнятися в даній статті, а також розповісти про його встановлення і відключенні. Моє керівництво не буде вичерпним, я розгляну лише ті аспекти, які вважаю найбільш важливими і сам використовую у своїй роботі.

    Дана стаття є частиною єдиного циклу статтею про сервер.

    вступ

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

    До цього фаєрвол існують різні обв'язки, які використовуються для більш «зручною» настройки. У ubuntu є ufw, В centos - firewalld, З іншими не знайомий. Особисто я не бачу ніякого зручності у використанні цих інструментів. Я звик налаштовувати лінуксовий фаєрвол по-старому, як навчився на самому початку роботи. Мені здається це найбільш простим і зручним способом, яким я з вами і поділюся. Суть його зводиться до того, що створюється скрипт з правилами фаервола. Цей скрипт можна легко редагувати під свої потреби і переносити з сервера на сервер.

    відключення firewalld

    Питання відключення firewalld я вже торкався в темі по. Насамперед відключимо firewalld, який присутній в centos 7 по-замовчуванню відразу після установки:

    # Systemctl stop firewalld

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

    # Systemctl disable firewalld

    Після цього на сервері настройки мережевого екрану стають повністю відкритими. Подивитися правила iptables можна командою:

    установка iptables

    Насправді фаєрвол у нас на сервері вже стоїть і працює, просто немає ніяких правил, все відкрито. Встановити нам потрібно буде додаткові утиліти управління, без яких конфігурувати iptables неможливо. Наприклад, не можна буде перезапустити фаєрвол:

    # Systemctl restart iptables.service Failed to issue method call: Unit iptables.service failed to load: No such file or directory.

    Або додати в автозапуск не вийде:

    # Systemctl enable iptables.service Failed to issue method call: No such file or directory

    Щоб подібних помилок не було, встановимо необхідний пакет з утилітами:

    # Yum -y install iptables-services

    Тепер можна додати iptables в автозавантаження і запустити:

    # Systemctl enable iptables.service # systemctl start iptables.service

    Налаштування фаервола

    Для управління правилами фаервола я використовую скрипт. Створимо його:

    # Mcedit /etc/iptables.sh

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

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

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

    Перед застосуванням нових правил, очищаємо все ланцюжка:

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

    Дозволяємо весь трафік локалхоста і локалки:

    Дозволяємо робити ping:

    Якщо вам це не потрібно, то не додавайте дозволяють правила для icmp.

    Відкриваємо доступ в інет самому сервера:

    Якщо ви хочете відкрити всі вхідні з'єднання сервера, то додавайте далі правило:

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

    Блокуємо нульові пакети:

    Закриваємося від syn-flood атак:

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

    Слідом забороняємо доступ з інету в локальну мережу:

    Щоб наша локальна мережа користувалася інтернетом, включаємо nat:

    Щоб не втратити доступ до сервера, після застосування правил, дозволяємо підключення по ssh:

    І в кінці записуємо правила, щоб вони застосували після перезавантаження:

    Ми склали найпростіший конфиг, який блокує всі вхідні з'єднання, крім ssh і надати їм доступ з локальної мережі в інтернет. Попутно захистилися від деяких мережевих атак.

    Зберігаємо скрипт, робимо виконуваним і запускаємо:

    # Chmod 0740 /etc/iptables.sh # /etc/iptables.sh

    Виконаємо перегляд правил і перевіримо, чи всі правила на місці:

    # Iptables -L -v -n

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

    відкриття портів

    Тепер трохи розширимо нашу конфігурацію і відкриємо в iptables порти для деяких сервісів. Припустимо, у нас працює веб-сервер і необхідно відкрити до нього доступ з інтернету. Додаємо правила для веб-трафіку:

    Було додано дозвіл на вхідні з'єднання по 80-му і 443-му портам, які використовує web сервер у своїй роботі.

    Якщо у вас встановлений поштовий сервер, то потрібно дозволити на нього вхідні з'єднання по всіх використовуваних портів:

    Для коректної роботи DNS сервера, потрібно відкрити UDP порт 53

    Проброс (forward) порту

    Розглянемо ситуацію, коли необхідно виконати кидок портів з зовнішнього інтерфейсу на якийсь комп'ютер в локальній мережі. Припустимо, вам необхідно отримати rdp доступ до комп'ютера 10.1.3.50 з інтернету. Робимо кидок TCP порту 3389:

    Якщо ви не хочете світити зовні відомим портом, то можна зробити перенаправлення з нестандартного порту на порт rdp кінцевого комп'ютера:

    Якщо ви прокидаємо порт зовні всередину локальної мережі, то обов'язково закоментуйте правило, яке блокує доступ із зовнішньої мережі у внутрішню. У моєму прикладі це правило: $ IPT -A FORWARD -i $ WAN -o $ LAN1 -j REJECT

    Або перед цим правилом створіть дозволяє правило для доступу зовні до внутрішнього сервісу, наприклад ось так:

    $ IPT -A FORWARD -i $ WAN -d 10.1.3.50 -p tcp -m tcp --dport 3389 -j ACCEPT

    включення логів

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

    Всі заблоковані пакети ви зможете відстежити в файлі / var / log / messages.

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

    Як відключити iptables

    Якщо ви раптом вирішите, що firewall вам більше не потрібен, то відключити його можна таким чином:

    # Systemctl stop iptables.service

    Ця команда зупиняє фаєрвол. А наступна видаляє з автозавантаження:

    # Systemctl disable iptables.service

    Відключивши мережевий екран, ми вирішили всі з'єднання.

    висновок

    Як і обіцяв, викладаю готовий скрипт з основним набором правил, які ми розглянули

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

    онлайн-курсом «Адміністратор Linux» в OTUS. Курс не для новачків, для надходження потрібні базові знання з мереж і установці Linux на виртуалку. Навчання триває 5 місяців, після чого успішні випускники курсу зможуть пройти співбесіди у партнерів. Що дасть вам цей курс:

    • Знання архітектури Linux.
    • Освоєння сучасних методів та інструментів аналізу і обробки даних.
    • Уміння підбирати конфігурацію під необхідні завдання, управляти процесами і забезпечувати безпеку системи.
    • Володіння основними робочими інструментами системного адміністратора.
    • Розуміння особливостей розгортання, налаштування і обслуговування мереж, побудованих на базі Linux.
    • Здатність швидко вирішувати виникаючі проблеми і забезпечувати стабільну і безперебійну роботу системи.
    Перевірте себе на вступний тест і дивіться докладніше програму по.

    Встановлений в операційній системі Firewall використовується для запобігання несанкціонованого проходження трафіку між комп'ютерними мережами. Вручну або автоматично створюються спеціальні правила для брандмауера, які і відповідають за управління доступом. В ОС, розробленої на ядрі Linux, CentOS 7 є вбудований фаєрвол, а управління ним здійснюється за допомогою брандмауера. За замовчуванням задіяний FirewallD, і про його налаштування ми б хотіли поговорити сьогодні.

    Як вже було сказано вище, стандартним брандмауером в CentOS 7 призначена утиліта FirewallD. Саме тому настройка фаервола буде розглянута на прикладі цього інструменту. Задати правила фільтрації можна і за допомогою тієї ж iptables, але це виконується трохи іншим чином. Зі зміною згаданої утиліти рекомендуємо ознайомитися, перейшовши за наступним посиланням, а ми ж почнемо розбір FirewallD.

    Основні поняття брандмауера

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

    • trusted - максимальний рівень довіри до всіх пристроїв мережі;
    • home - група локальної мережі. Існує довіру до оточення, але при цьому вхідні з'єднання доступні тільки для певних машин;
    • work - робоча зона. Присутній довіру до більшості пристроїв, а також активуються додаткові сервіси;
    • dmz - зона для ізольованих комп'ютерів. Такі пристрої від'єднані від решти мережі і пропускають тільки певний вхідний трафік;
    • internal - зона внутрішніх мереж. Довіра застосовується до всіх машин, відкриваються додаткові сервіси;
    • external - зворотна до попередньої зона. У зовнішніх мережах активна маскування NAT, закриваючи внутрішню мережу, але не блокуючи можливість отримання доступу;
    • public - зона загальнодоступних мереж з недовірою до всіх пристроїв і індивідуальним прийомом вхідного трафіку;
    • block - всі вхідні запити скидаються з відправленням помилки icmp-host-prohibited або icmp6-adm-prohibited;
    • drop - мінімальний рівень довіри. Вхідні з'єднання скидаються без будь-яких повідомлень.

    Самі ж політики бувають тимчасові і постійні. При появі або редагуванні параметрів дію фаервола відразу змінюється без потреби перезавантаження. Якщо ж були застосовані тимчасові правила, після рестарту FirewallD вони будуть скинуті. Перманентне правило на те так і називаються - воно буде збережено на постійній основі при застосуванні аргументу -permanent.

    Увімкнути брандмауер FirewallD

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

    1. запустіть класичний «Термінал» будь-яким зручним способом, наприклад, через меню «Додатки».
    2. Введіть команду sudo systemctl start firewalld.service і натисніть на клавішу Enter.
    3. Управління утилітою здійснюється від імені суперкористувача, тому доведеться підтвердити справжність, вказавши пароль.
    4. Щоб переконатися у функціонуванні сервісу, вкажіть firewall-cmd --state.
    5. У відкритому графічному вікні повторно підтвердите справжність.
    6. З'явиться новий рядок. значення «Running» говорить про те, що фаєрвол працює.

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

    Перегляд правил за замовчуванням і доступних зон

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

    1. Визначити функціонуючу за замовчуванням зону допоможе команда firewall-cmd --get-default-zone.
    2. Після її активації ви побачите новий рядок, Де відобразиться потрібний параметр. Наприклад, на скріншоті нижче активної вважається зона «Public».
    3. Проте активними можуть бути відразу кілька зон, до того ж вони прив'язуються до окремого інтерфейсу. Дізнайтеся цю інформацію через firewall-cmd --get-active-zones.
    4. Команда firewall-cmd --list-all виведе на екран правила, задані для зони за замовчуванням. Зверніть увагу на скріншот нижче. Ви бачите, що активній зоні «Public» присвоєно правило «Default» - функціонування за замовчуванням, інтерфейс «Enp0s3» і додано два сервісу.
    5. Якщо з'явилася потреба дізнатися всі доступні зони брандмауера, введіть firewall-cmd --get-zones.
    6. Параметри ж конкретної зони визначаються через firewall-cmd --zone \u003d name --list-all, де name - назва зони.

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

    Параметри зон інтерфейсів

    Як ви знаєте з інформації вище, для кожного інтерфейсу визначається своя зона за замовчуванням. Він буде перебувати в ній до тих пір, поки налаштування не зміняться користувачем або програмно. Можливий ручної перенесення інтерфейсу в зону на одну сесію, і здійснюється він активацією команди sudo firewall-cmd --zone \u003d home --change-interface \u003d eth0. результат «Success» свідчить про те, що перенесення пройшов успішно. Нагадаємо, що такі настройки скидаються відразу після перезавантаження фаервола.

    При подібному зміні параметрів слід враховувати, що робота сервісів може бути скинута. Деякі з них не підтримують функціонування в певних зонах, припустимо, SSH хоч і доступний в «Home», Але в призначених для користувача або особливих сервіс працювати відмовиться. Переконатися в тому, що інтерфейс був успішно прив'язаний до нової гілки можна, запровадивши firewall-cmd --get-active-zones.

    Якщо ви захочете скинути зроблені раніше настроювання, просто виконайте рестарт брандмауера: sudo systemctl restart firewalld.service.

    Часом не завжди зручно змінювати зону інтерфейсу всього на одну сесію. У такому випадку потрібно редагувати конфігураційний файл, щоб всі налаштування ввелись на перманентної основі. Для цього ми радимо використовувати текстовий редактор nano, Який встановлюється з офіційного сховища sudo yum install nano. Далі залишається провести такі дії:

    1. Відкрийте конфігураційний файл через редактор, ввівши sudo nano / etc / sysconfig / network-scripts / ifcfg-eth0, де eth0 - назва необхідного інтерфейсу.
    2. Підтвердіть справжність облікового запису для виконання подальших дій.
    3. Пошукайте параметр «ZONE» і поміняйте його значення на потрібне, наприклад, public або home.
    4. затисніть клавіші Ctrl + O, Щоб зберегти зміни.
    5. Не змінюйте ім'я файлу, а просто натисніть на Enter.
    6. Вийдіть з текстового редактора через Ctrl + X.

    Тепер зона інтерфейсу буде такою, якою ви її вказали, до моменту наступного редагування конфігураційного файлу. Щоб оновлені параметри вступили в дію, виконайте sudo systemctl restart network.service і sudo systemctl restart firewalld.service.

    Установка зони за замовчуванням

    Вище ми вже демонстрували команду, яка дозволяла дізнатися встановлену за замовчуванням зону. Її також можна змінити, встановивши параметр на свій вибір. Для цього в консолі досить прописати sudo firewall-cmd --set-default-zone \u003d name, де name - ім'я необхідної зони.

    Про успішність виконання команди буде свідчити напис «Success» в окремому рядку. Після цього всі поточні інтерфейси прив'яжуться до зазначеної зоні, якщо іншого не задано в конфігураційних файлах.

    Створення правил для програм і утиліт

    На самому початку статті ми розповіли про дії кожної зони. Визначення сервісів, утиліт і програм в такі галузі дозволить застосувати для кожної з них індивідуальні параметри під запити кожного користувача. Для початку радимо ознайомитися з повним списком доступних на даний момент сервісів: firewall-cmd --get-services.

    Результат відобразиться прямо в консолі. Кожен сервер розділений прогалиною, і в списку ви зможете з легкістю відшукати Вас інструмент. Якщо ж потрібний сервіс відсутній, його слід додатково встановити. Про правила інсталяції читайте в офіційній документації програмного забезпечення.

    Зазначена вище команда демонструє тільки назви сервісів. Детальна інформація по кожному з них виходить через індивідуальний файл, що знаходиться по шляху / usr / lib / firewalld / services. Такі документи мають формат XML, шлях, наприклад, до SSH виглядає так: /usr/lib/firewalld/services/ssh.xml, а документ має наступне вміст:

    SSH
    Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.

    Активується підтримка сервісу в певній зоні вручну. В «Терміналі» слід задати команду sudo firewall-cmd --zone \u003d public --add-service \u003d http, де --zone \u003d public - зона для активації, а --add-service \u003d http - назва сервісу. Врахуйте, що така зміна буде діяти тільки в межах однієї сесії.

    Перманентне додавання здійснюється через sudo firewall-cmd --zone \u003d public --permanent --add-service \u003d http, а результат «Success» свідчить про успішне завершення операції.

    переглянути повний список постійних правил для певної зони можна, відобразивши список в окремому рядку консолі: sudo firewall-cmd --zone \u003d public --permanent --list-services.

    Рішення неполадки з відсутністю доступу до сервісу

    Стандартно в правилах брандмауера вказані найпопулярніші і безпечні сервіси як дозволені, проте деякі стандартні або сторонні додатки він блокує. У такому випадку користувачеві вручну потрібно змінити налаштування, щоб вирішити проблему з доступом. Зробити це можна двома різними методами.

    проброс порту

    Як відомо, всі мережеві сервіси використовують певний порт. Він запросто виявляється фаєрволом, і по ньому можуть виконуватися блокування. Щоб уникнути таких дій з боку фаервола, потрібно відкрити необхідний порт командою sudo firewall-cmd --zone \u003d public --add-port \u003d 0000 / tcp, де --zone \u003d public - зона для порту, --add-port \u003d 0000 / tcp - номер і протокол порту. Опція firewall-cmd --list-ports відобразить список відкритих портів.

    Якщо ж вам необхідно відкрити порти, що входять в діапазон, скористайтеся рядком sudo firewall-cmd --zone \u003d public --add-port \u003d 0000-9999 / udp, де --add-port \u003d 0000-9999 / udp - діапазон портів і їх протокол.

    Наведені вище команди лише дозволять протестувати застосування подібних параметрів. Якщо воно пройшло успішно, слід додати ці ж порти в постійні настройки, а робиться це шляхом введення sudo firewall-cmd --zone \u003d public --permanent --add-port \u003d 0000 / tcp або sudo firewall-cmd --zone \u003d public --permanent --add-port \u003d 0000-9999 / udp. Перелік відкритих постійних портів проглядається так: sudo firewall-cmd --zone \u003d public --permanent --list-ports.

    визначення сервісу

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


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

    Створення призначених для користувача зон

    Ви вже знаєте, що спочатку в FirewallD створено велику кількість різноманітних зон з певними правилами. Однак трапляються ситуації, коли системному адміністратору потрібно створити призначену для користувача зону, як, наприклад, «Publicweb» для встановленого веб-сервера або «PrivateDNS» - для DNS-сервера. На цих двох прикладах ми і розберемо додавання гілок:


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

    Як бачите, брандмауер FirewallD - досить об'ємний інструмент, що дозволяє зробити максимально гнучку конфігурацію брандмауера. Залишилося тільки переконатися в тому, що утиліта запускається разом з системою і зазначені правила відразу ж починають свою роботу. Зробіть це командою sudo systemctl enable firewalld.

    Починаючи з CentoOS 7 для настройки правил фільтрації трафіку з'явився новий інструмент firewalld. Саме його рекомендується використовувати для управління правилами iptables. У CentOS 8 замість стандартного пакета фільтрації iptables тепер використовується фреймворк nftables, і при налаштуванні правил брандмауера через firewalld насправді ви налаштовуєте nftables. У цій статті ми розглянемо установку, основні концепції та налаштування брандмауера firewalld на сервері під керуванням CentOS 8 (в CentOS 7 все аналогічно).


    FirewallD - міжмережевий екран для захисту сервера від небажаного трафіку з підтримкою динамічного управління правилами (без перезапуску) і реалізації постійних правил брандмауера. Працює як інтерфейс для і nftables. FirewallD можна використовувати майже в усіх дистрибутивах Linux.

    Основні концепції firewalld, зони і правила

    Перед тим як приступити до встановлення та налаштування firewalld, Ми познайомимося з поняттям зон, які використовуються для визначення рівня довіри до різних сполук. Для різних зон firewalld можна застосувати різні правила фільтрації, вказувати активні опції брандмауера у вигляді попередньо визначених служб, протоколів і портів, перенаправлення портів і rich-rules.

    Firewalld фільтрує вхідний трафік по зонам в залежності від застосованих до зони правил. якщо IP-адреса відправника запиту відповідає правилам будь-якої зони, то пакет буде відправлятися через цю зону. Якщо ж адреса не відповідає жодній з налаштованих на сервері зоні, пакет буде оброблятися зоною використовуваної за замовчуванням. При встановленні firewalldзона за замовчуванням називається public.

    У firewalld є зони, де вже попередньо налаштовані дозволу для різних служб. Можна використовувати ці настройки або створювати власні зони. Список зон по-замовчуванню, які створюються при установці firewalld (зберігаються в каталозі / usr / lib / firewalld / zones /):

    drop мінімальний рівень довіри. Всі вхідні з'єднання блокуються без відповіді, допускаються тільки вихідні з'єднання;
    block зона схожа з попередньою, але при відхиленні вхідних запитів відправляється повідомлення icmp-host-prohibited для Ipv4 або icmp6-adm-prohibited для Ipv6;
    public представляє громадські, недовірених мережі. Можна вирішувати вибрані вхідні з'єднання в індивідуальному порядку;
    external зовнішні мережі при використанні брандмауера в якості шлюзу. Вона налаштована для маскування NAT, тому ваша внутрішня мережа залишається приватною, але доступною;
    internal антонім зони external. Хост володіють достатнім рівнем довіри, доступний ряд додаткових служб;
    dmz використовується для комп'ютерів, розташованих в DMZ (ізольовані комп'ютери без доступу до іншої мережі). Дозволені тільки певні вхідні з'єднання;
    work зона для робочих машин (більшість комп'ютерів в мережі довірені);
    home зона домашньої мережі. Можна довіряти більшості ПК, але підтримуються тільки певні вхідні з'єднання;
    trusted довіряти всім машинам в мережі. Найбільш відкрита з усіх доступних опцій, Вимагає свідомого використання.

    В firewalld використовується два набори правил - постійні і тимчасові. Тимчасові правила працюють до перезавантаження сервера. За замовчуванням при додаванні правил в firewalld, Правила вважаються тимчасовими ( runtime). Щоб додати правило на постійній основі потрібно використовувати прапор - permanent. Такі правила будуть застосовуватися після перезавантаження сервера.

    Установка і включення firewalld в CentOS

    У CentOS 7/8 firewalld встановлюється за умовчанням при ОС. Якщо ви його видалили і хочете встановити firewalld, можете скористатися стандартним менеджером / dnf:

    # Yum install firewalld -y - для Centos 7
    # Dnf install firewalld -y - для Centos 8

    щоб демон firewalld запускався автоматично зі стартом сервера, потрібно додати його в:

    # Systemctl enable firewalld

    І запустити:

    # Systemctl start firewalld

    Перевірити статус сервісу:

    # Systemctl status firewalld

    ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2019-10-14 14:54 : 40 +06; 22s ago Docs: man: firewalld (1) Main PID: 13646 (firewalld) CGroup: /system.slice/firewalld.service └─13646 / usr / bin / python2 -Es / usr / sbin / firewalld --nofork --nopid Oct 14 14:54:40 server.vpn.ru systemd: Starting firewalld - dynamic firewall daemon ... Oct 14 14:54:40 server.vpn.ru systemd: Started firewalld - dynamic firewall daemon.

    Або командою:

    # Firewall-cmd --state

    Команда firewall-cmd є фронтенда firewalld до nftables / iptables.

    # Firewall-cmd --state

    Робота з правилами firewalld

    Правила за умовчанням:

    Перед налаштуванням правил firewalld, потрібно перевірити, яка зона використовується за умовчанням:

    # Firewall-cmd --get-default-zone

    Так як firewalld ми тільки встановили і ще не налаштовували, у нас зона по-замовчуванню public.

    Перевіримо активну зону. Вона також одна - public:

    # Firewall-cmd --get-active-zones

    Public interfaces: eth0

    Як бачимо, мережевий інтерфейс eth0 управляється зоною public.

    Щоб подивитися правила активної зони, введіть:

    # Firewall-cmd --list-all

    Public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

    З лістингу видно, що в дану зону додані звичайні операції, пов'язані з DHCP-клієнтом і ssh.

    доступні зони

    Щоб переглянути список всіх зон, потрібно виконати команду:

    # Firewall-cmd --get-zones

    У мене вийшов такий список:

    Block dmz drop external home internal public trusted work

    Щоб перевірити правила конкретної зони, потрібно додати прапор - zone.

    # Firewall-cmd --zone \u003d home --list-all

    Home target: default icmp-block-inversion: no interfaces: sources: services: dhcpv6-client mdns samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

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

    # Firewall-cmd --list-all-zones

    Лістинг буде досить великий, так як зон може бути багато.

    Зміна зони за замовчуванням.

    За замовчуванням всі мережеві інтерфейси розташовані в зоні public, Але їх можна перенести в будь-яку з зон, командою:

    # Firewall-cmd --zone \u003d home -change-interface \u003d eth0

    після параметра -zone \u003d вказати потрібну зону.

    Щоб змінити зону за замовчуванням, потрібно застосувати команду:

    # Firewall-cmd --set-default-zone \u003d home

    Додавання правил для додатків

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

    Висновок буде містити велику кількість сервісів. Детальна інформація про службу міститься в її xml файлі. Ці файли розташовані в директорії / Usr / lib / firewalld / services.

    наприклад:

    # Cd / usr / lib / firewalld / services

    Mail (SMTP) This option allows incoming SMTP mail delivery. If you need to allow remote hosts to connect directly to your machine to deliver mail, enable this option. You do not need to enable this if you collect your mail from your ISP "s server by POP3 or IMAP, or if you use a tool such as fetchmail. Note that an improperly configured SMTP server can allow remote machines to use your server to send spam.

    У XML файлі є опис сервісу, протокол і номер порту, який буде відкритий в firewalld.

    При додаванні правил, ви можете використовувати параметр -add-service, Щоб відкрити доступ певного сервісу:

    # Firewall-cmd --zone \u003d public --add-service \u003d http

    # Firewall-cmd --zone \u003d public --add-service \u003d https

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

    # Firewall-cmd --zone \u003d public --list-services

    Dhcpv6-client http https ssh

    Якщо ви хочете зробити ці правила постійними, при додаванні потрібно додати параметр -permanent.

    Щоб видалити сервіс із зони:

    # Firewall-cmd --permanent --zone \u003d public --remove-service \u003d http

    Dhcpv6-client https ssh test

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

    скопіюємо файл smtp.xml в директорію для роботи з сервісами користувачів:

    # Cp /usr/lib/firewalld/services/smtp.xml / etc / firewalld / services

    Змініть опис сервісу в файлі.

    сам файл xml теж потрібно перейменувати на ім'я вашого сервісу. Після чого, потрібно перезавантажити firewalld і перевірити чи є наш сервіс в списку:

    Я назвав сервіс test і в списку він з'явився:

    Syslog-tls telnet test tftp

    Тепер можна додати створений сервіс в будь-яку зону:

    # Firewall-cmd --zone \u003d public --add-service \u003d test --permanent

    # Firewall-cmd --zone \u003d public --permanent --list-services

    Dhcpv6-client http https ssh test

    Якщо ви на знайшли потрібний вам сервіс в списку, ви можете відкрити потрібний порт на firewalld командою:

    # Firewall-cmd --zone \u003d public -add-port \u003d 77 / tcp - відкрити 77 порт tcp
    # Firewall-cmd --zone \u003d public -add-port \u003d 77 / udp - відкрити 77 порт udp
    # Firewall-cmd --zone \u003d public -add-port \u003d 77-88 / udp - відкрити діапазон портів 77-88 udp
    # Firewall-cmd --zone \u003d public -list-ports - перевірити список дозволених портів

    Заблокувати / дозволити ICMP відповіді:

    # Firewall-cmd --zone \u003d public --add-icmp-block \u003d echo-reply
    # Firewall-cmd --zone \u003d public --remove-icmp-block \u003d echo-reply

    Видалити додану порт:

    # Firewall-cmd --zone \u003d public -remove-port \u003d 77 / udp - видалити тимчасове правило 77 udp

    # Firewall-cmd --permanent --zone \u003d public -remove-port \u003d 77 / udp - видалити постійне правило

    Додавання власних зон

    Ви можете створити власну зону (назву її our):

    # Firewall-cmd --permanent --new-zone \u003d our

    Після створення нової зони, як і після створення сервісу, потрібне перезавантаження firewalld:

    # Firewall-cmd --reload

    # Firewall-cmd --get-zones

    Block dmz drop external home internal our public trusted work

    зона our доступна. Ви можете додавати в неї сервіси або відкривати певні порти.

    Firewalld: блокування IP-адрес, створення виключень

    Ви можете додавати в виключення firewalld довірені адреси IP адреси або блокувати небажані.

    Щоб додати в виключення конкретний IP- адреса (Наприклад 8.8.8.8) на вашому сервері через firewalld, Використовуйте команду:

    # Firewall-cmd --zone \u003d public --add-rich-rule \u003d "rule family \u003d" ipv4 "source address \u003d" 8.8.8.8 "accept"

    Перевірте зону, і переконайтеся що IP доданий в виключення в правилі rich rules:

    Public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http https ssh test ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family \u003d "ipv4" source address \u003d "8.8.8.8" accept

    щоб заблокувати IP, Потрібно замінити accept на reject:

    # Firewall-cmd --zone \u003d public --add-rich-rule \u003d "rule family \u003d" ipv4 "source address \u003d" 8.8.4.4 "reject"

    # Firewall-cmd --zone \u003d public --list-all

    Public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client http https ssh test ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family \u003d "ipv4" source address \u003d "8.8.8.8" accept rule family \u003d "ipv4" source address \u003d "8.8.4.4" reject

    Можна дозволити певну службу тільки для запитів з конкретного IP адреси:

    # Firewall-cmd --permanent --add-rich-rule "rule family \u003d" ipv4 "source address \u003d" 10.10.1.0/24 "service name \u003d" https "accept"

    Якщо вам потрібно терміново заблокувати взагалі всі запити до сервера, використовуйте команду паніки:

    # Firewall-cmd --panic-on

    Вийти з режиму паніки можна або командою:

    # Firewall-cmd --panic-off

    Або перезагрузив сервер.

    Ви можете заблокувати конфігурацію firewalld, щоб локальні сервіси з правами root не могли змінити створені вами правила брандмауера:

    # Firewall-cmd --lockdown-on

    Вийти з режиму блокування:

    # Firewall-cmd --lockdown-off

    Перенаправлення портів в firewalld

    Ви можете створити правило перенаправлення портів в firewalld. Щоб перенаправити 443 порт на 9090:

    # Firewall-cmd --zone \u003d public --add-forward-port \u003d port \u003d 443: proto \u003d tcp: toport \u003d 9090 --permanent

    Щоб видалити правило перенаправлення порту:

    # Firewall-cmd --zone \u003d public --remove-forward-port \u003d port \u003d 443: proto \u003d tcp: toport \u003d 9090

    Ми покажемо вам покроково брандмауера Firewalld в CentOS 7

    Що ж таке Firewalld? Це повноцінний брандмауер, який за замовчуванням доступний в CentOS 7. Ми покажемо вам, як налаштувати його на сервері, а також розповімо про інструмент firewall-cmd.

    1. Які ж базові поняття у брандмауера?

    зони

    Firewalld здатний управляти групами правил за допомогою зон. Це набір інструкцій для управління трафіком на основі довіри до мереж. Зону можна привласнити мережному інтерфейсу для управління поведінки брандмауера. Це буває необхідно, адже ноутбуки можуть часто підключатися до різних мереж. Комп'ютери можуть застосовувати зони для зміни набору правил в залежності від оточення. Наприклад, якщо підключатися до Wi-Fi в кафе, можна застосовувати суворіші інструкції. А вдома правила можуть бути лояльніше.

    У Firewalld виділяють такі зони:

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

    Block відрізняється від drop тим, що при скиданні вхідного запиту видається повідомлення icmp-host-prohibited або icmp6-adm-prohibited;

    Зона public є публічною мережею, що підтримує в індивідуальному порядку вхідні запити. Однак довіряти їй не можна;

    External - це зона зовнішніх мереж, що підтримує маскування NAT для закритості внутрішньої мережі. Однак до неї можна отримати доступ;

    Зворотною стороною external є internal. Комп'ютерів в даній зоні можна довіряти, тому доступними будуть додаткові сервіси;

    Зона dmz затребувана для ізольованих комп'ютерів, які не мають доступу до іншої частини мережі. В такому випадку вийде налаштувати обрані вхідні з'єднання;

    Зона робочої мережі - це work. У ній можна довіряти оточенню, але вхідні з'єднання підтримуються не всі, а тільки певних користувачем;

    У зоні trusted довіряти можна всім комп'ютерам мережі.

    збереження правил

    У Firewalld вони бувають тимчасовими і постійними. Буває так, що в наборі змінюється або з'являється правило впливає на поведінку брандмауера. Зміни будуть втрачені після перезавантаження, тому їх потрібно зберігати. Команди firewall-cmd застосовують прапор -permanent для збереження правил. Після цього ними вийде користуватися на постійній основі.

    2. Як включити брандмауер Firewalld?

    Почати варто з запуску у фоновому режимі програми-демона. Unit-файл systemd носить назву firewalld.service. для включення програми-демона потрібно в командному рядку набрати:

    Sudo systemctl start firewalld.service

    Нам потрібно переконатися, що сервіс запустився. Для цього знадобиться:

    Firewall-cmd --state running

    Брандмауер запустився і функціонує інструкції, заданої за замовчуванням. Майте на увазі, що сервіс включений, але автоматично запускатися разом з сервером не буде. Для цього буде потрібно налаштувати автозапуск. Крім того, зробіть набір правил, щоб не вийшло заблокувати себе на своєму ж сервері.

    3. брандмауерное правила за замовчуванням

    Як їх переглянути?

    Для перегляду зони, що використовується за умовчанням, потрібно набрати:

    Firewall-cmd --get-default-zone public

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

    Firewall-cmd --get-active-zones public interfaces: eth0 eth1

    Ми бачимо два прив'язаних мережевих інтерфейсу до зони public. Вони працюють за правилами, визначеними для цієї зони. Побачити правила за замовчуванням вийде шляхом:

    Firewall-cmd --list-all public (default, active) interfaces: eth0 eth1 sources: services: dhcpv6-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:

    Підсумуємо:

    Зоною за замовчуванням і єдиною активною є public;

    До даної зоні прив'язуються два інтерфейси: eth0 і eth1;

    Public підтримує віддалене адміністрування SSH, а також привласнення IP-адрес DHSP.

    Інші зони брандмауера

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

    Можна також отримати параметри для кожної конкретної зони за допомогою додавання прапора -zone \u003d:

    Firewall-cmd --zone \u003d home --list-all home interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:

    Якщо буде потрібно вивести визначення всіх доступних зон, скористайтеся опцією -list-all-zones. Передамо висновок в пейджер, щоб висновок було зручніше переглядати:

    Firewall-cmd --list-all-zones | less

    4. Як налаштувати інтерфейсні зони?

    До зони за замовчуванням спочатку і прив'язуються всі мережеві інтерфейси.

    Зміна зони інтерфейсу лише на одну сесію

    Для цієї мети нам знадобляться дві опції: -change-interface \u003d і -zone \u003d. Для перекладу в зону home eth0 наберіть:

    Sudo firewall-cmd --zone \u003d home --change-interface \u003d eth0 success

    Майте на увазі, що це може вплинути на функціонування певних сервісів. Наприклад, SSH підтримується в зоні home, тобто з'єднання скидатися не будуть. Однак це може статися в інших зонах, що призведе до блокування доступу до свого ж сервера. Нам потрібно переконатися, що інтерфейс прив'язався до нової зоні. Наберіть в командному рядку:

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

    Sudo systemctl restart firewalld.service firewall-cmd --get-active-zones public interfaces: eth0 eth1

    Зміна зони інтерфейсу на постійній основі

    Після перезапуску брандмауера інтерфейс за новою причепиться до зони за замовчуванням, якщо ніяка інша зона не задана в інтерфейсних налаштуваннях. Конфігурації в CentOS знаходяться в файлах формату ifcfg-interface директорії / etc / sysconfig / network-scripts. Для визначення зони інтерфейсу потрібно відкрити його файл конфігурації:

    Sudo nano / etc / sysconfig / network-scripts / ifcfg-eth0

    Додамо змінну ZONE \u003d в кінець файлу. Задамо іншу зону в якості значення:

    DNS1 \u003d 2001: 4860: 4860 :: 8844 DNS2 \u003d 2001: 4860: 4860 :: 8888 DNS3 \u003d 8.8.8.8 ZONE \u003d home

    Тепер збережемо зміни, після чого файл можна буде закрити. Для оновлення налаштувань потрібно перезапуск мережевого сервісу, А також брандмауера:

    Sudo systemctl restart network.service sudo systemctl restart firewalld.service

    Після цього до зони home буде прив'язаний інтерфейс eth0.

    Firewall-cmd --get-active-zones home interfaces: eth0 public interfaces: eth1

    Параметри зон за замовчуванням

    Іншу зону за замовчуванням також можна задати. У цьому нам допоможе опція -set-default-zone \u003d, прив'язує до іншої зоні всі мережеві інтерфейси.

    Sudo firewall-cmd --set-default-zone \u003d home home interfaces: eth0 eth1

    5. Як зробити правила для додатків?

    Додавання в зону сервісу

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

    Firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms- wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

    Пам'ятайте, що в файлах.xml директорії / usr / lib / firewalld / services зберігається вся інформація про кожного сервісі. Відомості про SSHможно знайти в /usr/lib/firewalld/services/ssh.xml. Виглядають вони так:

    Для включення підтримки сервісів в зонах потрібен прапор -add-service \u003d, а ось опція -zone знадобиться для завдання цільової зони. Пам'ятайте, що такі зміни будуть дійсні тільки одну сесію. Якщо ж потрібно зберегти зміни для подальшого використання, скористайтеся прапором -permanent. Подивимося, як це працює. Запустимо веб-сервер, щоб він міг обслуговувати HTTP-трафік. Включимо підтримку на одну сесію в зоні public. Наберіть в консолі:

    Sudo firewall-cmd --zone \u003d public --add-service \u003d http

    Не використовуйте опцію -zone \u003d, якщо сервіс додаєте в зону за замовчуванням. Перевіримо, чи вийшло:

    Firewall-cmd --zone \u003d public --list-services dhcpv6-client http ssh

    Тепер потрібно провести тестування роботи брандмауера і самого сервісу. Якщо побачите, що все в порядку, можете сміливо міняти постійний набір правил. Щоб додати правило підтримки нового сервісу, потрібно в консолі вказати:

    Sudo firewall-cmd --zone \u003d public --permanent --add-service \u003d http

    Якщо потрібно побачити весь список правил, що діють на постійній основі, то:

    Sudo firewall-cmd --zone \u003d public --permanent --list-services dhcpv6-client http ssh

    В результаті у зони public з'явиться підтримка порту 80 і HTTP. У разі, коли ваш сервер здатний обслуговувати SSL / TLS-трафік, вийде додати сервіс HTTPS:

    Sudo firewall-cmd --zone \u003d public --add-service \u003d https sudo firewall-cmd --zone \u003d public --permanent --add-service \u003d https

    6. А якщо сервіс недоступний?

    За замовчуванням брандмауер Firewalld включає в себе багато популярних сервісів. Але буває так, що програмам потрібні інші сервіси, яких немає в брандмауері. Дану проблему можна вирішити парою способів.

    Спосіб №1: Визначення сервісу

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

    Почнемо з копіювання вже наявного сценарію з папки / usr / lib / firewalld / services, з якої брандмаузер бере нестандартні налаштування в / etc / firewalld / services. Скопіюємо сервісне визначення SSH для застосування його в якості визначення умовного сервісу example. Не забудьте, що ім'я сценарію має збігатися з назвою сервісу, а також мати розширення файла.xml. Наберіть в консолі:

    Sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml

    Тепер потрібно внести правки в скомпільований файл:

    Sudo nano /etc/firewalld/services/example.xml

    Всередині розташовується визначення SSH:

    SSH Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.

    Тепер збережемо зміни і закриємо файл. Після цього буде потрібно перезапуск брандмауера за допомогою:

    Sudo firewall-cmd --reload

    У списку доступних сервісів з'явиться наш:

    Firewall-cmd --get-services RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns example ftp high-availability http https imaps ipp ipp-client ipsec kerberos kpasswd ldap ldaps libvirt libvirt-tls mdns mountd ms -wbt mysql nfs ntp openvpn pmcd pmproxy pmwebapi pmwebapis pop3s postgresql proxy-dhcp radius rpc-bind samba samba-client smtp ssh telnet tftp tftp-client transmission-client vnc-server wbem-https

    Спосіб №2: Створення порту

    Відкриємо порт додатки в потрібній брандмауерное зоні, і вкажемо його, а також протокол. Уявімо собі ситуацію, що потрібно додати в зону public програму, яка використовує протокол ТСР і порт 5000. Для активації на одну сесію підтримки програми буде потрібно опція -add-port \u003d. Крім того, необхідно вказати протокол tcp або udp:

    Sudo firewall-cmd --zone \u003d public --add-port \u003d 5000 / tcp

    Переконаємося, що все вийшло:

    Firewall-cmd --list-ports 5000 / tcp

    Крім того, є можливість вказати діапазон портів за допомогою тире. Наприклад, якщо програма користується портами 4990-4999, то їх в public-зону вийде за рахунок:

    Sudo firewall-cmd --zone \u003d public --add-port \u003d 4990-4999 / udp

    Якщо все працює нормально, додавайте інструкції в настройки брандмауера:

    Sudo firewall-cmd --zone \u003d public --permanent --add-port \u003d 5000 / tcp sudo firewall-cmd --zone \u003d public --permanent --add-port \u003d 4990-4999 / udp sudo firewall-cmd - zone \u003d public --permanent --list-ports success success 4990-4999 / udp 5000 / tcp

    7. Як створити зону?

    Брандмауер здатний надати різні зумовлені зони, яких зазвичай для роботи вистачає, проте іноді потрібно зробити свою призначену для користувача зону. Наприклад, сервера DNS потрібна зона privateDNS, а для веб-сервера - publicweb. Після створення зон її потрібно додати в налаштування брандмауера. Створимо зони publicweb і privateDNS набравши в консолі:

    Sudo firewall-cmd --permanent --new-zone \u003d publicweb sudo firewall-cmd --permanent --new-zone \u003d privateDNS

    Перевіримо, чи вийшло:

    Sudo firewall-cmd --permanent --get-zones block dmz drop external home internal privateDNS public publicweb trusted work

    Firewall-cmd --get-zones block dmz drop external home internal public trusted work

    Однак нові зони в поточній сесії будуть недоступні:

    Firewall-cmd --get-zones block dmz drop external home internal public trusted work

    Перезапустити брандмауер для отримання доступу до нових зон:

    Sudo firewall-cmd --reload firewall-cmd --get-zones block dmz drop external home internal privateDNS public publicweb trusted work

    Тепер вийде новим зонам визначити порти і сервіси. Припустимо, є необхідність додати SSH, HTTP і HTTPS в зону publicweb:

    Sudo firewall-cmd --zone \u003d publicweb --add-service \u003d ssh sudo firewall-cmd --zone \u003d publicweb --add-service \u003d http sudo firewall-cmd --zone \u003d publicweb --add-service \u003d https firewall- cmd --zone \u003d publicweb --list-all publicweb interfaces: sources: services: http https ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:

    Крім того, вийде додати DNS в зону privateDNS за допомогою:

    Sudo firewall-cmd --zone \u003d privateDNS --add-service \u003d dns firewall-cmd --zone \u003d privateDNS --list-all privateDNS interfaces: sources: services: dns ports: masquerade: no forward-ports: icmp-blocks: rich rules:

    Після цього можна сміливо прив'язувати до нових зон мережеві інтерфейси:

    Sudo firewall-cmd --zone \u003d publicweb --change-interface \u003d eth0 sudo firewall-cmd --zone \u003d privateDNS --change-interface \u003d eth1

    Перевірте роботу налаштувань. Якщо все в порядку, додайте їх в постійні правила:

    Sudo firewall-cmd --zone \u003d publicweb --permanent --add-service \u003d ssh sudo firewall-cmd --zone \u003d publicweb --permanent --add-service \u003d http sudo firewall-cmd --zone \u003d publicweb --permanent --add-service \u003d https sudo firewall-cmd --zone \u003d privateDNS --permanent --add-service \u003d dns

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

    Sudo nano / etc / sysconfig / network-scripts / ifcfg-eth0. . . IPV6_AUTOCONF \u003d no DNS1 \u003d 2001: 4860: 4860 :: 8844 DNS2 \u003d 2001: 4860: 4860 :: 8888 DNS3 \u003d 8.8.8.8 ZONE \u003d publicweb

    Прив'яжемо також eht1 до privateDNS за допомогою:

    Sudo nano / etc / sysconfig / network-scripts / ifcfg-eth1. . . NETMASK \u003d 255.255.0.0 DEFROUTE \u003d "no" NM_CONTROLLED \u003d "yes" ZONE \u003d privateDNS

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

    Sudo systemctl restart network sudo systemctl restart firewalld

    Потрібно перевірити зони, щоб переконатися, що сервіси прописалися:

    Firewall-cmd --get-active-zones privateDNS interfaces: eth1 publicweb interfaces: eth0

    Тепер потрібно перевірити, чи працюють вони:

    Firewall-cmd --zone \u003d publicweb --list-services http htpps ssh firewall-cmd --zone \u003d privateDNS --list-services dns

    Як ми можемо побачити, призначені для користувача зони повністю готові для роботи. Будь-яку з них можна призначити за замовчуванням. наприклад:

    Sudo firewall-cmd --set-default-zone \u003d publicweb

    8. Як зробити автоматичний запуск брандмауера?

    Після перевірки роботи правил і всіх налаштувань, налаштуємо автозапуск за допомогою:

    Sudo systemctl enable firewalld

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

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



    Сподобалася стаття? поділіться їй