Pradinė serverio sąranka su „Ubuntu“ 20.04/18.04 ir 16.04


Ši pamoka padės jums atlikti pirmuosius pagrindinius veiksmus, kuriuos turite sukonfigūruoti naujame įdiegtame „Ubuntu“ serveryje, kad padidintumėte savo serverio saugumą ir patikimumą.

Šioje temoje paaiškintos konfigūracijos yra beveik vienodos visoms „Ubuntu“ serverių sistemoms, atsižvelgiant į pagrindinę OS platformą, nesvarbu, ar „Ubuntu“ yra įdiegta ant pliko metalo serverio, privačioje virtualioje mašinoje, ar virtualioje mašinoje, išsuktoje VPS viešumoje debesis.

  • „Ubuntu 20.04“ serverio diegimas
  • „Ubuntu 18.04“ serverio diegimas
  • „Ubuntu 16.04“ serverio diegimas

Atnaujinkite ir atnaujinkite „Ubuntu“ sistemą

Pirmasis žingsnis, kuriuo turite pasirūpinti, jei naujai įdiegiate „Ubuntu“ serverį ar naują įdiegtą „Ubuntu VPS“, yra įsitikinti, kad sistema ir visi sistemos komponentai, pvz., Branduolys, saugos pataisos.

Norėdami atnaujinti „Ubuntu“ serverį, prisijunkite prie serverio konsolės naudodami paskyrą su root teisėmis arba tiesiogiai kaip root ir vykdydami toliau nurodytas komandas, kad atliktumėte naujinimo ir naujovinimo procesą.

$ sudo apt update 

Paleidę komandą „update“ pamatysite galimų paketų, skirtų naujovinimo procesui, skaičių ir komandą, naudojamą paketų naujinių sąraše.

$ sudo apt list --upgradable

Peržiūrėję naujovinamų paketų sąrašą, paleiskite toliau pateiktą komandą, kad pradėtumėte sistemos naujovinimo procesą.

$ sudo apt upgrade

Norėdami pašalinti visus vietoje atsisiųstus deb paketus ir visas kitas apt-get talpyklas, vykdykite žemiau pateiktą komandą.

$ sudo apt autoremove
$ sudo apt clean

Sukurkite naują sąskaitą „Ubuntu“

Pagal numatytuosius nustatymus „Ubuntu“ yra visiškai išjungta pagrindinė paskyra, kaip saugumo priemonė. Norėdami sukurti naują paskyrą sistemoje, prisijunkite prie sistemos su paskyros vartotoju su root teisėmis ir sukurkite naują paskyrą naudodami toliau pateiktą komandą.

Šiai naujai paskyrai bus suteiktos root teisių privilegijos per sudo komandą ir ji bus naudojama sistemos administracinėms užduotims atlikti. Įsitikinkite, kad nustatėte tvirtą slaptažodį, kad apsaugotumėte šią paskyrą. Vykdykite „adduser“ raginimą nustatyti vartotojo informaciją ir slaptažodį.

$ sudo adduser ubuntu_user

Jei ši paskyra bus priskirta kitam sistemos administratoriui, galite priversti vartotoją pakeisti savo slaptažodį pirmą kartą bandydami prisijungti, pateikdami šią komandą.

$ sudo chage -d0 ubuntu_user

Kol kas naujas pridėtas vartotojas negali atlikti administracinių užduočių naudodamas sudo įrankį. Norėdami suteikti naują vartotojo abonementą su administratoriaus teisėmis, turėtumėte įtraukti vartotoją į „sudo“ sistemos grupę, išleisdami žemiau esančią komandą.

$ sudo usermod -a -G sudo ubuntu_user

Pagal numatytuosius nustatymus visiems „sudo“ grupei priklausantiems vartotojams leidžiama vykdyti komandas su root teisėmis per sudo įrankį. Sudo komanda turi būti naudojama prieš rašant komandą, reikalingą vykdymui, kaip parodyta žemiau pateiktame pavyzdyje.

$ sudo apt install package_name

Patikrinkite, ar naujam vartotojui suteiktos root teisės, prisijunkite prie sistemos ir paleiskite apt atnaujinimo komandą su sudo.

