Početno postavljanje poslužitelja s Ubuntu 20.04/18.04 i 16.04


Ovaj će vas vodič voditi kroz prve osnovne korake koje trebate konfigurirati na novom instaliranom Ubuntu poslužitelju kako biste povećali sigurnost i pouzdanost vašeg poslužitelja.

Konfiguracije objašnjene u ovoj temi gotovo su iste za sve Ubuntu poslužiteljske sustave, s obzirom na osnovnu OS platformu, bez obzira je li Ubuntu instaliran na golom metalnom poslužitelju, u privatnom virtualnom stroju ili virtualnom stroju izdvojenom u VPS javnom oblak.

  • Instalacija poslužitelja Ubuntu 20.04
  • Instalacija poslužitelja Ubuntu 18.04
  • Instalacija poslužitelja Ubuntu 16.04

Ažuriranje i nadogradnja Ubuntu sustava

Prvi korak na koji morate paziti u slučaju nove instalacije Ubuntu poslužitelja ili novog postavljenog Ubuntu VPS-a jest osigurati sustav i sve komponente sustava, poput jezgre, sigurnosnih zakrpa.

Da biste ažurirali Ubuntu poslužitelj, prijavite se na konzolu poslužitelja s računom s root privilegijama ili izravno kao root i pokrenite naredbe u nastavku kako biste izvršili postupak ažuriranja i nadogradnje.

$ sudo apt update 

Nakon pokretanja naredbe update, vidjet ćete broj dostupnih paketa za postupak nadogradnje i naredbu koja se koristi za navođenje nadogradnji paketa.

$ sudo apt list --upgradable

Nakon što pogledate popis paketa dostupnih za nadogradnju, izdajte naredbu u nastavku da biste započeli postupak nadogradnje sustava.

$ sudo apt upgrade

Da biste uklonili sve lokalno preuzete deb pakete i sve ostale apt-get predmemorije, izvršite donju naredbu.

$ sudo apt autoremove
$ sudo apt clean

Stvorite novi račun u Ubuntuu

Prema zadanim postavkama, kao sigurnosna mjera, root račun je u potpunosti onemogućen u Ubuntuu. Da biste stvorili novi račun u sustavu, prijavite se u sustav s korisnikom računa s root privilegijama i stvorite novi račun pomoću naredbe u nastavku.

Ovaj novi račun dodijelit će se ovlasti root ovlasti putem sudo naredbe i koristit će se za izvršavanje administrativnih zadataka u sustavu. Obavezno postavite jaku lozinku za zaštitu ovog računa. Slijedite upute adduser za postavljanje korisničkih podataka i lozinke.

$ sudo adduser ubuntu_user

Ako će ovaj račun biti dodijeljen drugom administratoru sustava, možete prisiliti korisnika da promijeni lozinku pri prvom pokušaju prijave izdavanjem sljedeće naredbe.

$ sudo chage -d0 ubuntu_user

Za sada novi dodani korisnik ne može izvršavati administrativne zadatke putem sudo uslužnog programa. Da biste ovom novom korisničkom računu dodijelili administrativne privilegije, trebali biste dodati korisnika u sistemsku grupu “sudo” izdavanjem naredbe u nastavku.

$ sudo usermod -a -G sudo ubuntu_user

Prema zadanim postavkama, svi korisnici koji pripadaju grupi "sudo" smiju izvršavati naredbe s root privilegijama putem sudo uslužnog programa. Sudo naredba mora se koristiti prije pisanja naredbe potrebne za izvršavanje, kao što je prikazano u donjem primjeru.

$ sudo apt install package_name

Testirajte ima li novi korisnik odobrene root privilegije prijavom u sustav i pokrenite naredbu apt update s prefiksom sudo.

$ su - ubuntu_user
$ sudo apt update

Konfigurirajte ime hosta sustava u Ubuntuu

Obično se ime računala računala postavlja tijekom postupka instalacije sustava ili kada se VPS kreira u oblaku. Međutim, trebali biste promijeniti naziv svog stroja kako biste bolje odražavali odredište vašeg poslužitelja ili bolje opisivali njegovu konačnu svrhu.

U velikoj tvrtki strojevi su nazvani po složenim shemama imenovanja kako bi se lako identificirao stroj u policama podatkovnog centra. Na primjer, ako će vaš Ubuntu stroj raditi s poslužiteljem pošte, naziv stroja trebao bi odražavati tu činjenicu, a ime računala možete postaviti na primjer kao mx01.mydomain.lan.

Da biste prikazali detalje o imenu računala, pokrenite sljedeću naredbu.

$ hostnamectl

Da biste promijenili ime svog stroja, izdajte naredbu hostnamectl s novim imenom koje ćete konfigurirati za svoj stroj, kao što je prikazano u donjem odlomku.

$ sudo hostnamectl set-hostname tecmint

Provjerite novo ime svog sustava jednom od naredbi u nastavku.

$ hostname
$ hostname -s
$ cat /etc/hostname 

Postavite SSH s autentifikacijom javnog ključa u Ubuntuu

