Конфигуриране на защитната стена в CentOS 7

Защитната стена, инсталирана в операционната система, се използва за предотвратяване на преминаването на неоторизиран трафик през компютърни мрежи. Ръчно или автоматично създавате специални правила за защитната стена, които отговарят за контрола на достъпа. В операционната система, разработена на ядрото на Linux, CentOS 7 има вградена защитна стена и се управлява с помощта на защитна стена. FirewallD е включен по подразбиране и бихме искали да говорим за неговата конфигурация днес.

Конфигуриране на защитната стена в CentOS 7

Както бе споменато по-горе, стандартната защитна стена на CentOS 7 е назначена за FirewallD помощната програма. Ето защо настройката на защитната стена ще бъде разгледана на примера на този инструмент. Можете да зададете правила за филтриране, като използвате същите iptables, но това се прави по малко по-различен начин. Препоръчваме ви да се запознаете с конфигурацията на споменатата помощна програма, като щракнете върху следната връзка, и ще започнем да анализираме FirewallD.

Вижте също: Конфигуриране на iptables в CentOS 7

Концепции на защитната стена

Съществуват няколко зони - набори от правила за управление на трафика, основани на доверие в мрежите. Всички те получават свои собствени политики, чиято съвкупност формира конфигурацията на защитната стена. На всяка зона се задава един или повече мрежови интерфейси, което също ви позволява да регулирате филтрирането. Приложимите правила зависят пряко от използвания интерфейс. Например, когато е свързан с публично достъпна Wi-Fi, защитната стена ще увеличи нивото на контрол и в домашната мрежа ще отвори допълнителен достъп за участниците във веригата. В тази защитна стена има такива зони:

  • trusted - максималното ниво на доверие във всички устройства в мрежата;
  • home е група от местни мрежи. Има доверие в околната среда, но при това входящите връзки са достъпни само за определени машини;
  • работна зона. Има доверие в повечето устройства, както и активирани допълнителни услуги;
  • dmz - зона за изолирани компютри. Тези устройства са изключени от останалата част на мрежата и позволяват само определен входящ трафик;
  • internal - зона на вътрешни мрежи. Доверието се прилага за всички машини, отварят се допълнителни услуги;
  • external - обратен към предходната зона. Във външни мрежи NAT маскирането е активно, затваряне на вътрешната мрежа, но не блокира възможността за достъп;
  • public зона на обществени мрежи с недоверие към всички устройства и индивидуално приемане на входящ трафик;
  • block - всички входящи заявки се нулират с icmp-host- protected или icmp6-adm-disabled ;
  • drop - минималното ниво на доверие. Входящите връзки се премахват без никакво уведомление.

Самите политици са временни и постоянни. Когато параметрите се появяват или редактират, действието на защитната стена незабавно се променя без необходимост от рестартиране. Ако бяха приложени временни правила, след рестартиране на FirewallD те ще бъдат нулирани. Постоянното правило се нарича - то ще бъде запазено за постоянно при прилагане на аргумента - —permanent .

Активирайте защитната стена FirewallD

Първо трябва да стартирате FirewallD или да се уверите, че е в активно състояние. Само функционален демон (програма, изпълнявана във фонов режим) ще приложи правилата за защитната стена. Активирането се извършва само с няколко кликвания:

  1. Стартирайте класическия "Терминал" по всеки удобен начин, например чрез менюто "Приложения" .
  2. Стартиране на терминал за допълнително конфигуриране на защитната стена в CentOS 7

  3. Въведете sudo systemctl start firewalld.service и натиснете клавиша Enter .
  4. Стартиране на услугите на защитната стена в операционната система CentOS 7

  5. Управлението на комунални услуги се извършва от името на суперпотребителя, така че трябва да удостоверите автентичността си, като посочите парола.
  6. Въвеждане на парола за стартиране на услугите на защитната стена в терминала CentOS 7.  t

  7. За да се уверите, че сервизните функции, задайте firewall-cmd --state .
  8. Вижте текущото състояние на защитната стена през терминала в CentOS 7

  9. Потвърдете автентичността в отворения графичен прозорец.
  10. Въвеждане на парола за удостоверяване при преглеждане на състоянието на защитната стена CentOS 7.  t

  11. Показва се нов ред. Стойността "работещ" означава, че защитната стена работи.
  12. Показва текущото състояние на защитната стена в операционната система CentOS 7.  t

