Poniżej kilka przydatnych rzeczy związanych z poprawa bezpieczeństwa w systemie linux
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 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
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).
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 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
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ć.
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
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'
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