10 kroków do zabezpieczenia serwera Linux dla środowiska produkcyjnego


Zabezpieczanie serwera Linux jest niezbędne do ochrony naszych danych przed hakerami. Ale zabezpieczenie serwera nie musi być skomplikowane. Powinniśmy przyjąć metodę, która zabezpieczy nasz serwer przed najczęstszymi atakami wraz z efektywną administracją.
Nie bierz jednak rzeczy za pewnik. Nawet najbardziej odporne serwery mogą zostać porwane przez wykorzystanie każdego podatnego na ataki komponentu działającego na tym serwerze.
Instaluj to, czego potrzebujesz
Pierwszą zasadą jest utrzymywanie serwera w dobrej kondycji. Instaluj tylko te pakiety, których naprawdę potrzebujesz. Jeśli są tam niechciane pakiety, usuń je. Im mniej pakietów, tym mniejsza szansa na niezałatany kod.
Włącz SELinux
Security-Enhanced Linux (SELinux) jest mechanizmem bezpieczeństwa kontroli dostępu w jądrze.
SELinux zapewnia 3 podstawowe tryby działania :
- Wymuszanie: Jest to domyślny tryb, który włącza i egzekwuje politykę bezpieczeństwa SELinux na maszynie.
- Dozwolony: W tym trybie SELinux nie będzie egzekwował polityki bezpieczeństwa w systemie, tylko ostrzegał i rejestrował działania.
- Wyłączony: SELinux jest wyłączony.
Można nim zarządzać z pliku '/etc/selinux/config’, gdzie można go włączyć lub wyłączyć.
Zabezpiecz dostęp do konsoli
Musisz chronić dostęp do konsoli serwerów linuksowych poprzez wyłączenie bootowania z urządzeń zewnętrznych takich jak DVD / CD / Pen USB po konfiguracji BIOS-u. Również, ustaw hasło BIOS i grub boot loader aby chronić te ustawienia.
Restrict using Old passwords
Możemy ograniczyć użytkowników do używania tych samych starych haseł. Plik ze starymi hasłami znajduje się w /etc/security/opasswd. Można to zrobić za pomocą modułu PAM.
Otwórz plik '/etc/pam.d/system-auth’ pod RHEL / CentOS / Fedora.
# vi /etc/pam.d/system-auth
Otwórz plik '/etc/pam.d/common-password’ pod Ubuntu/Debian/Linux.
# vi /etc/pam.d/common-password
Dodaj następującą linię do sekcji 'auth’.
auth sufficient pam_unix.so likeauth nullok
Dodaj następującą linię do sekcji 'password’, aby uniemożliwić użytkownikowi ponowne użycie trzech ostatnich haseł.
password sufficient pam_unix.so nullok use_authtok md5 shadow remember=3
Trzy ostatnie hasła są pamiętane przez serwer. Jeśli użytkownik spróbuje użyć któregoś z 3 ostatnich starych haseł, otrzyma błąd, taki jak.

Sprawdź porty nasłuchujące
Użyj polecenia 'netstat’, aby wyświetlić otwarte porty i odpowiadające im usługi.
netstat -tunlp
Wyłącz niechciane usługi z systemu za pomocą polecenia 'chkconfig’ i zamknij porty, które nie są potrzebne.
chkconfig serviceName off
Wyłącz logowanie roota
Nie jest wskazane, aby ssh do serwera jako superuser(root). Powinniśmy wyłączyć ssh jako użytkownik root na serwerze, ale zanim to zrobimy, stwórzmy użytkownika z uprawnieniami sudo, abyś mógł wejść na serwer i wykonywać zadania administracyjne. Po zalogowaniu się na serwer, zawsze możesz zmienić użytkownika na roota, jeśli zajdzie taka potrzeba.
Utwórz nowego użytkownika :
useradd user1
Utwórz hasło dla dodanego użytkownika :
passwd user1
Przydziel uprawnienia sudo nowo dodanemu użytkownikowi :
echo 'user1 ALL=(ALL) ALL' >> /etc/sudoers
SSH do serwera z nowym użytkownikiem i upewnij się, że logowanie działa.
Zamierzamy teraz wyłączyć logowanie roota, co oznacza, że nikt nie może się zalogować na serwer jako użytkownik root. Aby to zrobić, otwórz plik konfiguracyjny sshd:
nano /etc/ssh/sshd_conf
Następnie odkomentuj linię, która mówi
PermitRootLogin no

