Innledende serveroppsett med Ubuntu 20.04/18.04 og 16.04


Denne opplæringen vil veilede deg om de første grunnleggende trinnene du trenger for å konfigurere på en ny installert Ubuntu-server for å øke sikkerheten og påliteligheten for serveren din.

Konfigurasjonene som er forklart i dette emnet er nesten de samme for alle Ubuntu-serversystemer, angående den underliggende OS-plattformen, enten Ubuntu er installert på en bare-metal-server, i en privat virtuell maskin eller en virtuell maskin spinnet ut i en VPS offentlig Sky.

  • Ubuntu 20.04-serverinstallasjon
  • Ubuntu 18.04-serverinstallasjon
  • Ubuntu 16.04-serverinstallasjon

Oppdater og oppgrader Ubuntu System

Det første trinnet du må ta vare på i tilfelle ny installasjon av Ubuntu-serveren eller en ny distribuert Ubuntu VPS er å sørge for at systemet og alle systemkomponenter, for eksempel kjernen, sikkerhetsoppdateringene.

For å oppdatere Ubuntu-serveren, for å logge på serverens konsoll med en konto med root-privilegier eller direkte som root og kjør kommandoene nedenfor for å utføre oppdaterings- og oppgraderingsprosessen.

$ sudo apt update 

Etter å ha kjørt oppdateringskommandoen, vil du se antall tilgjengelige pakker for oppgraderingsprosessen og kommandoen som brukes for å liste opp pakkeoppgraderingene.

$ sudo apt list --upgradable

Etter at du har konsultert listen over tilgjengelige pakker for oppgradering, utfør kommandoen nedenfor for å starte systemoppgraderingsprosessen.

$ sudo apt upgrade

For å fjerne alle lokalt nedlastede deb-pakker og alle andre apt-get cacher, utfør kommandoen nedenfor.

$ sudo apt autoremove
$ sudo apt clean

Opprett ny konto i Ubuntu

Som standard, som et sikkerhetstiltak, er root-kontoen fullstendig deaktivert i Ubuntu. For å opprette en ny konto på systemet, logger du på systemet med kontobrukeren med root-privilegier og oppretter en ny konto med kommandoen nedenfor.

Denne nye kontoen vil bli gitt med root-rettigheter via sudo-kommando og vil bli brukt til å utføre administrative oppgaver i systemet. Sørg for at du konfigurerer et sterkt passord for å beskytte denne kontoen. Følg aduser-ledeteksten for å konfigurere brukerdetaljene og passordet.

$ sudo adduser ubuntu_user

Hvis denne kontoen vil bli tildelt en annen systemadministrator, kan du tvinge brukeren til å endre passordet ved første påloggingsforsøk ved å gi følgende kommando.

$ sudo chage -d0 ubuntu_user

Foreløpig kan ikke den nye brukeren utføre administrative oppgaver via sudo-verktøyet. For å gi denne nye brukerkontoen administrative rettigheter bør du legge til brukeren i \sudo systemgruppen ved å gi kommandoen nedenfor.

$ sudo usermod -a -G sudo ubuntu_user

Som standard har alle brukere som tilhører sudo-gruppen lov til å utføre kommandoer med root-privilegier via sudo-verktøyet. Sudo-kommandoen må brukes før du skriver kommandoen som trengs for utførelse, som vist i eksemplet nedenfor.

$ sudo apt install package_name

Test om den nye brukeren har root-privilegiene som er gitt, ved å logge på systemet og kjøre apt update-kommandoen med prefikset sudo.

$ su - ubuntu_user
$ sudo apt update

Konfigurer systemvertsnavn i Ubuntu

Vanligvis blir maskinens vertsnavn satt opp under systeminstallasjonsprosessen eller når VPS opprettes i skyen. Du bør imidlertid endre navnet på maskinen din for bedre å gjenspeile destinasjonen til serveren din eller for bedre å beskrive dens endelige formål.

I et stort selskap er maskiner oppkalt etter komplekse navneskjemaer for enkelt å identifisere maskinen i datasenterets stativer. For eksempel, hvis Ubuntu-maskinen din skal drive en e-postserver, bør navnet på maskinen gjenspeile dette faktum, og du kan for eksempel sette opp maskinens vertsnavn som mx01.mydomain.lan.

For å vise detaljer om maskinens vertsnavn, kjør følgende kommando.

$ hostnamectl

For å endre navnet på maskinen din, utsted hostnamectl-kommandoen med det nye navnet du vil konfigurere for maskinen din, som illustrert i utdraget nedenfor.

$ sudo hostnamectl set-hostname tecmint

Bekreft det nye navnet på systemet ditt med en av kommandoene nedenfor.

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