$ su - ubuntu_user
$ sudo apt update

Konfigūruokite sistemos pagrindinio kompiuterio pavadinimą Ubuntu

Paprastai kompiuterio pagrindinis vardas nustatomas sistemos diegimo proceso metu arba kai VPS sukuriama debesyje. Tačiau turėtumėte pakeisti savo kompiuterio pavadinimą, kad geriau atspindėtumėte savo serverio paskirtį arba geriau apibūdintumėte jo galutinę paskirtį.

Didelėje įmonėje mašinos pavadinamos pagal sudėtingas pavadinimų schemas, kad būtų galima lengvai identifikuoti mašiną duomenų centro lentynose. Pavyzdžiui, jei jūsų „Ubuntu“ mašina valdys pašto serverį, mašinos pavadinimas turėtų atspindėti šį faktą ir, pavyzdžiui, galite nustatyti mašinos pagrindinį pavadinimą kaip mx01.mydomain.lan.

Norėdami parodyti išsamią informaciją apie savo kompiuterio pavadinimą, vykdykite šią komandą.

$ hostnamectl

Norėdami pakeisti savo kompiuterio pavadinimą, išleiskite komandą hostnamectl su nauju pavadinimu, kurį sukonfigūruosite savo mašinai, kaip parodyta toliau pateiktoje ištraukoje.

$ sudo hostnamectl set-hostname tecmint

Patvirtinkite naują sistemos pavadinimą naudodami vieną iš žemiau pateiktų komandų.

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

Nustatykite SSH su viešojo rakto autentifikavimu „Ubuntu“

Norėdami padidinti „Ubuntu“ serverio sistemos saugumo laipsnį, turėtumėte nustatyti SSH viešojo rakto autentifikavimą vietinei paskyrai. Norėdami sugeneruoti SSH raktų porą, viešasis ir privatusis raktas, nurodydami rakto ilgį, pvz., 2048 bitus, vykdykite šią komandą savo serverio konsolėje.

Įsitikinkite, kad esate prisijungę prie sistemos su vartotoju, kuriam nustatote SSH raktą.

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

Kol raktas bus sugeneruotas, būsite paraginti pridėti slaptafrazę, kad apsaugotumėte raktą. Galite įvesti stiprią slaptafrazę arba palikti ją tuščią, jei norite automatizuoti užduotis per SSH serverį.

Sugeneravus SSH raktą, galite nukopijuoti viešąjį raktą į nuotolinį serverį, vykdydami žemiau esančią komandą. Norėdami įdiegti viešąjį raktą į nuotolinį SSH serverį, jums reikės nuotolinio vartotojo abonemento su tinkamais leidimais ir kredencialais, norint prisijungti prie nuotolinio serverio.

