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.