Před několika dny jsem popsal konfiguraci IPv6 na Scientific Linuxu. Zprovozněním IP adresy to ale nekončí, je potřeba přístup na server zabezpečit, firewallem, stejně jako na IPv4. Osobně používám pro konfiguraci firewallu balík shorewall, konfigurace v článku bude pro něj.
Trocha teorie
Nejprve něco málo o ICMP packetech, určitě je znáte, posílá je třeba utilita „ping“. U IPv4 protokolu, je možné jej komplet zablokovat, bez většího dopadu na funkčnost sítě, i když by se to dělat nemělo. Ne tak u IPv6, kde když ICMP zablokujete, tak se o Vás nedozví Váš místní router a nepošle Vám žádná data. Není ale vhodné povolit celý ICMP protokol, některé informace, které může poskytnout nepotřebuje nikdo cizí vědět. Naštěstí shorewall6 automaticky nastavuje všechna potřebná ICMP a ostatní standardně zahazuje. Zvláštní povolení potřebují jen dvojice ping-pong (Echo Request a Echo Reply), které povolíme zvlášť.
Konfigurace shorewall6 je velmi podobná shorewallu, až na několik výjimek. Z těch nejpodstatnějších bych zmínil neexistenci NATu (ale ten aktuálně neexistuje ani v protokolu) a ipv6 místo ipv4 v popisu zóny. Jinak je konfigurace, až na IP adresy v podstatě totožná.
Praxe
Firewall nastavuji na jeden server. Dovnitř povoluji přístup jen na běžící služby, kde je to potřeba, ven povoluji vše. Verze shorewall6 je 4.5.4, ip6tables 1.4.7, distribuce Scientific Linux 6.2. Zkontrolujte v /etc/shorewall/shorewall.conf povolení IPv6.
DISABLE_IPV6=No
Další konfigurace už se odehrává v /etc/shorewall6/. Ve standardní konfiguraci je v tomto adresáři zbytečně moc souborů, promažte jej tak, aby zbyly jen tyto soubory:
# ls -1 interfaces Makefile policy rules shorewall6.conf zones
Pokud by jste potřebovali později některý ze smazaných souborů, najdete je v /usr/share/shorewall6/configfiles/.
Následující soubory jsou všechny v adresáří /etc/shorewall6/. Vždy uvedu jméno souboru a řádky potřebné k nastavení. Jako síťový interface uvedu eth0, je na Vás dodat si správný interface Vašeho serveru.
shorewall6.conf – povolíme start shorewall6
STARTUP_ENABLED=Yes
zones – nadefinujeme 2 zóny, fw je firewall, tedy samotný server, net je internet
fw firewall net ipv6
interfaces – propojíme internet se síťovým rozhraním, aby shorewall věděl kam má umístit pravidla. Tcpflags příznak nastaví zahazování packetů, které mají „nemožnou“ kombinaci TCP příznaků. Takové packety by se na síti neměly vůbec objevit, není proto problém je rovnou zahodit.
net eth0 tcpflags
policy – nastavíme výchozí politiku pro pravidla firewallu na zahazování všeho co míří na server a povolení všeho co míří ze serveru ven. Parametr info je nepovinný, zajistí zalogování každého zahozeného packetu. Tato konfigurace není tak bezpečná, jako kdybychom pro odchozí pakety nastavili DROP a povolili přístup ven jen tam, kde je to potřeba, ale na ukázku to stačí.
$FW net ACCEPT net $FW DROP info # The FOLLOWING POLICY MUST BE LAST all all DROP info
rules – povolíme provoz na serveru pro aplikace, které jej potřebují. Povoluji:
- přístup na ssh na server (přístup ze serveru je povolen díky policy)
- DNS dotazy na nameservery
- ping serveru zvenčí
SECTION NEW # ssh SSH(ACCEPT) net $FW # PING ACCEPT net $FW ipv6-icmp 128 ACCEPT net $FW ipv6-icmp 129
Poslední věc, která zbývá je aktivovat firewall a zajistit jeho spouštění po startu serveru:
shorewall6 start chkconfig shorewall6 on
Toto je základní konfigurace, máte-li na serveru například webserver, musíte si povolit i přístupy na port 80 a 443, ale to už je stejné, jako v konfiguraci shorewall.
Komentování je uzavřeno.