Da biste povećali stupanj sigurnosti sustava Ubuntu poslužitelja, trebali biste postaviti SSH provjeru autentičnosti javnog ključa za lokalni račun. Da bi se generirao par SSH ključeva, javni i privatni ključ, s određivanjem duljine ključa, poput 2048 bitova, izvršite sljedeću naredbu na konzoli poslužitelja.

Obavezno se prijavite u sustav s korisnikom kojem postavljate SSH ključ.

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

Dok se ključ generira, od vas će se zatražiti da dodate lozinku kako biste osigurali ključ. Možete unijeti snažnu lozinku ili ostaviti lozinku praznom ako želite automatizirati zadatke putem SSH poslužitelja.

Nakon generiranja SSH ključa, možete kopirati javni ključ na udaljeni poslužitelj izvršavanjem naredbe u nastavku. Da biste instalirali javni ključ na udaljeni SSH poslužitelj, trebat će vam udaljeni korisnički račun s odgovarajućim dozvolama i vjerodajnicama za prijavu na udaljeni poslužitelj.

$ ssh-copy-id [email _server

Trebali biste biti u mogućnosti automatski se prijaviti putem SSH-a na udaljeni poslužitelj metodom provjere autentičnosti javnog ključa. Nećete morati dodavati lozinku udaljenog korisnika dok upotrebljavate SSH autentifikaciju javnog ključa.

Nakon što ste se prijavili na udaljeni poslužitelj, možete početi izvršavati naredbe, poput naredbe w za popis ssh udaljenih prijavljenih korisnika, kao što je prikazano na snimci zaslona u nastavku.

Utipkajte exit u konzolu da zatvorite udaljenu SSH sesiju.

$ ssh [email _server
$ w
$ exit

Da biste vidjeli sadržaj svog javnog SSH ključa kako biste ga ručno instalirali na udaljeni SSH poslužitelj, izdajte sljedeću naredbu.

$ cat ~/.ssh/id_rsa.pub

Sigurni SSH poslužitelj u Ubuntuu

Da biste osigurali SSH demon, trebali biste promijeniti zadani broj SSH porta s 22 na slučajni port, veći od 1024, i onemogućiti udaljeni SSH pristup root računu putem lozinke ili ključa, otvaranjem glavne konfiguracijske datoteke SSH poslužitelja i izradite slijedeće promjene.

$ sudo vi /etc/ssh/sshd_config

Prvo pretražite komentirani redak # Port22 i dodajte novi red ispod (u skladu s tim zamijenite broj porta za slušanje):

Port 2345

Nemojte zatvarati datoteku, pomaknite se prema dolje i potražite redak #PermitRootLogin da, raskomentirajte redak uklanjanjem znaka # (hashtag) s početka retka i izmijenite redak tako da izgleda kao što je prikazano u donjem izvatku.

PermitRootLogin no

Nakon toga, ponovno pokrenite SSH poslužitelj kako biste primijenili nove postavke i testirali konfiguraciju pokušavajući se prijaviti s udaljenog računala na ovaj poslužitelj s matičnim računom putem novog broja porta. Pristup root računu putem SSH-a trebao bi biti ograničen.

$ sudo systemctl restart sshd

Također, pokrenite grep naredbu kako biste prikazali novi broj porta za slušanje za SSH poslužitelj.

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

Postoje situacije u kojima biste mogli automatski isključiti sve udaljene SSH veze uspostavljene na vašem poslužitelju nakon određenog razdoblja neaktivnosti.

Da biste omogućili ovu značajku, izvršite naredbu u nastavku koja dodaje varijablu bash TMOUT na vašu skrivenu datoteku .bashrc vašeg računa i prisiljava svaku SSH vezu uspostavljenu s imenom korisnika da se prekine ili prekine nakon 5 minuta neaktivnosti.

$ echo 'TMOUT=300' >> .bashrc

Pokrenite tail naredbu da provjerite je li varijabla ispravno dodana na kraju .bashrc datoteke. Sve naredne SSH veze automatski će se zatvoriti nakon 5 minuta neaktivnosti.

$ tail .bashrc

Na donjem snimku zaslona, udaljena SSH sesija s drupal stroja na Ubuntu poslužitelj putem računa ubuntu_user istekla je i automatski odjavljena nakon 5 minuta.

Konfigurirajte Ubuntu vatrozid UFW

Svaki poslužitelj treba dobro konfiguriran vatrozid kako bi osigurao sustav na mrežnoj razini. Ubuntu poslužitelj koristi UFW aplikaciju za upravljanje iptables pravilima na poslužitelju.

Provjerite status UFW aplikacije vatrozida u Ubuntuu izdavanjem naredbi u nastavku.

$ sudo systemctl status ufw
$ sudo ufw status

Obično je demon UFW vatrozida pokrenut i pokrenut na Ubuntu poslužitelju, ali pravila se prema zadanim postavkama ne primjenjuju. Prije omogućavanja UFW politike vatrozida u vašem sustavu, prvo biste trebali dodati novo pravilo koje će omogućiti SSH prometu da prolazi kroz vatrozid kroz promijenjeni SSH priključak. Pravilo se može dodati izvršavanjem naredbe u nastavku.

$ sudo ufw allow 2345/tcp

Nakon što dopustite SSH promet, možete omogućiti i provjeriti aplikaciju UFW vatrozid pomoću sljedećih naredbi.

$ sudo ufw enable
$ sudo ufw status

Da biste dodali nova pravila vatrozida za druge mrežne usluge naknadno instalirane na vašem poslužitelju, kao što su HTTP poslužitelj, poslužitelj pošte ili druge mrežne usluge, upotrijebite donje primjere naredbi vatrozida kao vodič.

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

Za popis svih pravila vatrozida pokrenite naredbu u nastavku.

$ sudo ufw status verbose

Postavite vrijeme poslužitelja Ubuntu

Za kontrolu ili postavljanje upita sata poslužitelja Ubuntu i ostalih srodnih postavki vremena, izvršite naredbu timedatectl bez argumenta.

Da biste promijenili postavke vremenske zone vašeg poslužitelja, prvo izvršite naredbu timedatectl s argumentom list-timezones da biste popisali sve dostupne vremenske zone, a zatim postavite vremensku zonu vašeg sustava kao što je prikazano u donjem izvatku.

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

Novi klijent demona systemd-timesyncd systemd može se koristiti u Ubuntuu kako bi pružio točno vrijeme za vaš poslužitelj u mreži i sinkronizirao vrijeme s gornjim vremenskim poslužiteljem.

Da biste primijenili ovu novu značajku Systemda, izmijenite datoteku za konfiguraciju demona systemd-timesyncd i dodajte najbliže zemljopisno NTP poslužitelje u redak NTP izvoda, kao što je prikazano u donjem izvatku datoteke:

$ sudo nano /etc/systemd/timesyncd.conf

U datoteku timesyncd.conf dodajte sljedeću konfiguraciju:

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

Da biste dodali najbliže zemljopisne NTP poslužitelje, pogledajte popis poslužitelja projekata NTP spremišta na sljedećoj adresi: http://www.pool.ntp.org/en/

Nakon toga ponovno pokrenite Systemd timesync demon da odrazi promjene i provjerite status demona pokretanjem naredbi u nastavku. Nakon ponovnog pokretanja, demon će početi sinkronizirati vrijeme s novom vrstom ntp poslužitelja.

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

Onemogućite i uklonite nepotrebne usluge u Ubuntuu

Da biste dobili popis svih TCP i UDP mrežnih usluga koje se prema vašem zadanom rade i rade na vašem Ubuntu poslužitelju, izvršite ss ili netstat naredbu.

$ sudo netstat -tulpn
OR
$ sudo ss -tulpn

Zagledan u izdanje Ubuntu 16.10, zadani DNS rješivač sada kontrolira usluga razriješena sistemom, kao što je otkriveno u rezultatima naredbi netstat ili ss.

Također biste trebali provjeriti status usluge riješene sistemom pokretanjem sljedeće naredbe.

$ sudo systemctl status systemd-resolved.service

Usluga riješena sistemom veže se na svim omogućenim mrežnim sučeljima i preslušava na priključcima 53 i 5355 TCP i UDP.

Pokretanje sistemskog rješavanja predmemoriranja DNS-a na proizvodnom poslužitelju može biti opasno zbog velikog broja DDOS napada koje su zlonamjerni hakeri izvršili na nesigurne DNS poslužitelje.

Da biste zaustavili i onemogućili ovu uslugu, izvršite sljedeće naredbe.

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

Provjerite je li usluga zaustavljena i onemogućena izdavanjem ss ili netstat naredbe. Priključci za preslušavanje koji su riješeni sistemom, 53 i 5355 TCP i UDP, ne bi trebali biti navedeni u izlazu naredbi netstat ili ss, kao što je prikazano u nastavku.

Također biste trebali ponovno pokrenuti stroj kako biste u potpunosti onemogućili sve daemon usluge riješene sistemom i vratili zadanu datoteku /etc/resolv.conf.

$ sudo ss -tulpn
$ sudo netstat -tulpn
$ sudo systemctl reboot

Iako ste onemogućili pokretanje nekih neželjenih mrežnih usluga na vašem poslužitelju, u vašem su sustavu instalirane i pokrenute i druge usluge, poput lxc procesa i usluge snapd. Te se usluge mogu lako otkriti pomoću naredbi top ili pstree.

$ sudo ps aux
$ sudo top
$ sudo pstree

U slučaju da na svojem poslužitelju nećete koristiti LXC virtualizaciju spremnika ili ne počnete instalirati softver pakiran putem upravitelja paketa Snap, trebali biste potpuno onemogućiti i ukloniti te usluge izdavanjem naredbi u nastavku.

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

To je sve! Sada je Ubuntu poslužitelj sada spreman za instaliranje dodatnog softvera potrebnog za prilagođene mrežne usluge ili aplikacije, poput instaliranja i konfiguriranja web poslužitelja, poslužitelja baze podataka, usluge dijeljenja datoteka ili drugih specifičnih aplikacija.