Jak Nastavit Firewall Pomocí FirewallD na CentOS 7

Úvod

Firewalld je firewall, řešení pro správu k dispozici pro mnoho distribucí Linuxu, která se chová jako frontend pro iptables filtrování paketů systému, který poskytuje jádro Linuxu. V této příručce se budeme zabývat tím, jak nastavit firewall pro váš server a ukáže vám základy řízení firewall s firewall-cmd nástroje pro správu (pokud chcete raději použít iptables s CentOS, postupujte podle tohoto průvodce).

Poznámka: Tam je šance, že může pracovat s novější verze firewalld, než bylo k dispozici v době psaní tohoto, nebo že váš server byl nastaven trochu jinak, než například server používá v této příručce. Chování některých příkazů vysvětlených v této příručce se tedy může lišit v závislosti na konkrétní konfiguraci.

Základní Pojmy v Firewalld

Než začneme mluvit o tom, jak vlastně používat firewall-cmd nástroj pro správu vaší konfigurace brány firewall, měli bychom se seznámit s několika základními pojmy, které nástroj přináší.

zóny

démon firewalld spravuje skupiny pravidel pomocí entit nazývaných „zóny“. Zóny jsou v podstatě sady pravidel diktovat, co provoz by měl být povolen v závislosti na úrovni, důvěra v sítě je počítač připojen k. Síťovým rozhraním je přiřazena zóna, která diktuje chování, které by měl firewall povolit.

pro počítače, které se mohou často pohybovat mezi sítěmi (jako jsou notebooky), poskytuje tento druh flexibility dobrý způsob změny pravidel v závislosti na prostředí. Můžete mít přísná pravidla, která zakazují většinu provozu při provozu na veřejné síti WiFi, a zároveň umožňují uvolněnější omezení při připojení k domácí síti. Pro server nejsou tyto zóny tak důležité, protože síťové prostředí se zřídka, pokud vůbec, mění.

bez ohledu na to, jak dynamické může být vaše síťové prostředí, je stále užitečné seznámit se s obecnou myšlenkou každé z předdefinovaných zón pro firewalld. V pořadí od nejméně důvěryhodných po nejdůvěryhodnější jsou předdefinované zóny v rámci firewalld :

  • pokles: Nejnižší úroveň důvěry. Všechna příchozí připojení jsou zrušena bez odpovědi a jsou možná pouze odchozí připojení.
  • blok: podobně jako výše uvedené, ale namísto pouhého zrušení připojení jsou příchozí požadavky odmítnuty zprávou icmp-host-prohibited nebo icmp6-adm-prohibited.
  • veřejnost: představuje veřejné, nedůvěryhodné sítě. Nedůvěřujete jiným počítačům, ale můžete povolit vybraná příchozí připojení případ od případu.
  • externí: externí sítě v případě, že používáte bránu firewall jako bránu. Je nakonfigurován pro maskování NAT tak, aby vaše interní síť zůstala soukromá, ale dosažitelná.
  • vnitřní: druhá strana vnější zóny, používaná pro vnitřní část brány. Počítače jsou poměrně důvěryhodné a jsou k dispozici některé další služby.
  • dmz: Používá se pro počítače umístěné v DMZ (izolované počítače, které nebudou mít přístup ke zbytku vaší sítě). Povolena jsou pouze určitá příchozí připojení.
  • práce: používá se pro pracovní stroje. Důvěřujte většině počítačů v síti. Může být povoleno několik dalších služeb.
  • domov: domácí prostředí. Obecně to znamená, že důvěřujete většině ostatních počítačů a že bude přijato několik dalších služeb.
  • důvěryhodné: důvěřujte všem strojům v síti. Nejotevřenější z dostupných možností a měl by být používán střídmě.

používat firewall, můžeme vytvořit pravidla a změnit vlastnosti našich zóny a pak přiřadit naše síťové rozhraní podle toho, které zóny jsou nejvhodnější.

trvalost pravidel

v firewalld mohou být pravidla označena jako trvalá nebo okamžitá. Pokud je pravidlo přidáno nebo změněno, ve výchozím nastavení se změní chování aktuálně spuštěné brány firewall. Při dalším spuštění budou stará pravidla vrácena.