Sett opp SSH med offentlig nøkkelautentisering i Ubuntu

For å øke systemsikkerhetsgraden til en Ubuntu-server, bør du sette opp SSH offentlig nøkkelautentisering for en lokal konto. For å generere SSH-nøkkelpar, utfører den offentlige og private nøkkelen, med en spesifisert nøkkellengde, for eksempel 2048 biter, følgende kommando på serverkonsollen.

Sørg for at du er logget på systemet med brukeren du setter opp SSH-nøkkelen på.

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

Mens nøkkelen genereres, vil du bli bedt om å legge til passordfrase for å sikre nøkkelen. Du kan angi en sterk passordfrase eller velge å la passordfrasen stå tom hvis du ønsker å automatisere oppgaver via SSH-server.

Etter at SSH-nøkkelen er generert, kan du kopiere den offentlige nøkkelen til en ekstern server ved å utføre kommandoen nedenfor. For å installere den offentlige nøkkelen til den eksterne SSH-serveren trenger du en ekstern brukerkonto med de riktige tillatelsene og legitimasjonene for å logge på den eksterne serveren.

$ ssh-copy-id [email _server

Du skal kunne logge på automatisk via SSH til den eksterne serveren ved å bruke den offentlige nøkkelautentiseringsmetoden. Du trenger ikke å legge til det eksterne brukerpassordet mens du bruker SSH offentlig nøkkelautentisering.

Etter at du har logget på den eksterne serveren, kan du begynne å utføre kommandoer, for eksempel w-kommando for å liste ssh-fjernpåloggede brukere, som vist i skjermbildet nedenfor.

Skriv exit i konsollen for å lukke den eksterne SSH-økten.

$ ssh [email _server
$ w
$ exit

For å se innholdet i den offentlige SSH-nøkkelen din for å manuelt installere nøkkelen til en ekstern SSH-server, utfør følgende kommando.

$ cat ~/.ssh/id_rsa.pub

Sikker SSH-server i Ubuntu

For å sikre SSH-demonen bør du endre standard SSH-portnummer fra 22 til en tilfeldig port, høyere enn 1024, og ikke tillate ekstern SSH-tilgang til root-kontoen via passord eller nøkkel, ved å åpne SSH-serverens hovedkonfigurasjonsfil og gjøre følgende endringer.

$ sudo vi /etc/ssh/sshd_config

Søk først på den kommenterte linjen #Port22 og legg til en ny linje under (erstatt lytteportnummeret tilsvarende):

Port 2345

Ikke lukk filen, rull ned og søk etter linjen #PermitRootLogin ja, fjern kommenter linjen ved å fjerne #-tegnet (hashtag) fra begynnelsen av linjen og endre linjen slik at den ser ut som vist i utdraget nedenfor.

PermitRootLogin no

Etterpå starter du SSH-serveren på nytt for å bruke de nye innstillingene og teste konfigurasjonen ved å prøve å logge på fra en ekstern maskin til denne serveren med root-kontoen via det nye portnummeret. Tilgangen til root-kontoen via SSH bør begrenses.

$ sudo systemctl restart sshd

Kjør også grep-kommandoen for å vise det nye lytteportnummeret for SSH-serveren.

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

Det er situasjoner der du kanskje vil automatisk koble fra alle eksterne SSH-tilkoblinger som er opprettet på serveren din etter en periode med inaktivitet.

For å aktivere denne funksjonen, utfør kommandoen nedenfor, som legger til TMOUT bash-variabelen til kontoen din .bashrc skjulte fil og tvinger hver SSH-tilkobling som er opprettet med navnet på brukeren til å bli frakoblet eller droppet ut etter 5 minutter med inaktivitet.

$ echo 'TMOUT=300' >> .bashrc

Kjør tail-kommando for å sjekke om variabelen er riktig lagt til på slutten av .bashrc-filen. Alle påfølgende SSH-tilkoblinger vil automatisk stenges etter 5 minutter med inaktivitet fra nå av.

$ tail .bashrc

I skjermbildet nedenfor har den eksterne SSH-økten fra drupal-maskin til Ubuntu-server via ubuntu_user-konto blitt tidsavbrutt og automatisk utlogging etter 5 minutter.

Konfigurer Ubuntu Firewall UFW

Hver server trenger en godt konfigurert brannmur for å sikre systemet på nettverksnivå. Ubuntu-serveren bruker UFW-applikasjonen for å administrere iptables-reglene på serveren.

Sjekk statusen til UFW-brannmurapplikasjonen i Ubuntu ved å utstede kommandoene nedenfor.

$ sudo systemctl status ufw
$ sudo ufw status

Vanligvis er UFW-brannmurdemonen oppe og kjører i Ubuntu-serveren, men reglene brukes ikke som standard. Før du aktiverer UFW-brannmurpolicy i systemet ditt, bør du først legge til en ny regel for å tillate SSH-trafikk å passere gjennom brannmuren via den endrede SSH-porten. Regelen kan legges til ved å utføre kommandoen nedenfor.

$ sudo ufw allow 2345/tcp

Etter at du har tillatt SSH-trafikk, kan du aktivere og sjekke UFW-brannmurapplikasjonen med følgende kommandoer.

$ sudo ufw enable
$ sudo ufw status

For å legge til nye brannmurregler for andre nettverkstjenester som senere installeres på serveren din, for eksempel HTTP-server, en e-postserver eller andre nettverkstjenester, bruk eksemplene nedenfor med brannmurkommandoer som veiledning.

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

For å liste alle brannmurregler kjør kommandoen nedenfor.

$ sudo ufw status verbose

Angi Ubuntu Server Time

For å kontrollere eller spørre Ubuntu-serverklokken og andre relaterte tidsinnstillinger, utfør timedatectl-kommandoen uten argument.

For å endre serverens tidssoneinnstillinger, utfør først timedatectl-kommandoen med list-timezones-argumentet for å liste opp alle tilgjengelige tidssoner og deretter angi tidssonen til systemet som vist i utdraget nedenfor.

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

Den nye systemd-timesyncd systemd daemon-klienten kan brukes i Ubuntu for å gi en nøyaktig tid for serveren din på tvers av nettverket og synkronisere tid med en øvre tid peer-server.

For å bruke denne nye funksjonen i Systemd, endre systemd-timesyncd daemon konfigurasjonsfilen og legg til de nærmeste geografiske NTP-serverne til NTP-setningslinjen, som vist i filutdraget nedenfor:

$ sudo nano /etc/systemd/timesyncd.conf

Legg til følgende konfigurasjon til timesyncd.conf-filen:

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

For å legge til dine nærmeste geografiske NTP-servere, se NTP-poolprosjektserverlisten på følgende adresse: http://www.pool.ntp.org/en/

Etterpå, start Systemd timesync-demonen på nytt for å reflektere endringer og sjekke demonstatus ved å kjøre kommandoene nedenfor. Etter omstart vil daemonen begynne å synkronisere tiden med den nye ntp-serveren.

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

Deaktiver og fjern unødvendige tjenester i Ubuntu

For å få en liste over alle TCP- og UDP-nettverkstjenester som er oppe og kjører som standard i Ubuntu-serveren, kjør kommandoen ss eller netstat.

$ sudo netstat -tulpn
OR
$ sudo ss -tulpn

Med Ubuntu 16.10-utgivelsen styres standard DNS-resolver nå av systemløst tjeneste, som avslørt av utdataene fra netstat- eller ss-kommandoer.

Du bør også sjekke systemd-løst tjenestestatus ved å kjøre følgende kommando.

$ sudo systemctl status systemd-resolved.service

Den systemløste tjenesten binder seg til alle aktiverte nettverksgrensesnitt og lytter på portene 53 og 5355 TCP og UDP.

Å kjøre systemløst caching DNS-demon på en produksjonsserver kan være farlig på grunn av det mange antallet DDOS-angrep utført av ondsinnede hackere mot usikrede DNS-servere.

For å stoppe og deaktivere denne tjenesten, utfør følgende kommandoer.

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

Bekreft om tjenesten har blitt stoppet og deaktivert ved å gi ss eller netstat kommando. De systemløste lytteportene, 53 og 5355 TCP og UDP, skal ikke være oppført i netstat- eller ss-kommandoutdata, som illustrert i nedenfor.

Du bør også starte maskinen på nytt for å fullstendig deaktivere alle systemløste daemontjenester og gjenopprette standardfilen /etc/resolv.conf.

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

Selv om du har deaktivert noen uønskede nettverkstjenester for å kjøre på serveren din, er det også andre tjenester installert og kjører i systemet ditt, for eksempel lxc-prosess og snapd-tjeneste. Disse tjenestene kan enkelt oppdages via topp- eller pstree-kommandoer.

$ sudo ps aux
$ sudo top
$ sudo pstree

I tilfelle du ikke skal bruke LXC-beholdervirtualisering på serveren din eller begynne å installere programvare pakket via Snap-pakkebehandling, bør du deaktivere og fjerne disse tjenestene fullstendig ved å utstede kommandoene nedenfor.

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

Det er alt! Nå er Ubuntu-serveren nå forberedt for å installere tilleggsprogramvare som trengs for tilpassede nettverkstjenester eller applikasjoner, for eksempel installasjon og konfigurering av en webserver, en databaseserver, en fildelingstjeneste eller andre spesifikke applikasjoner.