
, 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 és , de a legnépszerűbb az OpenSSH. Az OpenSSH kliens telepítése Ubuntu-ra:
sudo apt install openssh-clientTelepítés a szerveren:
sudo apt install openssh-serverAz SSH démon (sshd) indítása a szerveren Ubuntu alatt:
sudo systemctl start sshdA 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 .
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_keysvim /home/user_name/.ssh/authorized_keysVé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/.sshA kliens oldalon meg kell adni a titkos kulcs helyét az azonosításhoz:
ssh-add DIR_PATH/keylocationMost be lehet jelentkezni a szerverre a felhasználónévvel ezzel a kulccsal:
ssh [username]@hostnameA hitelesítés után a scp parancs használható fájlok másolására, az eszköz 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.confMiutá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.confSSH kéttényezős azonosítási útmutató 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 (), míg a CentOS/Red Hat rendszeren a .
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 --permanentEzt 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 firewalldUbuntu alatt az alábbi parancsot használjuk:
sudo ufw enable
Fail2Ban
Szolgáltatás 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 fail2banTelepítés Ubuntu és Debian alatt:
sudo apt install fail2banIndí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 és engedélyezni kell a időzítőt:
sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timerAz 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 , é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 (security through obscurity). Az ok az, hogy ez a technika ellent mond a fundamentális Ezért például az Egyesült Államok Nemzeti Szabványügyi és Technológiai Intézete az 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 . Az is meg van adva paraméterként -p be. . Az SSH kliens és a programok 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. é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! 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 🙂
Forrás: habr.com