Ако някога се наложи временно или постоянно да деактивирате защитната стена, препоръчваме ви да използвате инструкциите, предоставени в другия ни статия, на следната връзка.

Още подробности: Деактивирайте защитната стена в CentOS 7

Преглед на правилата по подразбиране и наличните зони

Дори да работи в редовен режим, защитната стена има свои специфични правила и зони. Преди да започнете да редактирате правилата, препоръчваме ви да се запознаете с текущата конфигурация. Това се прави с помощта на прости команди:

  1. Командата firewall-cmd --get-default-zone ще firewall-cmd --get-default-zone .
  2. Вижте зоната на защитната стена по подразбиране в CentOS 7

  3. След като я активирате, ще видите нов ред, в който ще бъде показан необходимия параметър. Например, на екрана по-долу, "публичната" зона се счита за активна.
  4. Показване на зоната на защитната стена по подразбиране в CentOS 7

  5. Въпреки това, няколко зони могат да бъдат активни наведнъж, още повече, те са свързани с отделен интерфейс. firewall-cmd --get-active-zones тази информация чрез firewall-cmd --get-active-zones .
  6. Вижте всички активни зони на защитната стена в CentOS 7

  7. Командата firewall-cmd --list-all ще покаже правилата, дефинирани за зоната по подразбиране. Вижте екранната снимка по-долу. Можете да видите, че правилото „по подразбиране“ е присвоено на активната зона „публична“ - операцията по подразбиране , интерфейсът „enp0s3“ и две услуги са добавени.
  8. Преглед на основните правила на защитната стена чрез терминала на CentOS 7

  9. Ако трябва да знаете всички налични зони на защитната стена, въведете firewall-cmd --get-zones .
  10. Получаване на списък на всички налични защитни зони през терминала на CentOS 7

  11. Параметрите на определена зона се дефинират чрез firewall-cmd --zone=name --list-all , където името е името на зоната.
  12. Показване на правилата на определената зона на защитната стена чрез терминала на CentOS 7

След определяне на необходимите параметри, можете да продължите с тяхната модификация и добавяне. Нека разгледаме по-отблизо някои от най-популярните конфигурации.

Конфигуриране на интерфейсни зони

Както знаете от информацията по-горе, всеки интерфейс има своя собствена зона по подразбиране. Той ще остане в него, докато настройките не бъдат променени от потребителя или програмно. Възможно е ръчно да прехвърлите интерфейса към зоната за една сесия, като това става чрез активиране на командата sudo firewall-cmd --zone=home --change-interface=eth0 . Резултатът „успех“ показва, че прехвърлянето е било успешно. Припомнете си, че такива настройки се нулират веднага след рестартиране на защитната стена.

Задаване на специфичен интерфейс към зоната на защитната стена в CentOS 7

При такава промяна на параметрите трябва да се има предвид, че работата на услугите може да бъде рестартирана. Някои от тях не поддържат работа в определени зони, например SSH, въпреки че е достъпна в “home” , но услугата ще откаже да работи в потребителски или специални услуги. Можете да firewall-cmd --get-active-zones дали интерфейсът е бил успешно свързан с нов клон, като въведете firewall-cmd --get-active-zones .

Вижте ядрото на защитната стена и нейния интерфейс в CentOS 7

Ако искате да нулирате предишните си настройки, просто рестартирайте защитната стена: sudo systemctl restart firewalld.service .

Рестартиране на защитната стена след извършване на промени в CentOS 7

