{"id":1812,"date":"2019-06-11T15:56:26","date_gmt":"2019-06-11T13:56:26","guid":{"rendered":"https:\/\/nsix.pl\/kb\/?p=1812"},"modified":"2019-12-12T12:40:36","modified_gmt":"2019-12-12T11:40:36","slug":"konfiguracja-iptables-na-debian","status":"publish","type":"post","link":"https:\/\/nsix.pl\/kb\/konfiguracja-iptables-na-debian\/","title":{"rendered":"Konfiguracja iptables na Debian"},"content":{"rendered":"\n<p>Debian zawiera kilka pakiet\u00f3w, kt\u00f3re zawieraj\u0105 narz\u0119dzia do zarz\u0105dzania  zapor\u0105. Jednym z nich jest iptables, kt\u00f3ry jest instalowany jako cz\u0119\u015b\u0107  systemu podstawowego. Narz\u0119dzie iptables s\u0142u\u017cy przede wszystkim do filtracji pakiet\u00f3w IPv4 i mo\u017cna je wykorzysta\u0107 do konfiguracji zapory (firewall). Zapora natomiast dzia\u0142a dzi\u0119ki dopasowywaniu ka\u017cdego pakietu, kt\u00f3ry przechodzi przez interfejs sieciowy do zestawu regu\u0142 zdefiniowanych w zaporze, kt\u00f3re decyduj\u0105, co zrobi\u0107.<\/p>\n\n\n\n<p>Komendy iptables musz\u0105 by\u0107 uruchamiane z przywilejami root, dlatego koniecznym jest, aby zalogowa\u0107 si\u0119 do systemu jako u\u017cytkownik root.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>tabela z regu\u0142ami iptables:<\/strong><\/li><\/ul>\n\n\n\n<p>Aby wy\u015bwietli\u0107 list\u0119 regu\u0142 znajduj\u0105cych si\u0119 w tabeli, nale\u017cy uruchomi\u0107 polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">#  iptables -L<\/pre>\n\n\n\n<p>Pusta tabela nie b\u0119dzie zawiera\u0142a \u017cadnych regu\u0142, ale jak mo\u017cna zauwa\u017cy\u0107 znajduj\u0105 si\u0119 w niej trzy \u0142a\u0144cuchy (INPUT, OUTPUT oraz FORWARD):<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Chain INPUT (policy ACCEPT)\n target     prot opt source               destination\n Chain FORWARD (policy ACCEPT)\n target     prot opt source               destination\n Chain OUTPUT (policy ACCEPT)\n target     prot opt source               destination<\/pre>\n\n\n\n<p>Nazwy \u0142a\u0144cuch\u00f3w wskazuj\u0105, do kt\u00f3rego ruchu zostan\u0105 zastosowane regu\u0142y na ka\u017cdej li\u015bcie. INPUT dotyczy wszystkich po\u0142\u0105cze\u0144 przychodz\u0105cych na maszyn\u0119 wirtualn\u0105, OUTPUT dotyczy wszystkich po\u0142\u0105cze\u0144 wychodz\u0105cych z maszyny wirtualnej, FORWARD dotyczy po\u0142\u0105cze\u0144, kt\u00f3re zostan\u0105 przekazane dalej. Ka\u017cdy \u0142a\u0144cuch ma r\u00f3wnie\u017c swoje ustawienie zasad (policy), kt\u00f3re okre\u015blaj\u0105 spos\u00f3b obs\u0142ugi ruchu. Je\u017celi nie pasuje do \u017cadnych okre\u015blonych regu\u0142, domy\u015blnie jest ustawiony na akceptacj\u0119 (ACCEPT).<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>dodawanie regu\u0142 iptables:<\/strong><\/li><\/ul>\n\n\n\n<p>Zapory mo\u017cna zazwyczaj konfigurowa\u0107 na jeden z dw\u00f3ch sposob\u00f3w: albo ustawi\u0107 domy\u015bln\u0105 regu\u0142\u0119 na akceptowanie, a nast\u0119pnie blokowa\u0107 niepo\u017c\u0105dany ruch za pomoc\u0105 okre\u015blonych regu\u0142, albo za pomoc\u0105 regu\u0142 definiowa\u0107 dozwolony ruch i blokowa\u0107 wszystko inne. Ta ostatnia jest cz\u0119sto zalecana, poniewa\u017c pozwala na prewencyjne blokowanie ruchu, zamiast konieczno\u015bci reaktywnego odrzucania po\u0142\u0105cze\u0144, kt\u00f3re nie powinny pr\u00f3bowa\u0107 uzyska\u0107 dost\u0119pu do maszyny wirtualnej.<\/p>\n\n\n\n<p>Aby rozpocz\u0105\u0107 korzystanie z iptables, nale\u017cy najpierw doda\u0107 regu\u0142y dla dozwolonego ruchu przychodz\u0105cego dla potrzebnych us\u0142ug. Iptables mo\u017ce \u015bledzi\u0107 stan po\u0142\u0105czenia. Aby doda\u0107 regu\u0142\u0119 dla po\u0142\u0105cze\u0144 nawi\u0105zanych, nale\u017cy u\u017cy\u0107 poni\u017cszego polecenia:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT<\/pre>\n\n\n\n<p>Mo\u017cna teraz sprawdzi\u0107, czy regu\u0142a zosta\u0142a dodana w tabeli przy u\u017cyciu polecenia jak poprzednio:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"> # iptables -L<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>otworzenie SSH na porcie 22 lub innym:<\/strong><\/li><\/ul>\n\n\n\n<p>Nast\u0119pnie nale\u017cy zezwoli\u0107 na po\u0142\u0105czenia przychodz\u0105ce dla us\u0142ug b\u0105d\u017a na okre\u015blony port. Niezb\u0119dne jest dopuszczenie po\u0142\u0105czenia SSH, uruchamiaj\u0105c poni\u017csze polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># iptables -A INPUT -p tcp --dport ssh -j ACCEPT<\/pre>\n\n\n\n<p>Us\u0142uga ssh w iptables standardowo zosta\u0142a okre\u015blona na porcie numer 22. Je\u017celi SSH dzia\u0142a na porcie innym ni\u017c 22, nale\u017cy doda\u0107 regu\u0142\u0119 pozwalaj\u0105c\u0105 na ruch przychodz\u0105cy dla danego portu.<\/p>\n\n\n\n<p>Na przyk\u0142ad us\u0142uga SSH dzia\u0142a na porcie 5244\/tcp. Nale\u017cy wi\u0119c doda\u0107 regu\u0142\u0119 z tym numerem portu poleceniem:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># iptables -A INPUT -p tcp --dport 5244 -j ACCEPT<\/pre>\n\n\n\n<p>Je\u017celi na maszynie wirtualnej dzia\u0142aj\u0105 popularne us\u0142ugi takie jak http, https r\u00f3wnie\u017c nale\u017cy doda\u0107 regu\u0142\u0119 pozwalaj\u0105ca na ruch przychodz\u0105cy dla tych us\u0142ug:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>otworzenie http na porcie 80:<\/strong><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"># iptables -I INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>otworzenie https na porcie 443:<\/strong><\/li><\/ul>\n\n\n\n<pre class=\"wp-block-preformatted\"># iptables -I INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT<\/pre>\n\n\n\n<p>Po dodaniu wszystkich wymaganych regu\u0142, nale\u017cy zmieni\u0107 zasady polityki \u0142a\u0144cucha INPUT na DROP, aby nie zezwala\u0107 na innych ruch przychodz\u0105cy ni\u017c zdefiniowany w dodanych wcze\u015bniej regu\u0142ach. Nale\u017cy to uczyni\u0107 poleceniem:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># iptables -P INPUT DROP<\/pre>\n\n\n\n<p>Te same zasady polityki mo\u017cna r\u00f3wnie\u017c zdefiniowa\u0107 dla innych \u0142a\u0144cuch\u00f3w, wprowadzaj\u0105c nazw\u0119 danego \u0142a\u0144cucha i wybieraj\u0105c opcj\u0119 DROP lub ACCEPT.<\/p>\n\n\n\n<p>Aby zweryfikowa\u0107 list\u0119 regu\u0142 iptables, nale\u017cy wyda\u0107 polecenie:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># iptables -vL<\/pre>\n\n\n\n<p>Zostanie wy\u015bwietlona tabela zawieraj\u0105ca wszystkie aktywne regu\u0142y:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># iptables -vL\n\nChain INPUT (policy ACCEPT 0 packets, 0 bytes)\n  pkts bytes target     prot opt in     out     source               destination\n     0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh state NEW\n     0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:http state NEW\n     0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:https state NEW\n\n Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)\n  pkts bytes target     prot opt in     out     source               destination<\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>zapisywanie konfiguracji:<\/strong><\/li><\/ul>\n\n\n\n<p>Obecnie, je\u017celi maszyna wirtualna zosta\u0142aby ponownie uruchomiona wprowadzone zmiany w iptables nie zostan\u0105 zapami\u0119tane. Aby zapami\u0119ta\u0107 wprowadzone zmiany, nale\u017cy utworzy\u0107 i zapisa\u0107 plik z tabel\u0105 regu\u0142 poleceniem:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># iptables-save &gt; \/etc\/iptables\/rules.v4 <\/pre>\n\n\n\n<p>Nast\u0119pnie mo\u017cna po prostu przywr\u00f3ci\u0107 zapisane regu\u0142y, odczytuj\u0105c zapisany plik:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># Overwrite the current rules\n iptables-restore &lt; \/etc\/iptables\/rules.v4\n\n# Add the new rules keeping the current ones\n iptables-restore -n &lt; \/etc\/iptables\/rules.v4<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Debian zawiera kilka pakiet\u00f3w, kt\u00f3re zawieraj\u0105 narz\u0119dzia do zarz\u0105dzania zapor\u0105. Jednym z nich jest iptables, kt\u00f3ry jest instalowany jako cz\u0119\u015b\u0107 systemu podstawowego. Narz\u0119dzie iptables s\u0142u\u017cy przede wszystkim do filtracji pakiet\u00f3w IPv4 i mo\u017cna je wykorzysta\u0107 do konfiguracji zapory (firewall). Zapora natomiast dzia\u0142a dzi\u0119ki dopasowywaniu ka\u017cdego pakietu, kt\u00f3ry przechodzi przez interfejs sieciowy do zestawu regu\u0142 zdefiniowanych [&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,35,42,229,33,228,41],"class_list":["post-1812","post","type-post","status-publish","format-standard","hentry","category-linux-maszyny-wirtualne","tag-bezpieczenstwo","tag-debian","tag-firewall","tag-iptables","tag-linux","tag-reguly","tag-zabezpieczenia"],"_links":{"self":[{"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/posts\/1812","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=1812"}],"version-history":[{"count":64,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/posts\/1812\/revisions"}],"predecessor-version":[{"id":3249,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/posts\/1812\/revisions\/3249"}],"wp:attachment":[{"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/media?parent=1812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/categories?post=1812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nsix.pl\/kb\/wp-json\/wp\/v2\/tags?post=1812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}