Začetna nastavitev strežnika z Ubuntu 20.04/18.04 in 16.04


Ta vadnica vas bo vodila do prvih osnovnih korakov, ki jih morate konfigurirati na novem nameščenem strežniku Ubuntu, da povečate varnost in zanesljivost svojega strežnika.

Konfiguracije, razložene v tej temi, so skoraj enake za vse strežniške sisteme Ubuntu glede osnovne platforme OS, ne glede na to, ali je Ubuntu nameščen na golem kovinskem strežniku, v zasebnem navideznem stroju ali navideznem stroju, ki je izdan v javnosti VPS oblak.

  • Namestitev strežnika Ubuntu 20.04
  • Namestitev strežnika Ubuntu 18.04
  • Namestitev strežnika Ubuntu 16.04

Posodobite in nadgradite sistem Ubuntu

Prvi korak, na katerega morate biti pozorni v primeru nove namestitve strežnika Ubuntu ali novega uvedenega Ubuntu VPS, je zagotoviti sistem in vse sistemske komponente, na primer jedro, varnostne popravke.

Če želite posodobiti strežnik Ubuntu, se prijavite v konzolo strežnika z računom s pravicami root ali neposredno kot root in zaženite spodnje ukaze, da izvedete postopek posodobitve in nadgradnje.

$ sudo apt update 

Ko zaženete ukaz za posodobitev, boste videli število paketov, ki so na voljo za postopek nadgradnje, in ukaz, ki se uporablja za navedbo nadgradenj paketov.

$ sudo apt list --upgradable

Ko se seznanite s seznamom paketov, ki so na voljo za nadgradnjo, izdajte spodnji ukaz, da začnete postopek nadgradnje sistema.

$ sudo apt upgrade

Če želite odstraniti vse lokalno prenesene deb pakete in vse druge predpomnilnike apt-get, izvedite spodnji ukaz.

$ sudo apt autoremove
$ sudo apt clean

Ustvarite nov račun v Ubuntuju

Kot varnostni ukrep je korenski račun v Ubuntuju popolnoma onemogočen. Če želite ustvariti nov račun v sistemu, se prijavite v sistem z uporabnikom računa s korenskimi pravicami in ustvarite nov račun s spodnjim ukazom.

Ta novi račun bo s pomočjo ukaza sudo podeljen s korenskimi pooblastili in bo uporabljen za izvajanje skrbniških nalog v sistemu. Za zaščito tega računa nastavite močno geslo. Sledite pozivu adduserja, da nastavite uporabniške podatke in geslo.

$ sudo adduser ubuntu_user

Če bo ta račun dodeljen drugemu skrbniku sistema, lahko uporabnika prisilite, da ob prvem poskusu prijave spremeni geslo tako, da izda naslednji ukaz.

$ sudo chage -d0 ubuntu_user

Zaenkrat novi dodani uporabnik ne more opravljati upravnih nalog prek pripomočka sudo. Če želite temu novemu uporabniškemu računu podeliti skrbniške pravice, ga morate dodati v sistemsko skupino\"sudo" z izdajo spodnjega ukaza.

$ sudo usermod -a -G sudo ubuntu_user

Privzeto lahko vsi uporabniki, ki pripadajo skupini "sudo", izvajajo ukaze s korenskimi pravicami prek pripomočka sudo. Pred pisanjem ukaza, ki je potreben za izvedbo, je treba uporabiti ukaz Sudo, kot je prikazano v spodnjem primeru.

$ sudo apt install package_name

Preverite, ali ima novi uporabnik podeljene korenske pravice, tako da se prijavite v sistem in zaženete ukaz apt update s predpono sudo.

$ su - ubuntu_user
$ sudo apt update

Konfigurirajte ime gostitelja sistema v Ubuntuju

Običajno je ime gostitelja stroja nastavljeno med postopkom namestitve sistema ali ko je VPS ustvarjen v oblaku. Vendar pa morate spremeniti ime svojega računalnika, da bo bolje odražal cilj vašega strežnika ali bolje opisal njegov končni namen.

V velikem podjetju so stroji poimenovani po zapletenih shemah poimenovanja, da bi stroj zlahka prepoznali v regalih podatkovnega centra. Na primer, če bo vaš stroj Ubuntu upravljal poštni strežnik, mora ime stroja odražati to dejstvo in lahko na primer nastavite ime gostitelja stroja kot mx01.mydomain.lan.

Če želite prikazati podrobnosti o imenu gostitelja stroja, zaženite naslednji ukaz.

$ hostnamectl

Če želite spremeniti ime stroja, izdajte ukaz hostnamectl z novim imenom, ki ga boste konfigurirali za vašo napravo, kot je prikazano v spodnjem izvlečku.

$ sudo hostnamectl set-hostname tecmint

Novo ime vašega sistema preverite z enim od spodnjih ukazov.

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

Nastavite SSH s preverjanjem pristnosti javnega ključa v Ubuntuju

