Linux-serverskydd. Vad ska man göra först

Linux-serverskydd. Vad ska man göra först
Habib M'henni/Wikimedia Commons, CC BY-SA

Numera handlar det om ett par minuter och några musklick att höja en server på ett webbhotell. Men direkt efter lanseringen befinner han sig i en fientlig miljö, eftersom han är öppen för hela Internet som en oskyldig tjej på ett rockerdisco. Scanners kommer snabbt att hitta det och upptäcka tusentals automatiskt skriptade bots som letar efter sårbarheter och felkonfigurationer i nätverket. Det finns några saker du bör göra direkt efter lanseringen för att säkerställa grundläggande skydd.

Innehåll

Icke-root användare

Det första steget är att skapa en icke-rootanvändare för dig själv. Poängen är att användaren root absoluta privilegier i systemet, och om du tillåter honom fjärradministration, kommer du att göra halva arbetet för hackaren och lämna ett giltigt användarnamn för honom.

Därför måste du skapa en annan användare och inaktivera fjärradministration via SSH för root.

En ny användare startas av kommandot useradd:

useradd [options] <username>

Sedan läggs ett lösenord till för det med kommandot passwd:

passwd <username>

Slutligen måste denna användare läggas till i en grupp som har rätt att utföra förhöjda kommandon sudo. Beroende på Linux-distributionen kan dessa vara olika grupper. Till exempel, i CentOS och Red Hat läggs användaren till i gruppen wheel:

usermod -aG wheel <username>

I Ubuntu läggs det till i gruppen sudo:

usermod -aG sudo <username>

Nycklar istället för SSH-lösenord

Brute force eller lösenordsläckor är en vanlig attackvektor, så det är bäst att inaktivera lösenordsautentisering i SSH (Secure Shell) och använda nyckelautentisering istället.

Det finns olika program för att implementera SSH-protokollet, som t.ex lsh и dropbear, men den mest populära är OpenSSH. Installera OpenSSH-klienten på Ubuntu:

sudo apt install openssh-client

Serverinstallation:

sudo apt install openssh-server

Starta SSH-demonen (sshd) på Ubuntu-servern:

sudo systemctl start sshd

Starta demonen automatiskt vid varje start:

sudo systemctl enable sshd

Det bör noteras att serverdelen av OpenSSH inkluderar klientdelen. Det vill säga genom openssh-server du kan ansluta till andra servrar. Dessutom, från din klientdator, kan du starta en SSH-tunnel från en fjärrserver till en tredjepartsvärd, och sedan kommer tredjepartsvärden att betrakta fjärrservern som källan till förfrågningar. En mycket praktisk funktion för att maskera ditt system. Se artikeln för detaljer "Praktiska tips, exempel och SSH-tunnlar".

På en klientdator är det vanligtvis ingen mening att installera en fullfjädrad server för att förhindra möjligheten till fjärranslutning till en dator (av säkerhetsskäl).

Så för din nya användare måste du först generera SSH-nycklar på datorn från vilken du kommer åt servern:

ssh-keygen -t rsa

Den publika nyckeln lagras i en fil .pub och ser ut som en sträng av slumpmässiga tecken som börjar med ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Sedan, under roten, skapa en SSH-katalog på servern i användarens hemkatalog och lägg till den offentliga SSH-nyckeln till filen authorized_keys, med en textredigerare som Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Slutligen, ställ in rätt behörigheter för filen:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

och ändra ägarskap till denna användare:

chown -R username:username /home/username/.ssh

På klientsidan måste du ange platsen för den hemliga nyckeln för autentisering:

ssh-add DIR_PATH/keylocation

Nu kan du logga in på servern under användarnamnet med denna nyckel:

ssh [username]@hostname

Efter auktorisering kan du använda kommandot scp för att kopiera filer, verktyget sshfs för att fjärrmontera ett filsystem eller kataloger.

Det är lämpligt att göra flera säkerhetskopior av den privata nyckeln, för om du inaktiverar lösenordsautentisering och förlorar den, kommer du inte att ha något sätt att logga in på din egen server alls.

Som nämnts ovan, i SSH måste du inaktivera autentisering för root (detta är anledningen till att vi startade en ny användare).

På CentOS/Red Hat hittar vi linjen PermitRootLogin yes i inställningsfilen /etc/ssh/sshd_config och ändra det:

PermitRootLogin no

Lägg till raden på Ubuntu PermitRootLogin no till konfigurationsfilen 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Efter att ha verifierat att den nya användaren autentiserar med sin nyckel kan du inaktivera lösenordsautentisering för att eliminera risken för lösenordsläckage eller brute force. Nu, för att komma åt servern, måste en angripare få en privat nyckel.

På CentOS/Red Hat hittar vi linjen PasswordAuthentication yes i inställningsfilen /etc/ssh/sshd_config och ändra det så här:

PasswordAuthentication no

Lägg till raden på Ubuntu PasswordAuthentication no att arkivera 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

För instruktioner om hur du aktiverar tvåfaktorsautentisering via SSH, se här.

