Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Bezprzewodowy router na Debianie - wersja kompletna cz. II

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ń:

r   e   k   l   a   m   a

nano /usr/local/bin/firewall

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:

chown root:root /usr/local/bin/firewall

i dajemy prawo do uruchamiania:

chmod u+x /usr/local/bin/firewall

Skrypt wczytamy wydając polecenie:

firewall

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.

cp /usr/local/bin/firewall /etc/network/if-pre-up.d/firewall

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:

nano /etc/network/if-pre-up.d/ip6firewall

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

#!/bin/sh

IPTABLES=/sbin/ip6tables

# kasowanie starych zasad i ustawianie domyślnych reguł w łańcuchach jako DROP

echo "[+] Kasowanie starych reguł..."

$IPTABLES -F

$IPTABLES -X

$IPTABLES -P INPUT DROP

$IPTABLES -P OUTPUT DROP

$IPTABLES -P FORWARD DROP

$IPTABLES -t mangle -P PREROUTING DROP

$IPTABLES -t mangle -P POSTROUTING DROP

I nadajemy odpowiednie prawa:

chown root:root /etc/network/if-pre-up.d/ip6firewall

chmod u+x /etc/network/if-pre-up.d/ip6firewall

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ę

PermitRootLogin yes

poprawiamy na

PermitRootLogin no

/etc/init.d/ssh restart

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:

netstat -untap

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.

update-rc.d nfs-common remove

update-rc.d rpc.statd remove

update-rc.d portmap remove

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

net.ipv4.conf.default.rp_filter=1

net.ipv4.conf.all.rp_filter=1

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.all.accept_source_route = 0

net.ipv6.conf.all.accept_source_route = 0

Wydajemy polecenie:

sysctl -p /etc/sysctl.d/local.conf

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 ;-) 

linux bezpieczeństwo

Komentarze