Linux szerver megvédése. Mit tegyünk először?

Linux szerver megvédése. Mit tegyünk először?
Habib M’henni / Wikimedia Commons, CC BY-SA

Manapság egy szerver beállítása a hosztingon mindössze pár perc és néhány kattintás. De a bekapcsolás után rögtön ellenséges környezetbe kerül, mert az internet nyílt távlatában áll, mint egy ártatlan lány egy rocker diszkóban. Gyorsan rátalálnak a szkennerek és felfedezik az ezrekkel számolt automatikus botscripteket, amelyek a hálózaton védelmi rések és helytelen konfigurációk után kutatnak. Van néhány dolog, amit azonnal meg kell tenni a megfelelő védelem biztosítása érdekében.

Tartalom

Nem root felhasználó

Első lépésként létre kell hozni egy nem root felhasználót. Az a helyzet, hogy a felhasználónak , felhasználó nevében fut, mivel alapvető rendszerbeállításokat módosítanak, de a WordPress közvetlenül egy normál felhasználóként működik. teljes jogosultságai vannak a rendszerben, és ha távoli adminisztrációt engedélyezünk nekik, akkor a hacker számára fél munkát végzünk, mert érvényes felhasználónevet hagyunk magunk után.

Ezért létre kell hozni egy másik felhasználót, és a root esetében tiltsuk le a távoli adminisztrációt SSH-n keresztül.

Az új felhasználó létrehozása a következő parancsal történik useradd:

useradd [options]

Ezután a parancs segítségével jelszót adhatunk meg neki passwd:

passwd

Végül ezt a felhasználót hozzá kell adni ahhoz a csoporthoz, amely jogosult a privilégiumokkal rendelkező parancsok végrehajtására sudo. A Linux disztribúciójától függően ezek különböző csoportok lehetnek. Például a CentOS és a Red Hat esetében a felhasználót a wheel:

usermod -aG wheel

Ubuntu esetén a felhasználót a következő csoporthoz adjuk: sudo:

usermod -aG sudo

Kulcsok jelszavak helyett SSH

A brute force vagy jelszó szivárgás egy standard támadási vektor, ezért az SSH (Secure Shell) jelszó alapú hitelesítést érdemes letiltani, és helyette a kulcs alapú hitelesítést használni.

Számos program létezik az SSH protokoll megvalósítására, mint például lsh és Dropbear, de a legnépszerűbb az OpenSSH. Az OpenSSH kliens telepítése Ubuntu-ra:

sudo apt install openssh-client

Telepítés a szerveren:

sudo apt install openssh-server

Az SSH démon (sshd) indítása a szerveren Ubuntu alatt:

sudo systemctl start sshd

A démon automatikus indítása minden rendszerindításkor:

sudo systemctl enable sshd

Érdemes megjegyezni, hogy az OpenSSH szerver oldala tartalmazza az ügyféloldalt is. Tehát a openssh-server más szerverekhez is csatlakozhat. Sőt, az ügyfélszámítógépéről SSH-alagutat indíthat a távoli szerverről egy külső hosztra, és ekkor a külső hoszt a távoli szervert fogja tekinteni a kérések forrásának. Ez egy nagyon kényelmes funkció a rendszere álcázására. További részleteket lásd a cikkben „Gyakorlati tanácsok, példák és SSH-alagutak”.

Az ügyfélszámítógépen általában nincs értelme teljes értékű szervert telepíteni, hogy elkerüljük a távoli csatlakozási lehetőséget a számítógéphez (biztonsági okokból).

Tehát, az új felhasználó számára először SSH kulcsokat kell generálnia azon a számítógépen, ahonnan a szerverre szeretne belépni:

ssh-keygen -t rsa

A nyilvános kulcs a következő fájlban található .pub és véletlenszerű karakterek sorozataként néz ki, amely a következővel kezdődik ssh-rsa.

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

Ezután root alatt létre kell hozni egy SSH mappát a felhasználó hazai könyvtárában, és hozzá kell adni a nyilvános SSH kulcsot a fájlhoz authorized_keys, használva egy szövegszerkesztőt, mint például a Vim:

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