Następnie zapisz i zamknij ten plik oraz uruchom ponownie usługę
service sshd restart
Ważne: Nie wylogowuj się jeszcze z serwera. Najpierw przetestuj, czy możesz pomyślnie wejść na serwer używając wcześniej utworzonego użytkownika. Otwórz kolejną instancję terminala i wejdź na serwer z utworzonym wcześniej użytkownikiem. Jeśli wszystko działa dobrze, możesz bezpiecznie wylogować się z serwera jako root.
Zmień port
Możemy zmienić domyślny port SSH, aby dodać warstwę nieprzezroczystości w celu zapewnienia bezpieczeństwa serwera.
Otwórz plik /etc/ssh/sshd_config
zastąp domyślny Port 22 innym numerem portu powiedzmy 1110
zapisz &opuść plik
service sshd restart
Teraz aby zalogować się zdefiniuj port nr.
ssh username@IP -p 1110
Disable Ctrl+Alt+Delete in Inittab
Wyłączenie Ctrl+Alt+Delete spowoduje restart serwera. Dlatego zawsze zaleca się wyłączenie tej funkcji, ponieważ ktoś może omyłkowo zrestartować system.
Akcja ctrl+Alt+Del jest zdefiniowana w /etc/init/control-alt-delete.conf .Komentujemy poniższą linię

Password-less Login
Możemy łatwo zalogować się do naszego serwera przez SSH bez żadnego hasła poprzez wygenerowanie kluczy ssh. Tylko uważaj, że możesz zalogować się na swój serwer tylko z tej maszyny, na której wygenerowałeś klucze ssh
Generowanie kluczy SSH :
ssh-keygen - t rsa

Kopiuj swój publiczny klucz SSH , następnie dodaj ten sam w serwerze
cat ~/.ssh/id_rsa.pub
Aby dodać klucze ssh w serwerze
Załóżmy, że mamy użytkownika-user1, który ma zapewnić dostęp do serwera za pomocą klucza ssh
cd /home/user1
ls -ll
Utwórz katalog .ssh i wewnątrz niego utwórz plik o nazwie authorized_keys i dodaj publiczny klucz ssh użytkownika w tym samym
mkdir .ssh
cd /home/admin/.ssh
vim authorized_keys
Dodaj publiczny klucz SSH, a następnie zmień właściciela pliku pliku
chown user1 authorized_keys
Wyłącz logowanie ssh
Edytuj /etc/ssh/sshd_config
Passwordauthentication no
PermitRootLogin no

Teraz, tylko uprawniony użytkownik może zalogować się na serwer za pomocą polecenia
ssh user-name@serverIP -p(port Number)

Fail2Ban dla logowania SSH
Fail2ban działa poprzez dynamiczną zmianę reguł zapory sieciowej w celu zablokowania adresów, które nieudanie próbowały się zalogować określoną liczbę razy.
Instalacja Fail2ban :
sudo apt-get update
apt-get install fail2ban
Utwórz nowy plik jail.local i skopiuj zawartość jail.config do tego samego i dokonaj zmian tylko w pliku jail.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Edycja pliku /etc/fail2ban/jail.local
Wprowadź żądane zmiany:
enabled = true
port = ssh ( provide the port number if the default port is changed )
protocol = tcp
filter = sshd
logpath = /var/log/secure
maxretry = 3 ( max no. of tries after which the host should be banned)
findtime = 600 (This parameter sets the window that fail2ban will pay attention to when looking for repeated failed authentication attempts in seconds)
bantime = 600 (time duration for which the host is banned -in seconds)
Następnie uruchom ponownie usługi fail2ban
service fail2ban restart
IP może zostać zablokowany na stałe przez ustawienie bantime = -1.
Uwaga: FAIL2BAN zablokuje globalne IP .
Bezpieczeństwo było czasem niedogodnością, ale teraz jest koniecznością przez cały czas – Martina Navratilova
Dzięki za przeczytanie . Jeśli znalazłeś ten artykuł pomocny, kilka klapsów będzie oznaczać wiele!
Stay tuned 🙂
.