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.