$ ssh-copy-id [email _server

Turėtumėte sugebėti automatiškai prisijungti per SSH į nuotolinį serverį naudodami viešojo rakto autentifikavimo metodą. Naudojant SSH viešojo rakto autentifikavimą nereikės pridėti nuotolinio vartotojo slaptažodžio.

Prisijungę prie nuotolinio serverio, galite pradėti vykdyti komandas, pvz., Komandą w, kad išvardytumėte ssh nuotoliniu būdu prisijungę vartotojai, kaip parodyta toliau pateiktoje ekrano kopijoje.

Norėdami uždaryti nuotolinį SSH seansą, konsolėje įveskite exit.

$ ssh [email _server
$ w
$ exit

Norėdami pamatyti savo viešojo SSH rakto turinį ir rankiniu būdu įdiegti raktą į nuotolinį SSH serverį, išleiskite šią komandą.

$ cat ~/.ssh/id_rsa.pub

Saugus SSH serveris „Ubuntu“

Norėdami apsaugoti SSH demoną, turėtumėte pakeisti numatytąjį SSH prievado numerį iš 22 į atsitiktinį prievadą, didesnį nei 1024, ir uždrausti nuotolinę SSH prieigą prie šakninės paskyros slaptažodžiu ar raktu, atidarydami pagrindinį SSH serverio konfigūracijos failą ir atlikdami po pakeitimų.

$ sudo vi /etc/ssh/sshd_config

Pirmiausia ieškokite komentuojamos eilutės # Port22 ir po ja pridėkite naują eilutę (atitinkamai pakeiskite klausymo prievado numerį):

Port 2345

Neuždarykite failo, slinkite žemyn ir ieškokite eilutės #PermitRootLogin taip, atžymėkite eilutę pašalindami # ženklą (žymą su grotelėmis) nuo eilutės pradžios ir modifikuokite eilutę taip, kaip parodyta toliau pateiktoje ištraukoje.

PermitRootLogin no

Vėliau iš naujo paleiskite SSH serverį, kad pritaikytumėte naujus nustatymus, ir išbandykite konfigūraciją bandydami prisijungti iš nuotolinio kompiuterio į šį serverį su pagrindine paskyra per naują prievado numerį. Reikėtų apriboti prieigą prie šakninės paskyros per SSH.

$ sudo systemctl restart sshd

Be to, paleiskite komandą grep, kad parodytumėte naują SSH serverio klausymosi prievado numerį.

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

Yra situacijų, kai po tam tikro neveikimo laikotarpio galbūt norėsite automatiškai atjungti visus nuotolinius SSH ryšius, sukurtus jūsų serveryje.

Norėdami įgalinti šią funkciją, vykdykite žemiau pateiktą komandą, kuri prideda TMOUT bash kintamąjį prie jūsų paskyros .bashrc paslėpto failo ir priverčia kiekvieną SSH ryšį, užmegztą vartotojo vardu, atjungti arba atsisakyti po 5 minučių neveikimo.

$ echo 'TMOUT=300' >> .bashrc

Paleiskite tail komandą, kad patikrintumėte, ar kintamasis teisingai pridėtas .bashrc failo pabaigoje. Visi tolesni SSH ryšiai bus automatiškai uždaryti po 5 minučių neveikimo.

$ tail .bashrc

Žemiau pateiktoje ekrano kopijoje buvo nutolęs nuotolinis SSH seansas iš „drupal“ mašinos į „Ubuntu“ serverį per „ubuntu_user“ paskyrą ir automatiškai atsijungus po 5 minučių.

Konfigūruokite „Ubuntu Firewall UFW“

Kiekvienam serveriui reikia gerai sukonfigūruotos užkardos, kad sistema būtų apsaugota tinklo lygiu. „Ubuntu“ serveris naudoja „UFW“ programą tvarkydamas iptables taisykles serveryje.

Patikrinkite UFW užkardos programos būseną „Ubuntu“, pateikdami toliau nurodytas komandas.

$ sudo systemctl status ufw
$ sudo ufw status

Paprastai UFW užkardos deimonas veikia ir veikia „Ubuntu“ serveryje, tačiau taisyklės nėra taikomos pagal numatytuosius nustatymus. Prieš įgalindami UFW užkardos politiką savo sistemoje, pirmiausia turėtumėte pridėti naują taisyklę, kad SSH srautas galėtų praeiti per užkardą per pakeistą SSH prievadą. Taisyklę galima pridėti vykdant žemiau esančią komandą.

$ sudo ufw allow 2345/tcp

Leidę SSH srautą, galite įjungti ir patikrinti UFW užkardos programą naudodami šias komandas.

$ sudo ufw enable
$ sudo ufw status

Norėdami pridėti naujų ugniasienės taisyklių kitoms tinklo paslaugoms, vėliau įdiegtoms jūsų serveryje, pvz., HTTP serveriui, pašto serveriui ar kitoms tinklo paslaugoms, naudokite toliau nurodytus užkardos komandų pavyzdžius.

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

Norėdami išvardyti visas užkardos taisykles, vykdykite toliau nurodytą komandą.

$ sudo ufw status verbose

Nustatykite „Ubuntu Server Server Time“

Norėdami valdyti arba pateikti užklausą „Ubuntu“ serverio laikrodžiui ir kitiems susijusiems laiko nustatymams, vykdykite komandą „timedatectl“ be jokio argumento.

Norėdami pakeisti serverio laiko juostos nustatymus, pirmiausia vykdykite komandą „timedatectl“ su argumentu „list-timezones“, kad išvardytumėte visas galimas laiko juostas, tada nustatykite savo sistemos laiko juostą, kaip parodyta toliau pateiktoje ištraukoje.

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

Naujasis „systemd-timesyncd systemd daemon“ klientas gali būti naudojamas „Ubuntu“, kad jūsų serveris galėtų pateikti tikslų laiką visame tinkle ir sinchronizuoti laiką su viršutinio lygio bendraamžių serveriu.

Norėdami pritaikyti šią naują „Systemd“ funkciją, pakeiskite „systemd-timesyncd“ deemono konfigūracijos failą ir pridėkite artimiausius geografiškai NTP serverius prie NTP sakinių eilutės, kaip parodyta toliau pateiktoje failo ištraukoje:

$ sudo nano /etc/systemd/timesyncd.conf

Į failą timesyncd.conf pridėkite šią konfigūraciją:

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

Norėdami pridėti artimiausius geografiškai NTP serverius, peržiūrėkite NTP telkinio projekto serverių sąrašą šiuo adresu: http://www.pool.ntp.org/en/

Po to paleiskite „Systemd timesync“ deemoną iš naujo, kad atspindėtumėte pakeitimus, ir patikrinkite deimono būseną vykdydami toliau nurodytas komandas. Paleidus iš naujo, deemonas pradės sinchronizuoti laiką su nauju NTP serverio bendraamžiu.

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

Išjunkite ir pašalinkite nereikalingas paslaugas „Ubuntu“

Norėdami gauti visų TCP ir UDP tinklo paslaugų, kurios pagal numatytuosius nustatymus veikia ir veikia jūsų „Ubuntu“ serveryje, sąrašą, vykdykite komandą ss arba netstat.

$ sudo netstat -tulpn
OR
$ sudo ss -tulpn

Stebint su „Ubuntu 16.10“ leidimu, numatytąjį DNS sprendiklį dabar valdo „systemd“ išspręsta tarnyba, kaip rodo netstat arba ss komandų išvestis.

Taip pat turėtumėte patikrinti sistemos išspręstos paslaugos būseną vykdydami šią komandą.

$ sudo systemctl status systemd-resolved.service

„Systemd“ išspręsta paslauga susieja visas įjungtas tinklo sąsajas ir klausosi 53 ir 5355 prievadų TCP ir UDP.

Sistemoje išspręstos DNS talpyklos paleidimo paleidimas gamybos serveryje gali būti pavojingas dėl daugybės DDOS atakų, kurias kenksmingi įsilaužėliai atliko prieš neapsaugotus DNS serverius.

Norėdami sustabdyti ir išjungti šią paslaugą, vykdykite šias komandas.

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

Patikrinkite, ar paslauga buvo sustabdyta ir išjungta, išleisdami komandą ss arba netstat. Sistemoje išspręsti klausymosi prievadai, 53 ir 5355 TCP ir UDP, neturėtų būti išvardyti netstat ar ss komandų išvestyje, kaip parodyta toliau.

Taip pat turėtumėte iš naujo paleisti įrenginį, kad visiškai išjungtumėte visas sistemoje išspręstas „deemon“ paslaugas ir atkurtumėte numatytąjį failą /etc/resolv.conf.

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

Nors jūs išjungėte kai kurias nepageidaujamas tinklo paslaugas, kad jos veiktų jūsų serveryje, sistemoje taip pat yra įdiegtų ir veikiančių kitų paslaugų, tokių kaip „lxc“ procesas ir „snapd“ paslauga. Šias paslaugas galima lengvai aptikti naudojant „top“ arba „pstree“ komandas.

$ sudo ps aux
$ sudo top
$ sudo pstree

Jei nenorite naudoti LXC konteinerio virtualizavimo savo serveryje arba pradėti diegti programinę įrangą, supakuotą per „Snap“ paketų tvarkytuvę, turėtumėte visiškai išjungti ir pašalinti šias paslaugas, pateikdami toliau nurodytas komandas.

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

Tai viskas! Dabar „Ubuntu“ serveris yra pasirengęs įdiegti papildomą programinę įrangą, reikalingą tinkintoms tinklo paslaugoms ar programoms, pvz., Įdiegti ir konfigūruoti žiniatinklio serverį, duomenų bazės serverį, failų bendrinimo paslaugą ar kitas konkrečias programas.