Maga az SSH (azaz Secure Shell) egy protokoll, amit egy helyi és egy távoli számítógép közötti biztonságos csatorna kiépítésére fejlesztettek ki. Bővebben ITT olvashattok róla. Két fő verziója van, az SSH-1 és az SSH-2. Ebben a cikkben bemutatom hogyan kell létrehozni ezt Kali linuxon open-SSH Server használatával, valamint pár alap biztonsági lépést mutatok be.
1. Telepítsük az openSSH-server-t
apt-get install openssh-server
Egyből le is ellenőrizhetjük telepítés után, hogy működik-e
service ssh start
Viszont ezzel van egy kis probléma. Az oké, hogy most elindítjuk, de minden újraindítás után meg kell tennünk ezt a műveletet. Ezt ha ki akarjuk kerülni akkor a következő lépésben részletezem a megoldását. Aki ezt nem szeretné, lépjen a 3. lépésre
2. SSH szerver indítása bootoláskor
Első lépésként töröljük az SSH futtatási szintjeit
update-rc.d -f ssh remove
Majd töltsük be az SSH alapértértelmezéseit a futtatási szintbe
update-rc.d -f ssh defaults
Ellenőrizzük, hogy sikerrel jártunk-e
chkconfig ssh
Így kell kinéznie a parancssorunknak, ha mindent jól csináltunk
Mostmár rajtavan a gépünkön az openssh-server. Itt az ideje konfigurálni! Ám mielőtt hozzáfognánk, előbb nézzük át, mi mit jelent és hol találjuk.
/etc/ssh/sshd_config Openssh szerver konfigurációs file
/etc/ssh/ssh_config Openssh kliens konfigurációs file
~/.ssh/ felhasználók ssh konfigurációs mappája
~/.ssh/authorized_keys vagy ~/.ssh/authorized_keys publikus kulcsok (RSA ill. DSA) listája amit a felhasználók használnak a belépéshez
/etc/nologin ha van ilyenünk, akkor az sshd elutasítja, hogy bárki belépjen, kivétel ez alól a root felhasználó
/etc/hosts.allow és /etc/hosts.deny hozzáférés-vezérlő listák
*3. Alapértelmezett kulcs megváltoztatása
Ez a lépés azért fontos, mert minden linux rendszer egy előre meghatározott SSH kulcsot használ. Ez mindenkinél ugyanaz, ha a rendszer verziószáma megegyezik, ergo mindenki aki ugyanolyan rendszert használ, képes egy MITM (Man in the Middle) támadást indítani. Ezt ugyebár senki se akarja, Tehát:
Mozgassuk át az alapértelmezett Kali kulcsokat egy új helyre a következő parancsokkal:
cd /etc/ssh/
mkdir default_kali_keys
mv ssh_host_* default_kali_keys/
Ha ez megvan, generáljuk újra a kulcsokat:
dpkg-reconfigure openssh-server
ellenőrizzük, hogy az SSH kulcs hash-ek különböznek
md5sum ssh_host_*
Hasonlítsuk össze az eredeti hasheket az újakkal. Ha mindent jól csináltunk, akkor látható a különbség
cd default_kali_keys/
md5sum *
Indítsuk újra a szerverünket:
service ssh restart
4. Hibaelhárítás
Mivel a kulcsot úgy módosítottuk, hogy közben be voltunk jelentkezve, ezért ezt a hibaüzenetet kapjuk:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
26:65:52:75:81:71:a8:c5:4c:ad:b6:81:78:58:18:af.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:1
RSA host key for localhost has changed and you have requested strict checking.
Host key verification failed.
Figyelmeztet a már említett MITM támadás valószínűségére, de mi épp ezért változtattuk megy a kulcsot. Default key esetén ez az üzenet nem jelenik meg, és nem is fogjuk észrevenni a MITM támadásokat. Szimplán törölni kell a sorokat a knows_hosts file-ból:
leafpad /root/.ssh/known_hosts
mentés és kilépés
*sshd_config file módosítások
Fontos, mielőtt elkezdenénk szerkeszteni, állítsuk le a szerverünket.
Biztonsági mentés csinálunk az SSH config file-ról (ha valamit rosszul sülne el)
cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
1. csak SSH protocol 2-t használjunk
Az SSH 1-es számú protokollja több sebezhető pontot tartalmaz, ezért javallott a mellőzése. az sshd_config file megnyitása után nézzük meg, tartalmazza-e ezt a sor:
Protocol 2
2. Szabjuk meg, ki jelentkezhet be root-ként
Megadjuk, hogy kockasajt és spagetti lehet csak rendszergazdaként belépve. Adjuk hozzá a következőket:
AllowUsers root kockasajt spagetti
Ha viszont azt akarjuk megszabni, hogy senki se részesüljön root jogosultságban (mivel bárki a su ill. sudo paranccsal elérheti a root szintet) módosítsuk ezt a sort erre:
PermitRootLogin no
Természetesen azt is megadhatjuk, hogy paprika ne tudjon bejutni:
DenyUsers paprika
3. Tétlenségi időzóna megszabása
Megadhatunk egy időintervallumot, ami után a tétlen felhasználót kijelentkezteti a rendszer. Esetünkben 180 másodpercet adunk meg (3 perc).
ClientAliveInterval 180
ClientAliveCountMax 0
4. Üres jelszó mellőzése
szimplán ezzel a paranccsal kell kiegészítenünk a file-t:
PermitEmptyPasswords no
5. Alapértelmezett port megváltoztatása
Egy kis plusz biztonság érdekében az előre definiált portot (22) érdemes megváltoztatni. Bármelyiket használhatjuk 10000 és 64000 között.
Keressük meg a következőt:
#Port 22
Majd módosítsuk:
Port 15150
Így kell, hogy kinézzen:
<kép>
Ment, kilép, restart
Legközelebb, ha el akarjuk érni az SSH-t, a következőképp kell próbálkozni:
ssh username@myhostnaname.com -p 15150
username@myhostnaname.com - felhasználónév és host, ahol a host lehet IP vagy FQDN
-p 15150 maga a port, amin keresztül kommunikálni akarunk.
Ez csak néhány általános tipp volt a szerver biztonságosabbá tételéhez. Kifejezetten otthoni felhasználásra ajánlom az openssh-t. Remélem minden érthető és világos volt.
Természetesen a cikk lezárásáról is gondoskodom: