Iptables

Z Support
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (Instalace)
(upgrade o informace s nastavením IPv6)
Řádka 10: Řádka 10:
 
Podrobnosti o projektu jsou uvedeny na stránkách http://www.netfilter.org/.  
 
Podrobnosti o projektu jsou uvedeny na stránkách http://www.netfilter.org/.  
  
==Získání instalačního balíčku==
+
=Získání instalačního balíčku=
===Instalace===
+
==Instalace==
 
Firewall '''iptables''' je snadno dostupný (balíček ''iptables'' v APT) a snadno konfigurovatelný. Případně lze instalační balíček také získat na stránkách projektu http://www.netfilter.org/. Pro IPv6 použijte balíček '''ip6tables'''.
 
Firewall '''iptables''' je snadno dostupný (balíček ''iptables'' v APT) a snadno konfigurovatelný. Případně lze instalační balíček také získat na stránkách projektu http://www.netfilter.org/. Pro IPv6 použijte balíček '''ip6tables'''.
  
===Konfigurace===
+
==Konfigurace IPv4==
 
Konfigurace pracovních stanic se může lišit podle potřeb uživatelů. Následující přehled příkazů umožní snadno vytvořit konfiguraci šitou na míru.  
 
Konfigurace pracovních stanic se může lišit podle potřeb uživatelů. Následující přehled příkazů umožní snadno vytvořit konfiguraci šitou na míru.  
  
Před přidáváním pravidel zrušte stávající konfiguraci firewallu (např. v OS Debian GNU/Linux pomocí příkazu <tt>/etc/init.d/iptables clear</tt>).  
+
Před přidáváním pravidel zrušte stávající konfiguraci firewallu, např. v OS Debian GNU/Linux pomocí příkazu <tt>/etc/init.d/iptables clear</tt>. Nemáte-li ve své distribuci tento skript, použijte informace ze sekce [[#Vyčištění konfigurace|Vyčištění konfigurace]].
  
 
Základní konfigurace umožňující pouze komunikaci na adrese 127.x.x.x (loopback), komunikaci iniciovanou pracovní stanicí, komunikaci příbuznou (tj. již navázané spojení se domluví na komunikaci na jiném portu) a odpověď na ICMP. Ostatní příchozí provoz bude blokován a příslušné pakety zahozeny (DROP).  
 
Základní konfigurace umožňující pouze komunikaci na adrese 127.x.x.x (loopback), komunikaci iniciovanou pracovní stanicí, komunikaci příbuznou (tj. již navázané spojení se domluví na komunikaci na jiném portu) a odpověď na ICMP. Ostatní příchozí provoz bude blokován a příslušné pakety zahozeny (DROP).  
Řádka 28: Řádka 28:
 
  $ iptables -A BASE -p tcp -m tcp --dport 113 -j REJECT --reject-with icmp-port-unreachable
 
  $ iptables -A BASE -p tcp -m tcp --dport 113 -j REJECT --reject-with icmp-port-unreachable
 
  $ iptables -A BASE -p icmp -j ACCEPT
 
  $ iptables -A BASE -p icmp -j ACCEPT
 
  
 
Potřebujete-li používat '''ssh''' (port 22), k příkazům ještě přibudou následující příkazy. Pro přístup ze stroje, který je mimo doménu ZČU, je ssh blokováno a je potřeba využít veřejných serverů (eryx).  
 
Potřebujete-li používat '''ssh''' (port 22), k příkazům ještě přibudou následující příkazy. Pro přístup ze stroje, který je mimo doménu ZČU, je ssh blokováno a je potřeba využít veřejných serverů (eryx).  
Řádka 35: Řádka 34:
 
  $ iptables -A INPUT -s 147.228.0.0/255.255.0.0 -j SHELL
 
  $ iptables -A INPUT -s 147.228.0.0/255.255.0.0 -j SHELL
 
  $ iptables -A SHELL -p tcp -m tcp --dport 22 -j ACCEPT
 
  $ iptables -A SHELL -p tcp -m tcp --dport 22 -j ACCEPT
 
  
 
Pro přístup k '''AFS''' je třeba přidat příkazy (k novým jádrům řady 2.6 to již není třeba díky vylepšenému Netfilteru):  
 
Pro přístup k '''AFS''' je třeba přidat příkazy (k novým jádrům řady 2.6 to již není třeba díky vylepšenému Netfilteru):  
Řádka 44: Řádka 42:
 
  $ iptables -A OPENAFS --proto udp --sport 7000:7010 -j ACCEPT
 
  $ iptables -A OPENAFS --proto udp --sport 7000:7010 -j ACCEPT
  
 +
Pro podporu protokolu '''ftp''' je třeba mít v jádře zajištěnou podporu modulem ip_conntrack_ftp (v OS Debian GNU/Linux příkazem <tt>modprobe ip_conntrack_ftp</tt>).
 +
 +
Nakonec je nutné '''výslednou konfiguraci uložit''' např. v OS Debian GNU/Linux nebo Ubuntu Linux příkazem <tt>iptables-save > /root/iptables-active.conf</tt>. Obnovení konfigurace se v případě potřeby provede příkazem <tt>iptables-restore /root/iptables-active.conf</tt>. Případné nejasnosti je vhodné konzultovat s dokumentací k balíčku iptables (<tt>/usr/share/doc/iptables/README.Debian.gz</tt>).
 +
 +
==Konfigurace IPv6==
 +
Konfigurace IPv6 pravidel je v podstatě totožná jako [[#Konfigurace IPv4|pro IPv4]], pouze použijeme pro jejich ovládání příkaz ''ip6tables'' místo ''iptables''.
 +
 +
Základní konfigurace umožňující pouze komunikaci na adrese ::1 (loopback), komunikaci iniciovanou pracovní stanicí, komunikaci příbuznou (tj. již navázané spojení se domluví na komunikaci na jiném portu) a odpověď na ICMP. Ostatní příchozí provoz bude blokován a příslušné pakety zahozeny (DROP).
 +
 +
$ ip6tables -P INPUT DROP
 +
$ ip6tables -N BASE
 +
$ ip6tables -A INPUT -j BASE
 +
$ ip6tables -A BASE -i lo -s ::1 -j ACCEPT
 +
$ ip6tables -A BASE -m state --state RELATED,ESTABLISHED -j ACCEPT
 +
$ ip6tables -A BASE -p tcp -m tcp --dport 113 -j REJECT --reject-with icmp6-port-unreachable
 +
$ ip6tables -A BASE -p icmp -j ACCEPT
 +
 +
Potřebujete-li používat '''ssh''' (port 22), k příkazům ještě přibudou následující příkazy. Pro přístup ze stroje, který je mimo doménu ZČU, je ssh blokováno a je potřeba využít veřejných serverů (eryx).
 +
 +
$ ip6tables -N SHELL
 +
$ ip6tables -A INPUT -s 2001:718:1801::/48 -j SHELL
 +
$ ip6tables -A SHELL -p tcp -m tcp --dport 22 -j ACCEPT
 +
 +
Pro přístup k '''AFS''' je třeba přidat příkazy (k novým jádrům řady 2.6 to již není třeba díky vylepšenému Netfilteru):
 +
 +
$ ip6tables -N OPENAFS
 +
$ ip6tables -A INPUT -j OPENAFS
 +
$ ip6tables -A OPENAFS --proto udp --dport 7000:7010 -j ACCEPT
 +
$ ip6tables -A OPENAFS --proto udp --sport 7000:7010 -j ACCEPT
  
 
Pro podporu protokolu '''ftp''' je třeba mít v jádře zajištěnou podporu modulem ip_conntrack_ftp (v OS Debian GNU/Linux pomocí příkazu <tt>modprobe ip_conntrack_ftp</tt>).  
 
Pro podporu protokolu '''ftp''' je třeba mít v jádře zajištěnou podporu modulem ip_conntrack_ftp (v OS Debian GNU/Linux pomocí příkazu <tt>modprobe ip_conntrack_ftp</tt>).  
  
Nakonec je nutné '''výslednou konfiguraci uložit''' např. v OS Debian GNU/Linux pomocí příkazu <tt>/etc/init.d/iptables save active</tt>. Bohužel vývojáři Debianu od tohoto skriptu opouštějí proto je nutné jej do systému nainstalovat ručně:
+
Nakonec je nutné '''výslednou konfiguraci uložit''' např. v OS Debian GNU/Linux nebo Ubuntu Linux příkazem <tt>iptables-save > /root/ip6tables-active.conf</tt>. Obnovení konfigurace se v případě potřeby provede příkazem <tt>ip6tables-restore /root/ip6tables-active.conf</tt>. Případné nejasnosti je vhodné konzultovat s dokumentací k balíčku ip6tables (<tt>/usr/share/doc/iptables/README.Debian.gz</tt>).
$ gunzip /usr/share/doc/iptables/examples/oldinitdscript.gz
+
 
$ cp /usr/share/doc/iptables/examples/oldinitdscript /etc/init.d/iptables
+
==Vyčištění konfigurace==
  $ mkdir /var/lib/iptables
+
'''Upozornění:''' konfigurujete-li počítač vzdáleně, spusťe uvedené příkazy najednou (ve skriptu), jinak si k počítači odříznete spojení.
  $ chmod 755 /etc/init.d/iptables
+
 
  $ update-rc.d iptables defaults 20
+
Různé linuxové distribuce řeší skripty pro nastavení iptables jiným způsobem. V rozšířených distribucích Debian a Ubuntu postupem času vymizely skripty umožňující "zrušení" všech iptables. Lze to ale jednoduše napravit. Potřebujete-li vypnout všechna pravidla a nechat počítač úplně nechráněný, stačí (ručně nebo ve skriptu) spustit následující sekvenci příkazů pro IPv4:
 +
  iptables -F
 +
  iptables -X
 +
  iptables -P INPUT ACCEPT
 +
iptables -P FORWARD ACCEPT
 +
iptables -P OUTPUT ACCEPT
  
Pozn.: číslo 20, určující pořadí vykonávání skriptu je závislé na aktuálním nastavení distribuce Debian.
+
Pro IPv6 je to stejné, pouze použijeme jiný příkaz na jejich ovládání:
Případné nejasnosti je vhodné konzultovat s dokumentací k balíčku iptables (<tt>/usr/share/doc/iptables/README.Debian.gz</tt>).
+
ip6tables -F
 +
ip6tables -X
 +
ip6tables -P INPUT ACCEPT
 +
ip6tables -P FORWARD ACCEPT
 +
ip6tables -P OUTPUT ACCEPT
  
==Odkazy==
+
=Odkazy=
* http://wiki.ubuntu.cz/bezpečnost/firewall/iptables &ndash; poměrně dobrý a aktuální návod pro začátečníky dobře doplňující předešlé inforamce na této stránce
+
* http://wiki.ubuntu.cz/bezpečnost/firewall/iptables &ndash; poměrně dobrý a aktuální návod pro začátečníky dobře doplňující předešlé informace na této stránce.
 +
* http://www.linuxexpres.cz/praxe/sprava-linuxoveho-serveru-linuxovy-firewall-zaklady-iptables-2 &ndash; další dobrý a aktuální návod doplňující předešlé informace na této stránce.
  
 
[[Kategorie:Bezpečnost]]
 
[[Kategorie:Bezpečnost]]

Verze z 16:44, 6 duben 2013

Iptables je paketový filter. Stejně jako u většiny paketových filtrů je i zde filtrace paketů založena na

  • Typu protokolu - TCP, UDP, ICMP
  • Zdrojová adresa - počítač odesílající data
  • Cílová adresa - počítač přijímající data
  • Další členění protokolu - např. příznak "SYN" u TCP, nebo typ ICMP (echo-request, echo-reply, ...)

Kromě výše uvedených kritérií umožňuje firewall iptables filtraci založenou na stavu, tj. může fungovat také jako stavový firewall.

Podrobnosti o projektu jsou uvedeny na stránkách http://www.netfilter.org/.

Obsah

Získání instalačního balíčku

Instalace

Firewall iptables je snadno dostupný (balíček iptables v APT) a snadno konfigurovatelný. Případně lze instalační balíček také získat na stránkách projektu http://www.netfilter.org/. Pro IPv6 použijte balíček ip6tables.

Konfigurace IPv4

Konfigurace pracovních stanic se může lišit podle potřeb uživatelů. Následující přehled příkazů umožní snadno vytvořit konfiguraci šitou na míru.

Před přidáváním pravidel zrušte stávající konfiguraci firewallu, např. v OS Debian GNU/Linux pomocí příkazu /etc/init.d/iptables clear. Nemáte-li ve své distribuci tento skript, použijte informace ze sekce Vyčištění konfigurace.

Základní konfigurace umožňující pouze komunikaci na adrese 127.x.x.x (loopback), komunikaci iniciovanou pracovní stanicí, komunikaci příbuznou (tj. již navázané spojení se domluví na komunikaci na jiném portu) a odpověď na ICMP. Ostatní příchozí provoz bude blokován a příslušné pakety zahozeny (DROP).

$ iptables -P INPUT DROP
$ iptables -N BASE
$ iptables -A INPUT -j BASE
$ iptables -A BASE -i lo -s 127.0.0.0/255.0.0.0 -j ACCEPT
$ iptables -A BASE -m state --state RELATED,ESTABLISHED -j ACCEPT
$ iptables -A BASE -p tcp -m tcp --dport 113 -j REJECT --reject-with icmp-port-unreachable
$ iptables -A BASE -p icmp -j ACCEPT

Potřebujete-li používat ssh (port 22), k příkazům ještě přibudou následující příkazy. Pro přístup ze stroje, který je mimo doménu ZČU, je ssh blokováno a je potřeba využít veřejných serverů (eryx).

$ iptables -N SHELL
$ iptables -A INPUT -s 147.228.0.0/255.255.0.0 -j SHELL
$ iptables -A SHELL -p tcp -m tcp --dport 22 -j ACCEPT

Pro přístup k AFS je třeba přidat příkazy (k novým jádrům řady 2.6 to již není třeba díky vylepšenému Netfilteru):

$ iptables -N OPENAFS
$ iptables -A INPUT -j OPENAFS
$ iptables -A OPENAFS --proto udp --dport 7000:7010 -j ACCEPT
$ iptables -A OPENAFS --proto udp --sport 7000:7010 -j ACCEPT

Pro podporu protokolu ftp je třeba mít v jádře zajištěnou podporu modulem ip_conntrack_ftp (v OS Debian GNU/Linux příkazem modprobe ip_conntrack_ftp).

Nakonec je nutné výslednou konfiguraci uložit např. v OS Debian GNU/Linux nebo Ubuntu Linux příkazem iptables-save > /root/iptables-active.conf. Obnovení konfigurace se v případě potřeby provede příkazem iptables-restore /root/iptables-active.conf. Případné nejasnosti je vhodné konzultovat s dokumentací k balíčku iptables (/usr/share/doc/iptables/README.Debian.gz).

Konfigurace IPv6

Konfigurace IPv6 pravidel je v podstatě totožná jako pro IPv4, pouze použijeme pro jejich ovládání příkaz ip6tables místo iptables.

Základní konfigurace umožňující pouze komunikaci na adrese ::1 (loopback), komunikaci iniciovanou pracovní stanicí, komunikaci příbuznou (tj. již navázané spojení se domluví na komunikaci na jiném portu) a odpověď na ICMP. Ostatní příchozí provoz bude blokován a příslušné pakety zahozeny (DROP).

$ ip6tables -P INPUT DROP
$ ip6tables -N BASE
$ ip6tables -A INPUT -j BASE
$ ip6tables -A BASE -i lo -s ::1 -j ACCEPT
$ ip6tables -A BASE -m state --state RELATED,ESTABLISHED -j ACCEPT
$ ip6tables -A BASE -p tcp -m tcp --dport 113 -j REJECT --reject-with icmp6-port-unreachable
$ ip6tables -A BASE -p icmp -j ACCEPT

Potřebujete-li používat ssh (port 22), k příkazům ještě přibudou následující příkazy. Pro přístup ze stroje, který je mimo doménu ZČU, je ssh blokováno a je potřeba využít veřejných serverů (eryx).

$ ip6tables -N SHELL
$ ip6tables -A INPUT -s 2001:718:1801::/48 -j SHELL
$ ip6tables -A SHELL -p tcp -m tcp --dport 22 -j ACCEPT

Pro přístup k AFS je třeba přidat příkazy (k novým jádrům řady 2.6 to již není třeba díky vylepšenému Netfilteru):

$ ip6tables -N OPENAFS
$ ip6tables -A INPUT -j OPENAFS
$ ip6tables -A OPENAFS --proto udp --dport 7000:7010 -j ACCEPT
$ ip6tables -A OPENAFS --proto udp --sport 7000:7010 -j ACCEPT

Pro podporu protokolu ftp je třeba mít v jádře zajištěnou podporu modulem ip_conntrack_ftp (v OS Debian GNU/Linux pomocí příkazu modprobe ip_conntrack_ftp).

Nakonec je nutné výslednou konfiguraci uložit např. v OS Debian GNU/Linux nebo Ubuntu Linux příkazem iptables-save > /root/ip6tables-active.conf. Obnovení konfigurace se v případě potřeby provede příkazem ip6tables-restore /root/ip6tables-active.conf. Případné nejasnosti je vhodné konzultovat s dokumentací k balíčku ip6tables (/usr/share/doc/iptables/README.Debian.gz).

Vyčištění konfigurace

Upozornění: konfigurujete-li počítač vzdáleně, spusťe uvedené příkazy najednou (ve skriptu), jinak si k počítači odříznete spojení.

Různé linuxové distribuce řeší skripty pro nastavení iptables jiným způsobem. V rozšířených distribucích Debian a Ubuntu postupem času vymizely skripty umožňující "zrušení" všech iptables. Lze to ale jednoduše napravit. Potřebujete-li vypnout všechna pravidla a nechat počítač úplně nechráněný, stačí (ručně nebo ve skriptu) spustit následující sekvenci příkazů pro IPv4:

iptables -F
iptables -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

Pro IPv6 je to stejné, pouze použijeme jiný příkaz na jejich ovládání:

ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ip6tables -P OUTPUT ACCEPT

Odkazy

Osobní nástroje
Jmenné prostory

Varianty
Zobrazení
Akce
Kdo jsem
Navigace
Často hledaná témata
Nástroje