Понякога не винаги е удобно да промените интерфейсната зона само с една сесия. В този случай ще трябва да редактирате конфигурационния файл, така че всички настройки да се въвеждат постоянно. За да направите това, препоръчваме да използвате нано текстов редактор, който се инсталира от официалния sudo yum install nano хранилище. Остава да извършите следните действия:

  1. Отворете конфигурационния файл чрез редактора, като въведете sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0 , където eth0 е името на необходимия интерфейс.
  2. Отваряне на конфигурационния файл на интерфейса на защитната стена в CentOS 7

  3. Удостоверете своя профил за по-нататъшни действия.
  4. Въвеждане на парола за отваряне на конфигурационния файл на интерфейса в CentOS 7

  5. Намерете параметъра "ZONE" и променете стойността му на желаната, например public или home .
  6. Промяна на интерфейсната зона чрез конфигурационния файл в CentOS 7

  7. Задръжте Ctrl + O, за да запазите промените.
  8. Запис на промените в текстов редактор CentOS 7

  9. Не променяйте името на файла, просто натиснете Enter .
  10. Присвояване на файлове за записване на промените в CentOS 7 Text Editor

  11. Излезте от редактора на текст с Ctrl + X.
  12. Излезте от редактора след промяна на CentOS 7

Сега интерфейсната зона ще бъде това, което сте задали, до следващото редактиране на конфигурационния файл. За да направите актуализираните настройки в сила, изпълнете sudo systemctl restart network.service и sudo systemctl restart firewalld.service .

Задаване на зоната по подразбиране

По-горе вече показахме команда, която ни позволи да разберем зоната по подразбиране. Може също да се промени, като зададете опцията по ваш избор. За да направите това, достатъчно е да регистрирате в конзолата sudo firewall-cmd --set-default-zone=name , където името е името на изискваната зона.

Присвояване на защитната зона по подразбиране в CentOS 7

Успехът на командата ще бъде отбелязан с надпис „успех” на отделен ред. След това всички текущи интерфейси ще се свържат с посочената зона, освен ако не е посочено друго в конфигурационните файлове.

Успешно възлагане на зона по подразбиране в CentOS 7

Създаване на правила за програми и комунални услуги

В самото начало на статията говорихме за работата на всяка зона. Дефинирането на услуги, помощни програми и програми в такива клонове ще позволи на всеки от тях да приложи индивидуални параметри за всеки потребителски заявки. Първо, съветваме ви да се запознаете с пълния списък на наличните в момента услуги: firewall-cmd --get-services .

Команда, за да видите услугите на CentOS 7, налични в системата.

Резултатът се показва директно в конзолата. Всеки сървър е разделен с интервал, а в списъка лесно можете да намерите инструмента, който ви интересува. Ако необходимата услуга липсва, тя трябва да бъде допълнително инсталирана. За правилата за инсталиране прочетете официалната документация на софтуера.

Списъкът с наличните услуги в CentOS 7

Горната команда показва само имената на услугите. Подробна информация за всеки от тях се получава чрез отделен файл, разположен по пътя /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=public --add-service=http , където --zone = public е зоната за активиране и --add-service = http е името на услугата. Обърнете внимание, че тази промяна ще влезе в сила само в една сесия.

Добавяне на услуга към конкретна зона на защитната стена на CentOS 7

Постоянното добавяне се извършва чрез sudo firewall-cmd --zone=public --permanent --add-service=http , а резултатът от „успех“ показва успешното приключване на операцията.

Постоянно добавяне на услуга към зона за защитна стена CentOS 7.  t

Можете да видите пълния списък с постоянни правила за определена зона, като sudo firewall-cmd --zone=public --permanent --list-services списъка в отделен ред на конзолата: sudo firewall-cmd --zone=public --permanent --list-services .

Вижте списък с постоянни услуги на CentOS 7

Решение на проблема с липсата на достъп до услугата

Стандартно, най-популярните и сигурни услуги са изброени в правилата за защитната стена, както е позволено, но блокира някои стандартни или трети страни приложения. В този случай потребителят ще трябва ръчно да промени настройките, за да реши проблема с достъпа. Това може да стане по два различни начина.

Пренасочване на портове

Както знаете, всички мрежови услуги използват конкретен порт. Лесно се открива от защитната стена и може да блокира заключването. За да избегнете подобни действия от защитната стена, трябва да отворите необходимия порт със sudo firewall-cmd --zone=public --add-port=0000/tcp , където --zone = public е зоната за порта, --add-port = 0000 / tcp - номер на порт и протокол. Опцията firewall-cmd --list-ports покаже списък с отворени портове.

Отваряне на порт в определена зона на защитната стена CentOS 7.  t

