Initial Server Setup mat Ubuntu 20.04/18.04 a 16.04


Dësen Tutorial féiert Iech op déi éischt Basis Schrëtt déi Dir braucht fir op engem neien installéierten Ubuntu Server ze konfiguréieren fir Sécherheet an Zouverlässegkeet fir Äre Server ze erhéijen.

D'Konfiguratiounen, déi an dësem Thema erkläert ginn, si bal d'selwecht fir all Ubuntu Server Systemer, wat d'Basisdaten OS Plattform ugeet, egal ob Ubuntu op engem Bare-Metal Server installéiert ass, an enger privater virtueller Maschinn oder enger virtueller Maschinn, déi an engem VPS Public gesponnen ass. Wollek.

  • Ubuntu 20.04 Serverinstallatioun
  • Ubuntu 18.04 Serverinstallatioun
  • Ubuntu 16.04 Serverinstallatioun

Update an Upgrade Ubuntu System

Den éischte Schrëtt deen Dir braucht fir ze këmmeren am Fall vun enger frëscher Installatioun vum Ubuntu Server oder engem neien ofgebauten Ubuntu VPS ass sécher ze stellen datt de System an all Systemkomponenten, sou wéi de Kernel, d'Sécherheetspatches.

Fir Ubuntu Server ze aktualiséieren, aloggen op d'Server Konsole mat engem Kont mat Root Privilegien oder direkt als Root a lafen déi ënnen Kommandoen fir den Update an Upgrade Prozess auszeféieren.

$ sudo apt update 

Nodeems Dir den Update Kommando ausgeführt hutt, gesitt Dir d'Zuel vun de verfügbare Packagen fir den Upgradeprozess an de Kommando deen benotzt gëtt fir d'Packagen Upgrades opzemaachen.

$ sudo apt list --upgradable

Nodeems Dir d'Lëscht vun de verfügbare Pakete fir Upgrade konsultéiert hutt, gitt de Kommando ënnen fir de System Upgrade Prozess unzefänken.

$ sudo apt upgrade

Fir all lokal erofgeluede Deb Packagen an all aner apt-get Cache ze läschen, fuert de Kommando hei ënnen aus.

$ sudo apt autoremove
$ sudo apt clean

Erstellt neie Kont an Ubuntu

Par défaut, als Sécherheetsmoossnam, ass de Root Kont komplett an Ubuntu deaktivéiert. Fir en neie Kont am System ze kreéieren, loggt Iech op de System mat dem Kont Benotzer mat Root Privilegien a erstellt en neie Kont mam Kommando ënnen.

Dësen neie Kont gëtt mat Root Powers Privilegien iwwer sudo Kommando ausgezeechent a gëtt benotzt fir administrativ Aufgaben am System auszeféieren. Gitt sécher datt Dir e staarkt Passwuert opstellt fir dëse Kont ze schützen. Follegt den adduser-Prompt fir d'Benotzerdetailer a Passwuert opzestellen.

$ sudo adduser ubuntu_user

Wann dëse Kont un engem anere System Admin zougewisen gëtt, kënnt Dir de Benotzer forcéieren säi Passwuert beim éischte Log-In Versuch z'änneren andeems Dir de folgende Kommando ausginn.

$ sudo chage -d0 ubuntu_user

Fir de Moment kann den neie addéierte Benotzer net administrativ Aufgaben iwwer Sudo Utility ausféieren. Fir dësen neie Benotzerkont mat administrativen Privilegien ze ginn, sollt Dir de Benotzer an den \sudo Systemgrupp bäidroen andeems Dir de Kommando hei ënnen ausgitt.

$ sudo usermod -a -G sudo ubuntu_user

Par défaut sinn all Benotzer, déi zu der sudo Grupp gehéieren, erlaabt Kommandoen mat Root Privilegien iwwer sudo Utility auszeféieren. De Sudo Kommando muss benotzt ginn ier Dir de Kommando schreift fir d'Ausféierung ze schreiwen, wéi am Beispill hei ënnen.

$ sudo apt install package_name

Test ob den neie Benotzer d'Root Privilegien huet, andeems Dir Iech op de System aloggen an den apt Update Kommando ausféiert mat sudo.