Če želite povečati stopnjo varnosti sistema strežnika Ubuntu, nastavite preverjanje pristnosti javnega ključa SSH za lokalni račun. Če želite ustvariti par ključev SSH, javni in zasebni ključ z določeno dolžino ključa, na primer 2048 bitov, na konzoli strežnika izvedite naslednji ukaz.

Prepričajte se, da ste prijavljeni v sistem z uporabnikom, ki nastavljate ključ SSH.

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

Ko je ključ ustvarjen, boste morali za zaščito ključa dodati geslo. Če želite avtomatizirati opravila prek strežnika SSH, lahko vnesete močno geslo ali pa geslo pustite prazno.

Ko je ključ SSH ustvarjen, lahko javni ključ kopirate na oddaljeni strežnik tako, da izvedete spodnji ukaz. Za namestitev javnega ključa na oddaljeni strežnik SSH potrebujete oddaljeni uporabniški račun z ustreznimi dovoljenji in poverilnicami za prijavo na oddaljeni strežnik.

$ ssh-copy-id [email _server

Morali bi se samodejno prijaviti prek SSH na oddaljeni strežnik z uporabo metode preverjanja pristnosti javnega ključa. Med preverjanjem pristnosti javnega ključa SSH vam ne bo treba dodati gesla za oddaljenega uporabnika.

Ko ste prijavljeni na oddaljeni strežnik, lahko začnete izvajati ukaze, na primer w ukaz za seznam oddaljenih prijavljenih uporabnikov ssh, kot je prikazano na spodnjem posnetku zaslona.

V konzolo vnesite exit, da zaprete oddaljeno sejo SSH.

$ ssh [email _server
$ w
$ exit

Če si želite ogledati vsebino vašega javnega ključa SSH in ga ročno namestiti na oddaljeni strežnik SSH, izdajte naslednji ukaz.

$ cat ~/.ssh/id_rsa.pub

Varen strežnik SSH v Ubuntuju

Da bi zaščitili demon SSH, morate spremeniti privzeto številko vrat SSH iz 22 v naključna vrata, višja od 1024, in onemogočiti oddaljeni dostop SSH do korenskega računa prek gesla ali ključa, tako da odprete glavno konfiguracijsko datoteko strežnika SSH in naredite po spremembah.

$ sudo vi /etc/ssh/sshd_config

Najprej poiščite komentirano vrstico #Port22 in spodaj dodajte novo vrstico (ustrezno zamenjajte številko vrat za poslušanje):

Port 2345

Ne zapirajte datoteke, pomaknite se navzdol in poiščite vrstico #PermitRootLogin da, odkomentirajte vrstico tako, da odstranite znak # (hashtag) z začetka vrstice in spremenite vrstico tako, kot je prikazano v spodnjem izvlečku.

PermitRootLogin no

Nato znova zaženite strežnik SSH, da uporabite nove nastavitve in preizkusite konfiguracijo, tako da se poskusite prijaviti z oddaljenega računalnika na ta strežnik s korenskim računom prek nove številke vrat. Dostop do korenskega računa prek SSH je treba omejiti.

$ sudo systemctl restart sshd

Zaženite tudi ukaz grep, da prikažete novo številko vrat za poslušanje za strežnik SSH.

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

V nekaterih primerih boste morda želeli samodejno prekiniti vse oddaljene povezave SSH, vzpostavljene v vašem strežniku, po obdobju nedejavnosti.

Če želite omogočiti to funkcijo, izvedite spodnji ukaz, ki doda spremenljivko bash TMOUT v skrito datoteko .bashrc vašega računa in prisili, da se vsaka povezava SSH z imenom uporabnika prekine ali prekine po 5 minutah nedejavnosti.

$ echo 'TMOUT=300' >> .bashrc

Zaženite ukaz tail, da preverite, ali je spremenljivka pravilno dodana na koncu datoteke .bashrc. Vse naslednje povezave SSH se bodo po 5 minutah neaktivnosti odslej samodejno zaprle.

$ tail .bashrc

Na spodnjem posnetku zaslona je oddaljena seja SSH od drupal stroja do strežnika Ubuntu prek računa ubuntu_user potekla in samodejna odjava po 5 minutah.

Konfigurirajte Ubuntu požarni zid UFW

Vsak strežnik potrebuje dobro konfiguriran požarni zid, da zaščiti sistem na ravni omrežja. Strežnik Ubuntu za upravljanje pravil iptables na strežniku uporablja aplikacijo UFW.

Preverite stanje aplikacije požarnega zidu UFW v Ubuntuju tako, da izdate spodnje ukaze.

$ sudo systemctl status ufw
$ sudo ufw status

Običajno je demon požarnega zidu UFW zagnan in deluje v strežniku Ubuntu, vendar se pravila privzeto ne uporabljajo. Preden v sistemu omogočite politiko požarnega zidu UFW, morate najprej dodati novo pravilo, ki bo omogočilo prehod prometa SSH skozi požarni zid prek spremenjenih vrat SSH. Pravilo lahko dodate z izvajanjem spodnjega ukaza.

$ sudo ufw allow 2345/tcp

Ko dovolite promet SSH, lahko z naslednjimi ukazi omogočite in preverite aplikacijo požarnega zidu UFW.

$ sudo ufw enable
$ sudo ufw status

Če želite dodati nova pravila požarnega zidu za druge omrežne storitve, ki so pozneje nameščene na vašem strežniku, na primer strežnik HTTP, poštni strežnik ali druge omrežne storitve, uporabite spodnje primere ukazov požarnega zidu kot vodilo.

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

Če želite prikazati vsa pravila požarnega zidu, zaženite spodnji ukaz.

$ sudo ufw status verbose

Nastavite čas strežnika Ubuntu

Če želite nadzirati ali iskati uro strežnika Ubuntu in druge povezane časovne nastavitve, izvedite ukaz timedatectl brez argumenta.

Če želite spremeniti nastavitve časovnega pasu strežnika, najprej izvedite ukaz timedatectl z argumentom list-timezones, da navedete vse razpoložljive časovne pasove, nato pa nastavite časovni pas vašega sistema, kot je prikazano v spodnjem izvlečku.

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

Novega odjemalca demona systemd-timesyncd systemd lahko uporabite v Ubuntuju, da zagotovite natančen čas za vaš strežnik po celotnem omrežju in sinhronizirate čas z višjim časovnim strežnikom.

Če želite uporabiti to novo funkcijo Systemd, spremenite konfiguracijsko datoteko demona systemd-timesyncd in v vrstico stavkov NTP dodajte najbližje geografsko oddaljene strežnike NTP, kot je prikazano v spodnjem odlomku datoteke:

$ sudo nano /etc/systemd/timesyncd.conf

V datoteko timesyncd.conf dodajte naslednjo konfiguracijo:

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

Če želite dodati najbližje geografsko oddaljene strežnike NTP, se obrnite na seznam strežnikov projektov strežnikov NTP na naslednjem naslovu: http://www.pool.ntp.org/en/

Nato znova zaženite demon Systemd timesync, da odraža spremembe, in preverite stanje demona tako, da zaženete spodnje ukaze. Po ponovnem zagonu bo demon začel sinhronizirati čas z novim strežnikom strežnika ntp.

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

Onemogočite in odstranite nepotrebne storitve v Ubuntuju

Če želite v strežniku Ubuntu privzeto izvesti seznam vseh omrežnih storitev TCP in UDP, izvedite ukaz ss ali netstat.

$ sudo netstat -tulpn
OR
$ sudo ss -tulpn

Če pogledamo z izdajo Ubuntu 16.10, privzeti razreševalnik DNS zdaj nadzira storitev, razrešena s sistemom, kar je razvidno iz izpisa ukazov netstat ali ss.

Prav tako morate preveriti stanje storitve, razrešeno s sistemom, tako da zaženete naslednji ukaz.

$ sudo systemctl status systemd-resolved.service

Storitev, razrešena s sistemom, se poveže na vse omogočene omrežne vmesnike in posluša na vratih 53 in 5355 TCP in UDP.

Izvajanje predpomnilnika DNS, ki ga razreši sistem, na produkcijskem strežniku je lahko nevarno zaradi številnih napadov DDOS, ki so jih zlonamerni hekerji izvedli proti nezavarovanim strežnikom DNS.

Če želite zaustaviti in onemogočiti to storitev, izvedite naslednje ukaze.

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

Preverite, ali je bila storitev ustavljena in onemogočena z izdajo ukaza ss ali netstat. Prisluškovalna vrata, razrešena s sistemom, 53 in 5355 TCP in UDP, ne bi smela biti navedena v izhodu ukazov netstat ali ss, kot je prikazano spodaj.

Prav tako morate znova zagnati napravo, da popolnoma onemogočite vse demonske storitve, ki jih razreši sistem, in obnovite privzeto datoteko /etc/resolv.conf.

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

Čeprav ste v strežniku onemogočili izvajanje nekaterih neželenih omrežnih storitev, so v vašem sistemu nameščene in delujoče tudi druge storitve, na primer storitev lxc process in snapd. Te storitve je mogoče enostavno zaznati z ukazi top ali pstree.

$ sudo ps aux
$ sudo top
$ sudo pstree

Če v svojem strežniku ne boste uporabljali virtualizacije vsebnikov LXC ali začeli nameščati programske opreme, zapakirane prek upravitelja paketov Snap, morate te storitve popolnoma onemogočiti in odstraniti z izdajo spodnjih ukazov.

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

To je vse! Zdaj je strežnik Ubuntu pripravljen za namestitev dodatne programske opreme, potrebne za prilagojene omrežne storitve ali aplikacije, kot je namestitev in konfiguracija spletnega strežnika, strežnika baz podatkov, storitve skupne rabe datotek ali drugih posebnih aplikacij.