Използване на FirewallD за управление на вашата защитна стена на CentOS 7

FirewallD е динамично управлявана защитна стена, която осигурява поддръжка за IPv4 и IPv6 правила за защитна стена и зони на защитна стена, която е налична на сървъри, базирани на RHEL 7. Той е директен заместител iptablesи работи с netfilterкода на ядрото .

В тази статия ще разгледаме накратко управлението на защитната стена на CentOS 7 с помощта на firewall-cmdкомандата.

Проверка дали FirewallD работи

Първата стъпка е да проверите дали FirewallD е инсталиран и работи. Това може да стане чрез, systemdкато изпълните следното:

$ 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 Thu 2016-03-10 15:07:00 UTC; 1min 30s ago
   ...

Като алтернатива можете да проверите с помощта на firewall-cmdинструмента:

$ firewall-cmd --state
running

Управление на зони

FirewallD работи, използвайки концепцията за това zonesкъде зоната е дефинирала нивото на доверие, използвано за връзка. Можете да разделите различни мрежови интерфейси на различни зони, за да приложите специфични правила за защитната стена за всеки интерфейс, или можете да използвате една зона за всички интерфейси.

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

Изброяване на всички налични зони

Може да се наложи да получите списък с всички налични зони, от които има няколко извън кутията. Отново, това може да стане с помощта на firewall-cmd:

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

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

Можете да откриете зоната по подразбиране, която в момента е конфигурирана, като използвате firewall-cmd:

$ firewall-cmd --get-default-zone
public

Ако искате да промените зоната по подразбиране (например на home), това може да стане, като изпълните:

$ firewall-cmd --set-default-zone=home
success

Тази информация ще бъде отразена в основния конфигурационен файл, /etc/firewalld/firewalld.conf. Препоръчително е обаче да не променяте ръчно този файл и вместо това да използвате firewall-cmd.

Проверка на присвоените в момента зони

Можете да получите списък на зоните, към които имате присвоени интерфейси, като изпълните:

$ firewall-cmd --get-active-zones
public
  interfaces: eth0

Можете също да проверите зоната на един интерфейс ( eth0в този случай), като изпълните:

$  firewall-cmd --get-zone-of-interface=eth0
public

Създаване на зони

Ако предварително конфигурираните зони по подразбиране не отговарят напълно на вашите нужди, най-лесният начин да създадете нова зона ( zone1) е отново чрез firewall-cmd:

$ firewall-cmd --permanent --new-zone=zone1
success

След създаването трябва да презаредите:

$ firewall-cmd --reload
success

Прилагане на зона към интерфейс

За да зададете за постоянно мрежов интерфейс към зона, можете да използвате, firewall-cmdно не забравяйте да включите --permanentфлага, за да запазите промяната. Ако използвате NetworkManager, трябва също да сте сигурни, че сте използвали, за nmcliда зададете зоната на свързване.

