Indledende serveropsætning med Ubuntu 20.04/18.04 og 16.04


Denne vejledning vil guide dig om de første grundlæggende trin, du har brug for at konfigurere på en ny installeret Ubuntu-server for at øge sikkerheden og pålideligheden for din server.

De konfigurationer, der er forklaret i dette emne, er næsten de samme for alle Ubuntu-serversystemer, hvad angår den underliggende OS-platform, uanset om Ubuntu er installeret på en bare-metal-server, i en privat virtuel maskine eller en virtuel maskine, der er spinnet ud i et VPS-publikum Sky.

  • Installation af Ubuntu 20.04-server
  • Ubuntu 18.04 Serverinstallation
  • Installation af Ubuntu 16.04-server

Opdater og opgrader Ubuntu-system

Det første trin, du skal passe på i tilfælde af ny installation af Ubuntu-serveren eller en ny implementeret Ubuntu VPS, er at sørge for, at systemet og alle systemkomponenter, såsom kernen, sikkerhedsrettelserne.

For at opdatere Ubuntu-serveren skal du logge på serverens konsol med en konto med root-rettigheder eller direkte som root og køre nedenstående kommandoer for at udføre opdaterings- og opgraderingsprocessen.

$ sudo apt update 

Efter at have kørt opdateringskommandoen, vil du se antallet af tilgængelige pakker til opgraderingsprocessen og den kommando, der bruges til at liste opgraderingerne til pakkerne.

$ sudo apt list --upgradable

Når du har hørt listen over tilgængelige pakker til opgradering, skal du udstede kommandoen nedenfor for at starte systemopgraderingsprocessen.

$ sudo apt upgrade

For at fjerne alle lokalt downloadede deb-pakker og alle andre apt-get-cacher skal du udføre nedenstående kommando.

$ sudo apt autoremove
$ sudo apt clean

Opret ny konto i Ubuntu

Som en sikkerhedsforanstaltning er rodkontoen fuldstændig deaktiveret i Ubuntu. For at oprette en ny konto på systemet skal du logge ind på systemet med kontobrugeren med rodrettigheder og oprette en ny konto med nedenstående kommando.

Denne nye konto tildeles med root-beføjelser via sudo-kommando og vil blive brugt til at udføre administrative opgaver i systemet. Sørg for at konfigurere en stærk adgangskode for at beskytte denne konto. Følg adduser-prompten for at konfigurere brugeroplysningerne og adgangskoden.

$ sudo adduser ubuntu_user

Hvis denne konto tildeles en anden systemadministrator, kan du tvinge brugeren til at ændre sin adgangskode ved det første log-in-forsøg ved at udstede følgende kommando.

$ sudo chage -d0 ubuntu_user

Indtil videre kan den nye tilføjede bruger ikke udføre administrative opgaver via sudo-værktøjet. For at tildele denne nye brugerkonto med administrative rettigheder skal du føje brugeren til "sudo" systemgruppen ved at udstede kommandoen nedenfor.

$ sudo usermod -a -G sudo ubuntu_user

Som standard har alle brugere, der tilhører gruppen "sudo" tilladelse til at udføre kommandoer med root-rettigheder via sudo-hjælpeprogrammet. Sudo-kommandoen skal bruges, før du skriver den kommando, der er nødvendig til udførelse, som vist i nedenstående eksempel.

$ sudo apt install package_name

Test om den nye bruger har tildelt root-rettigheder ved at logge ind på systemet og køre apt update-kommandoen med sudo.

$ su - ubuntu_user
$ sudo apt update

Konfigurer systemværtsnavn i Ubuntu

Normalt oprettes maskinens værtsnavn under systeminstallationsprocessen, eller når VPS oprettes i skyen. Du bør dog ændre navnet på din maskine for bedre at afspejle destinationen på din server eller bedre beskrive dens endelige formål.

I et stort firma er maskiner opkaldt efter komplekse navngivningsskemaer for let at identificere maskinen i datacenterets reoler. For eksempel, hvis din Ubuntu-maskine vil betjene en mailserver, skal maskinens navn afspejle denne kendsgerning, og du kan f.eks. Konfigurere maskinens værtsnavn som mx01.mydomain.lan.

For at vise detaljer om dit maskins værtsnavn skal du køre følgende kommando.

$ hostnamectl

For at ændre navnet på din maskine skal du udstede hostnamectl-kommandoen med det nye navn, du vil konfigurere til din maskine, som illustreret i nedenstående uddrag.

$ sudo hostnamectl set-hostname tecmint

Bekræft det nye navn på dit system med en af nedenstående kommandoer.

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