firewall-cmd operace může trvat --permanent příznak k označení, že non-ephemeral firewall by měla být cílená. To ovlivní sadu pravidel, která je znovu načtena při spuštění. Toto oddělení znamená, že můžete otestovat pravidla v aktivní instanci brány firewall a poté znovu načíst, pokud se vyskytnou problémy. Příznak --permanent můžete také použít k vytvoření celé sady pravidel v průběhu času, která budou všechna použita najednou při vydání příkazu reload.

nainstalujte a povolte spuštění brány Firewall při spuštění

firewalld je standardně nainstalován v některých distribucích Linuxu, včetně mnoha obrázků CentOS 7. Může však být nutné nainstalovat firewalld sami:

  • sudo yum install firewalld

po instalaci firewalld můžete službu povolit a restartovat server. Mějte na paměti, že povolení firewalld způsobí spuštění služby při spuštění. Nejlepší je vytvořit pravidla brány firewall a využít příležitosti k jejich vyzkoušení před konfigurací tohoto chování, aby se předešlo možným problémům.

  • sudo systemctl enable firewalld
  • sudo reboot

Když se server restartuje, váš firewall by měl být vychován, vaše síťová rozhraní by měl být kladen do zóny nakonfigurován (nebo pádu zpět do nakonfigurován výchozí zóna), a nějaká pravidla spojená s zónu(y) budou použity na související rozhraní.

můžeme ověřit, zda je spuštěna služba a dosažitelné psaní:

  • sudo firewall-cmd --state
output
running

To znamená, že firewall je nahoru a běží s výchozí konfiguraci.

seznámení s Aktuální Pravidla brány Firewall

předtím, Než začneme dělat úpravy, měli bychom se seznámit s výchozím prostředí a pravidla stanovená daemon.

zkoumáním výchozích hodnot

můžeme zjistit, která zóna je aktuálně vybrána jako výchozí zadáním:

  • firewall-cmd --get-default-zone
output
public

Od doby, co jsme nedali firewalld žádné příkazy, aby se odchýlit od výchozí zóna, a žádný z našich rozhraní jsou nakonfigurován tak, aby vázat se na jiné pásmo, které zóny bude také jen „aktivní“ zóny (zóna, která je ovládající provoz pro naše rozhraní). Můžeme ověřit, že zadáním:

  • firewall-cmd --get-active-zones
output
public interfaces: eth0 eth1

Zde můžeme vidět, že náš příklad server má dvě síťová rozhraní je řízen firewallem (eth0 a eth1). Obě jsou v současné době spravovány podle pravidel definovaných pro veřejnou zónu.

jak víme, jaká pravidla jsou však spojena s veřejnou zónou? Můžeme vytisknout výchozí zóna je konfigurace zadáním:

  • sudo firewall-cmd --list-all
