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.
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.
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:
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:
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:
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.
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.
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:
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 🙂