$ firewall-cmd --permanent --zone=internal --change-interface=eth1`
success

Получаване на постоянна конфигурация на зона

За да проверите постоянната конфигурация на зона ( publicв този случай), включително присвоените интерфейси, разрешени услуги, настройки на порта и други, изпълнете:

$ firewall-cmd --permanent --zone=public --list-all
public (default)
  interfaces:
  sources:
  services: dhcpv6-client ssh
  ports:
  masquerade: no
  forward-ports:
  icmp-blocks:
  rich rules:

Управляващи услуги

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

Изброяване на съществуващи услуги

Редица общи услуги са предварително конфигурирани в рамките на защитната стена. Те могат да бъдат изброени:

$ firewall-cmd --get-services
RH-Satellite-6 amanda-client bacula bacula-client dhcp dhcpv6 dhcpv6-client dns freeipa-ldap freeipa-ldaps freeipa-replication ftp high-availability http https imaps ipp ipp-client ipsec iscsi-target 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 rsyncd samba samba-client smtp ssh telnet tftp tftp-client transmission-client vdsm vnc-server wbem-https

Можете също да получите списък с услугите, активирани за зоната по подразбиране:

$ firewall-cmd --list-services
dhcpv6-client ssh

Добавяне на услуга към зона

Можете да активирате дадена услуга за зона ( public) за постоянно, като използвате --add-serviceфлага:

$ firewall-cmd --permanent --zone=public --add-service=http
success

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

$ firewall-cmd --reload
success

След това, за да проверите, че е добавено:

$ firewall-cmd --zone=public --list-services
dhcpv6-client http ssh

Премахване на услуга от зона

Можете да премахнете дадена услуга за зона ( public) за постоянно, като използвате --remove-serviceфлага:

$ firewall-cmd --permanent --zone=public --remove-service=http
success

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

$ firewall-cmd --reload
success

След това, за да проверите, че е добавено:

$ firewall-cmd --zone=public --list-services
dhcpv6-client ssh

Добавяне/премахване на множество услуги от зона

Можете да добавяте или премахвате множество услуги (например httpи https) от зона или една по една, или всички наведнъж, като обвиете желаните имена на услуги в къдрави скоби ( {, }):

$ firewall-cmd --permanent --zone=public --add-service=
success

$ firewall-cmd --permanent --zone=public --list-services
dhcpv6-client http https ssh

Създаване на нови услуги

Понякога може да се наложи да добавите нови персонализирани услуги - например ако сте променили порта за SSH демона. Услугите се дефинират с помощта на тривиални XML файлове, като файловете по подразбиране се намират в /usr/lib/firewalld/services:

$  tree /usr/lib/firewalld/services
/usr/lib/firewalld/services
├── amanda-client.xml
├── bacula-client.xml
├── bacula.xml
├── dhcpv6-client.xml
├── dhcpv6.xml
├── dhcp.xml
├── dns.xml
├── freeipa-ldaps.xml
├── freeipa-ldap.xml
├── freeipa-replication.xml
├── ftp.xml
├── high-availability.xml
├── https.xml
├── http.xml
...

Най-лесният начин да създадете нова услуга е да копирате един от тези съществуващи сервизни файлове и да го модифицирате. Персонализираните услуги трябва да се намират в /etc/firewalld/services. Например, за да персонализирате услугата SSH:

$ cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-custom.xml

Съдържанието на този копиран файл трябва да изглежда така:

$ cat /etc/firewalld/services/ssh-custom.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>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.</description>
  <port protocol="tcp" port="22"/>
</service>

За да промените порта, трябва да промените краткото име на услугата и порта. Можете също да промените описанието, ако желаете, но това са само допълнителни метаданни, които могат да се използват от потребителски интерфейс или друго приложение. В този пример променям порта на 1234:

$ nano /etc/firewalld/services/ssh-custom.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH-Custom</short>
  <description>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.</description>
  <port protocol="tcp" port="1234"/>
</service>

След като запазите, ще трябва да презаредите защитната стена и след това можете да приложите вашето правило към вашата зона:

$ firewall-cmd --reload
success

$ firewall-cmd --permanent --zone=public --add-service=ssh-custom
success

Управление на пристанището

В допълнение към използването на услуги, можете също ръчно да разрешите портове по протокол. За да разрешите TCP порта 7777за publicзоната:

$ firewall-cmd --permanent --zone=public --add-port=7777/tcp
success

Можете също да добавите диапазон от портове:

$ firewall-cmd --permanent --zone=public --add-port=7000-8000/tcp
success

За да премахнете (и по този начин да откажете) TCP порт 7777за publicзоната:

$ firewall-cmd --permanent --zone=public --remove-port=7777/tcp
success

Можете също да изброите разрешените в момента портове за дадена зона ( public) след презареждане на текущата сесия на защитната стена:

$ firewall-cmd --zone=public --list-ports
7000-8000/tcp

Активиране на FirewallD

След като конфигурирате защитната стена по ваш вкус, трябва да сте сигурни, че сте я активирали чрез systemd, за да сте сигурни, че стартира при стартиране:

$ systemctl enable firewalld

Заключение

Има много много повече настройки и опции в FirewallD, като пренасочване на портове, маскиране и комуникация със защитната стена чрез D-Bus. Надяваме се, че това ръководство ви е помогнало да разберете основите и ви е дало инструментите, за да започнете със защитната стена на вашия сървър. Допълнително четене по-долу ще ви помогне да извлечете максимума от вашата защитна стена.


Инсталирайте Plesk на CentOS 7

Инсталирайте Plesk на CentOS 7

Използване на различна система? Plesk е собствен контролен панел за уеб хост, който позволява на потребителите да администрират своите лични и/или клиентски уебсайтове, бази данни

Как да инсталирате Squid Proxy на CentOS

Как да инсталирате Squid Proxy на CentOS

Squid е популярна, безплатна програма за Linux, която ви позволява да създадете уеб прокси за препращане. В това ръководство ще видите как да инсталирате Squid на CentOS, за да ви обърне

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Как да инсталирате Lighttpd (LLMP стек) на CentOS 6

Въведение Lighttpd е форк на Apache, чиято цел е да бъде много по-малко ресурсоемка. Той е лек, откъдето идва и името му, и е доста лесен за използване. Инсталирайте

Конфигуриране на статична мрежа и IPv6 на CentOS 7

Конфигуриране на статична мрежа и IPv6 на CentOS 7

VULTR наскоро направи промени от своя страна и вече всичко трябва да работи добре от кутията с активиран NetworkManager. Ако желаете да деактивирате

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Промяна на Icinga2 за използване на модел главен/клиент на CentOS 6 или CentOS 7

Icinga2 е мощна система за наблюдение и когато се използва в модел главен-клиент, тя може да замени необходимостта от проверки на базата на NRPE. Главният клиент

Как да инсталирате Apache Cassandra 3.11.x на CentOS 7

Как да инсталирате Apache Cassandra 3.11.x на CentOS 7

Използване на различна система? Apache Cassandra е безплатна система за управление на база данни NoSQL с отворен код, която е проектирана да осигури мащабируемост, висока

Как да инсталирате Microweber на CentOS 7

Как да инсталирате Microweber на CentOS 7

Използване на различна система? Microweber е CMS и онлайн магазин с отворен код за плъзгане и пускане. Изходният код на Microweber се хоства на GitHub. Това ръководство ще ви покаже

Как да инсталирате Mattermost 4.1 на CentOS 7

Как да инсталирате Mattermost 4.1 на CentOS 7

Използване на различна система? Mattermost е самостоятелно хоствана алтернатива с отворен код на Slack SAAS услугата за съобщения. С други думи, с Mattermost, вие ca

Създаване на мрежа от сървъри на Minecraft с BungeeCord на Debian 8, Debian 9 или CentOS 7

Създаване на мрежа от сървъри на Minecraft с BungeeCord на Debian 8, Debian 9 или CentOS 7

Какво ви трябва Vultr VPS с поне 1 GB RAM. SSH достъп (с root/административни привилегии). Стъпка 1: Инсталиране на BungeeCord На първо място

Lets Encrypt на Plesk

Lets Encrypt на Plesk

Контролният панел на Plesk разполага с много приятна интеграция за Lets Encrypt. Lets Encrypt е един от единствените доставчици на SSL, които предоставят пълно сертификати

Позволява криптиране на cPanel

Позволява криптиране на cPanel

Lets Encrypt е сертифициращ орган, посветен на предоставянето на SSL сертификати безплатно. cPanel изгради чиста интеграция, така че вие ​​и вашият клиент

Как да инсталирате Concrete5 на CentOS 7

Как да инсталирате Concrete5 на CentOS 7

Използване на различна система? Concrete5 е CMS с отворен код, който предлага много отличителни и полезни функции за подпомагане на редакторите при лесното създаване на съдържание и

Как да инсталирате табло за преглед на CentOS 7

Как да инсталирате табло за преглед на CentOS 7

Използване на различна система? Review Board е безплатен инструмент с отворен код за преглед на изходен код, документация, изображения и много други. Това е уеб базиран софтуер

Настройте HTTP удостоверяване с Nginx на CentOS 7

Настройте HTTP удостоверяване с Nginx на CentOS 7

В това ръководство ще научите как да настроите HTTP удостоверяване за уеб сървър на Nginx, работещ на CentOS 7. Изисквания За да започнете, ще ви трябва

Как да инсталирате YOURLS на CentOS 7

Как да инсталирате YOURLS на CentOS 7

YOURLS (Your Own URL Shortener) е приложение за съкращаване на URL адреси и анализ на данни с отворен код. В тази статия ще разгледаме процеса на инсталиране

Как да инсталирате и конфигурирате ArangoDB на CentOS 7

Как да инсталирате и конфигурирате ArangoDB на CentOS 7

Използване на различна система? Въведение ArangoDB е NoSQL база данни с отворен код с гъвкав модел на данни за документи, графики и ключ-стойности. то е

Използване на Etckeeper за контрол на версиите на /etc

Използване на Etckeeper за контрол на версиите на /etc

Въведение Директорията /etc/ играе критична роля в начина, по който функционира една Linux система. Причината за това е, че почти всяка системна конфигурация

Защо трябва да използвате SSHFS? Как да монтирате отдалечена файлова система със SSHFS на CentOS 6

Защо трябва да използвате SSHFS? Как да монтирате отдалечена файлова система със SSHFS на CentOS 6

Много системни администратори управляват големи количества сървъри. Когато файловете трябва да бъдат достъпни на различни сървъри, влизането във всеки от тях поотделно ок

Настройване на сървър на Half Life 2 на CentOS 6

Настройване на сървър на Half Life 2 на CentOS 6

Този урок ще обхване процеса на инсталиране на сървър за игри Half Life 2 на CentOS 6 System. Стъпка 1: Инсталиране на предпоставките За да настроите ou

Как да инсталирате Laravel GitScrum на CentOS 7

Как да инсталирате Laravel GitScrum на CentOS 7

Laravel GitScrum или GitScrum е инструмент за производителност с отворен код, предназначен да помогне на екипите за разработка да внедрят методологията на Scrum по подобен начин.

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

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

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

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

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

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

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

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

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече