Nå for tiden er det å heve en server på en hosting et spørsmål om et par minutter og noen få museklikk. Men umiddelbart etter lanseringen befinner han seg i et fiendtlig miljø, fordi han er åpen for hele Internett som en uskyldig jente på et rockerdiskotek. Skannere vil raskt finne det og oppdage tusenvis av automatisk skriptede roboter som leter etter sårbarheter og feilkonfigurasjoner. Det er et par ting du bør gjøre rett etter lansering for å sikre grunnleggende beskyttelse.
Det første trinnet er å opprette en ikke-rootbruker for deg selv. Poenget er at brukeren root absolutte privilegier i systemet, og hvis du tillater ham ekstern administrasjon, vil du gjøre halve jobben for hackeren, og etterlate et gyldig brukernavn for ham.
Derfor må du opprette en annen bruker, og deaktivere ekstern administrasjon via SSH for root.
En ny bruker startes av kommandoen useradd:
useradd [options] <username>
Deretter legges det til et passord for den med kommandoen passwd:
passwd <username>
Til slutt må denne brukeren legges til en gruppe som har rett til å utføre forhøyede kommandoer sudo. Avhengig av Linux-distribusjonen kan disse være forskjellige grupper. For eksempel, i CentOS og Red Hat blir brukeren lagt til gruppen wheel:
usermod -aG wheel <username>
I Ubuntu legges det til gruppen sudo:
usermod -aG sudo <username>
Nøkler i stedet for SSH-passord
Brute force eller passordlekkasjer er en standard angrepsvektor, så det er best å deaktivere passordautentisering i SSH (Secure Shell) og bruke nøkkelautentisering i stedet.
Det finnes ulike programmer for implementering av SSH-protokollen, som f.eks lsh и dropbear, men den mest populære er OpenSSH. Installere OpenSSH-klienten på Ubuntu:
sudo apt install openssh-client
Serverinstallasjon:
sudo apt install openssh-server
Starte SSH-demonen (sshd) på Ubuntu-serveren:
sudo systemctl start sshd
Start demonen automatisk ved hver oppstart:
sudo systemctl enable sshd
Det skal bemerkes at serverdelen av OpenSSH inkluderer klientdelen. Det vil si gjennom openssh-server du kan koble til andre servere. Fra klientmaskinen din kan du dessuten starte en SSH-tunnel fra en ekstern server til en tredjepartsvert, og så vil tredjepartsverten vurdere den eksterne serveren som kilden til forespørsler. En veldig nyttig funksjon for å maskere systemet ditt. Se artikkelen for detaljer "Praktiske tips, eksempler og SSH-tunneler".
På en klientmaskin gir det vanligvis ingen mening å installere en fullverdig server for å forhindre muligheten for ekstern tilkobling til en datamaskin (av sikkerhetshensyn).
Så, for den nye brukeren din, må du først generere SSH-nøkler på datamaskinen du får tilgang til serveren fra:
ssh-keygen -t rsa
Den offentlige nøkkelen er lagret i en fil .pub og ser ut som en streng med tilfeldige tegn som begynner med ssh-rsa.
Deretter, fra under roten, oppretter du en SSH-katalog på serveren i brukerens hjemmekatalog og legger til den offentlige SSH-nøkkelen til filen authorized_keys, ved å bruke et tekstredigeringsprogram som Vim:
På klientsiden må du spesifisere plasseringen av den hemmelige nøkkelen for autentisering:
ssh-add DIR_PATH/keylocation
Nå kan du logge inn på serveren under brukernavnet med denne nøkkelen:
ssh [username]@hostname
Etter autorisasjon kan du bruke scp-kommandoen til å kopiere filer, verktøyet sshfs å eksternt montere et filsystem eller kataloger.
Det anbefales å lage flere sikkerhetskopier av den private nøkkelen, fordi hvis du deaktiverer passordautentisering og mister den, vil du ikke ha noen måte å logge på din egen server i det hele tatt.
Som nevnt ovenfor, i SSH må du deaktivere autentisering for root (dette er grunnen til at vi startet en ny bruker).
På CentOS/Red Hat finner vi linjen PermitRootLogin yes i konfigurasjonsfilen /etc/ssh/sshd_config og endre det:
PermitRootLogin no
På Ubuntu legg til linjen PermitRootLogin no til konfigurasjonsfilen 10-my-sshd-settings.conf:
Etter å ha bekreftet at den nye brukeren autentiserer med nøkkelen sin, kan du deaktivere passordautentisering for å eliminere risikoen for passordlekkasje eller brute force. Nå, for å få tilgang til serveren, må en angriper få en privat nøkkel.
På CentOS/Red Hat finner vi linjen PasswordAuthentication yes i konfigurasjonsfilen /etc/ssh/sshd_config og endre det slik:
PasswordAuthentication no
På Ubuntu legg til linjen PasswordAuthentication no å lagre 10-my-sshd-settings.conf:
For instruksjoner om hvordan du aktiverer tofaktorautentisering via SSH, se her.
Brannmur
Brannmuren sørger for at kun trafikken på portene du direkte tillater vil gå til serveren. Dette beskytter mot utnyttelse av porter som ved et uhell er aktivert med andre tjenester, noe som i stor grad reduserer angrepsoverflaten.
Før du installerer en brannmur, må du sørge for at SSH er inkludert i ekskluderingslisten og ikke vil bli blokkert. Ellers, etter å ha startet brannmuren, vil vi ikke kunne koble til serveren.
Ubuntu-distribusjon kommer med ukomplisert brannmur (ufw), og med CentOS/Red Hat - brannmur.
Verktøy Feil2Ban analyserer logger på serveren og teller antall tilgangsforsøk fra hver IP-adresse. Innstillingene spesifiserer reglene for hvor mange tilgangsforsøk som er tillatt for et visst intervall – hvoretter denne IP-adressen blokkeres i en spesifisert tidsperiode. La oss for eksempel tillate 5 mislykkede SSH-autentiseringsforsøk innen 2 timer, og deretter blokkere den oppgitte IP-adressen i 12 timer.
I tillegg til SSH kan Fail2Ban beskytte andre tjenester på nginx- eller Apache-nettserveren.
Automatiske sikkerhetsoppdateringer
Som du vet, finnes det stadig nye sårbarheter i alle programmer. Etter at informasjonen er publisert, blir utnyttelser lagt til populære utnyttelsespakker, som brukes massivt av hackere og tenåringer når de skanner alle servere på rad. Derfor er det svært viktig å installere sikkerhetsoppdateringer så snart de dukker opp.
På Ubuntu-serveren er automatiske sikkerhetsoppdateringer aktivert som standard, så ingen ytterligere handling er nødvendig.
På CentOS/Red Hat må du installere applikasjonen dnf-automatisk og slå på timeren:
SSH ble utviklet i 1995 for å erstatte telnet (port 23) og ftp (port 21), så forfatteren av programmet, Tatu Iltonen valgt port 22 som standard, og er godkjent av IANA.
Naturligvis er alle angripere klar over hvilken port SSH kjører på - og skanner den sammen med resten av standardportene for å finne programvareversjonen, sjekke standard root-passord, og så videre.
Endring av standardporter - obfuskasjon - flere ganger reduserer mengden søppeltrafikk, størrelsen på loggene og belastningen på serveren, og reduserer også angrepsoverflaten. Selv om noen kritiser denne metoden for "beskyttelse gjennom uklarhet" (sikkerhet gjennom uklarhet). Årsaken er at denne teknikken er i motsetning til det grunnleggende arkitektonisk vern. Derfor har for eksempel US National Institute of Standards and Technology i "Tjenersikkerhetsveiledning" indikerer behovet for en åpen serverarkitektur: "Sikkerheten til et system bør ikke stole på hemmeligheten rundt implementeringen av dets komponenter," heter det i dokumentet.
Teoretisk sett er endring av standardportene i strid med praksisen med åpen arkitektur. Men i praksis reduseres faktisk mengden ondsinnet trafikk, så dette er et enkelt og effektivt tiltak.
Portnummeret kan konfigureres ved å endre direktivet Port 22 i konfigurasjonsfilen / Etc / ssh / sshd_config. Det er også indikert med parameteren -p <port> в sshd. SSH klient og programmer sftp støtter også alternativet -p <port>.
Parameter -p <port> kan brukes til å spesifisere portnummeret når du kobler til med kommandoen ssh i linux. I sftp и scp parameter brukes -P <port> (stor P). Kommandolinjeinstruksjonen overstyrer alle verdier i konfigurasjonsfiler.
Hvis det er mange servere, kan nesten alle disse handlingene for å beskytte Linux-serveren automatiseres i et skript. Men hvis det bare er én server, er det bedre å kontrollere prosessen manuelt.
Om rettighetene til annonsering
Bestill og kom i gang med en gang! Opprettelse av VDS enhver konfigurasjon og med hvilket som helst operativsystem innen et minutt. Den maksimale konfigurasjonen lar deg komme ut til det fulle - 128 CPU-kjerner, 512 GB RAM, 4000 GB NVMe. Episk 🙂