Wyszukiwanie w witrynie

Początkowa konfiguracja serwera z Ubuntu 20.04/18.04 i 16.04


Ten samouczek poprowadzi Cię przez pierwsze podstawowe kroki, które musisz skonfigurować na nowo zainstalowanym serwerze Ubuntu, aby zwiększyć bezpieczeństwo i niezawodność swojego serwera.

Konfiguracje wyjaśnione w tym temacie są prawie takie same dla wszystkich systemów serwerowych Ubuntu, w zależności od platformy systemu operacyjnego, niezależnie od tego, czy Ubuntu jest zainstalowane na serwerze typu bare-metal, na prywatnej maszynie wirtualnej czy na maszynie wirtualnej rozmieszczone w chmurze publicznej VPS.

Wymagania

  • Instalacja serwera Ubuntu 20.04
  • Instalacja serwera Ubuntu 18.04
  • Instalacja serwera Ubuntu 16.04

Zaktualizuj i uaktualnij system Ubuntu

Pierwszym krokiem, o który należy zadbać w przypadku świeżej instalacji serwera Ubuntu lub nowo wdrożonego Ubuntu VPS, jest upewnienie się, że system i wszystkie komponenty systemu, takie jak jądro, menedżer pakietów apt i wszystkie inne zainstalowane pakiety są aktualne i zawierają najnowsze wydane wersje i poprawki zabezpieczeń.

Aby zaktualizować serwer Ubuntu, zaloguj się do konsoli serwera za pomocą konta z uprawnieniami root lub bezpośrednio jako root i uruchom poniższe polecenia w celu przeprowadzenia procesu aktualizacji i aktualizacji.

sudo apt update 

Po uruchomieniu polecenia aktualizacji zobaczysz liczbę dostępnych pakietów do procesu aktualizacji oraz polecenie użyte do wyświetlenia listy aktualizacji pakietów.

sudo apt list --upgradable

Po zapoznaniu się z listą pakietów dostępnych do aktualizacji, wydaj poniższe polecenie, aby rozpocząć proces aktualizacji systemu.

sudo apt upgrade

Aby usunąć wszystkie lokalnie pobrane pakiety deb i wszystkie inne pamięci podręczne apt-get, wykonaj poniższe polecenie.

sudo apt autoremove
sudo apt clean

Utwórz nowe konto w Ubuntu

Domyślnie, ze względów bezpieczeństwa, konto root jest całkowicie wyłączone w Ubuntu. W celu założenia nowego konta w systemie zaloguj się do systemu jako użytkownik konta z uprawnieniami root i utwórz nowe konto za pomocą poniższego polecenia.

To nowe konto otrzyma uprawnienia roota za pomocą komendy sudo i będzie używane do wykonywania zadań administracyjnych w systemie. Upewnij się, że ustawiłeś silne hasło, aby chronić to konto. Postępuj zgodnie z instrukcjami adduser, aby skonfigurować dane użytkownika i hasło.

sudo adduser ubuntu_user

Jeśli to konto zostanie przydzielone innemu administratorowi systemu, możesz wymusić na użytkowniku zmianę hasła przy pierwszej próbie logowania, wydając poniższe polecenie.

sudo chage -d0 ubuntu_user

Na razie nowo dodany użytkownik nie może wykonywać zadań administracyjnych za pomocą narzędzia sudo. Aby nadać nowemu kontu użytkownika uprawnienia administracyjne należy dodać go do grupy systemowej „sudo” wydając poniższe polecenie.

sudo usermod -a -G sudo ubuntu_user

Domyślnie wszyscy użytkownicy należący do grupy „sudo” mogą wykonywać polecenia z uprawnieniami roota za pośrednictwem narzędzia sudo. Polecenie Sudo musi zostać użyte przed napisaniem polecenia potrzebnego do wykonania, jak pokazano w poniższym przykładzie.

sudo apt install package_name

Sprawdź, czy nowy użytkownik ma przyznane uprawnienia root, logując się do systemu i uruchamiając polecenie apt update poprzedzone sudo.

su - ubuntu_user
sudo apt update

Skonfiguruj nazwę hosta systemu w Ubuntu