vim /home/user_name/.ssh/authorized_keys

Végül állítsa be a fájl megfelelő engedélyeit:

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

és változtassa meg a tulajdonjogokat erre a felhasználóra:

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

A kliens oldalon meg kell adni a titkos kulcs helyét az azonosításhoz:

ssh-add DIR_PATH/keylocation

Most be lehet jelentkezni a szerverre a felhasználónévvel ezzel a kulccsal:

ssh [username]@hostname

A hitelesítés után a scp parancs használható fájlok másolására, az eszköz sshfs fájl- vagy könyvtár- rendszer távoli csatolásához.

Javasolt több biztonsági másolatot készíteni a privát kulcsról, mert ha letiltja a jelszavas azonosítást és elveszíti azt, akkor nem marad lehetőség a saját szerverére való belépésre.

Ahogy korábban említettük, SSH-ban tiltsuk le a root azonosítást (éppen ezért hoztunk létre új felhasználót).

CentOS/Red Hat alatt keresse meg a sort PermitRootLogin yes a konfigurációs fájlban /etc/ssh/sshd_config és módosítsa ezt:

PermitRootLogin no

Ubuntu alatt adjuk hozzá a sort PermitRootLogin no a konfigurációs fájlhoz 10-my-sshd-settings.conf:

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

Miután megbizonyosodtunk arról, hogy az új felhasználó a saját kulcsával azonosítja magát, letilthatjuk a jelszavas azonosítást, hogy elkerüljük annak kiszivárgásának vagy brute force támadásoknak a kockázatát. Most a szerverhez való hozzáférés érdekében a támadónak meg kell szereznia a privát kulcsot.

CentOS/Red Hat alatt keresse meg a sort PasswordAuthentication yes a konfigurációs fájlban /etc/ssh/sshd_config és a következőképpen módosítjuk:

PasswordAuthentication no

Ubuntu alatt adjuk hozzá a sort PasswordAuthentication no a fájlba 10-my-sshd-settings.conf:

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

SSH kéttényezős azonosítási útmutató itt: itt.

Tűzfal

A tűzfal garantálja, hogy a szerverre csak azok a forgalmak mennek át, amelyeket közvetlenül engedélyeztünk. Ez megvédi a véletlenül más szolgáltatásokkal engedélyezett portok kihasználásától, így jelentősen csökkenti a támadási felületet.

A tűzfal telepítése előtt győződjünk meg arról, hogy az SSH a kivételek listáján van és nem lesz blokkolva. Ellenkező esetben a tűzfal elindítása után nem tudunk kapcsolódni a szerverhez.

Az Ubuntu disztribúcióhoz az Uncomplicated Firewall (ufw), míg a CentOS/Red Hat rendszeren a firewalld.

SSH engedélyezése a tűzfalban Ubuntu alatt:

sudo ufw allow ssh

CentOS/Red Hat rendszeren az alábbi parancsot használjuk: firewall-cmd:

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

Ezt követően elindíthatjuk a tűzfalat.

CentOS/Red Hat alatt elindítjuk a firewalld systemd szolgáltatását:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ubuntu alatt az alábbi parancsot használjuk:

sudo ufw enable

Fail2Ban

Szolgáltatás Fail2Ban naplózza a szerveren a naplófájlokat, és megszámolja a hozzáférési kísérleteket minden IP-címtől. A beállításokban meg vannak határozva a szabályok, hogy hány hozzáférési kísérlet engedélyezett egy adott időintervallumban — miután ezt követően az adott IP-cím blokkolásra kerül egy meghatározott időszakra. Például engedélyezünk 5 sikertelen SSH azonosítási kísérletet 2 óra alatt, majd blokkoljuk az adott IP-címet 12 órára.

A Fail2Ban telepítése CentOS és Red Hat alatt:

sudo yum install fail2ban

Telepítés Ubuntu és Debian alatt:

sudo apt install fail2ban

Indítás:

systemctl start fail2ban
systemctl enable fail2ban