Ако трябва да отворите портове, които са в обхвата, използвайте линията sudo firewall-cmd --zone=public --add-port=0000-9999/udp , където --add-port = 0000-9999 / udp е диапазонът от пристанища и протокола.

Отваряне на гама от портове в определена зона на защитната стена CentOS 7.  t

Горните команди ще позволят само да тестват използването на такива параметри. Ако е било успешно, трябва да добавите същите портове към постоянните настройки, а това става чрез въвеждане на sudo firewall-cmd --zone=public --permanent --add-port=0000/tcp или sudo firewall-cmd --zone=public --permanent --add-port=0000-9999/udp . Списъкът с отворени постоянни портове се разглежда като: sudo firewall-cmd --zone=public --permanent --list-ports .

Дефиниция на услугата

Както виждате, добавянето на портове не причинява никакви трудности, но процедурата е сложна, когато се използват голям брой приложения. Става трудно да се следят всички използвани портове, което означава, че определението на услугата ще бъде по-правилно:

  1. Копирайте конфигурационния файл, като напишете sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml , където service.xml е името на сервизния файл и example.xml е името на неговото копие.
  2. Копиране на файла с настройки на защитната стена в CentOS 7

  3. Отворете копие за редактиране чрез текстов редактор, например sudo nano /etc/firewalld/services/example.xml .
  4. Стартиране на копиран сервизен файл CentOS 7.  t

  5. Например създадохме копие на HTTP услугата. В документа обикновено виждате различни метаданни, като кратко име и описание. Засяга сървъра само за промяна на номера на порта и протокола. Над линията " » Трябва да се добави за да отворите порта. tcp е използваният протокол, а 0000 е номерът на порта.
  6. Промяна на сервизния файл за отваряне на портове в CentOS 7

  7. Запишете всички промени ( Ctrl + O ), затворете файла ( Ctrl + X ) и рестартирайте защитната стена, за да приложите настройките чрез sudo firewall-cmd --reload . След това услугата ще се появи в списъка на наличните, които могат да се видят чрез firewall-cmd --get-services .
  8. Рестартиране на защитната стена в CentOS 7

Просто трябва да изберете най-подходящия метод за решаване на проблема с достъпа до услугата и следвайте дадените инструкции. Както виждате, всички действия се изпълняват доста лесно и не възникват трудности.

Създаване на персонализирани зони

Вече знаете, че първоначално в FirewallD са създадени голям брой различни зони с определени правила. Има обаче ситуации, в които системният администратор трябва да създаде потребителска зона, като например "publicweb" за инсталиран уеб сървър или "privateDNS" за DNS сървър. В тези два примера анализираме добавянето на клонове:

  1. Създайте две нови постоянни зони със sudo firewall-cmd --permanent --new-zone=publicweb и sudo firewall-cmd --permanent --new-zone=privateDNS .
  2. Добавяне на нови потребителски зони в защитната стена на CentOS 7.  t

  3. Те ще бъдат достъпни след презареждане на инструмента sudo firewall-cmd --reload . За да покажете постоянни зони, въведете sudo firewall-cmd --permanent --get-zones .
  4. Преглед на наличните зони на защитната стена в CentOS 7

  5. Задайте им необходимите услуги, например “SSH” , “HTTP” и “HTTPS” . Това се прави с командите sudo firewall-cmd --zone=publicweb --add-service=ssh , sudo firewall-cmd --zone=publicweb --add-service=http и sudo firewall-cmd --zone=publicweb --add-service=https , където --zone = publicweb е името на зоната за добавяне. Можете да видите активността на услугите, като firewall-cmd --zone=publicweb --list-all .
  6. Добавяне на услуги към потребителската зона CentOS 7

В тази статия научихте как да създавате собствени зони и да добавяте услуги към тях. Вече сме описали по-горе задаването им по подразбиране и задаването на интерфейси, просто трябва да посочите правилните имена. Не забравяйте да рестартирате защитната стена след извършване на постоянни промени.

Както виждате, FirewallD защитната стена е доста голям инструмент, който ви позволява да направите най-гъвкавата конфигурация на защитната стена. Остава само да се уверите, че програмата се стартира със системата и определените правила незабавно започват работата си. Направете това с командата sudo systemctl enable firewalld .