{"id":1728,"date":"2019-06-11T15:57:17","date_gmt":"2019-06-11T13:57:17","guid":{"rendered":"https:\/\/nsix.pl\/kb\/?p=1728"},"modified":"2019-12-12T12:39:01","modified_gmt":"2019-12-12T11:39:01","slug":"instalacja-i-konfiguracja-firewalld-na-centos","status":"publish","type":"post","link":"https:\/\/nsix.pl\/kb\/instalacja-i-konfiguracja-firewalld-na-centos\/","title":{"rendered":"Instalacja i konfiguracja FirewallD na CentOS"},"content":{"rendered":"\n<p>CentOS zawiera kilka narz\u0119dzi do zarz\u0105dzania zapor\u0105. Jednym z nich jest Iptables, kt\u00f3ry jest instalowany jako cz\u0119\u015b\u0107  systemu podstawowego. Pocz\u0105wszy od CentOS 7, narz\u0119dzie FirewallD zast\u0119puje iptables jako domy\u015blne do zarz\u0105dzania zapor\u0105.<\/p>\n\n\n\n<p>Odpowiednio skonfigurowana zapora, jest jednym z najwa\u017cniejszych aspekt\u00f3w og\u00f3lnego bezpiecze\u0144stwa systemu. FirewallD to kompletne rozwi\u0105zanie do konfiguracji zapory, kt\u00f3re zarz\u0105dza regu\u0142ami iptables i zapewnia interfejs do ich obs\u0142ugi.<\/p>\n\n\n\n<p>W poni\u017cszym artykule zosta\u0142 wyja\u015bniony proces konfiguracji zapory z FirewallD w systemie CentOS.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>instalacja oraz w\u0142\u0105czenie FirewallD:<\/strong><\/li><\/ul>\n\n\n\n<p>FirewallD jest instalowany domy\u015blnie w CentOS 7, lecz w przypadku gdy nie jest zainstalowany w systemie, mo\u017cna zainstalowa\u0107 pakiet, wydaj\u0105c polecenie jego instalacji:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo yum install firewalld<\/pre>\n\n\n\n<p>Us\u0142uga Firewalld jest domy\u015blnie wy\u0142\u0105czona. Instalacja nie aktywuje automatycznie zapory, aby unikn\u0105\u0107 blokady z serwera. Mo\u017cna sprawdzi\u0107 stan zapory za pomoc\u0105 polecenia:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --state\n\nnot running<\/pre>\n\n\n\n<p>Je\u015bli FirewallD zosta\u0142 w\u0142a\u015bnie zainstalowany lub wcze\u015bniej nie zosta\u0142 w\u0142\u0105czony, to jego status b\u0119dzie nie uruchomiony (not running), w przeciwnym wypadku status b\u0119dzie uruchomiony (running).<\/p>\n\n\n\n<p>Aby uruchomi\u0107 FirewallD jako us\u0142ug\u0119 oraz doda\u0107 go do listy program\u00f3w uruchamianych wraz ze startem systemu, nale\u017cy wyda\u0107 polecenia:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo systemctl start firewalld\n# sudo systemctl enable firewalld<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>domy\u015blna strefa u\u017cywana w FirewallD:<\/strong><\/li><\/ul>\n\n\n\n<p>Po w\u0142\u0105czeniu us\u0142ugi FirewallD po raz pierwszy strefa publiczna zostanie ustawiona jako strefa domy\u015blna. Mo\u017cna wy\u015bwietli\u0107 stref\u0119 domy\u015bln\u0105 u\u017cywan\u0105 w FirewallD, wpisuj\u0105c polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --get-default-zone\n\npublic<\/pre>\n\n\n\n<p>Aby wy\u015bwietli\u0107 list\u0119 dost\u0119pnych stref, nale\u017cy wyda\u0107 polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --get-zones\n\nblock dmz drop external home internal public trusted work<\/pre>\n\n\n\n<p>Domy\u015blnie wszystkim interfejsom sieci przypisywana jest strefa domy\u015blna. Aby sprawdzi\u0107, kt\u00f3re strefy s\u0105 u\u017cywane przez typ interfejsu sieciowego, nale\u017cy wyda\u0107 polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --get-active-zones\n\npublic\n   interfaces: eth0 eth1<\/pre>\n\n\n\n<p>Powy\u017cszy przyk\u0142ad przedstawia, \u017ce oba interfejsy eth0 i eth1 s\u0105 przypisane do strefy publicznej.<\/p>\n\n\n\n<p>Mo\u017cna wy\u015bwietli\u0107 konfiguracj\u0119 oraz ustawienia regu\u0142 zapory dla strefy publicznej poleceniem:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --zone=public --list-all\n\npublic (active)\n   target: default\n   icmp-block-inversion: no\n   interfaces: eth0 eth1\n   sources:\n   services: ssh dhcpv6-client\n   ports:\n   protocols:\n   masquerade: no\n   forward-ports:\n   source-ports:\n   icmp-blocks:\n   rich rules:<\/pre>\n\n\n\n<p>Z powy\u017cszego wyniku mo\u017cna wywnioskowa\u0107, \u017ce strefa publiczna jest aktywna i ustawiona jako domy\u015blna, u\u017cywana przez interfejsy eth0 i eth1. Dozwolone s\u0105 tak\u017ce po\u0142\u0105czenia zwi\u0105zane z klientem DHCP i SSH.<\/p>\n\n\n\n<p>Aby sprawdzi\u0107 konfiguracj\u0119 wszystkich dost\u0119pnych typ\u00f3w stref, nale\u017cy wyda\u0107 polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --list-all-zones<\/pre>\n\n\n\n<p>Polecenie wy\u015bwietli du\u017c\u0105 list\u0119 ustawie\u0144 wszystkich dost\u0119pnych stref.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>zmiana strefy domy\u015blnej interfejsu sieciowego:<\/strong><\/li><\/ul>\n\n\n\n<p>Mo\u017cna \u0142atwo zmieni\u0107 stref\u0119 interfejsu, u\u017cywaj\u0105c flagi &#8211;zone w po\u0142\u0105czeniu z flag\u0105 &#8211;change-interface. Dla przyk\u0142adu nast\u0119puj\u0105ce polecenie przypisze interfejs eth1 do strefy roboczej (work):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --zone=work --change-interface=eth1<\/pre>\n\n\n\n<p>Weryfikacj\u0119 wprowadzonych zmian, mo\u017cna sprawdzi\u0107 poleceniem:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --get-active-zones\n\nwork\n   interfaces: eth1\n public\n   interfaces: eth0<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>og\u00f3lna zmiana strefy domy\u015blnej:<\/strong><\/li><\/ul>\n\n\n\n<p>Aby zmieni\u0107 stref\u0119 domy\u015bln\u0105, nale\u017cy u\u017cy\u0107 flagi &#8211;set-default-zone, a nast\u0119pnie nazwy strefy, kt\u00f3ra ma zosta\u0107 ustawiona jako domy\u015blna. Na przyk\u0142ad, aby zmieni\u0107 stref\u0119 domy\u015bln\u0105 na domow\u0105 (home), nale\u017cy uruchomi\u0107 nast\u0119puj\u0105ce polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --set-default-zone=home<\/pre>\n\n\n\n<p> Weryfikacj\u0119 wprowadzonych zmian, mo\u017cna sprawdzi\u0107 poleceniem:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --get-default-zone\n\nhome<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>ruch przychodz\u0105cy us\u0142ugi w zaporze:<\/strong><\/li><\/ul>\n\n\n\n<p>W FirewallD mo\u017cna zezwoli\u0107 na ruch dla okre\u015blonych port\u00f3w na podstawie predefiniowanych regu\u0142 zwanych us\u0142ugami.<\/p>\n\n\n\n<p>Aby uzyska\u0107 list\u0119 wszystkich domy\u015blnych dost\u0119pnych typ\u00f3w us\u0142ug, nale\u017cy wyda\u0107 polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --get-services<\/pre>\n\n\n\n<figure class=\"wp-block-image\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"267\" src=\"https:\/\/nsix.pl\/kb\/wp-content\/uploads\/2019\/06\/firewalld-services-1024x267.jpg\" alt=\"firewalld serwisy oraz us\u0142ugi\" class=\"wp-image-1766\" srcset=\"https:\/\/nsix.pl\/kb\/wp-content\/uploads\/2019\/06\/firewalld-services-1024x267.jpg 1024w, https:\/\/nsix.pl\/kb\/wp-content\/uploads\/2019\/06\/firewalld-services-300x78.jpg 300w, https:\/\/nsix.pl\/kb\/wp-content\/uploads\/2019\/06\/firewalld-services-768x200.jpg 768w, https:\/\/nsix.pl\/kb\/wp-content\/uploads\/2019\/06\/firewalld-services-60x16.jpg 60w, https:\/\/nsix.pl\/kb\/wp-content\/uploads\/2019\/06\/firewalld-services-150x39.jpg 150w, https:\/\/nsix.pl\/kb\/wp-content\/uploads\/2019\/06\/firewalld-services.jpg 1220w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Wi\u0119cej informacji o ka\u017cdej us\u0142udze mo\u017cna znale\u017a\u0107, otwieraj\u0105c powi\u0105zany plik .xml w katalogu \/usr\/lib\/firewalld\/services. Na przyk\u0142ad us\u0142uga HTTP jest zdefiniowana w ten spos\u00f3b:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?>\n&lt;service>\n  &lt;short>WWW (HTTP)&lt;\/short>\n  &lt;description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.&lt;\/description>\n  &lt;port protocol=\"tcp\" port=\"80\"\/>\n&lt;\/service><\/code><\/pre>\n\n\n\n<p>Aby zezwoli\u0107 na ruch przychodz\u0105cy HTTP (port 80) dla interfejs\u00f3w w strefie publicznej, tylko dla bie\u017c\u0105cej sesji, nale\u017cy uruchomi\u0107 polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --zone=public --add-service=http<\/pre>\n\n\n\n<div class=\"st-alert st-alert- \">Je\u015bli modyfikowana jest strefa domy\u015blna, mo\u017cna pomin\u0105\u0107 flag\u0119 &#8211;zone.<\/div>\n\n\n\n<p>Aby sprawdzi\u0107, czy us\u0142uga http zosta\u0142a dodana pomy\u015blnie, nale\u017cy u\u017cy\u0107 polecenia z flag\u0105 &#8211;list-services:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --zone=public --list-services\n\nssh dhcpv6-client http<\/pre>\n\n\n\n<p>Je\u015bli zapora ma pami\u0119ta\u0107, aby port 80 (http) by\u0142 otwarty po ponownym uruchomieniu maszyny wirtualnej, nale\u017cy ponownie wpisa\u0107 to samo polecenie, ale tym razem z flag\u0105 &#8211;permanent:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --permanent --zone=public --add-service=http<\/pre>\n\n\n\n<p>Mo\u017cna teraz wy\u015bwietli\u0107 list\u0119 us\u0142ug z &#8211;list-services wraz z flag\u0105 &#8211;permanent, aby zweryfikowa\u0107 zmiany:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --permanent --zone=public --list-services\n\nssh dhcpv6-client http<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>usuwanie us\u0142ugi:<\/strong><\/li><\/ul>\n\n\n\n<p>Sk\u0142adnia usuwania us\u0142ugi jest praktycznie taka sama jak podczas dodawania us\u0142ugi. Po prostu nale\u017cy u\u017cy\u0107 opcji &#8211;remove-service zamiast flagi &#8211;add-service:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --zone=public --remove-service=http --permanent<\/pre>\n\n\n\n<p>Powy\u017csze polecenie usunie us\u0142ug\u0119 http ze sta\u0142ej (permanent) konfiguracji strefy publicznej.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>ruch przychodz\u0105cy na porcie w zaporze:<\/strong><\/li><\/ul>\n\n\n\n<p>Co nale\u017cy zrobi\u0107, je\u015bli na maszynie uruchomiony jest program, dla kt\u00f3rego nie ma odpowiedniej us\u0142ugi na li\u015bcie?<\/p>\n\n\n\n<p>W takich sytuacjach s\u0105 dwie opcje. Mo\u017cna otworzy\u0107 odpowiednie porty lub zdefiniowa\u0107 now\u0105 us\u0142ug\u0119 w FirewallD.<\/p>\n\n\n\n<p>Na przyk\u0142ad us\u0142uga HTTPS nas\u0142uchuje na porcie 443 i u\u017cywa TCP. Aby otworzy\u0107 port w strefie publicznej dla bie\u017c\u0105cej sesji nale\u017cy u\u017cy\u0107 flagi &#8211;add-port = i wyda\u0107 polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --zone=public --add-port=443\/tcp<\/pre>\n\n\n\n<div class=\"st-alert st-alert- \">Protoko\u0142y sieciowe mog\u0105 by\u0107 albo TCP albo UDP.<\/div>\n\n\n\n<p>Aby sprawdzi\u0107, czy port zosta\u0142 pomy\u015blnie dodany, nale\u017cy u\u017cy\u0107 flagi &#8211;list-ports:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --zone=public --list-ports\n\n443\/tcp<\/pre>\n\n\n\n<p>Aby zachowa\u0107 port 443 otwarty po ponownym uruchomieniu maszyny wirtualnej, nale\u017cy doda\u0107 regu\u0142\u0119 do sta\u0142ych ustawie\u0144, uruchamiaj\u0105c to samo polecenie, lecz u\u017cywaj\u0105c flagi &#8211;permanent.<\/p>\n\n\n\n<p>Natomiast sk\u0142adnia usuwania portu jest praktycznie taka sama jak podczas dodawania portu. Po prostu nale\u017cy u\u017cy\u0107 opcji &#8211;remove-port zamiast flagi &#8211;add-port.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --zone=public --remove-port=443\/tcp<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>utworzenie nowej us\u0142ugi w FirewallD:<\/strong><\/li><\/ul>\n\n\n\n<p>Jak ju\u017c wcze\u015bniej zosta\u0142o wspomniane, domy\u015blne us\u0142ugi s\u0105 przechowywane w katalogu \/usr\/lib\/firewalld\/services. Najprostszym sposobem utworzenia nowej us\u0142ugi jest skopiowanie istniej\u0105cego pliku us\u0142ugi do katalogu \/etc\/firewalld\/services, kt\u00f3ry jest miejscem dla plik\u00f3w us\u0142ug tworzonych przez u\u017cytkownika wraz z zmodyfikowanymi ustawieniami.<\/p>\n\n\n\n<p>Na przyk\u0142ad, aby utworzy\u0107 definicj\u0119 us\u0142ugi dla HTTPS, mo\u017cna u\u017cy\u0107 pliku us\u0142ugi HTTP i odpowiednio go zmodyfikowa\u0107. Plik nale\u017cy skopiowa\u0107, a nast\u0119pnie u\u017cy\u0107 edytora nano lub vi w celu naniesienia zmian w konfiguracji:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo cp \/usr\/lib\/firewalld\/services\/http.xml \/etc\/firewalld\/services\/https.xml<\/pre>\n\n\n\n<p>Teraz nale\u017cy otworzy\u0107 nowo utworzony plik https.xml i zmieni\u0107 kr\u00f3tk\u0105 nazw\u0119 i opis us\u0142ugi w znacznikach xml. Najwa\u017cniejszym znacznikiem, kt\u00f3ry nale\u017cy zmieni\u0107, jest znacznik portu, kt\u00f3ry okre\u015bla numer portu i protok\u00f3\u0142, kt\u00f3ry ma zosta\u0107 otwarty.<\/p>\n\n\n\n<p>W poni\u017cszym przyk\u0142adzie zosta\u0142 otwarty port 443 TCP oraz zdefiniowana us\u0142uga o nazwie https:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"utf-8\"?>\n&lt;service version=\"1.0\">\n&lt;short>https&lt;\/short>\n&lt;description>HTTPS is an extension of the Hypertext Transfer Protocol (HTTP). It is used for secure communication over a computer network, and is widely used on the Internet.&lt;\/description>\n&lt;port protocol=\"tcp\" port=\"443\"\/>\n&lt;\/service><\/code><\/pre>\n\n\n\n<p>Mo\u017cna teraz zapisa\u0107 plik https.xml oraz prze\u0142adowa\u0107 us\u0142ug\u0119 FirewallD poleceniem:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># sudo firewall-cmd --reload<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>CentOS zawiera kilka narz\u0119dzi do zarz\u0105dzania zapor\u0105. Jednym z nich jest Iptables, kt\u00f3ry jest instalowany jako cz\u0119\u015b\u0107 systemu podstawowego. Pocz\u0105wszy od CentOS 7, narz\u0119dzie FirewallD zast\u0119puje iptables jako domy\u015blne do zarz\u0105dzania zapor\u0105. Odpowiednio skonfigurowana zapora, jest jednym z najwa\u017cniejszych aspekt\u00f3w og\u00f3lnego bezpiecze\u0144stwa systemu. FirewallD to kompletne rozwi\u0105zanie do konfiguracji zapory, kt\u00f3re zarz\u0105dza regu\u0142ami iptables i [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[181],"tags":[201,37,42,230,33,228,41],"class_list":["post-1728","post","type-post","status-publish","format-standard","hentry","category-linux-maszyny-wirtualne","tag-bezpieczenstwo","tag-centos","tag-firewall","tag-firewalld","tag-linux","tag-reguly","tag-zabezpieczenia"],"_links":{"self":[{"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/posts\/1728","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/comments?post=1728"}],"version-history":[{"count":80,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/posts\/1728\/revisions"}],"predecessor-version":[{"id":3250,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/posts\/1728\/revisions\/3250"}],"wp:attachment":[{"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/media?parent=1728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/categories?post=1728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/tags?post=1728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}