Brandvägg

Brandväggen ser till att endast trafiken på de portar som du direkt tillåter går till servern. Detta skyddar mot exploatering av portar som av misstag aktiveras med andra tjänster, vilket kraftigt minskar attackytan.

Innan du installerar en brandvägg måste du se till att SSH finns med i undantagslistan och inte kommer att blockeras. Annars kommer vi inte att kunna ansluta till servern efter att ha startat brandväggen.

Ubuntu-distributionen kommer med okomplicerad brandvägg (ufw), och med CentOS/Red Hat - firewalld.

Tillåta SSH i brandväggen på Ubuntu:

sudo ufw allow ssh

På CentOS/Red Hat använd kommandot firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Efter denna procedur kan du starta brandväggen.

På CentOS/Red Hat, starta systemd-tjänsten för brandvägg:

sudo systemctl start firewalld
sudo systemctl enable firewalld

På Ubuntu använder vi följande kommando:

sudo ufw enable

Fail2Ban

Tjänsten Fail2Ban analyserar loggar på servern och räknar antalet åtkomstförsök från varje IP-adress. Inställningarna anger reglerna för hur många åtkomstförsök som tillåts under ett visst intervall - varefter denna IP-adress blockeras under en viss tidsperiod. Låt oss till exempel tillåta 5 misslyckade SSH-autentiseringsförsök inom 2 timmar och blockera sedan den angivna IP-adressen i 12 timmar.

Installera Fail2Ban på CentOS och Red Hat:

sudo yum install fail2ban

Installation på Ubuntu och Debian:

sudo apt install fail2ban

Lansera:

systemctl start fail2ban
systemctl enable fail2ban

Programmet har två konfigurationsfiler: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Förbudsbegränsningar anges i den andra filen.

Jail for SSH är aktiverat som standard med standardinställningar (5 försök, intervall 10 minuter, blockering i 10 minuter).

[DEFAULT] ignorecommand=bantime=10m findtime=10m maxretry=5

Förutom SSH kan Fail2Ban skydda andra tjänster på nginx- eller Apache-webbservern.

Automatiska säkerhetsuppdateringar

Nya sårbarheter finns som bekant ständigt i alla program. Efter att informationen har publicerats läggs exploits till i populära exploateringspaket, som används massivt av hackare och tonåringar när de skannar alla servrar i rad. Därför är det mycket viktigt att installera säkerhetsuppdateringar så fort de dyker upp.

På Ubuntu-servern är automatiska säkerhetsuppdateringar aktiverade som standard, så ingen ytterligare åtgärd krävs.

På CentOS/Red Hat måste du installera programmet dnf-automatisk och sätt på timern:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Timerkontroll:

sudo systemctl status dnf-automatic.timer

Ändra standardportarna

SSH utvecklades 1995 för att ersätta telnet (port 23) och ftp (port 21), så författaren till programmet, Tatu Iltonen vald port 22 som standard, och har godkänts av IANA.

Naturligtvis är alla angripare medvetna om vilken port SSH körs på - och skanna den tillsammans med resten av standardportarna för att ta reda på mjukvaruversionen, för att kontrollera vanliga root-lösenord och så vidare.

Att ändra standardportar - fördunkling - flera gånger minskar mängden soptrafik, storleken på loggarna och belastningen på servern, och minskar även attackytan. Även om vissa kritisera denna metod för "skydd genom dunkel" (säkerhet genom dunkel). Anledningen är att denna teknik står i motsats till det grundläggande arkitektoniskt skydd. Därför till exempel US National Institute of Standards and Technology i "Serversäkerhetsguide" indikerar behovet av en öppen serverarkitektur: "Säkerheten i ett system bör inte förlita sig på sekretessen för implementeringen av dess komponenter", står det i dokumentet.

Teoretiskt sett strider det mot den öppna arkitekturen att ändra standardportarna. Men i praktiken minskar faktiskt mängden skadlig trafik, så detta är en enkel och effektiv åtgärd.

Portnumret kan konfigureras genom att ändra direktivet Port 22 i inställningsfilen / Etc / ssh / sshd_config. Det indikeras också av parametern -p <port> в sshd. SSH klient och program sftp stöder också alternativet -p <port>.

Parameter -p <port> kan användas för att ange portnumret när du ansluter med kommandot ssh i linux. I sftp и scp parameter används -P <port> (stort P). Kommandoradsinstruktioner åsidosätter alla värden i konfigurationsfiler.

Om det finns många servrar kan nästan alla dessa åtgärder för att skydda Linux-servern automatiseras i ett skript. Men om det bara finns en server är det bättre att manuellt styra processen.

Om reklamens rättigheter

Beställ och sätt igång direkt! Skapande av VDS alla konfigurationer och med vilket operativsystem som helst inom en minut. Den maximala konfigurationen låter dig komma ut till fullo - 128 CPU-kärnor, 512 GB RAM, 4000 GB NVMe. Episk 🙂

Linux-serverskydd. Vad ska man göra först

Källa: will.com