piątek, 23 października 2009

Wyłączenie konta root

Takie ustawienie jest akurat domyślne w Ubuntu. Użytkownicy innych dystrybucji powinni sprawdzić, czy mają dostęp do sudo za pomocą komendy visudo. Służy ona bezpiecznej edycji pliku sudoers. Następnie należy dodać do niej linijkę nazwauzytkownika ALL=(ALL) ALL.

Następnie można zablokować konto roota za pomocą komendy sudo passwd -l root.
Zablokowanie dostępu do SSH

Należy to zrobić blokując logowanie dla roota, wyłączając uwierzytelnianie przez hasła i ustawiając odpowiednie wpisy w pliku denyhost.

Aby wyłączyć logowanie roota, należy w pliku /etc/ssh/ssd_config znaleźć linię PermitRootLogin yes i zmienić ją na PermitRootLogin no.

Aby wyłączyć uwierzytelnianie przez hasło (stosowane wówczas będą tylko klucze publiczne), należy we wspomnianym wyżej pliku zmienić linię #PasswordAuthentication yes na PasswordAuthentication no.

Denyhosts wymaga dodatkowej instalacji – najprościej zrobić to za pomocą komendy sudo apt-get install denyhosts. Ustawienia aplikacji można znaleźć w /etc/denyhosts.conf.
Aktualizacja systemu: cron-apt

Pamiętanie o samodzielnej, regularnej aktualizacji systemu może być problematyczne. Jeśli lista naszych repozytoriów wskazuje tylko na te, które związane są z poprawkami bezpieczeństwa, warto zautomatyzować ten proces. W Debianie i Ubuntu można w tym celu wykorzystać cron-apt. Instaluje się go poleceniem sudo apt-get install cron-apt. Potem należy tylko ustawić swój adres e-mailowy w pliku /etc/cron-apt/config, pole MAILTO=. Według standardowych ustawień cron-apt będzie aktualizował system codziennie, o 4 nad ranem. Można to zmienić w pliku /etc/cron.d/cron-apt.
Restrykcyjna konfiguracja zapory sieciowej (firewalla)

Zestawiając reguły zapory sieciowej, pozwól tylko na takie połączenia, jakie naprawdę są potrzebne. IPtables to potężne narzędzie, a w Sieci dostępnych jest wiele gotowych, dobrze działających konfiguracji. Przykładowo reguły dla maszyny, która działać ma tylko jako serwer WWW, zarządzany przez SSH, mogłyby wyglądać następująco
iptables -A OUTPUT -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 22 --sport 1024:65535 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport 80 --sport 1024:65535 -m state --state NEW -j ACCEPT



Zakładając oczywiście, że eth0 to nasz interfejs sieciowy, a połączenia HTTP i SSH odbywają się odpowiednio na portach 80 i 22.

Samodzielne pisanie reguł dla IPtables nie jest proste, ale pomóc w tym może wiele wygodnych do tego narzędzi. Spośród nich warto polecić takie aplikacje jak shorewall i firewall builder.
Zabezpieczenie PHP za pomocą Suhosin

Suhosin to system ochronny dla PHP, który pozwala na zabezpieczenie serwerów i użytkowników przed konsekwencjami znanych i nieznanych błędów w rdzeniu PHP. Prowadzi on czasem do problemów z kompatybilnością źle napisanych skryptów. Najprościej zainstalować go pisząc sudo apt-get install php5-suhosin. Następnie należy w pliku /etc/php5/conf.d/suhosin.ini wpisać linię extension=suhosin.so.
Zabezpieczenie bazy danych MySQL

Niezłym pomysłem na zabezpieczenie serwera baz danych przed włamaniem jest zablokowanie logowania jako root z LAMP-owego serwera, tak aby np. można było to zrobić tylko z poziomu laptopa administratora. Polecenie mysql update user set host = 'x.x.x.x' where user="root" (gdzie x.x.x.x oznacza adres IP komputera, z którego można się będzie logować), uniemożliwi osobom, które miałyby konto z prawami roota, zalogowanie się do bazy danych.

Brak komentarzy:

Prześlij komentarz