Let's Encrypt SSL сертификатът се предоставя БЕЗПЛАТНО във всички наши пакети за уеб хостинг.
ПодробностиИзберете свой собствен "Нает сървър" с необходимите параметри и селектирайте най-доброто за вашия проект.
Изберете измежду множество различни видове конфигурации и модифицирайте според необходимостта.
Стартирайте технологичния растеж на вашия бизнес
Let's Encrypt SSL сертификатът се предоставя БЕЗПЛАТНО във всички наши пакети за уеб хостинг.
ПодробностиИзберете свой собствен "Нает сървър" с необходимите параметри и селектирайте най-доброто за вашия проект.
Изберете измежду множество различни видове конфигурации и модифицирайте според необходимостта.
Стартирайте технологичния растеж на вашия бизнес
Защитната стена е един от най-основните начини за наблюдение и филтриране на входящия и изходящия трафик. Набор от входящи и изходящи правила, дефинирани в настройките на защитната стена, определят кой трафик да се разреши или блокира.
В CentOS и други дистрибуции на Linux, firewalld е софтуерът за управление на защитната стена по подразбиране. В следващия урок ще започнем с обсъждане на основните концепции за защитна стена и след това ще я използваме за конфигуриране на защитна стена на CentOS 8.
Запознайте се със
зоните на firewalld във firewalld Услугите на
Firewall-cmd
във firewalld
Време на изпълнение срещу постоянни настройки в firewalld
Конфигуриране на firewalld на CentOS 8
Предварителни условия
Инсталирайте и активирайте firewalld
Запознайте се със настройките по подразбиране Промяна на зоната
по подразбиране
Промяна на зоната за интерфейс
Промяна на целта на зона
Създаване на персонализирана зона
Прилагане на услуги към зона
Създаване на персонализирана услуга
Отворете IP адреси и портове
Запазване на конфигурации по време на изпълнение за постоянно
Преди да започнем да си играем с firewalld, нека първо го опознаем по-добре.
Firewalld има набор от предварително дефинирани правила, известни като зони , които ви помагат да определите нивото на доверие, което имате в конкретна мрежа. Свързването на мрежов интерфейс със зона определя естеството на разрешеното поведение. За да разберем това малко по-добре, нека разгледаме няколко зони на защитна стена по подразбиране:
Firewall-cmd е помощната програма от командния ред за демона на firewalld. Използва се за дефиниране или промяна на конфигурациите на защитната стена.
Услугите са набор от съществуващи правила, които могат да се прилагат в рамките на зона. Те са чудесен начин за прилагане на различни правила наведнъж. Ще ги разгледаме по-подробно в следващите раздели.
Firewalld ви позволява да дефинирате два вида настройки: време на изпълнение и постоянни. Времето за изпълнение е текущо работещата конфигурация, която се връща към постоянната конфигурация, зададена при рестартиране.
По подразбиране, когато използвате firewall-cmd за конфигуриране на вашата защитна стена, промените се правят в конфигурационния комплект по време на изпълнение. За да направите промените постоянни, можете да добавите --permanent
опцията към командата.
Сега, след като донякъде сме запознати с firewalld, нека започнем да го конфигурираме на машина с CentOS 8.
sudo
привилегии.Firewalld е предварително инсталиран в повечето дистрибуции на Linux, включително CentOS 8. За да потвърдите, изпълнете:
sudo yum списък инсталиран | grep firewalld
Ако firewalld е инсталиран на вашата машина, трябва да получите някакъв изход като по-долу.
If firewalld is installed on your machine, you should get some output like below.
firewalld.noarch 0.8.0-4.el8 @anaconda firewalld-filesystem.noarch 0.8.0-4.el8 @anaconda
Ако не получите нищо, изпълнете следната команда, за да инсталирате firewalld:
sudo yum install firewalld
Следващата стъпка е да активирате firewalld и да го накарате да стартира при стартиране. За да направите това, стартирайте:
sudo systemctl enable firewalld
Накрая рестартирайте вашата машина:
reboot
След като вашият сървър се рестартира, използвайте следната команда, за да проверите дали firewalld наистина работи:
sudo firewall-cmd –state
Трябва да видите изхода на сървъраrunning
.
Сега нека се опитаме да проучим текущите активни конфигурации на защитната стена.
За да видите зоната по подразбиране:
sudo firewall-cmd --get-default-zone
Трябва да видите, че public
е настроено.
За да видите активните зони:
sudo firewall-cmd --get-active-zones
Тъй като все още не сме задали друга зона, това също трябва да ни даде public
.
Output public interfaces: ens3
Можем също да видим, че единственият ни мрежов интерфейс на сървъра ens3
в момента се управлява в публичната зона.
За да видите всички правила, приложими към пубисната зона, стартирайте:
sudo firewall-cmd --list-all
Output public (active) target: default icmp-block-inversion: no interfaces: ens3 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Можем да видим, наред с други неща, че правилата позволяват директен SSH в машината чрез интерфейса ens3 .
За да видите другите налични зони, стартирайте:
sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work
Можете също да видите правилата по подразбиране за всяка зона. Например, за да видите всички правила за зоната home :
sudo firewall-cmd --zone=home --list-all
Output home target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client mdns samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Зоната по подразбиране се прилага за всичко, което не е изрично присвоено на нито една зона. Например, ако има източник, мрежов интерфейс или връзка, която не може да бъде свързана с нито една конфигурирана зона, firewalld ще използва правилата за зоната по подразбиране за това.
За да промените зоната по подразбиране:
sudo firewall-cmd --set-default-zone=home
Output success
проверете:
sudo firewall-cmd --get-default-zone
Output home
За да промените зоната за интерфейс:
sudo firewall-cmd --zone=internal --change-interface=ens3
Горната команда ще активира зоната internal
за интерфейса ens3
.
Output success
Целта на зоната дефинира нейното поведение по подразбиране, когато работи с входящ трафик, който не може да бъде категоризиран, съгласно което и да е определено правило. Целта може да бъде DROP, ACCEPT, REJECT или по подразбиране.
За да промените целта на зона, можете да използвате следната команда:
sudo firewall-cmd --zone=вътрешен --set-target=DROP
Това ще настрои целта за вътрешната зона на DROP
.
Firewalld също ви дава гъвкавостта да дефинирате своя собствена зона. Това е много удобно при дефиниране на специфични за приложението правила.
За да създадете нова зона с име redis :
sudo firewall-cmd --new-zone=redis --permanent
Ще отворим и TCP порт и ще разрешим достъп само от един IP източник. И двете правила ще станат постоянни.
sudo firewall-cmd --zone=redis --add-port=10003/tcp --permanent
sudo firewall-cmd --zone=redis --add-source=192.168.123.1/32 --permanent
Накрая рестартирайте демона на firewalld, за да приложите промените:
sudo firewall-cmd reload
Output for all 4 above commands success
Услугите ни позволяват да прилагаме набор от правила в рамките на зона. Точно като зоните, има някои услуги по подразбиране, които можете да използвате. За да ги видите всички:
sudo firewall-cmd --get-services
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell kube-apiserver ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server
За да видите повече информация за услугите, можете да прочетете съответните xml конфигурационни файлове, налични в /usr/lib/firewalld/services
директорията, като използвате less
и добавите директория с име на файл (изброени по-долу)
less /usr/lib/firewalld/services/filename.xml
Примерна команда
sudo less /usr/lib/firewalld/services/grafana.xml
За да видите пълния списък с файлове по-долу, стартирайте
sudo ls /usr/lib/firewalld/services
Ouput amanda-client.xml grafana.xml mysql.xml slp.xml amanda-k5-client.xml gre.xml new-service.xml smtp-submission.xml amqps.xml high-availability.xml nfs3.xml smtps.xml amqp.xml https.xml nfs.xml smtp.xml apcupsd.xml http.xml nmea-0183.xml snmptrap.xml audit.xml imaps.xml nrpe.xml snmp.xml bacula-client.xml imap.xml ntp.xml spideroak-lansync.xml bacula.xml ipp-client.xml nut.xml spotify-sync.xml bb.xml ipp.xml openvpn.xml squid.xml bgp.xml ipsec.xml ovirt-imageio.xml ssdp.xml bitcoin-rpc.xml ircs.xml ovirt-storageconsole.xml ssh.xml bitcoin-testnet-rpc.xml irc.xml ovirt-vmconsole.xml steam-streaming.xml bitcoin-testnet.xml iscsi-target.xml plex.xml svdrp.xml bitcoin.xml isns.xml pmcd.xml svn.xml bittorrent-lsd.xml jenkins.xml pmproxy.xml syncthing-gui.xml ceph-mon.xml kadmin.xml pmwebapis.xml syncthing.xml ceph.xml kdeconnect.xml pmwebapi.xml synergy.xml cfengine.xml kerberos.xml pop3s.xml syslog-tls.xml cockpit.xml kibana.xml pop3.xml syslog.xml condor-collector.xml klogin.xml postgresql.xml telnet.xml ctdb.xml kpasswd.xml privoxy.xml tentacle.xml dhcpv6-client.xml kprop.xml prometheus.xml tftp-client.xml dhcpv6.xml kshell.xml proxy-dhcp.xml tftp.xml dhcp.xml kube-apiserver.xml ptp.xml tile38.xml distcc.xml ldaps.xml pulseaudio.xml tinc.xml dns-over-tls.xml ldap.xml puppetmaster.xml tor-socks.xml dns.xml libvirt-tls.xml quassel.xml transmission-client.xml docker-registry.xml libvirt.xml radius.xml upnp-client.xml docker-swarm.xml lightning-network.xml rdp.xml vdsm.xml dropbox-lansync.xml llmnr.xml redis-sentinel.xml vnc-server.xml elasticsearch.xml managesieve.xml redis.xml wbem-https.xml etcd-client.xml matrix.xml RH-Satellite-6.xml wbem-http.xml etcd-server.xml mdns.xml rpc-bind.xml wsmans.xml finger.xml memcache.xml rsh.xml wsman.xml freeipa-4.xml minidlna.xml rsyncd.xml xdmcp.xml freeipa-ldaps.xml mongodb.xml rtsp.xml xmpp-bosh.xml freeipa-ldap.xml mosh.xml salt-master.xml xmpp-client.xml freeipa-replication.xml mountd.xml samba-client.xml xmpp-local.xml freeipa-trust.xml mqtt-tls.xml samba-dc.xml xmpp-server.xml ftp.xml mqtt.xml samba.xml zabbix-agent.xml ganglia-client.xml mssql.xml sane.xml zabbix-server.xml ganglia-master.xml ms-wbt.xml sips.xml git.xml murmur.xml sip.xml
За да добавите услуга към зона, използвайте:
sudo firewall-cmd --zone=internal --add-service=http
Output success
Горната команда ще позволи http трафик на всички интерфейси в internal
зоната.
По същия начин, ако планирате да използвате вашия сървър като DNS, можете да добавите услугата DNS:
sudo firewall-cmd --zone=internal --add-service=dns
Output success
Точно както можете да създадете персонализирана зона, можете също да създадете персонализирана услуга. Ето стъпките:
/usr/lib/firewalld/services
директорията.sudo touch /usr/lib/firewalld/services/new-service.xml
sudo firewall-cmd reload
Вече трябва да можете да приложите новата услуга, както всяка друга.
За да активирате целия входящ трафик от IP адрес или диапазон, в рамките на зона, без да се налага да създавате нова услуга:
sudo firewall-cmd --zone=internal --add-source=192.168.123.1 --permanent
За да премахнете IP адреса, просто го заменете --add-source
с --remove-source
.
sudo firewall-cmd --zone=internal --remove-source=192.168.123.1 --permanent
По същия начин, ако искате да разрешите целия входящ трафик на конкретен порт:
sudo firewall-cmd --zone=internal --add-port=8081/tcp --permanent
и да премахнете порта:
sudo firewall-cmd --zone=internal --remove-port=8081/tcp --permanent
Output success
Ако по всяко време искате да запазите настройките си по време на изпълнение, преди рестартирането да ги измие, можете да използвате следната команда:
sudo firewall-cmd --runtime-to-permanent
Output
success