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.