Linux hardening



Poniżej kilka przydatnych rzeczy związanych z poprawa bezpieczeństwa w systemie linux


Update repozytoriów i pakietów

Tu chyba nie trzeba nic tłumaczyć. W pierwszej kolejności przed wszystkim należało by zaaktualizować paczki w systemie. Pamiętajcie, że jeżeli macie jakieś zależności w usługach, z których korzystacie lub udostępniacie to warto zrobić rozpoznanie jak aktualizacja wpłynie na daną usługę.

sudo apt-get update
sudo apt-get upgrade

Instalacja i konfiguracja firewall'a

Instalacja odbywa się poprzez instalacje pakietu ufw

sudo apt-get install ufw

Blokujemy cały ruch przychodzący.

sudo ufw default deny incoming

Dodajemy reguły dla usług, których firewall ma niedotyczyć, np. ssh.

sudo ufw allow ssh

Uruchamiamy firewall'a. Pamiętajcie, że wykonując ta operację na serwerze zdalnym warto mieć aktywną regułę pozwalającą Wam na połaczenie z danym serwerem. W innym wypadku, firewall może zablokować Wam dostęp do serwera.

sudo ufw enable

Sprawdzenie statusu zapory:

sudo ufw status verbose

Zmiany sposobu montowania zasobów dyskowych

Informacja o zasobach dyskowych, partycjach i punktach montowania tych zasobów są trzymane w pliku konfiguracyjnym /etc/fstab. W poniższym opisie będę często używał słowa filesystem, jest to coś takiego jak partycja w systemie windowsowym. To co warto zmienić w tym pliku to sposób montowania zasobu /boot, czyli filesystemu z którego następuje uruchomienie systemu. Zmianiamy uprawniania tego zasobu na read only. Jest to zabezpieczenie na wypadek, gdy jakaś niepowołana osoba lub program chciałby bez naszej wiedzy mienić sposób w jaki uruchamia się system operacyjny. Do pliku /etc/fstab dodajemy wpis:

LABEL=/boot    /boot       ext2    defaults,ro             1 2

Drugą rzeczą jaką warto zrobić zmiana zasobu współdzielonego. Ten punkt dotyczy głównie systemów Ubuntu.

tmpfs          /run/shm    tmpfs   defaults,noexec,nosuid  0 0

To co warto wiedzieć o samym pliku /etc/fstab
Pierwsza kolumna opisuje etykietę urządzenia.
Druga kolumna oznacza punkt montowania urządzenia. Zazwyczaj jest to katalog /mnt lub /media.
Trzecia kolumna oznacza system plików na danym zasobie dyskowym. W windowsach mamy ntfs, w linuxach ext3 i inne.
Czwarta kolumna oznacza opcje montowania, zwykle wpisuje się defaults.
Piąta kolumna to parametr dump. Informuje system jak często powinna być wykonywana kopia zapasowa dla danego filesystemu. 0 oznacza brak wykonywania kopii zapasowej.
Szósta kolumna to kolumna pass, czyli kolejność sprawdzania systemu plików na partycjach przez program fsck, który jest uruchamiany, jeżeli podczas uruchamiania systemu zostały wykryte błędy.
 1 - jest przypisany dla filesystemu /root
 2 - informuje, że sprawdzenie następuje po sprawdzeniu root'a.
 0 - oznacza nie sprawdzaj filesystemu.
Plik fstab może mieć inne oznaczenia w niektórych systemach operacyjnych np. /etc/vfstab w systemie Solaris.
Tak jak wczesniej pisałem, czwarta kolumna mówi nam o opcjach montowania danego zasobu dyskowego. Poniżej wyszczególniłem kilka wspólnych opcji dla wszyskich rodzajów systemów plików. Warto podkreślić, że wspólnych, gdyż niektóre systemy plików mają swoje własne dedykowane opcje montowania.
auto / noauto
 Opcja auto jest domuślną opcją i oznacza, że dany zasób dyskowy będzie zamontowany automatycznie. Jeżeli nie chcemy by zasób montował się automatycznie, to w pliku fstab nalezy użyć opcji noauto i póxniej zamontować zasób ręcznie.
exec / noexec
 Opcja exec pozwala na uruchamianie plików wykonywalnych na naszym zasobie. Opcja noexec blokuje taką czynność.