Opsæt SSH med godkendelse af offentlig nøgle i Ubuntu

For at øge systemsikkerhedsgraden på en Ubuntu-server skal du konfigurere SSH-godkendelse af offentlig nøgle til en lokal konto. For at generere SSH-nøglepar udfører den offentlige og private nøgle med en angivelse af en nøgellængde, såsom 2048 bit, følgende kommando på din serverkonsol.

Sørg for, at du er logget ind på systemet med den bruger, du konfigurerer SSH-nøglen.

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

Mens nøglen genereres, bliver du bedt om at tilføje adgangskode for at sikre nøglen. Du kan indtaste en stærk adgangssætning eller vælge at lade adgangskoden være tom, hvis du vil automatisere opgaver via SSH-serveren.

Når SSH-nøglen er genereret, kan du kopiere den offentlige nøgle til en ekstern server ved at udføre nedenstående kommando. For at installere den offentlige nøgle til den eksterne SSH-server skal du bruge en fjernbrugerkonto med de rigtige tilladelser og legitimationsoplysninger for at logge på fjernserveren.

$ ssh-copy-id [email _server

Du skal være i stand til automatisk at logge ind via SSH til fjernserveren ved hjælp af godkendelsesmetoden for offentlig nøgle. Du behøver ikke at tilføje den eksterne brugeradgangskode, mens du bruger SSH-offentlig nøglegodkendelse.

Når du er logget ind på fjernserveren, kan du begynde at udføre kommandoer, såsom w-kommando for at liste ssh-fjernindloggede brugere, som vist i nedenstående skærmbillede.

Skriv exit i konsollen for at lukke den eksterne SSH-session.

$ ssh [email _server
$ w
$ exit

For at se indholdet af din offentlige SSH-nøgle for manuelt at installere nøglen til en ekstern SSH-server, skal du udstede følgende kommando.

$ cat ~/.ssh/id_rsa.pub

Sikker SSH-server i Ubuntu

For at sikre SSH-dæmonen skal du ændre standard SSH-portnummer fra 22 til en tilfældig port, højere end 1024, og ikke tillade fjern SSH-adgang til rodkontoen via adgangskode eller nøgle ved at åbne SSH-serverens hovedkonfigurationsfil og oprette efter ændringer.

$ sudo vi /etc/ssh/sshd_config

Først skal du søge i den kommenterede linje # Port22 og tilføje en ny linje nedenunder (udskift lytteportnummeret i overensstemmelse hermed):

Port 2345

Luk ikke filen, rul ned og søg efter linjen #PermitRootLogin ja, fjern kommentar fra linjen ved at fjerne # -tegnet (hashtag) fra begyndelsen af linjen og rediger linjen, så den ser ud som vist i nedenstående uddrag.

PermitRootLogin no

Genstart derefter SSH-serveren for at anvende de nye indstillinger og test konfigurationen ved at prøve at logge på fra en ekstern maskine til denne server med rodkontoen via det nye portnummer. Adgangen til rodkonto via SSH bør være begrænset.

$ sudo systemctl restart sshd

Kør også grep-kommandoen for at vise det nye lytteportnummer til SSH-serveren.

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

Der er situationer, hvor du muligvis automatisk vil frakoble alle eksterne SSH-forbindelser, der er oprettet på din server efter en periode med inaktivitet.

For at aktivere denne funktion skal du udføre nedenstående kommando, der tilføjer TMOUT bash-variablen til din konto .bashrc skjult fil og tvinger enhver SSH-forbindelse, der er oprettet med brugerens navn, til at blive afbrudt eller droppet ud efter 5 minutters inaktivitet.

$ echo 'TMOUT=300' >> .bashrc

Kør hale-kommando for at kontrollere, om variablen er tilføjet korrekt i slutningen af .bashrc-filen. Alle efterfølgende SSH-forbindelser lukkes automatisk efter 5 minutters inaktivitet fra nu af.

$ tail .bashrc

I nedenstående skærmbillede er den eksterne SSH-session fra drupal-maskine til Ubuntu-server via ubuntu_user-konto blevet afbrudt og automatisk logget ud efter 5 minutter.

Konfigurer Ubuntu Firewall UFW

Hver server har brug for en velkonfigureret firewall for at sikre systemet på netværksniveau. Ubuntu-server bruger UFW-applikation til at styre iptables-reglerne på serveren.

Kontroller status for UFW-firewall-applikationen i Ubuntu ved at udstede nedenstående kommandoer.

$ sudo systemctl status ufw
$ sudo ufw status

Normalt er UFW-firewall-dæmonen i gang i Ubuntu-serveren, men reglerne anvendes ikke som standard. Før du aktiverer UFW-firewallpolitikken i dit system, skal du først tilføje en ny regel for at tillade SSH-trafik at passere gennem firewall via den ændrede SSH-port. Reglen kan tilføjes ved at udføre nedenstående kommando.

$ sudo ufw allow 2345/tcp

Når du har tilladt SSH-trafik, kan du aktivere og kontrollere UFW-firewall-applikationen med følgende kommandoer.

$ sudo ufw enable
$ sudo ufw status

Brug nedenstående eksempler på firewallkommandoer som vejledning for at tilføje nye firewallregler for andre netværkstjenester, der efterfølgende installeres på din server, såsom HTTP-server, en mailserver eller andre netværkstjenester.

$ 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 at liste alle firewallregler kør nedenstående kommando.

$ sudo ufw status verbose

Indstil Ubuntu Servertid

For at kontrollere eller forespørge på Ubuntu-serverur og andre relaterede tidsindstillinger skal du udføre timedatectl-kommandoen uden noget argument.

For at ændre din servers tidszoneindstillinger skal du først udføre timedatectl-kommandoen med listen-tidszoner-argument for at liste alle tilgængelige tidszoner og derefter indstille tidszonen for dit system som vist i nedenstående uddrag.

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

Den nye systemd-timesyncd systemd-dæmonklient kan bruges i Ubuntu for at give en nøjagtig tid til din server på tværs af netværket og synkronisere tiden med en øverste gangs peer-server.

For at anvende denne nye funktion i Systemd skal du ændre systemd-timesyncd-dæmonkonfigurationsfil og tilføje de nærmeste geografisk NTP-servere til NTP-sætningslinjen, som vist i nedenstående filuddrag:

$ sudo nano /etc/systemd/timesyncd.conf

Føj følgende konfiguration til timesyncd.conf-filen:

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

For at tilføje dine nærmeste geografiske NTP-servere, se listen over NTP-pool-projektservere på følgende adresse: http://www.pool.ntp.org/da/

Genstart derefter Systemd timesync-dæmonen for at afspejle ændringer og kontrollere dæmonens status ved at køre nedenstående kommandoer. Efter genstart begynder dæmonen at synkronisere tiden med den nye ntp-server-peer.

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

Deaktiver og fjern unødvendige tjenester i Ubuntu

For at få en liste over alle TCP- og UDP-netværkstjenester up-and-running som standard på din Ubuntu-server skal du udføre kommandoen ss eller netstat.

$ sudo netstat -tulpn
OR
$ sudo ss -tulpn

Starter med Ubuntu 16.10-udgivelse styres standard DNS-opløseren nu af systemd-løst tjeneste, som afsløret af output fra netstat eller ss-kommandoer.

Du skal også kontrollere den systemd-løste servicestatus ved at køre følgende kommando.

$ sudo systemctl status systemd-resolved.service

Den systemd-løste tjeneste binder på alle aktiverede netværksgrænseflader og lytter på porte 53 og 5355 TCP og UDP.

At køre systemopløst caching-DNS-dæmon på en produktionsserver kan være farligt på grund af det mange antal DDOS-angreb udført af ondsindede hackere mod usikrede DNS-servere.

For at stoppe og deaktivere denne service skal du udføre følgende kommandoer.

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

Kontroller, om tjenesten er stoppet og deaktiveret ved at udstede ss eller netstat-kommandoen. De systemd-løste lytteporte, 53 og 5355 TCP og UDP, bør ikke vises i netstat eller ss kommandooutput, som illustreret nedenfor.

Du skal også genstarte maskinen for fuldstændigt at deaktivere alle systemd-løste dæmontjenester og gendanne standard /etc/resolv.conf-filen.

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

Selvom du har deaktiveret nogle uønskede netværkstjenester til at køre på din server, er der også andre tjenester installeret og kørende i dit system, såsom lxc-proces og snapd-service. Disse tjenester kan let detekteres via top- eller pstree-kommandoer.

$ sudo ps aux
$ sudo top
$ sudo pstree

Hvis du ikke vil bruge LXC-containervirtualisering på din server eller begynde at installere software pakket via Snap-pakkehåndtering, skal du deaktivere og fjerne disse tjenester fuldstændigt ved at udstede nedenstående kommandoer.

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

Det er alt! Nu er Ubuntu-serveren nu forberedt på at installere yderligere software, der er nødvendig til brugerdefinerede netværkstjenester eller applikationer, såsom installation og konfiguration af en webserver, en databaseserver, en fildelingstjeneste eller andre specifikke applikationer.