$ su - ubuntu_user
$ sudo apt update

System Hostnumm an Ubuntu konfiguréieren

Normalerweis gëtt de Maschinn Hostnumm während dem Systeminstallatiounsprozess opgestallt oder wann de VPS an der Wollek erstallt gëtt. Wéi och ëmmer, Dir sollt den Numm vun Ärer Maschinn änneren fir d'Destinatioun vun Ärem Server besser ze reflektéieren oder säin definitiven Zweck besser ze beschreiwen.

An enger grousser Firma gi Maschinnen no komplexe Benennungsschemaen benannt fir d'Maschinn einfach an de Racken vum Datacenter z'identifizéieren. Zum Beispill, wann Är Ubuntu-Maschinn e Mail-Server operéiert, soll den Numm vun der Maschinn dës Tatsaach reflektéieren an Dir kënnt zum Beispill Maschinn Hostnumm als mx01.mydomain.lan astellen.

Fir Detailer iwwer Äre Maschinn Hostnumm ze weisen, fuert de folgende Kommando.

$ hostnamectl

Fir den Numm vun Ärer Maschinn z'änneren, gitt den Hostnamectl Kommando mat dem neien Numm deen Dir fir Är Maschinn konfiguréiert, wéi am Auszich hei ënnen illustréiert.

$ sudo hostnamectl set-hostname tecmint

Verifizéiert den neien Numm vun Ärem System mat engem vun den folgenden Kommandoen.

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

Setup SSH mat Public Key Authentifikatioun an Ubuntu

Fir de System Sécherheetsgrad vun engem Ubuntu Server ze erhéijen, sollt Dir SSH ëffentlech Schlëssel Authentifikatioun fir e lokale Kont opsetzen. Fir SSH Key Pair ze generéieren, den ëffentlechen a private Schlëssel, mat enger spezifizéierter Schlëssellängt, wéi 2048 Bits, fuert de folgende Kommando op Ärer Serverkonsole aus.

Vergewëssert Iech datt Dir an de System ageloggt sidd mam Benotzer deen Dir den SSH Schlëssel opstellt.

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

Wärend de Schlëssel generéiert gëtt, gitt Dir opgefuerdert Passphrase derbäi ze ginn fir de Schlëssel ze sécheren. Dir kënnt e staarke Passphrase aginn oder wielen de Passphrase eidel ze loossen wann Dir Aufgaben iwwer SSH Server automatiséieren wëllt.

Nodeems de SSH Schlëssel generéiert gouf, kënnt Dir den ëffentleche Schlëssel op e Fernserver kopéieren andeems Dir de Kommando hei ënnen ausféiert. Fir den ëffentleche Schlëssel op den Remote SSH Server z'installéieren, braucht Dir e Remote Benotzerkont mat de passenden Permissiounen an Umeldungsinformatiounen fir op de Remote Server anzeloggen.

