Az SSH szolgáltatás a Cloud Server fő hozzáférési pontja, ugyanakkor a támadásoknak leginkább kitett szolgáltatás is egyben. Ez az útmutató a különféle trükköknek és technikáknak köszönhetően javítja a szolgáltatás biztonságát.
Listening port megváltoztatása
Az SSH kapcsolat alapértelmezett listening portja a 22-es port: ennek a beállításnak a megváltoztatása lehetővé teszi a szolgáltatás elhomályosítását, és egyúttal növeli a kapcsolat biztonságát.
A gépen meglévő szolgáltatásokkal való ütközések elkerülése érdekében helyes gyakorlat a netstat paranccsal ellenőrizni, hogy melyik port van jelenleg használatban:
$ netstat -n -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.53:53 0.0.0.0:*
A netstatnál az -l paraméteren keresztül kényszerítse rá az összes kapcsolat LISTEN állapotban lévő kapcsolatának kinyomtatására. Ebben a példában a következő portokat használjuk:
-
3306 MySQL service
-
22 SSH
-
80 Apache2 / HTTP
-
53 DNS
A portok megváltoztatásához egyszerűen szerkessze a konfigurációs fájlt az / etc / ssh / sshd_config mappában, a Port irányelveknek megfelelő kikommentelés mellett:
Ezután állítson be egy új, valószínűleg magas értéket, hogy megakadályozza, hogy azt bármely automatikus port-letapogató szoftver (például 2200, 5574, 1022) elfogja:
A módosítás alkalmazásához töltse újra a szolgáltatást a következő módon:
$ sudo service sshd reload
Tartsa életben a kapcsolatot az újratöltéssel olyan módon, hogy kijavítsa a hibákat, és ellenőrizze az új hozzáféréseket egy másik SSH-klienssel.
A változtatás bevezetése után csatlakozzon a szerverhez az új port megadásával. Például, ha az SSH-klienst használja a parancssorból, kövesse az alábbi utasítást:
$ ssh root@<SERVER.IP> -p 5574
Kulcsok használata a hitelesítéshez
A biztonság érdekében széles körben használt RSA kulcsokon keresztüli hozzáférés valós alternatívája a jelszó alapú bejelentkezésnek. Az ilyen típusú hitelesítés során a kliens létrehoz egy privát kulcsot és az ehhez tartozó nyilvános kulcsot, amelyet a kiszolgáló gépen telepítenek a kliens egyértelmű hitelesítéséhez.
Publikus kulcs telepítéséhez a kliensen először az ssh-keygen paranccsal kell generálni a kulcspárt:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file where to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
A generálás folytatása előtt az ssh-keygen egy opcionális jelmondatot kér, amelyet felhasználhatunk a hitelesítéshez. Ebben a példában a hozzáférés megkönnyítése érdekében a következő fájl üres maradt.
Miután kész, a szoftver két fájlt ment a kijelöltbe:
-
id_rsa: a kliens privát kulcsát, ami senkivel nem osztható meg,
-
id_rsa.pub: a megosztható publikus kulcsot.
A kiszolgálói környezet előkészítéséhez hozzon létre egy authorized_keys nevű fájlt a .ssh mappában a felhasználói mappám belül, amelyet a bejelentkezéshez fog használni:
$ sudo mkdir ~/.ssh
$ sudo touch ~/.ssh/authorized_keys
$ sudo chmod 600 ~/.ssh/authorized_keys
Ellenőrizze, hogy a fájl rendelkezik-e a fenti engedélyekkel.
Ezután tegye be a kliens gép által korábban elkészített nyilvános kulcsot:
$ sudo nano ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoTzd9RnqT0yioQG1klsLEK/VG9myo7CQ47aRXu7hnPit6Lgw5kAjC7vzNWYLTy2oIlsrVI7R/tvWmVNISGkWDp9U3fONbSLp+vgBKDzRUVAIqP/AIJ2THanyZxj2b8XU/4s2uzGoTLSR3ViX0JU6zTc+IkaBp1o3W3OolvO15E10/VYJCKN3TkxPsSSGE3QReXnCcnIZYAnrPf9f1DPP1Lo+VUCIzZ7IzcZajAWQ53hC71mTYNHkUgIlWxpRyEhnsRfmqEfUSFbTwpNEarv7vGlK686C4xVxlVfKbqlNa3/g2Vrae4ArVBM958JPZ6aa+7KDZfH5TDgPPtlFCIGkd root@testclient
Mentse el a fájlt, és töltse be újból az SSH szolgáltatást:
$ sudo service sshd reload
Ezen a ponton lehetségesnek kell lennie a szerverhez jelszó nélkül történő hozzáférésnek:
Ha minden helyesen működik, tiltsa le a jelszó-hozzáférést a szerver gépről, módosítva az / etc / ssh / sshd_config fájlt a következő paraméterekkel:
ChallengeResponseAuthentication no
PasswordAuthentication no
Ne feledje, hogy további nyilvános kulcsokat is hozzátehet, ha egyszerűen elmenti őket a szerver gépen a ~ / .ssh / authorized_keys fájl végére.
A szolgáltatás rendelkezésre állási idejének korlátozása
A nem kívánt hozzáférés és a brute-force támadások csökkentésének stratégiája az SSH-szolgáltatás rendelkezésre állási idejének csökkentése. Ha biztos abban, hogy nem kell bizonyos időpontokban csatlakoznia a szerverhez (például 23 órától a következő nap reggel 8 óráig), állítson be automatikus ütemezést a kapcsolatport blokkolásához.
Ehhez használja az alapértelmezett iptable nevű tűzfalat, de a konfiguráció folytatása előtt ne felejtse el, hogy az iptable természeténél fogva nem menti a megadott konfigurációt.
A konfiguráció gyorsabb mentéséhez és betöltéséhez használja az iptable-persistent csomagot, amely a rendszer indításakor újratelepíti a konfigurációt.
Ezután folytassa a csomag telepítését:
$ sudo apt-get install iptables-persistent
A telepítés befejezése után írjon be egy "chaint" az SSH szolgáltatás blokkolásához:
$ sudo iptables -N chain-ssh
$ sudo iptables -A INPUT -p tcp --dport 22 -j chain-ssh
Ilyen módon a 22. portra szánt összes kapcsolat (ha az SSH szolgáltatása egy másik portot használ, változtassa meg ezt az értéket) áthalad az újonnan létrehozott "chain-ssh" láncon.
Mentse az aktuális konfigurációt (amelyet az iptables-persistent tölt be) a következő paranccsal:
$ sudo iptables-save > /etc/iptables/rules.v4
Ezután hozzon létre egy ütemezést a szabály beírásához és törléséhez a láncon a crontab következő módosításával:
$ sudo crontab -e
# m h dom mon dow command
0 23 * * * iptables -A chain-ssh -j DROP
0 8 * * * iptables -F chain-ssh
Mint láthatja, az első műveletnél a csatlakozások DROP szabálya hozzáadódik 23 óránál, míg a második művelet reggel 8 órakor üríti ki a láncot a szolgáltatás helyreállítása érdekében.
Mentse el a fájlt a módosítások alkalmazásához.