Blog (22)
Komentarze (997)
Recenzje (0)
@parranoyaBezprzewodowy router na Debianie - wersja kompletna cz. II

Bezprzewodowy router na Debianie - wersja kompletna cz. II

16.03.2013 15:52

W części pierwszej napisałem jak uruchomić bezprzewodowy punkt dostępowy oparty na Debianie. Część druga jest o tym jak go trochę zabezpieczyć.

Paranoid

Ludzie korzystający z systemu OpenBSD to najczęściej osoby cierpiące na paranoję związaną z bezpieczeństwem komputerowym. Jeśli ktoś przeczytał część pierwszą (i moje wcześniejsze wpisy) to już wie, że bardzo lubię OpenBSD więc nie mogę pominąć tego tematu.

Mój dom, moja twierdza

Podstawowym środkiem bezpieczeństwa każdego routera jest firewall. Poniżej nie będę starał się opisać zasady konfiguracji iptables bo to temat zbyt obszerny a jedynie przedstawię szkic skryptu filtra pakietów odpowiedni moim zdaniem dla routera. Na początek tworzymy tworzymy plik zawierający regułki dla IPv4 czyli to czego używamy na codzień:

[code=]nano /usr/local/bin/firewall[/code]

Dlaczego akurat w tym miejscu? Ponieważ w systemach uniksowych, folder /usr/local/ jest właściwym miejscem na programy spoza systemu bazowego o czym niestety twórcy "Linuksów" zapomnieli. Ponieważ lista reguł iptables jest dosyć długa, dla wygody Twojej i mojej zamieściłem ją w tym pliku. Następnie zmieniamy prawa dostępu do skryptu:

[code=]chown root:root /usr/local/bin/firewall[/code]

i dajemy prawo do uruchamiania:

[code=]chmod u+x /usr/local/bin/firewall[/code]

Skrypt wczytamy wydając polecenie:

[code=]firewall[/code]

Jeśli okaże się, że firewall zablokował Ci dostęp do routera, wystarczy go zresetować aby przywrócić do niego dostęp. Jeśli wszystko jest w porządku, kopiujemy go do folderu z którego będzie automatycznie uruchamiany podczas startu systemu.

[code=]cp /usr/local/bin/firewall /etc/network/if-pre-up.d/firewall[/code]

Wszystkie skrypty znajdujące się w tym folderze zostaną wykonane PRZED uruchomieniem sieci co w przypadku firewalla jest zdecydowanie dobrym pomysłem. Mało kto pamięta o przygotowaniu firewalla dla IPv6, ponieważ jest jeszcze bardzo rzadko używany, mimo to wiele demonów uruchamianych w systemach unixowych nasłuchuje na adresach IPv4 oraz IPv6. Przezorny zawsze zabezpieczony więc i my się przygotujmy. Podobnie jak wcześniej, tworzymy plik:

[code=]nano /etc/network/if-pre-up.d/ip6firewall[/code]

Wklejamy zawartość (pod warunkiem, że naprawdę nie korzystamy z IPv6):

[code=]#!/bin/sh[/code]

[code=]IPTABLES=/sbin/ip6tables[/code]

[code=]# kasowanie starych zasad i ustawianie domyślnych reguł w łańcuchach jako DROP[/code]

[code=]echo "[+] Kasowanie starych reguł..."[/code]

[code=]$IPTABLES -F[/code]

[code=]$IPTABLES -X[/code]

[code=]$IPTABLES -P INPUT DROP[/code]

[code=]$IPTABLES -P OUTPUT DROP[/code]

[code=]$IPTABLES -P FORWARD DROP[/code]

[code=]$IPTABLES -t mangle -P PREROUTING DROP[/code]

[code=]$IPTABLES -t mangle -P POSTROUTING DROP[/code]

I nadajemy odpowiednie prawa:

[code=]chown root:root /etc/network/if-pre-up.d/ip6firewall[/code]

[code=]chmod u+x /etc/network/if-pre-up.d/ip6firewall[/code]

Firewall gotowy, to teraz zajmiemy się pozostałymi usługami działającymi na naszym routerze. Na początek serwer SSH. Domyślnie uruchamiany jest w Debianie z prawem do logowania się roota co jest wysoce niewskazane. Otwieramy plik /etc/ssh/sshd_config i linijkę

[code=]PermitRootLogin yes[/code]

poprawiamy na

[code=]PermitRootLogin no[/code]

[code=]/etc/init.d/ssh restart[/code]

Logowanie się za pomocą kluczy dramatycznie zwiększa bezpieczeństwo serwera SSH. Jak to zrobić opisałem tutaj.

Przystawmy szklankę do ściany...

Domyślnie Debian uruchamia kilka usług. Są to serwery ssh,exim4, portmap i rpc.bind. Żeby dowiedzieć się jakie usługi nasłuchują w sieci, wydajemy polecenie:

[code=]netstat -untap[/code]

SSHD jest raczej niezbędny. Exim nasłuchuje na pętli zwrotnej lo więc jest nieszkodliwy. Reszta do niczego nam się nie przyda a do tego pod względem bezpieczeństwa cieszy się raczej wątpliwą sławą. Wobec tego wyłączymy im automatyczny start razem z systemem.

[code=]update-rc.d nfs-common remove[/code]

[code=]update-rc.d rpc.statd remove[/code]

[code=]update-rc.d portmap remove[/code]

Jeszcze tylko zmieniamy klika ustawień jądra dopisując do pliku /etc/sysctl.d/local.conf kilka linijek:

[code=]net.ipv4.conf.default.rp_filter=1[/code]

[code=]net.ipv4.conf.all.rp_filter=1[/code]

[code=]net.ipv4.conf.all.send_redirects = 0[/code]

[code=]net.ipv4.conf.all.accept_source_route = 0[/code]

[code=]net.ipv6.conf.all.accept_source_route = 0[/code]

Wydajemy polecenie:

[code=]sysctl -p /etc/sysctl.d/local.conf[/code]

Router powinien działać i być jako tako zabezpieczony.

Podsumowanie

Jeśli postępowałeś krok po kroku, wszystko powinno działać jak należy. Jeśli nie działa to albo Ty coś zrobiłeś źle albo ja coś pokręciłem. W razie czego dajcie znać.

Do naszego routera można dołożyć jeszcze filtrowanie treści WWW. Może w wolnej chwili opiszę jak to zrobić jeśli zainteresowanie tematem będzie odpowiednio duże ;‑)

Wybrane dla Ciebie
Komentarze (16)