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

lis 28, 2021
admin
Megha Pandey
Megha Pandey

Follow

Oct 5, 2017 – 6 min read

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 🙂

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.