$ ssh-copy-id [email _server

Dir sollt fäeg sinn automatesch iwwer SSH op de Remote Server mat der ëffentlecher Schlëssel Authentifikatiounsmethod aloggen. Dir musst d'Remote Benotzer Passwuert net addéieren wärend Dir SSH Public Key Authentifikatioun benotzt.

Nodeems Dir Iech op de Remote Server ageloggt hutt, kënnt Dir ufänken Kommandoen auszeféieren, wéi z.

Typ Ausgang an der Konsole fir d'Remote SSH Sessioun zouzemaachen.

$ ssh [email _server
$ w
$ exit

Fir den Inhalt vun Ärem ëffentleche SSH Schlëssel ze gesinn fir de Schlëssel manuell op e Remote SSH Server z'installéieren, gitt de folgende Kommando aus.

$ cat ~/.ssh/id_rsa.pub

Séchert SSH Server an Ubuntu

Fir den SSH Daemon ze sécheren, sollt Dir d'Standard SSH Port Nummer vun 22 op en zoufälleg Port änneren, méi héich wéi 1024, an de Remote SSH Zougang zum Root Kont iwwer Passwuert oder Schlëssel net erlaben, andeems Dir SSH Server Haaptkonfiguratiounsdatei opmaacht folgend Ännerungen.

$ sudo vi /etc/ssh/sshd_config

Als éischt, sicht déi kommentéiert Linn #Port22 a füügt eng nei Linn drënner un (ersetzt d'Nolauschterportnummer entspriechend):

Port 2345

Maacht d'Datei net zou, scrollt erof a sicht no der Linn #PermitRootLogin jo, decommentéiert d'Linn andeems Dir den # Zeechen (Hashtag) vum Ufank vun der Linn erofhuelt an d'Linn ännert fir ze kucken wéi am Auszich hei ënnen.

PermitRootLogin no

Duerno starten den SSH-Server nei fir déi nei Astellungen z'applizéieren an d'Konfiguratioun ze testen andeems Dir probéiert vun enger Remote-Maschinn op dëse Server mat dem Root-Kont iwwer déi nei Portnummer unzemellen. Den Zougang zum Rootkonto iwwer SSH sollt limitéiert sinn.

$ sudo systemctl restart sshd

Gitt och grep Kommando aus fir déi nei Nolauschterportnummer fir SSH Server ze weisen.

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

Et gi Situatiounen wou Dir wëllt automatesch all Remote SSH Verbindungen, déi an Ärem Server etabléiert sinn no enger Period vun Inaktivitéit, trennen.

Fir dës Fonktioun z'aktivéieren, fuerdert de Kommando hei ënnen, deen d'TMOUT bash Variabel op Äre Kont .bashrc verstoppte Datei bäidréit an zwéngt all SSH Verbindung, déi mam Numm vum Benotzer gemaach gëtt, no 5 Minutte vun Inaktivitéit ze trennen oder ofgefall.

$ echo 'TMOUT=300' >> .bashrc

Run Schwäif Kommando fir eng kontrolléieren ob d'Variabel richteg um Enn vun .bashrc Fichier dobäi gouf. All spéider SSH Verbindunge ginn automatesch no 5 Minutten Inaktivitéit vun elo un zougemaach.

$ tail .bashrc

Am ënneschten Screenshot ass d'Remote SSH Sessioun vun drupal Maschinn op Ubuntu Server iwwer ubuntu_user Kont ausgeschloss an automatesch ausloggen no 5 Minutten.

Konfiguréieren Ubuntu Firewall UFW

All Server brauch eng gutt konfiguréiert Firewall fir de System um Netzniveau ze sécheren. Ubuntu Server benotzt UFW Applikatioun fir d'iptables Regelen um Server ze managen.

Préift de Status vun der UFW Firewall Applikatioun an Ubuntu andeems Dir déi folgend Kommandoen ausgëtt.

$ sudo systemctl status ufw
$ sudo ufw status

Normalerweis ass den UFW Firewall Daemon op a leeft am Ubuntu Server, awer d'Regele ginn net als Standard ugewannt. Ier Dir UFW Firewall Politik an Ärem System aktivéiert, sollt Dir als éischt eng nei Regel addéieren fir datt SSH Traffic duerch d'Firewall iwwer de geännerten SSH Hafen passéiert. D'Regel kann bäigefüügt ginn andeems Dir de Kommando hei ënnen ausféiert.

$ sudo ufw allow 2345/tcp

Nodeems Dir SSH Traffic erlaabt hutt, kënnt Dir d'UFW Firewall Applikatioun mat de folgende Kommandoen aktivéieren a kontrolléieren.

$ sudo ufw enable
$ sudo ufw status

Fir nei Firewall-Regele fir aner Netzwierkservicer ze addéieren, déi duerno op Ärem Server installéiert sinn, sou wéi HTTP-Server, e Mailserver oder aner Netzwierkservicer, benotzt déi folgend Firewall-Befehle Beispiller als Guide.

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

Fir all Firewall Regelen ze lëschten, fuert de Kommando ënnen.

$ sudo ufw status verbose

Set Ubuntu Server Zäit

Fir d'Ubuntu Server Auer an aner verbonne Zäitastellungen ze kontrolléieren oder ze froen, fuert den timedatectl Kommando aus ouni Argument.

Fir d'Zäitzone Astellunge vun Ärem Server z'änneren, fuert als éischt den timedatectl Kommando mat List-Timezones Argument aus fir all verfügbaren Zäitzonen ze lëschten an dann d'Zäitzone vun Ärem System ze setzen wéi am Auszich hei ënnen.

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

Den neie systemd-timesyncd systemd Daemon Client kann an Ubuntu benotzt ginn fir eng präzis Zäit fir Äre Server iwwer Netzwierk ze bidden an Zäit mat engem ieweschte Peer Server ze synchroniséieren.

Fir dës nei Feature vu Systemd z'applizéieren, ännert d'Systemd-timesyncd Daemon Konfiguratiounsdatei a füügt déi nootste geographesch NTP-Server op d'NTP-Aussoelinn, wéi am folgenden Dateiauszuch gewisen:

$ sudo nano /etc/systemd/timesyncd.conf

Füügt déi folgend Konfiguratioun op timesyncd.conf Datei:

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

Fir Är nooste geographesch NTP-Server derbäi ze ginn, konsultéiert d'NTP Pool-Projet-Server Lëscht op der folgender Adress: http://www.pool.ntp.org/en/

Duerno starten de Systemd Timesync Daemon nei fir Ännerungen ze reflektéieren an den Daemon Status ze kontrolléieren andeems Dir déi folgend Kommandoen ausféiert. Nom Restart fänkt den Daemon un Zäit mat dem neien ntp Server Peer ze synchroniséieren.

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

Deaktivéieren an ewechhuelen Onnéideg Servicer an Ubuntu

Fir eng Lëscht vun all TCP- an UDP-Netzwierkservicer op Ärem Ubuntu-Server up-and-running ze kréien, fuert de Kommando ss oder netstat aus.

$ sudo netstat -tulpn
OR
$ sudo ss -tulpn

Stare mat Ubuntu 16.10 Verëffentlechung, gëtt de Standard DNS Resolver elo vum systemd-geléiste Service kontrolléiert, wéi et duerch d'Ausgab vun netstat oder ss Kommandoen opgedeckt gëtt.

Dir sollt och de Systemd-geléiste Servicestatus kontrolléieren andeems Dir de folgende Kommando ausféiert.

$ sudo systemctl status systemd-resolved.service

De systemd-geléiste Service bindt op all aktivéiert Netzwierkschnëttplazen a lauschtert op Ports 53 an 5355 TCP an UDP.

Systemgeléiste Caching DNS Daemon op engem Produktiounsserver auszeféieren ka geféierlech sinn wéinst der viller Unzuel vun DDOS Attacke vu béiswëlleg Hacker géint ongesécherten DNS Server.

Fir dëse Service ze stoppen an auszeschalten, fuert déi folgend Kommandoen aus.

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

Vergewëssert Iech ob de Service gestoppt an deaktivéiert gouf andeems Dir ss oder netstat Kommando ausginn. Déi systemd-geléist Nolauschterporten, 53 an 5355 TCP an UDP, sollten net an netstat oder ss Kommandoausgang opgezielt ginn, wéi hei ënnen illustréiert.

Dir sollt och d'Maschinn nei starten fir all systemd-geléiste Daemon-Servicer komplett auszeschalten an d'Standard /etc/resolv.conf Datei restauréieren.

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

Och wann Dir e puer onerwënscht Netzwierkservicer deaktivéiert hutt fir an Ärem Server ze lafen, ginn et och aner Servicer installéiert a lafen an Ärem System, sou wéi lxc Prozess a Snapd Service. Dës Servicer kënnen einfach iwwer Top oder pstree Kommandoen erkannt ginn.

$ sudo ps aux
$ sudo top
$ sudo pstree

Am Fall wou Dir keng LXC Container Virtualiséierung an Ärem Server benotzt oder ufänkt Software ze installéieren déi iwwer Snap Package Manager verpackt ass, sollt Dir dës Servicer komplett auszeschalten an ewechhuelen, andeems Dir déi folgend Kommandoen ausgëtt.

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

Dat ass alles! Elo ass den Ubuntu Server elo virbereet fir zousätzlech Software z'installéieren déi néideg ass fir personaliséiert Netzwierkservicer oder Uwendungen, sou wéi d'Installatioun an d'Konfiguratioun vun engem Webserver, e Datebankserver, e File Share Service oder aner spezifesch Uwendungen.