output
public (default, active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: ssh dhcpv6-client ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

můžeme říct, z výstupu, že tato zóna je oba výchozí a aktivní, a že eth0 a eth1 rozhraní jsou spojené s touto zónou (to už jsme věděli tohle všechno z našich předchozích šetření). Můžeme však také vidět, že tato zóna umožňuje normální operace spojené s klientem DHCP (pro přiřazení IP adresy) a SSH (pro vzdálenou správu).

zkoumání alternativních zón

nyní máme dobrou představu o konfiguraci Výchozí a aktivní zóny. Můžeme zjistit i informace o dalších zónách.

získat seznam dostupných zón, typ:

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

můžeme vidět konkrétní konfiguraci související s zone, včetně --zone= parametr --list-all příkaz:

  • sudo firewall-cmd --zone=home --list-all
output
home interfaces: sources: services: dhcpv6-client ipp-client mdns samba-client ssh ports: masquerade: no forward-ports: icmp-blocks: rich rules:

můžete výstup všechny zóny definice pomocí --list-all-zones možnost. Pravděpodobně budete chtít přenést výstup do pageru pro snadnější prohlížení:

  • sudo firewall-cmd --list-all-zones | less

Výběr Pásma pro Rozhraní

Pokud jste nakonfigurovali vaše síťová rozhraní jinak, každé rozhraní bude uveden ve výchozí zóně, je-li firewall spuštěn.

Změna Pásma Rozhraní

můžete přechodové rozhraní mezi zónami během relace pomocí --zone= parametr v kombinaci s --change-interface= parametr. Stejně jako u všech příkazů, které upravují bránu firewall, budete muset použít sudo.

například můžeme převést naše rozhraní eth0 do zóny „domů“ zadáním tohoto:

  • sudo firewall-cmd --zone=home --change-interface=eth0
output
success
Poznámka:

když jste v přechodu, rozhraní pro nové zóny, být vědomi toho, že jste pravděpodobně změnou služby, které bude funkční. Zde se například přesouváme do“ domovské “ zóny, která má k dispozici SSH. To znamená, že naše spojení by nemělo klesnout. Některé jiné zóny nemají ve výchozím nastavení povoleno SSH a pokud dojde k přerušení připojení při používání jedné z těchto zón, můžete se znovu přihlásit.

můžeme ověřit, že to bylo úspěšné tím, že znovu požádáme o aktivní zóny:

  • firewall-cmd --get-active-zones
output
home interfaces: eth0public interfaces: eth1

Nastavení Výchozí Zóna

Pokud jsou všechny vaše rozhraní může být nejlépe řešeny prostřednictvím jediného zóny, je to asi jednodušší vybrat nejlepší výchozí zóna a pak použít, že pro vaše konfigurace.

výchozí zónu můžete změnit parametrem --set-default-zone=. To bude okamžitě změnit nějaké rozhraní, které spadl zpět na výchozí do nové zóny:

  • sudo firewall-cmd --set-default-zone=home
output
success

Nastavení Pravidla pro vaše Aplikace

základní způsob, jak definovat výjimky brány firewall pro služby, které chcete zpřístupnit je snadné. Projdeme si základní myšlenku zde.

přidání služby do zón

nejjednodušší metodou je přidání služeb nebo portů, které potřebujete, do zón, které používáte. Znovu, můžete získat seznam dostupných služeb s --get-services možnost:

  • firewall-cmd --get-services
output
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server
Poznámka:

můžete získat více podrobnosti o každé z těchto služeb při pohledu na jejich spojené .xml soubor v /usr/lib/firewalld/services adresář. Například služba SSH je definována takto:

/usr/lib/firewalld/services/ssh.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>

službu pro zónu můžete povolit pomocí parametru --add-service=. Operace se zaměří na výchozí zónu nebo na jakoukoli zónu určenou parametrem --zone=. Ve výchozím nastavení se tím upraví pouze aktuální relace brány firewall. Trvalou konfiguraci brány firewall můžete upravit zahrnutím příznaku --permanent.

například, pokud jsme běží webový server slouží běžného HTTP provozu, můžeme povolit tento přenos pro rozhraní v naší „veřejnosti“ zóna pro tuto relaci zadáním:

  • sudo firewall-cmd --zone=public --add-service=http

pokud chcete změnit výchozí zónu, můžete vynechat --zone=. Můžeme ověřit, že operace byla úspěšná pomocí --list-all nebo --list-services operace:

  • sudo firewall-cmd --zone=public --list-services
output
dhcpv6-client http ssh

pokud jste vyzkoušeli, že vše funguje tak, jak má, budete pravděpodobně chtít změnit trvalé pravidla brány firewall tak, aby vaše služba bude stále k dispozici po restartu. Můžeme změnit naši“ veřejnou “ zónu trvalým zadáním:

  • sudo firewall-cmd --zone=public --permanent --add-service=http
output
success

můžete ověřit, že to bylo úspěšné přidáním příznaku --permanent do operace --list-services. Pro jakékoli operace --permanent musíte použít sudo :

  • sudo firewall-cmd --zone=public --permanent --list-services
output
dhcpv6-client http ssh

vaše“ veřejná “ zóna nyní umožní webový provoz HTTP na portu 80. Pokud je váš webový server nakonfigurován pro použití SSL / TLS, budete také chtít přidat službu https. Můžeme to přidat k aktuální relaci a trvalému pravidlu-nastaveno zadáním:

  • sudo firewall-cmd --zone=public --add-service=https
  • sudo firewall-cmd --zone=public --permanent --add-service=https

co když není k dispozici žádná vhodná služba?

služby brány firewall, které jsou součástí instalace firewalld, představují mnoho nejčastějších požadavků na aplikace, ke kterým můžete povolit přístup. Pravděpodobně však budou existovat scénáře, kdy tyto služby neodpovídají vašim požadavkům.

v této situaci máte dvě možnosti.

Otevření Portu pro vaše Zóny

nejjednodušší způsob, jak přidat podporu pro vaši konkrétní aplikaci je otevřít porty, které používá v příslušné zóně(s). To je stejně snadné jako zadání portu nebo rozsahu portů a přidruženého protokolu pro porty, které potřebujete otevřít.

například, pokud naše aplikace běží na portu 5000 a používá TCP, můžeme přidat k „veřejné“ zóna pro tuto relaci pomocí --add-port= parametr. Protokoly mohou být buď tcp nebo udp:

  • sudo firewall-cmd --zone=public --add-port=5000/tcp
output
success

můžeme ověřit, že to bylo úspěšné pomocí --list-ports operace:

  • sudo firewall-cmd --zone=public --list-ports
output
5000/tcp

je také možné zadat sekvenční rozsah portů oddělením začíná a končí v přístavu v rozmezí s pomlčkou. Například, pokud naše aplikace používá UDP porty 4990 do 4999, mohli bychom otevřít na „veřejné“ zadáním:

  • sudo firewall-cmd --zone=public --add-port=4990-4999/udp

Po testování, bychom pravděpodobně chtít přidat tyto stálé firewall. Můžete to udělat zadáním:

  • sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
  • sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
  • sudo firewall-cmd --zone=public --permanent --list-ports
output
successsuccess5000/tcp 4990-4999/udp

definování služby

otevření portů pro vaše zóny je snadné, ale může být obtížné sledovat, k čemu je každá z nich určena. Pokud jste někdy zrušili službu na vašem serveru, můžete si jen těžko pamatovat, které porty, které byly otevřeny, jsou stále vyžadovány. Aby se předešlo této situaci, je možné definovat službu.

služby jsou jednoduše kolekce portů s přidruženým názvem a popisem. Používání služeb je jednodušší spravovat než porty, ale vyžaduje trochu práce předem. Nejjednodušší způsob, jak začít, je zkopírovat existující skript (nalezený v /usr/lib/firewalld/services) do adresáře /etc/firewalld/services, kde firewall hledá nestandardní definice.

například bychom mohli zkopírovat definici služby SSH, kterou použijeme pro naši definici služby“ příklad“, jako je tato. Celým názvem mínus .xml přípona bude diktovat název služby v rámci služby seznam brány firewall:

  • sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml

Nyní můžete upravit definici nalézt v souboru, který jste zkopírovali:

sudo vi /etc/firewalld/services/example.xml

Pro spuštění, soubor bude obsahovat SSH definice, které jste zkopírovali:

/etc/firewalld/služby/příklad.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>

většina této definice je ve skutečnosti metadata. Budete chtít změnit krátký název služby ve značkách <short>. Toto je pro vaši službu čitelné jméno. Měli byste také přidat popis, abyste měli více informací, pokud budete někdy potřebovat audit služby. Jedinou konfigurací, kterou musíte provést, která skutečně ovlivňuje funkčnost služby, bude pravděpodobně definice portu, kde identifikujete číslo portu a protokol, který chcete otevřít. To lze zadat vícekrát.

pro naši“ příkladovou “ službu si představte, že potřebujeme otevřít port 7777 pro TCP a 8888 pro UDP. Vstupem do režimu vložení stisknutím i můžeme stávající definici upravit takto:

/ etc/firewalld / services / example.xml
<?xml version="1.0" encoding="utf-8"?><service> <short>Example Service</short> <description>This is just an example service. It probably shouldn't be used on a real system.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/></service>

stiskněte ESC a poté zadejte :x pro uložení a zavření souboru.

Reload firewall získat přístup k nové služby:

  • sudo firewall-cmd --reload

můžete vidět, že to je teď mezi seznam dostupných služeb:

  • firewall-cmd --get-services
output
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch example freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server

nyní můžete použít tuto službu ve vašem zón, jak jste normálně by.

vytvoření vlastních zón

zatímco předdefinované zóny budou pro většinu uživatelů pravděpodobně více než dostačující, může být užitečné definovat vlastní zóny, které jsou více popisné jejich funkce.

můžete například vytvořit zónu pro váš webový server nazvanou „publicweb“. Možná však budete chtít nakonfigurovat jinou zónu pro službu DNS, kterou poskytujete ve své soukromé síti. K tomu byste mohli chtít zónu zvanou „privateDNS“.

při přidávání zóny ji musíte přidat do trvalé konfigurace brány firewall. Poté můžete znovu načíst konfiguraci do spuštěné relace. Například, můžeme vytvořit dvě zóny, které jsme diskutovali nad zadáním:

  • sudo firewall-cmd --permanent --new-zone=publicweb
  • sudo firewall-cmd --permanent --new-zone=privateDNS

můžete Si ověřit, že jsou přítomny ve vašem trvalé konfigurace zadáním:

  • sudo firewall-cmd --permanent --get-zones
output
block dmz drop external home internal privateDNS public publicweb trusted work

Jak bylo uvedeno dříve, tyto nebudou k dispozici v aktuální instanci firewall ještě:

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

Znovu načtěte bránu firewall, aby tyto nové zóny do aktivní konfigurace:

  • sudo firewall-cmd --reload
  • firewall-cmd --get-zones
output
block dmz drop external home internal privateDNS public publicweb trusted work

Nyní, můžete začít přiřazení příslušné služby a porty pro vaše zóny. Obvykle je vhodné upravit aktivní instanci a po testování tyto změny přenést do trvalé konfigurace. Například, pro „publicweb“ zóny, možná budete chtít přidat SSH, HTTP a HTTPS služby:

  • sudo firewall-cmd --zone=publicweb --add-service=ssh
  • sudo firewall-cmd --zone=publicweb --add-service=http
  • sudo firewall-cmd --zone=publicweb --add-service=https
  • sudo firewall-cmd --zone=publicweb --list-all
output
publicweb target: default icmp-block-inversion: no interfaces: sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Stejně tak můžeme přidat službu DNS, aby naše „privateDNS“ zóny:

  • sudo firewall-cmd --zone=privateDNS --add-service=dns
  • sudo firewall-cmd --zone=privateDNS --list-all
output
privateDNS interfaces: sources: services: dns ports: masquerade: no forward-ports: icmp-blocks: rich rules:

Můžeme pak změnit naše rozhraní do těchto nových oblastí, aby je otestovali:

  • sudo firewall-cmd --zone=publicweb --change-interface=eth0
  • sudo firewall-cmd --zone=privateDNS --change-interface=eth1

V tomto bodě, budete mít možnost vyzkoušet své konfigurace. Pokud tyto hodnoty fungují pro vás, budete chtít přidat stejná pravidla do trvalé konfigurace. Můžete to udělat tím, re-použití pravidla s --permanent vlajky:

  • sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh
  • sudo firewall-cmd --zone=publicweb --permanent --add-service=http
  • sudo firewall-cmd --zone=publicweb --permanent --add-service=https
  • sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns

Po trvale uplatňování těchto pravidel, můžete restartovat vaši síť a reload firewall service:

  • sudo systemctl restart network
  • sudo systemctl reload firewalld

Ověřit, že správné zóny byly přiřazeny:

  • firewall-cmd --get-active-zones
output
privateDNS interfaces: eth1publicweb interfaces: eth0

A ověřit, že příslušné služby jsou k dispozici pro obě zóny:

  • sudo firewall-cmd --zone=publicweb --list-services
output
http https ssh
  • sudo firewall-cmd --zone=privateDNS --list-services
output
dns

úspěšně Jste nastavit vlastní zóny! Pokud chcete, aby se jeden z těchto zón výchozí pro další rozhraní, nezapomeňte nastavit, že chování s --set-default-zone= parametr:

sudo firewall-cmd --set-default-zone=publicweb

Závěr

nyní Byste měli mít docela dobrou představu o tom, jak spravovat firewalld služby na vašem systému CentOS pro den-to-denní použití.

služba firewalld umožňuje konfigurovat udržovatelná pravidla a sady pravidel, které berou v úvahu vaše síťové prostředí. To umožňuje bezproblémový přechod mezi různými zásady brány firewall pomocí zón a dává administrátorům schopnost abstraktní řízení přístavu do více přátelské služby, definice. Získání pracovních znalostí o tomto systému vám umožní využít flexibilitu a sílu, kterou tento nástroj poskytuje.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

Previous post Cefalu, Itálie: Kompletní průvodce sicilským plážovým městem
Next post Tajemství Večeře Nápady S Položkami Menu