A programban két konfigurációs fájl található: /etc/fail2ban/fail2ban.conf és /etc/fail2ban/jail.conf. A büntetési korlátok a második fájlban kerülnek meghatározásra.

Az SSH-hoz tartozó börtön alapértelmezetten engedélyezett az alapbeállításokkal (5 kísérlet, 10 perces intervallum, 10 percre szóló blokkolás).

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

Az SSH-n kívül a Fail2Ban más szolgáltatásokat is védhet a webkiszolgálón, például a nginx vagy Apache szervízét.

Automatikus biztonsági frissítések

A köztudott, hogy minden programban folyamatosan új sebezhetőségeket találnak. Az információk publikálása után az exploitok bekerülnek a népszerű exploit csomagokba, amelyeket a hackerek és a fiatalok tömegesen használnak a szerverek folyamatos ellenőrzésére. Ezért nagyon fontos, hogy azonnal telepítsük a biztonsági frissítéseket, amint azok megjelennek.

Az Ubuntu szerveren az alapértelmezett konfigurációban automatikus biztonsági frissítések vannak engedélyezve, így nincs szükség további intézkedésekre.

CentOS/Red Hat esetén telepíteni kell az alkalmazást dnf-automatic és engedélyezni kell a időzítőt:

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

Az időzítő ellenőrzése:

sudo systemctl status dnf-automatic.timer

Alapértelmezett portok megváltoztatása

Az SSH-t 1995-ben fejlesztették ki a telnet (23-as port) és az ftp (21-es port) helyettesítésére, ezért a program szerzője, Tatu Iltonen az alapértelmezett portnak a 22-est választotta., és ezt az IANA jóváhagyta.

Természetesen minden kiberbűnöző tudja, hogy az SSH melyik porton fut – és ezt az összes standard porttal együtt szkennelik a szoftververziók és a standard root jelszavak ellenőrzése érdekében.

A standard portok megváltoztatása – obfuszkáció – jelentősen csökkenti a felesleges forgalom mennyiségét, a naplók méretét és a szerver terhelését, valamint csökkenti a támadási felületet. Bár egyesek kritizálják ezt a módszert "a homályos védelemért" (security through obscurity). Az ok az, hogy ez a technika ellent mond a fundamentális architekturális védelemnek.Ezért például az Egyesült Államok Nemzeti Szabványügyi és Technológiai Intézete az "Szerver biztonsági útmutatóban" hangsúlyozza az nyílt szerverarchitektúra szükségességét: "A rendszer biztonságának nem szabad a komponensek megvalósításának titkain alapulnia" – áll a dokumentumban.

Elméletileg az alapértelmezett portok megváltoztatása ellentmond az nyílt architektúra gyakorlatának. De a gyakorlatban a rosszindulatú forgalom mennyisége valóban csökken, így ez egy egyszerű és hatékony intézkedés.

A portszámot a Port 22 irányelv megváltoztatásával lehet beállítani /etc/ssh/sshd_config. Az is meg van adva paraméterként -p be. sshd. Az SSH kliens és a programok Megteheti a szintén támogatják a paramétert, -p.

A parameter -p amelyet a portszám megadására lehet használni a ssh Linux parancs használatakor. Megteheti a és scp Itt a -P paramétert használják. (főcímsor P). A parancssori utasítás felülírja a konfigurációs fájlokban lévő értékeket.

Ha sok szerver van, akkor szinte minden Linux-szerver védelmére vonatkozó lépést automatizálhatunk egy szkripttel. De ha csak egy szerver van, akkor érdemes inkább manuálisan ellenőrizni a folyamatot.

Hirdetés

Rendeld meg, és azonnal kezdj dolgozni! VDS létrehozása bármilyen konfigurációval és bármilyen operációs rendszerrel egy percen belül. A maximális konfiguráció lehetővé teszi, hogy kiteljesedj – 128 CPU mag, 512 GB RAM, 4000 GB NVMe. Epikus 🙂

Linux szerver megvédése. Mit tegyünk először?

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster