Управљање услугама
Управљање луком
Омогућавање ФиреваллД
Закључак
ФиреваллД је динамички управљани заштитни зид који пружа подршку за правила заштитног зида ИПв4 и ИПв6 и зоне заштитног зида који су доступни на серверима заснованим на РХЕЛ 7. То је директна замена iptablesи ради са netfilterкодом кернела .
У овом чланку ћемо укратко погледати управљање заштитним зидом на ЦентОС 7 помоћу firewall-cmdкоманде.
Провера да ли је ФиреваллД покренут
Први корак је да проверите да ли је ФиреваллД инсталиран и покренут. Ово се може урадити путем 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
Управљање зонама
ФиреваллД функционише користећи концепт 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
Креирање нових услуга
Понекад ћете можда морати да додате нове прилагођене услуге - на пример ако сте променили порт за ССХ демон. Услуге се дефинишу коришћењем тривијалних КСМЛ датотека, при чему се подразумеване датотеке налазе у /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. На пример, да бисте прилагодили ССХ услугу:
$ 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
Управљање луком
Поред коришћења услуга, можете и ручно да дозволите портове по протоколу. Да бисте дозволили ТЦП порт 7777за publicзону:
$ firewall-cmd --permanent --zone=public --add-port=7777/tcp
success
Такође можете додати опсег портова:
$ firewall-cmd --permanent --zone=public --add-port=7000-8000/tcp
success
Да бисте уклонили (и тиме забранили) ТЦП порт 7777за publicзону:
$ firewall-cmd --permanent --zone=public --remove-port=7777/tcp
success
Такође можете навести тренутно дозвољене портове за дату зону ( public) након поновног учитавања тренутне сесије заштитног зида:
$ firewall-cmd --zone=public --list-ports
7000-8000/tcp
Омогућавање ФиреваллД
Када конфигуришете заштитни зид по свом укусу, обавезно га омогућите преко системд-а како бисте били сигурни да се покреће при покретању:
$ systemctl enable firewalld
Закључак
Постоји много више подешавања и опција унутар ФиреваллД-а, као што су прослеђивање портова, маскирање и комуникација са заштитним зидом преко Д-Бус-а. Међутим, надамо се да вам је овај водич помогао да схватите основе и дао вам алате да започнете са заштитним зидом са вашег сервера. Додатно читање у наставку ће вам помоћи да максимално искористите свој заштитни зид.