| Siec TCP/IP || Otoczenie Sieciowe || Poczta || Usnet || FTP || Konto Shellowe || Czat || IRC || Serwer PROXY |
Firewall czyli ściana ogniowa - Linux W Linuksie wraz z systemem otrzymujemy wbudowany firewall czyli tzw. ścianę ogniową. Ma ona za zadanie chronić nasz komputer przed niepowołanym dostępem z sieci. Zależnie od wersji Linuksa czyli jądra systemu (kernel) mamy różne narzędzia do filtrowania pakietów. Kolejne wersje charakteryzują się większą funkcjonalnością ale nowsze kernele obsługują też starsze narzędzia chociaż w trybie podstawowym w celu ułatwienia migracji. I tak najpopularniejsze obecnie filtry pakietów czyli firewalle to oparte na Linux kernel 2.0 narzędzie ipfw, oparte na Linux kernel 2.2 narzędzie ipchains oraz oparte na Linux kernel 2.4 (obecne też w 2.6) narzędzie iptables. Różnią się one już m.in. w filozofii podejścia do problemu filtrowania pakietów (czyli np. jak pakiet wędruje przez filtry i łańcuchy). Oczywiście iptables posiada większe możliwości konfiguracji, a są one naprawdę potężne gdyż narzędzie iptables jest zaliczane do jednego z najlepszych obecnie istniejących firewalli. Żeby zacząć zabawę firewallem musisz posiadać uprawnienia superużytkownika w danym systemie i tak też jest w Linuksie. Czyli najczęściej musisz być zalogowany jako użytkownik root na danej maszynie. Poniżej została opisana konfiguracja firewalla opartego o iptables do współpracy z Sambą i generalnie siecią smb czyli otoczeniem sieciowym. Konfiguracja iptables w trybie tekstowym
W systemie Linux zawsze wszystko można zrobić w trybie tekstowym czyli konsoli. Tak tez można ustawić reguły iptables. Aby używać iptables potrzebujesz uprawnień superuzytkownika czyli root oraz dystrybucji Linux z jądrem co najmniej 2.4 Do prawidłowego działania w otoczeniu sieciowym czyli sieci SMB twój system musi mieć otwarte poniższe porty:
Poniżej przedstawiono reguły firewalla bazujące na iptables pozwalające działać bez problemu Sambie. Oczywiście jeśli nasz firewall jest bardziej skomplikowany należy owe reguły wkomponować w niego.
Gdzie 192.168.1.0/24 to adresy używane w naszej sieci LAN, bo dla niej udostępniamy Sambę. I potem tylko już /etc/init.d/iptables start oraz /sbin/chkconfig --level 345 iptables on. Konfiguracja iptables w trybie tekstowym - Linux Redhat/Fedora W Linux Redhat w wersji 7.1/7.2/7.3, 8.0, 9 istnieje narzędzie lokkit do konfiguracji w trybie graficznym i tekstowym (konsola) firewalla opartego o iptables. Lokkit służy do naprawdę podstawowej konfiguracji iptables wystarczającej dla komputerów domowych i małych serwerów. Bardziej zaawansowana konfiguracja iptables powinna się odbywać za pomocą innych narzędzi i skryptów powłoki bash. Żeby rozpocząć konfiguracje należy w konsoli wydać komendę lokkit mając uprawnienia użytkownika root. Pojawi nam się okno jak niżej czyli Firewall Configuration, masz do wyboru trzy poziomy czyli Security Lavel
Polecam zaznaczyć Security Lavel na Medium, czyli średni poziom na komputerach domowych.
Następnie wybieramy Customize czyli będziemy dostosowywać nasz ogniomurek, teraz ujrzymy ekran jak poniżej.
Trusted Devices to "zaufane" interfejsy sieciowe czyli podłączone do sieci którym ufamy. Dokładnie znaczy to tyle że na tych kartach sieciowych nie będzie działał firewall czyli będzie zezwolenie na jakikolwiek ruch tam panujący. W naszym przykładzie nie ufamy nikomu ;-). Allow incoming to zezwolenie na ruch na danych portach, czyli wpuszczenie ruchu do określonych usług jakie oferuje nasza maszyna. Lokkit posiada zdefiniowane parę podstawowych usług, ale Samby tam nie ma, której porty należy dodać wykorzystując Other ports. Do prawidłowego działania w otoczeniu sieciowym czyli sieci SMB twój system musi mieć otwarte poniższe porty:
Po zatwierdzeniu wszystkich zmian regułki iptables zostaną zapisane w pliku /etc/sysconfig/iptables i możesz uruchomić firewall na iptables wydając komendę: /etc/init.d/iptables start Należy teraz jeszcze upewnić się że iptables będzie startować wraz z Linuksem, w tym celu wydaj komendę /sbin/chkconfig --level 345 iptables on W Linux Fedora Core 1, lokiit został przemianowany na redhat-config-securitylevel i przy okazji jeszcze bardziej uproszczony. Mianowicie nie ma już poziomów High (Wysoki) i Medium (Średni), został on zastąpiony przez jeden poziom czyli po prostu włączenie firewalla (poziom Enabled z Fedora odpowiada w przybliżeniu poziomowi Medium z Redhat) co też należy uczynić.
Po wybraniu Customize, będziemy dostosowywać nasz ogniomurek podobnie jak w Linux Redhat i tu pozostało praktycznie bez zmian. Czyli musimy dodać w Other ports 137:udp 138:udp 139:tcp i ewentualnie dla Samby 3.0 445:tcp.
I potem tylko już /etc/init.d/iptables start oraz /sbin/chkconfig --level 345 iptables on. Konfiguracja iptables w trybie graficznym - Linux Redhat/Fedora
W Linux Redhat w wersji 8.0, 9 oraz Fedora Core 1 istnieje narzędzie do konfiguracji firewall w trybie graficznym o nazwie Security Level Configuration Tool. Narzędzie to jest dostępne poprzez wybranie w Główym Menu (Main Menu) => System Settings => Security Level lub po prostu wpisaniu komendy redhat-config-securitylevel w oknie terminala (wiersz poleceń).
Powyższe okno Security Level Configuration Tool pochodzi z Linux Redhat 8.0 i jak widać możesz wybrać poziomy analogicznie do narzędzi z wiersza poleceń czyli High, Medium (zalecane) i No Firewall. Następnie zaznacz Customize i w Other ports wpisz 137:udp 138:udp 139:tcp i ewentualnie dla Samby 3.0 445:tcp. Niestety w Linux Redhat 9 oraz Fedora Core 1 zlikwidowano pole Other ports uniemożliwiając w prosty sposób własną konfiguracje firewalla opartego na iptables w trybie graficznym. Na szczęście opcja Other ports wróciła wraz z nowym wydaniem Fedora Core 2 i oby tak zostało jak widać na obrazku poniżej. W Fedora Core 1 zlikwidowano poziomy High i Medium zastępując je jedną opcją Enable Firewall.
Powyższe okno Security Level Configuration Tool pochodzi z Linux Fedora core 2 i jak widać możesz wybrać poziomy analogicznie do narzędzi z wiersza poleceń czyli tylko Enable Firewall (zalecane) i No Firewall. Następnie zaznacz Customize i w Other ports wpisz 137:udp 138:udp 139:tcp i ewentualnie dla Samby 3.0 445:tcp. W Gnome w Redhat jest jeszcze dostępne narzędzie do podstawowej konfiguracji firewall o nazwie znanej w trybu tekstowego czyli Gnome Lokiit. Działa one jako kreator prowadzący użytkownika za rączkę, który odpowiada na kolejne pytania o poziom bezpieczeństwa (analogicznie do już opisanych) ale niestety nie ma możliwości dodania własnych portów. GNOME Lokkit, włączasz poprzez Główe Menu (Main Menu)=> System Tools => More System Tools => Lokkit. Oczywiście brak opcji dodania własnych portów można zrekompensować dodając poniższe linie do pliku /etc/sysconfig/iptables:
Konfiguracja iptables w trybie graficznym za pomocą FireStarter
W systemie Linux istnieje szeroka gama programów do graficznej konfiguracji firewalla na iptables. Często wręcz co dystrybucja do jakieś nowe narzędzie, posiadające większe lub mniejsze możliwości ale z reguły pozwalające na bardzo podstawową konfiguracje. Dlatego też powstał program FireStarter do konfiguracji firewalla w prosty przystępny dla każdego sposób. W końcu nie każdy musi się znać na pisaniu reguł iptables, a chce ustawić owe reguły w trybie graficznym w prosty sposób nie mając zbyt o nich pojęcia. FireStarter jest pisany standardowo dla środowiska graficznego Gnome ale działa też w KDE i jest dostępny dla większości popularnych dystrybucji, do pobrania ze strony domowej programu www.fs-security.com. Poniższy opis powstał na bazie FireStarter w wersji 0.9x. Po zainstalowaniu osadza się ikonka koło zegarka, skąd możesz wywołać program, jak na obrazku poniżej, gdzie zobaczysz tzw. "Trafienia" czyli co FireStarter zablokował.
No ale żeby coś zablokował trzeba go skonfigurować , więc przejdź do Preferencji i wylądujesz wpierw w zakładce "Ogólne" gdzie warto zaznaczyć żeby zapora była włączana podczas startu programu jak na obrazku poniżej.
Następnie jest zakładka "Filtry" pozwalająca odfiltrować różne informacje z początkowego widoku trafień, takie jak zduplikowane trafienia oraz nie przeznaczone dla tego komputera. Dalsza zakładka to "Urządzenie zewnętrzne" gdzie wybierasz którym urządzeniem jesteś podłączony do sieci zewnętrznej czyli z reguły Internetu. Najczęściej będzie to urządzenie eth0. Dalej mamy "Współdzielenie połączenia" czyli możliwość skonfigurowania w prosty sposób tzw. NAT, przydatne jak masz jakoś siec za twoim komputerem. Zakładka "Usługi" pozwala nam włączyć wyjątki w naszym firewallu, żeby z zewnątrz był dostęp do określonych usług na naszej maszynie. Zaznaczamy opcje "Włączony dostęp publiczny do następujących usług" i wybieramy poniżej opcje "Samba/Netbios", ewentualnie jeszcze jakoś inną jeśli jest potrzebna jak na obrazku poniżej.
W zakładce "Filtrowanie ICMP" polecam zaznaczyć "Włączone filtrowanie ICMP związane z następującymi pakietami" i niżej zaznaczyć wszystko poza "Echo" co odrzuci wszystko poza zwykłym działaniem polecenia ping.
Dalej w zakładce "Rodzaj usługi" możesz ustawić poprzez filtrowanie ToS przepriorytetowanie usług sieciowych w celu uzyskania jak największej przepustowości, niezawodności lub opóźnienia. No i na koniec warto czasem zajrzeć do zakładki "Zaawansowane" gdzie możemy włączyć opcje eksperymentalne firewalla oraz ustawić sposób odrzucania pakietów. Masz do wyboru dwie możliwości odrzucania pakietów: "Zabranianie" czyli tzw. DROP, odrzucenie bez poinformowania źródła oraz "Odrzucanie" czyli REJCET, odrzucanie z poinformowaniem źródła. SELinux W Fedora Core 2 pierwszy raz wprowadzono w popularnej dystrybucji Linuksa rozszerzenie zwane SELinux, domyślnie wyłączone. SELinux jest skrótem od Security Enhanced Linux rozszerzenia systemu Linux opartego o architekturę Mandatory Access Control (MAC) czyli obowiązkowej listy dostępu. Mandatory Access Control (MAC) jest uzupełnieniem ale w pewnym sensie i przeciwieństwem standardowego Discretionary Access Control (DAC), które bazuje tylko na identyfikatorze użytkownika i prawach dostępu do plików. MAC oznacza, że jądro, sprawdzając czy ktoś ma prawo uruchomić proces sprawdza politykę bezpieczeństwa zawartą w danej polisie. Owa polityka może definiować praktycznie dowolny aspekt dowolnych uruchamianych programów. Od wersji Fedora Core 3, SELinux jest domyślnie uruchamiane zaraz po instalacji systemu. Nowością od wersji 3 jest istnienie dwóch rodzajów polis. Domyślną polisą bezpieczeństwa staje się polisa określona jako targeted policy czyli polisa "docelowa". Polisa ta stosuje politykę restrykcji SELinux tylko do części działających procesów i demonów głownie sieciowych czyli: named, httpd, dhcpd, portmap, squid, nscd, syslogd, snmpd , ntpd, smbd, nmb. Pozostałe procesy działają w domenie unconfined_t, w której stosowany jest standardowy tryb kontroli dostępu systemów Unix czyli DAC (discretionary access controls). Drugą z dostępnych polis jest strict policy czyli polisa "ścisła"', czyli bardziej restrykcyjna, w której wszystkie procesy bez wyjątku poddane są zasadom MAC określonym przez architekturę SELinux. Konfiguracja SELinux w Fedora Core znajduje się w katalogu /etc/selinux. Podstawowe ustawienia są zdefiniowane w pliku /etc/selinux/config. Zawiera on następujące opcje:
Opcje SELINUX możemy ustawić jako włączoną (enforcing), wyłączoną ale logującą naruszenia polityki bezpieczeństwa (permissive) oraz wyłączoną (disabled). Opcje typu polityki czyli SELINUXTYPE jak widać można ustawić na omówione już targeted lub strict.
W tym wypadku interesuje nas działanie pakietu Samba i wchodzących w jego skład demonów nmbd, smbd oraz winbind w kontekście SELInux. Na obrazku powyżej pokazano ustawienia SELinux w narzędziu graficznym Security Level Configuration Tool, (system-config-securitylevel w Menu >> Administracja >> Poziom bezpieczeństwa) dotyczące właśnie Samby w Fedora Core 4. Jak widać do wybory mamy opcje:
W nawiasach zostały podane opcje tak jak one są podawane w pliku /etc/selinux/targeted/booleans.local gdzie się je definiuje.
Jeśli chcemy udostępnić jakiś katalog w katalogu /home opisane w
dziale
samba_enable_home_dirs=1
Możesz też włączyć udostępnianie folderów domowych poprzez
wpisanie w terminalu następującej komendy:
setsebool -P samba_enable_home_dirs 1
Aby udostępnić poprzez Sambę dowolny katalog inny niż domowy,
należy poprzez SELinux utworzyć odpowiedni kontekst. Dla przykładu aby móc
udostępnić poprzez Sambę katalog /jakiś/katalog, wydaj poprzez terminal
następującą komendę:
chcon -R -h -t samba_share_t
Jeśli chcesz aby owe ustawienia obowiązywały permanentnie czyli
nie tylko do restartu systemu dodaj ów kontekst do pliku:
/etc/selinux/targeted/contexts/files/file_contexts.local
Natomiast jeśli do danego katalogu mają mieć dostęp różne demony
(np. Apache, FTP, rsync)a nie tylko Samba możesz ustawić kontekst publiczny dla
danego katalogu poprzez public_content_t (odczyt) oraz
public_content_rw_t (zapis). Jeśli zapis ma mieć określony demon np. Samba,
wtedy użyj kontekstu w stylu allow_DEMON_anon_write, czyli tak:
setsebool -P allow_smbd_anon_write=1
Jeśli chcemy udostępnić drukarkę PDF opisaną w dziale
smbd_disable_trans=1
Oczywiście zamiast wyłączać SELinux dla demona smbd możesz
utworzyć odpowiedni kontekst dla drukarki PDF, na postawie opisanego powyżej
przykładu.
Teraz garść adresów internetowych na temat SELinux:
SELinux na stronach National Security Agency/Central Security
Service (NSA/CSS) -
http://www.nsa.gov/selinux/
SELinux na stronach Fedora Project -
http://fedora.redhat.com/projects/selinux/
SELinux na stronach Debian po polsku -
http://www.linux.com.pl/debian/Swiat_Debiana_nr12.html
No i oczywiście man samba_selinux.
Zabezpieczenia sieciowe Samby
Sama Samba posiada możliwość ustawienia zabezpieczeń przed
niepowołanym dostępem z obcych sieci definiowanych zarówno poprzez adresy IP jak
i interfejsy sieciowe. Służą do tego trzy kluczowe opcje sekcji [global] pliku
smb.conf, które pokazano i skrótowo opisano poniżej.
W opcji
Ostatnia opcja
Uwagi na koniec
Firewall w Linuksie bazuje na narzędziu ipfw (Linux
kernel 2.0), narzędzie ipchains (Linux kernel 2.2) oraz oparte na iptables
(Linux kernel 2.4
oraz też w 2.6). To co przeczytałeś powyżej to tylko standardowe
narzędzia konfiguracji firewalla w dystrybucjach Linux Redhat oraz Fedora Core.
Właściwie każda popularna dystrybucja ma swój pakiet narzędzi czyli też jakiś
graficzny konfigurator firewalla. Dodatkowo opisany został przyjemny w użyciu
Firestarter, ale nie jest on jedynym choćby żeby wymienić jeszcze Guarddog. Jeśli potrzebujesz zaawansowanej konfiguracji będziesz
musiał popisać trochę regułek w Terminalu lub użyć "budowlańca" regułek Firewall Builder.
Tyle magii na temat Firewalli, teraz garść adresów internetowych:
The netfilter/iptables project -
www.netfilter.org
Firestarter - Firewalls made easy -
www.fs-security.com
Firewall Builder -
www.fwbuilder.org
Guarddog -
www.simonzone.com/software/guarddog/
KMyFirewal -
kmyfirewall.sourceforge.net |