Защитната стена, инсталирана в операционната система, се използва за предотвратяване на преминаването на неоторизиран трафик през компютърни мрежи. Ръчно или автоматично създавате специални правила за защитната стена, които отговарят за контрола на достъпа. В операционната система, разработена на ядрото на Linux, CentOS 7 има вградена защитна стена и се управлява с помощта на защитна стена. FirewallD е включен по подразбиране и бихме искали да говорим за неговата конфигурация днес.
Съдържанието
Както бе споменато по-горе, стандартната защитна стена на 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 или да се уверите, че е в активно състояние. Само функционален демон (програма, изпълнявана във фонов режим) ще приложи правилата за защитната стена. Активирането се извършва само с няколко кликвания:
sudo systemctl start firewalld.service
и натиснете клавиша Enter . firewall-cmd --state
. Ако някога се наложи временно или постоянно да деактивирате защитната стена, препоръчваме ви да използвате инструкциите, предоставени в другия ни статия, на следната връзка.
Още подробности: Деактивирайте защитната стена в CentOS 7
Дори да работи в редовен режим, защитната стена има свои специфични правила и зони. Преди да започнете да редактирате правилата, препоръчваме ви да се запознаете с текущата конфигурация. Това се прави с помощта на прости команди:
firewall-cmd --get-default-zone
ще firewall-cmd --get-default-zone
. firewall-cmd --get-active-zones
тази информация чрез firewall-cmd --get-active-zones
. firewall-cmd --list-all
ще покаже правилата, дефинирани за зоната по подразбиране. Вижте екранната снимка по-долу. Можете да видите, че правилото „по подразбиране“ е присвоено на активната зона „публична“ - операцията по подразбиране , интерфейсът „enp0s3“ и две услуги са добавени. firewall-cmd --get-zones
. firewall-cmd --zone=name --list-all
, където името е името на зоната. След определяне на необходимите параметри, можете да продължите с тяхната модификация и добавяне. Нека разгледаме по-отблизо някои от най-популярните конфигурации.
Както знаете от информацията по-горе, всеки интерфейс има своя собствена зона по подразбиране. Той ще остане в него, докато настройките не бъдат променени от потребителя или програмно. Възможно е ръчно да прехвърлите интерфейса към зоната за една сесия, като това става чрез активиране на командата sudo firewall-cmd --zone=home --change-interface=eth0
. Резултатът „успех“ показва, че прехвърлянето е било успешно. Припомнете си, че такива настройки се нулират веднага след рестартиране на защитната стена.
При такава промяна на параметрите трябва да се има предвид, че работата на услугите може да бъде рестартирана. Някои от тях не поддържат работа в определени зони, например SSH, въпреки че е достъпна в “home” , но услугата ще откаже да работи в потребителски или специални услуги. Можете да firewall-cmd --get-active-zones
дали интерфейсът е бил успешно свързан с нов клон, като въведете firewall-cmd --get-active-zones
.
Ако искате да нулирате предишните си настройки, просто рестартирайте защитната стена: sudo systemctl restart firewalld.service
.
Понякога не винаги е удобно да промените интерфейсната зона само с една сесия. В този случай ще трябва да редактирате конфигурационния файл, така че всички настройки да се въвеждат постоянно. За да направите това, препоръчваме да използвате нано текстов редактор, който се инсталира от официалния sudo yum install nano
хранилище. Остава да извършите следните действия:
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
, където eth0 е името на необходимия интерфейс. public
или home
. Сега интерфейсната зона ще бъде това, което сте задали, до следващото редактиране на конфигурационния файл. За да направите актуализираните настройки в сила, изпълнете sudo systemctl restart network.service
и sudo systemctl restart firewalld.service
.
По-горе вече показахме команда, която ни позволи да разберем зоната по подразбиране. Може също да се промени, като зададете опцията по ваш избор. За да направите това, достатъчно е да регистрирате в конзолата sudo firewall-cmd --set-default-zone=name
, където името е името на изискваната зона.
Успехът на командата ще бъде отбелязан с надпис „успех” на отделен ред. След това всички текущи интерфейси ще се свържат с посочената зона, освен ако не е посочено друго в конфигурационните файлове.
В самото начало на статията говорихме за работата на всяка зона. Дефинирането на услуги, помощни програми и програми в такива клонове ще позволи на всеки от тях да приложи индивидуални параметри за всеки потребителски заявки. Първо, съветваме ви да се запознаете с пълния списък на наличните в момента услуги: 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=public --add-service=http
, където --zone = public е зоната за активиране и --add-service = http е името на услугата. Обърнете внимание, че тази промяна ще влезе в сила само в една сесия.
Постоянното добавяне се извършва чрез sudo firewall-cmd --zone=public --permanent --add-service=http
, а резултатът от „успех“ показва успешното приключване на операцията.
Можете да видите пълния списък с постоянни правила за определена зона, като sudo firewall-cmd --zone=public --permanent --list-services
списъка в отделен ред на конзолата: sudo firewall-cmd --zone=public --permanent --list-services
.
Стандартно, най-популярните и сигурни услуги са изброени в правилата за защитната стена, както е позволено, но блокира някои стандартни или трети страни приложения. В този случай потребителят ще трябва ръчно да промени настройките, за да реши проблема с достъпа. Това може да стане по два различни начина.
Пренасочване на портове
Както знаете, всички мрежови услуги използват конкретен порт. Лесно се открива от защитната стена и може да блокира заключването. За да избегнете подобни действия от защитната стена, трябва да отворите необходимия порт със sudo firewall-cmd --zone=public --add-port=0000/tcp
, където --zone = public е зоната за порта, --add-port = 0000 / tcp - номер на порт и протокол. Опцията firewall-cmd --list-ports
покаже списък с отворени портове.
Ако трябва да отворите портове, които са в обхвата, използвайте линията sudo firewall-cmd --zone=public --add-port=0000-9999/udp
, където --add-port = 0000-9999 / udp е диапазонът от пристанища и протокола.
Горните команди ще позволят само да тестват използването на такива параметри. Ако е било успешно, трябва да добавите същите портове към постоянните настройки, а това става чрез въвеждане на 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
.
Както виждате, добавянето на портове не причинява никакви трудности, но процедурата е сложна, когато се използват голям брой приложения. Става трудно да се следят всички използвани портове, което означава, че определението на услугата ще бъде по-правилно:
sudo cp /usr/lib/firewalld/services/service.xml /etc/firewalld/services/example.xml
, където service.xml е името на сервизния файл и example.xml е името на неговото копие. sudo nano /etc/firewalld/services/example.xml
. sudo firewall-cmd --reload
. След това услугата ще се появи в списъка на наличните, които могат да се видят чрез firewall-cmd --get-services
. Просто трябва да изберете най-подходящия метод за решаване на проблема с достъпа до услугата и следвайте дадените инструкции. Както виждате, всички действия се изпълняват доста лесно и не възникват трудности.
Вече знаете, че първоначално в FirewallD са създадени голям брой различни зони с определени правила. Има обаче ситуации, в които системният администратор трябва да създаде потребителска зона, като например "publicweb" за инсталиран уеб сървър или "privateDNS" за DNS сървър. В тези два примера анализираме добавянето на клонове:
sudo firewall-cmd --permanent --new-zone=publicweb
и sudo firewall-cmd --permanent --new-zone=privateDNS
. sudo firewall-cmd --reload
. За да покажете постоянни зони, въведете sudo firewall-cmd --permanent --get-zones
. 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
. В тази статия научихте как да създавате собствени зони и да добавяте услуги към тях. Вече сме описали по-горе задаването им по подразбиране и задаването на интерфейси, просто трябва да посочите правилните имена. Не забравяйте да рестартирате защитната стена след извършване на постоянни промени.
Както виждате, FirewallD защитната стена е доста голям инструмент, който ви позволява да направите най-гъвкавата конфигурация на защитната стена. Остава само да се уверите, че програмата се стартира със системата и определените правила незабавно започват работата си. Направете това с командата sudo systemctl enable firewalld
.