Zwykle nazwa hosta komputera jest konfigurowana podczas procesu instalacji systemu lub podczas tworzenia VPS w chmurze. Powinieneś jednak zmienić nazwę swojej maszyny, aby lepiej odzwierciedlała przeznaczenie Twojego serwera lub lepiej opisywała jego ostateczne przeznaczenie.

W dużej firmie maszyny są nazywane na podstawie złożonych schematów nazewnictwa, aby łatwo zidentyfikować maszynę w szafach centrum danych. Na przykład, jeśli Twój komputer z Ubuntu będzie obsługiwał serwer pocztowy, nazwa komputera powinna odzwierciedlać ten fakt i możesz ustawić nazwę hosta komputera na przykład jako mx01.mydomain.lan.

Aby wyświetlić szczegółowe informacje o nazwie hosta komputera, uruchom następujące polecenie.

hostnamectl

Aby zmienić nazwę swojej maszyny, wydaj polecenie hostnamectl z nową nazwą, którą skonfigurujesz dla swojej maszyny, jak pokazano w poniższym fragmencie.

sudo hostnamectl set-hostname tecmint

Zweryfikuj nową nazwę swojego systemu za pomocą jednego z poniższych poleceń.

hostname
hostname -s
cat /etc/hostname 

Skonfiguruj SSH z uwierzytelnianiem klucza publicznego w Ubuntu

Aby zwiększyć stopień bezpieczeństwa systemu serwera Ubuntu, należy skonfigurować uwierzytelnianie kluczem publicznym SSH dla konta lokalnego. Aby wygenerować parę kluczy SSH, klucz publiczny i prywatny, z podaniem długości klucza, np. 2048 bitów, wykonaj poniższe polecenie na konsoli serwera.

Upewnij się, że jesteś zalogowany do systemu z użytkownikiem, dla którego konfigurujesz klucz SSH.

su - ubuntu_user
ssh-keygen -t RSA -b 2048

Podczas generowania klucza zostaniesz poproszony o dodanie hasła w celu zabezpieczenia klucza. Możesz wprowadzić silne hasło lub pozostawić je puste, jeśli chcesz zautomatyzować zadania za pośrednictwem serwera SSH.

Po wygenerowaniu klucza SSH możesz skopiować klucz publiczny na zdalny serwer, wykonując poniższe polecenie. Aby zainstalować klucz publiczny na zdalnym serwerze SSH, będziesz potrzebować konta użytkownika zdalnego z odpowiednimi uprawnieniami i danymi uwierzytelniającymi, aby zalogować się na zdalny serwer.

ssh-copy-id remote_user@remote_server

Powinieneś móc automatycznie zalogować się przez SSH do zdalnego serwera przy użyciu metody uwierzytelniania kluczem publicznym. Podczas korzystania z uwierzytelniania kluczem publicznym SSH nie będzie konieczne dodawanie hasła użytkownika zdalnego.

Po zalogowaniu się na zdalny serwer możesz zacząć wykonywać polecenia, takie jak polecenie w, aby wyświetlić listę zdalnie zalogowanych użytkowników ssh, jak pokazano na poniższym zrzucie ekranu.

Wpisz exit w konsoli, aby zamknąć zdalną sesję SSH.

ssh remote_user@remote_server
w
exit

Aby zobaczyć zawartość swojego publicznego klucza SSH w celu ręcznej instalacji klucza na zdalnym serwerze SSH, wydaj poniższe polecenie.

cat ~/.ssh/id_rsa.pub

Bezpieczny serwer SSH w Ubuntu

W celu zabezpieczenia demona SSH należy zmienić domyślny numer portu SSH z 22 na port losowy, wyższy niż 1024 i uniemożliwić zdalny dostęp SSH do konta root poprzez hasło lub klucz, otwierając główny plik konfiguracyjny serwera SSH i wprowadzając następujące zmiany.

sudo vi /etc/ssh/sshd_config

Najpierw przeszukaj skomentowaną linię #Port22 i dodaj pod nią nową linię (odpowiednio zamień numer portu nasłuchiwania):

Port 2345