rw / ro
 Opcja rw, czyli read-write, czyli możliwość odczytu i zapisu. Opcja ro, czyli read-only pozwala jedynie czytać z danego zasobu.
sync / async
 Sposób odczytu i zapisu na dany zasób dyskowy. Może być synchroniczny i asynchroniczny.
suid / nosuid
 Zezwolenie lub blokowanie operacji typu suid i sgid. Te dwa pojęcia odnoszą się do plików wykonywalny. Pierwszy mówi o uprawnieniach użytkownika, drugi o uprawnieniach grupy. Jest informacja z jakimiuprawnianiami można uruchomić dany plik.
user / users / nouser
 Ta opcja informuje nas o tym, kto może zamontować dany zasób dyskowy. Opcja nouser daje taka możliwośc tylko użytkownikowi root.
defaults
 Użyj domyślnych opcji dla danego systemu plików. Przykładowo dla systemu plików ext3 domyślne opcje to: rw, suid, dev, exec, auto, nouser, async(brak wsparcia dla acl).


Zmiana portu ssh

Konfiguracja ssh znajduje się w /etc/ssh/ssh_config. W pliku szukamy linii: Port 22 i zmieniamy numer portu 22 na inna liczbę. Skoro już jesteśmy przy ssh, to warto także zablokowac logowanie na root'a. Odpowiada za to linia PermitRootLogin. Zmieniamy w niej parametr yes na no.
Po zmianach wykonyjemy restart usługi.


Sprawdzenie otwartych portów na serwerze

Sprawdzenie możemy wykonać za pomocą polecenia netstat

netstat -antp

lub zainstalować narzędzie nmap i wykoanć jedną z dwóch przykładowych komend:

nmap -v -sT localhost
nmap -v -sS localhost

Zmiany w kernelu

Pozłużymy sie tutaj plikiem /etc/sysctl.conf, jest to plik konfiguracynym zawierającym masę opcji dotyczących kernela. Warto go zmodyfikować pod kątem połączeń do naszego serwera. Prykładowa zawartość po zmianach poniżej.

# Disables packet forwarding
net.ipv4.ip_forward=0
 
# Disables IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
 
# Enable IP spoofing protection, turn on source route verification
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
 
# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
 
# Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.eth0.log_martians = 0
 
# Disables IP source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
net.ipv4.conf.eth0.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
 
# Enable IP spoofing protection, turn on source route verification
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.lo.rp_filter = 1
net.ipv4.conf.eth0.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
 
# Disable ICMP Redirect Acceptance
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

Opcji w pliku może być więcej lub mniej. Nie wszystkie są uwzględnione, ale to nie oznacza, że nie można czegoś dopisać.


Wyłaczenie IPv6 w GRUB

GRUB jest programem rozruchowym. Jeżeli macie kilka systemów operacyjnych na swoim komputerze, to dzięki grub'owi możemy wybrać na którym systemie chcemy pracować. IPv6 większość z nas nie używa, więc w myśl zasady: co nie używane to niepotrzebne. Aby wyłaczyć IPv6 należy uwględnic poniższą linię w pliku /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash"

Następnie wykonujemy aktualizację GRUB'a

update-grub2

Wyłaczenie konta gościa

W pliku /usr/share/lightdm/lightdm.conf.d/50-no-guest.conf dopisujemy sekcję:

[Seat:*]
allow-guest=false

Lub tak jak kiedyś pisałem w innym artykule wykonujemy jedno polecenie:

sh -c 'printf "[SeatDefaults]\nallow-guest=false\n" > /usr/share/lightdm/lightdm.conf.d/50-no-guest.conf'

Instalacja dodatkowe oprogramowania

Narzędzia sprawdzające, czy na naszym komputerze nie ma złośliwego oprogramowania: rkhunter i chkrootkit. Instalacja:

apt-get install rkhunter chkrootkit

Uruchamianie:

chkrootkit
sudo rkhunter --update
sudo rkhunter --propupd
sudo rkhunter --check

Dodatkowo narzędzie fail2ban. Dzięki niemu automatycznie zablokujemy wszystkie boty chodzące w sieci i próbujące się włamać na dostępne konta w systemie. W pliku konfiguracyjnym /etc/fail2ban/jail.conf uwzględniamy tylko na jakim porcie lub usłudze ma się odbywac sprawdzanie i po ilu błednych logowaniach nastąpi zablokowanie możliwości logowania.
Instalacja:

apt-get install fail2ban