Nie zamykaj pliku, przewiń w dół i wyszukaj linię #PermitRootLogin tak, odkomentuj linię, usuwając znak # (hashtag) z początku linii i zmodyfikuj linię tak, aby wyglądała jak pokazano w poniższym fragmencie.

PermitRootLogin no

Następnie zrestartuj serwer SSH, aby zastosować nowe ustawienia i przetestuj konfigurację, próbując zalogować się ze zdalnego komputera do tego serwera przy użyciu konta root za pomocą nowego numeru portu. Dostęp do konta root przez SSH powinien być ograniczony.

sudo systemctl restart sshd

Uruchom także netstat lub polecenie ss i przefiltruj dane wyjściowe za pomocą polecenia grep, aby wyświetlić nowy numer portu nasłuchiwania dla serwera SSH.

sudo ss -tlpn| grep ssh
sudo netstat -tlpn| grep ssh

Są sytuacje, w których możesz chcieć automatycznie rozłączyć wszystkie zdalne połączenia SSH nawiązane z serwerem po pewnym okresie bezczynności.

Aby włączyć tę funkcję, wykonaj poniższe polecenie, które dodaje zmienną bash TMOUT do ukrytego pliku .bashrc Twojego konta i wymusza każde połączenie SSH nawiązane z nazwą rozłączenie lub usunięcie użytkownika po 5 minutach bezczynności.

echo 'TMOUT=300' >> .bashrc

Uruchom polecenie tail, aby sprawdzić, czy zmienna została poprawnie dodana na końcu pliku .bashrc. Od tego momentu wszystkie kolejne połączenia SSH będą automatycznie zamykane po 5 minutach bezczynności.

tail .bashrc

Na poniższym zrzucie ekranu upłynął limit czasu zdalnej sesji SSH z maszyny drupal do serwera Ubuntu za pośrednictwem konta ubuntu_user i automatyczne wylogowanie po 5 minutach.

Skonfiguruj zaporę sieciową Ubuntu UFW

Każdy serwer potrzebuje dobrze skonfigurowanej zapory sieciowej, aby zabezpieczyć system na poziomie sieci. Serwer Ubuntu używa aplikacji UFW do zarządzania regułami iptables na serwerze.

Sprawdź status aplikacji zapory UFW w Ubuntu, wydając poniższe polecenia.

sudo systemctl status ufw
sudo ufw status

Zwykle demon zapory UFW jest uruchomiony na serwerze Ubuntu, ale reguły nie są domyślnie stosowane. Przed włączeniem polityki zapory UFW w swoim systemie należy najpierw dodać nową regułę zezwalającą na przepuszczanie ruchu SSH przez zaporę sieciową przez zmieniony port SSH. Regułę można dodać wykonując poniższe polecenie.

sudo ufw allow 2345/tcp

Po zezwoleniu na ruch SSH możesz włączyć i sprawdzić aplikację zapory UFW za pomocą następujących poleceń.

sudo ufw enable
sudo ufw status

Aby dodać nowe reguły zapory dla innych usług sieciowych instalowanych później na serwerze, takich jak serwer HTTP, serwer poczty lub inne usługi sieciowe, skorzystaj z poniższych przykładów poleceń zapory sieciowej.

sudo ufw allow http  #allow http traffic
sudo ufw allow proto tcp from any to any port 25,443  # allow https and smtp traffic

Aby wyświetlić listę wszystkich reguł zapory sieciowej, uruchom poniższe polecenie.

sudo ufw status verbose

Ustaw czas serwera Ubuntu

Aby kontrolować zegar serwera Ubuntu i inne powiązane ustawienia czasu lub wysyłać zapytania do nich, wykonaj polecenie timedatectl bez argumentu.

Aby zmienić ustawienia strefy czasowej swojego serwera, najpierw wykonaj polecenie timedatectl z argumentem list-timezones, aby wyświetlić listę wszystkich dostępnych stref czasowych, a następnie ustaw strefę czasową swojego systemu, jak pokazano w poniższym fragmencie.

sudo timedatectl 
sudo timedatectl list-timezones 
sudo timedatectl set-timezone Europe/Vienna

Nowego klienta demona systemowego systemd-timesyncd można używać w Ubuntu w celu zapewnienia dokładnego czasu dla serwera w sieci i synchronizacji czasu z serwerem równorzędnym z wyższym czasem.

Aby zastosować tę nową funkcję Systemd, zmodyfikuj plik konfiguracyjny demona systemd-timesyncd i dodaj najbliższe geograficznie serwery NTP do linii instrukcji NTP, jak pokazano w poniższym fragmencie pliku:

sudo nano /etc/systemd/timesyncd.conf

Dodaj następującą konfigurację do pliku timesyncd.conf:

[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org
FallbackNTP=ntp.ubuntu.com

Aby dodać najbliższe geograficznie serwery NTP, zapoznaj się z listą serwerów projektów puli NTP pod następującym adresem: http://www.pool.ntp.org/en/

Następnie zrestartuj demona synchronizacji czasu Systemd, aby odzwierciedlić zmiany i sprawdzić status demona, uruchamiając poniższe polecenia. Po ponownym uruchomieniu demon rozpocznie synchronizację czasu z nowym równorzędnym serwerem NTP.

sudo systemctl restart systemd-timesyncd.service 
sudo systemctl status systemd-timesyncd.service

Wyłącz i usuń niepotrzebne usługi w Ubuntu

Aby uzyskać listę wszystkich usług sieciowych TCP i UDP, które są domyślnie uruchomione na serwerze Ubuntu, wykonaj polecenie ss lub netstat.

sudo netstat -tulpn
OR
sudo ss -tulpn

Począwszy od wersji Ubuntu 16.10, domyślny moduł rozpoznawania nazw DNS jest teraz kontrolowany przez usługę rozwiązaną systemowo, jak wynika z danych wyjściowych funkcji netstat lub polecenia SS.

Powinieneś także sprawdzić stan usługi rozwiązany przez system, uruchamiając następujące polecenie.

sudo systemctl status systemd-resolved.service

Usługa rozwiązywana systemowo wiąże się ze wszystkimi włączonymi interfejsami sieciowymi i nasłuchuje na portach 53 oraz 5355 TCP i UDP.

Uruchamianie rozwiązanego przez system demona buforującego DNS na serwerze produkcyjnym może być niebezpieczne ze względu na dużą liczbę ataków DDOS przeprowadzanych przez złośliwych hakerów na niezabezpieczone serwery DNS.

Aby zatrzymać i wyłączyć tę usługę, wykonaj następujące polecenia.

sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

Sprawdź, czy usługa została zatrzymana i wyłączona, wydając ss lub polecenie netstat. Porty nasłuchiwania rozpoznawane przez system, 53 i 5355 TCP i UDP, nie powinny być wyświetlane w wynikach poleceń netstat ani ss, jak pokazano poniżej.

Powinieneś także ponownie uruchomić komputer, aby całkowicie wyłączyć wszystkie usługi demona rozwiązane przez system i przywrócić domyślny plik /etc/resolv.conf.

sudo ss -tulpn
sudo netstat -tulpn
sudo systemctl reboot

Chociaż wyłączyłeś działanie niektórych niechcianych usług sieciowych na swoim serwerze, w Twoim systemie są także zainstalowane i uruchomione inne usługi, takie jak proces lxc i usługa snapd. Usługi te można łatwo wykryć za pomocą poleceń ps, top lub pstree.

sudo ps aux
sudo top
sudo pstree

Jeśli nie zamierzasz korzystać z wirtualizacji kontenerów LXC na swoim serwerze lub rozpoczynać instalowanie oprogramowania spakowanego za pośrednictwem menedżera pakietów Snap, powinieneś całkowicie wyłączyć i usunąć te usługi, wydając poniższe polecenia.

sudo apt autoremove --purge lxc-common lxcfs
sudo apt autoremove --purge snapd

To wszystko! Teraz serwer Ubuntu jest teraz przygotowany na instalację dodatkowego oprogramowania potrzebnego do niestandardowych usług lub aplikacji sieciowych, takich jak instalacja i konfiguracja serwera WWW, serwera bazy danych, usługi udostępniania plików lub innych specyficznych aplikacji.