ProHoster > Blog > İdarə > Praktik məsləhətlər, nümunələr və SSH tunelləri
Praktik məsləhətlər, nümunələr və SSH tunelləri
Praktik nümunələr SSHbu, uzaq sistem administratoru kimi bacarıqlarınızı yeni səviyyəyə qaldıracaq. Əmrlər və məsləhətlər yalnız istifadə etməyə kömək edəcək SSH, həm də şəbəkədə daha ağıllı naviqasiya edin.
Bir neçə hiylə bilmək ssh istənilən sistem administratoru, şəbəkə mühəndisi və ya təhlükəsizlik mütəxəssisi üçün faydalıdır.
Aşağıdakı nümunə uzaq serverə qoşulduqda tez-tez rast gəlinən adi seçimlərdən istifadə edir SSH.
localhost:~$ ssh -v -p 22 -C neo@remoteserver
-v: Sazlama çıxışı autentifikasiya problemlərini təhlil edərkən xüsusilə faydalıdır. Əlavə məlumatları göstərmək üçün bir neçə dəfə istifadə edilə bilər.
- p 22: əlaqə portu uzaq SSH serverinə. 22-nin göstərilməsinə ehtiyac yoxdur, çünki bu standart dəyərdir, lakin protokol başqa portdadırsa, parametrdən istifadə edərək onu təyin edirik. -p. Dinləmə portu faylda göstərilmişdir sshd_config formatda Port 2222.
-C: əlaqə üçün sıxılma. Yavaş bir kanalınız varsa və ya çoxlu mətnə baxırsınızsa, bu əlaqəni sürətləndirə bilər.
neo@: @ işarəsindən əvvəlki sətir uzaq serverə autentifikasiya ediləcək istifadəçi adını göstərir. Onu qeyd etməsəniz, o, hazırda daxil olduğunuz hesabın istifadəçi adına uyğun olacaq (~$ whoami). İstifadəçi parametrlə də müəyyən edilə bilər -l.
remoteserver: qoşulmaq üçün hostun adı ssh, bu, tam ixtisaslı domen adı, IP ünvanı və ya yerli hostlar faylındakı hər hansı bir host ola bilər. Həm IPv4, həm də IPv6-nı dəstəkləyən hosta qoşulmaq üçün əmr satırı parametrini əlavə edə bilərsiniz -4 və ya -6 düzgün həlli üçün.
Yuxarıda göstərilən parametrlərin hamısı istisna olmaqla, isteğe bağlıdır remoteserver.
Konfiqurasiya faylından istifadə
Baxmayaraq ki, çoxları faylla tanışdır sshd_config, komanda üçün müştəri konfiqurasiya faylı da var ssh. Cari dəyər ~/.ssh/config, lakin o, seçim üçün parametr kimi müəyyən edilə bilər -F.
Host *
Port 2222
Host remoteserver
HostName remoteserver.thematrix.io
User neo
Port 2112
IdentityFile /home/test/.ssh/remoteserver.private_key
Yuxarıdakı nümunə ssh konfiqurasiya faylında iki host girişi var. Birincisi bütün hostları göstərir, bütün Port 2222 konfiqurasiya parametri tətbiq edilir, ikincisi isə host üçün deyir uzaq server fərqli istifadəçi adı, port, FQDN və IdentityFile istifadə etməlisiniz.
Konfiqurasiya faylı xüsusi hostlara qoşulduqda qabaqcıl konfiqurasiyanın avtomatik tətbiq edilməsinə imkan verməklə simvolların yazılması vaxtına xeyli qənaət edə bilər.
SCP istifadə edərək SSH üzərindən faylların kopyalanması
SSH müştəri faylları kopyalamaq üçün digər iki çox lazımlı alətlə gəlir şifrəli ssh bağlantısı. Aşağıda scp və sftp əmrlərinin tipik istifadəsinə nümunə verilmişdir. Qeyd edək ki, ssh üçün bir çox seçim bu əmrlərə də aiddir.
Bu nümunədə fayl mypic.png -ə köçürdü uzaq server qovluğa /media/data və adını dəyişdirdi mypic_2.png.
Port parametrindəki fərqi unutma. Bu başlamaq edən çox rast gəlmək scp komanda xəttindən. Budur port parametri -PVə -pssh müştərisində olduğu kimi! Unudacaqsan amma narahat olma hamı unudur.
Konsolla tanış olanlar üçün ftp, bir çox əmrlər oxşardır sftp. Siz edə bilərsiniz basmaq, qoymaq и lsürəyin istədiyi kimi.
sftp neo@remoteserver
Praktik nümunələr
Bu nümunələrin bir çoxunda nəticə müxtəlif üsullarla əldə edilə bilər. Hamımızda olduğu kimi dərsliklər və misallarda, sadəcə olaraq hiylə işlədən praktik nümunələrə üstünlük verilir.
1. SSH corab proxy
SSH Proxy xüsusiyyəti yaxşı bir səbəbdən 1 nömrədir. O, əksər insanların düşündüyündən daha güclüdür və demək olar ki, istənilən proqramdan istifadə edərək uzaq serverin daxil olduğu istənilən sistemə giriş imkanı verir. Bir ssh müştərisi bir sadə əmrlə SOCKS proxy vasitəsilə trafiki tunel edə bilər. Uzaq sistemlərə trafikin veb server qeydlərində göstərildiyi kimi uzaq serverdən gələcəyini başa düşmək vacibdir.
Burada biz TCP 8888 portunda corab proksisini işə salırıq, ikinci komanda portun dinləmə rejimində aktiv olduğunu yoxlayır. 127.0.0.1 xidmətin yalnız localhost-da işlədiyini göstərir. Ethernet və ya wifi daxil olmaqla bütün interfeysləri dinləmək üçün bir qədər fərqli əmrdən istifadə edə bilərik, bu, şəbəkəmizdəki digər proqramlara (brauzerlər və s.) ssh corab proksisi vasitəsilə proksi xidmətinə qoşulmağa imkan verəcək.
İndi brauzeri corab proxy-sinə qoşulmaq üçün konfiqurasiya edə bilərik. Firefox-da seçin Parametrlər | Əsas | Şəbəkə parametrləri. Qoşulmaq üçün IP ünvanını və portu göstərin.
Formanın altındakı seçimə diqqət yetirin ki, brauzerin DNS sorğuları da SOCKS proxy-dən keçsin. Əgər siz yerli şəbəkənizdə veb trafiki şifrələmək üçün proksi serverdən istifadə edirsinizsə, o zaman yəqin ki, bu seçimi seçmək istəyəcəksiniz ki, DNS sorğuları SSH bağlantısı üzərindən tunellənsin.
Chrome-da corab proksisi aktivləşdirilir
Müəyyən komanda xətti seçimləri ilə Chrome-u işə salmaq corab proksisini, eləcə də brauzerdən DNS sorğularını tunel etməyə imkan verəcək. Güvənin amma yoxlayın. istifadə edin tcpdump DNS sorğularının artıq görünmədiyini yoxlamaq üçün.
Unutmayın ki, bir çox digər proqramlar da corab proksilərindən istifadə edə bilər. Veb-brauzer onların hamısından ən populyarıdır. Bəzi proqramlarda proxy serveri aktivləşdirmək üçün konfiqurasiya seçimləri var. Digərlərinin köməkçi proqramla bir az köməyə ehtiyacı var. Misal üçün, proxychainlər corab-proxy Microsoft RDP və s. vasitəsilə işləməyə imkan verir.
Corabların proxy konfiqurasiya parametrləri proxychains konfiqurasiya faylında müəyyən edilir.
İpucu: Əgər siz Linux-dan Windows-a qədər uzaq masaüstü kompüterdən istifadə edirsinizsə? Müştərini sınayın PulsuzRDP. Bu daha müasir bir tətbiqdir rdesktop, daha hamar qarşılıqlı əlaqə ilə.
Corab proxy vasitəsilə SSH istifadə etmək üçün seçim
Siz kafedə və ya oteldə oturursunuz və kifayət qədər etibarsız WiFi-dən istifadə etməyə məcbur olursunuz. Laptopdan biz yerli olaraq ssh proksisini işə salırıq və yerli Rasberry Pi-də ev şəbəkəsinə ssh tuneli qururuq. Brauzerdən və ya corab proksisi üçün konfiqurasiya edilmiş digər proqramlardan istifadə edərək biz ev şəbəkəmizdə istənilən şəbəkə xidmətlərinə daxil ola bilərik və ya ev bağlantımız vasitəsilə onlayn ola bilərik. Laptopunuz və ev serveriniz (Wi-Fi və internet vasitəsilə evinizə) arasında hər şey SSH tunelində şifrələnir.
2. SSH tuneli (port yönləndirmə)
Ən sadə formada, bir SSH tuneli sadəcə yerli sisteminizdə tunelin digər ucundakı fərqli bir porta qoşulan bir port açır.
Parametri təhlil edək -L. Bunu yerli dinləmə tərəfi kimi də düşünmək olar. Beləliklə, yuxarıdakı nümunədə 9999 portu localhost tərəfində dinləyir və 80 portunda uzaq serverə yönləndirilir. Qeyd edək ki, 127.0.0.1 uzaq serverdəki localhost-a aiddir!
Gəlin pilləkənlərlə qalxaq. Aşağıdakı nümunə dinləmə portlarını yerli şəbəkədəki digər hostlara bağlayır.
Bu nümunədə biz tuneli uzaq serverdən 10.10.10.10-da işləyən veb serverə yönləndiririk. Uzaq serverdən 10.10.10.10-a qədər trafik artıq SSH tunelində deyil. 10.10.10.10 tarixində veb server uzaq serveri veb sorğuların mənbəyi hesab edəcək.
4. Əks SSH tuneli
Burada biz yerli hostumuzda (və ya digər sistemdə) yerli porta yenidən qoşulacaq uzaq serverdə dinləmə portu quracağıq.
Bu SSH sessiyası uzaq serverdəki 1999-cu portdan yerli müştərimizin 902-ci portuna əlaqə yaradır.
5. SSH Reverse Proxy
Bu halda, biz ssh bağlantımızda corab proksisini quraşdırırıq, lakin proxy serverin uzaq ucunda dinləyir. Bu uzaq proksi ilə bağlantılar indi yerli hostumuzdan trafik kimi tuneldən çıxır.
Uzaqdan SSH Tunellərində problemlərin aradan qaldırılması
SSH uzaqdan işləmə seçimlərini əldə etməkdə çətinlik çəkirsinizsə, yoxlayın netstat, dinləmə portunun hansı digər interfeyslərə qoşulduğu. Nümunələrdə 0.0.0.0 göstərsək də, əgər dəyər Gateway Portları в sshd_config təyin edin No., onda dinləyici yalnız localhost-a bağlanacaq (127.0.0.1).
Təhlükəsizlik Xəbərdarlığı
Nəzərə alın ki, tunellər və corab proksiləri açarkən daxili şəbəkə resursları etibarsız şəbəkələr (məsələn, İnternet!) üçün əlçatan ola bilər. Bu, ciddi təhlükəsizlik riski ola bilər, ona görə də dinləyicinin nə olduğunu və onun nəyə çıxışı olduğunu başa düşdüyünüzə əmin olun.
6. SSH üzərindən VPN quraşdırın
Hücum üsulları (pentesters və s.) üzrə mütəxəssislər arasında ümumi termin "şəbəkədə dayaq nöqtəsidir". Bir sistemdə əlaqə qurulduqdan sonra həmin sistem şəbəkəyə əlavə çıxış üçün şlüz olur. Genişlikdə hərəkət etməyə imkan verən dayaq nöqtəsi.
Belə bir dayaq üçün biz bir SSH proxy və istifadə edə bilərik proxychainlər, lakin bəzi məhdudiyyətlər var. Məsələn, rozetkalarla birbaşa işləmək mümkün olmayacaq, ona görə də şəbəkə daxilində portları skan edə bilməyəcəyik. NmapSYN.
Bu daha təkmil VPN seçimindən istifadə edərək, əlaqə aşağı düşür səviyyə 3. Daha sonra standart şəbəkə marşrutlaşdırmasından istifadə edərək, sadəcə olaraq, tunel vasitəsilə trafiki istiqamətləndirə bilərik.
Metod istifadə edir ssh, iptables, tun interfaces və marşrutlaşdırma.
Əvvəlcə bu parametrləri təyin etməlisiniz sshd_config. Həm uzaqdan, həm də müştəri sistemlərinin interfeyslərində dəyişikliklər etdiyimiz üçün biz hər iki tərəfdən kök icazələri lazımdır.
PermitRootLogin yes
PermitTunnel yes
Sonra tun cihazlarının işə salınmasını tələb edən parametrdən istifadə edərək ssh bağlantısı quracağıq.
localhost:~# ssh -v -w any root@remoteserver
İndi interfeysləri göstərərkən tun cihazımız olmalıdır (# ip a). Növbəti addım tunel interfeyslərinə IP ünvanlarını əlavə edəcək.
SSH müştəri tərəfi:
localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up
SSH server tərəfi:
remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up
İndi başqa hosta birbaşa marşrutumuz var (route -n и ping 10.10.10.10).
İstənilən alt şəbəkəni digər tərəfdən host vasitəsilə yönləndirmək mümkündür.
localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0
Partlama! Şəbəkə səviyyəsi 3-də SSH tuneli üzərində VPN. Bu artıq qələbədir.
Hər hansı bir problem varsa, istifadə edin tcpdump и pingsəbəbini müəyyən etmək. 3-cü qatda oynadığımız üçün icmp paketlərimiz bu tuneldən keçəcək.
7. SSH açarını kopyalayın (ssh-copy-id)
Bunun bir neçə yolu var, lakin bu əmr faylları əl ilə kopyalamamaqla vaxta qənaət edir. O, sadəcə olaraq ~/.ssh/id_rsa.pub-u (və ya standart açarı) sisteminizdən kopyalayır ~/.ssh/authorized_keys uzaq serverdə.
localhost:~$ ssh-copy-id user@remoteserver
8. Uzaqdan əmr icrası (interaktiv olmayan)
komanda ssh adi istifadəçi dostu interfeys üçün digər əmrlərlə əlaqələndirilə bilər. Uzaq hostda işlətmək istədiyiniz əmri dırnaq içərisində sonuncu parametr kimi əlavə edin.
Bu misalda grep log ssh kanalı üzərindən endirildikdən sonra yerli sistemdə icra olunur. Fayl böyükdürsə, onu işə salmaq daha rahatdır grep sadəcə olaraq hər iki əmri cüt dırnaq içərisinə daxil etməklə uzaq tərəfdə.
Başqa bir nümunə eyni funksiyanı yerinə yetirir ssh-copy-id 7-ci misaldan.
Bizdən birini götürdüm tcpdump nümunələri. Paketləri uzaqdan tutmaq və nəticəni birbaşa yerli Wireshark GUI-yə qaytarmaq üçün ondan istifadə edin.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Lokal qovluğun SSH vasitəsilə uzaq serverə kopyalanması
Bir qovluğu sıxışdıran gözəl bir hiylə bzip2 (bu, əmrdəki -j variantıdır tar) və sonra axını gətirir bzip2 digər tərəfdən, uzaq serverdə dublikat qovluq yaratmaq.
11. SSH X11 yönləndirilməsi ilə uzaqdan GUI proqramları
Əgər həm müştəridə, həm də uzaq serverdə "x" quraşdırılıbsa, siz yerli iş masanızda pəncərə ilə GUI əmrini uzaqdan icra edə bilərsiniz. Bu xüsusiyyət çoxdan mövcuddur, lakin hələ də çox faydalıdır. Bu nümunədə etdiyim kimi uzaq veb brauzeri və ya hətta VMWawre Workstation konsolunu işə salın.
localhost:~$ ssh -X remoteserver vmware
String tələb olunur X11Forwarding yes faylda sshd_config.
12. Rsync və SSH istifadə edərək faylları uzaqdan kopyalayın
rsync çox daha rahatdır scpkataloqun, çoxlu sayda faylın və ya çox böyük faylların dövri ehtiyat nüsxəsinə ehtiyacınız varsa. Köçürmə uğursuzluğunu bərpa etmək və yalnız dəyişdirilmiş faylları köçürmək funksiyası var ki, bu da trafikə və vaxta qənaət edir.
Bu nümunə sıxılmadan istifadə edir gzip (-z) və rekursiv surət çıxarmağa imkan verən arxiv rejimi (-a).
Torsocks proxy üçün localhost-da 9050 portundan istifadə edəcək. Tor istifadə edərkən həmişə olduğu kimi, hansı trafikin tunel edildiyini və digər əməliyyat təhlükəsizliyi (opsec) məsələlərini ciddi şəkildə yoxlamaq lazımdır. DNS sorğularınız hara gedir?
14. SSH-dən EC2 nümunəsinə
EC2 instansiyasına qoşulmaq üçün şəxsi açar tələb olunur. Onu (.pem uzadılması) Amazon EC2 idarəetmə panelindən endirin və icazələri dəyişdirin (chmod 400 my-ec2-ssh-key.pem). Açarı təhlükəsiz yerdə saxlayın və ya qovluğunuza qoyun ~/.ssh/.
Parametr -i sadəcə olaraq ssh müştərisinə bu açardan istifadə etməyi deyir. Fayl ~/.ssh/config ec2 hostuna qoşulduqda açar istifadəsini avtomatik konfiqurasiya etmək üçün idealdır.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. VIM ilə mətn fayllarını ssh/scp vasitəsilə redaktə edin
Bütün sevənlər üçün vim bu məsləhət sizə bir qədər vaxt qazandıracaq. İstifadə etməklə vim fayllar scp vasitəsilə bir komanda ilə redaktə edilir. Bu üsul sadəcə faylı yerli olaraq yaradır /tmp, və biz onu saxladıqdan sonra onu geri kopyalayır vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts
Qeyd: format adi formatdan bir qədər fərqlidir scp. Ev sahibindən sonra dublumuz var //. Bu mütləq yol istinadıdır. Bir kəsik işarəsi yolun ev qovluğuna nisbətən olduğunu bildirir users.
Bu səhvi görsəniz, əmr formatını iki dəfə yoxlayın. Bu adətən sintaksis xətası deməkdir.
16. Uzaqdan SSH-ni SSHFS ilə yerli qovluq kimi quraşdırın
Vasitəsilə sshfs - fayl sistemi müştərisi ssh - şifrələnmiş seansda bütün fayl qarşılıqlı əlaqəsi ilə yerli qovluğu uzaq bir yerə quraşdıra bilərik ssh.
localhost:~$ apt install sshfs
Paketi Ubuntu və Debian-a quraşdırın sshfs, və sonra sadəcə uzaq yeri sistemimizə quraşdırın.
Varsayılan olaraq, istifadə edərək uzaq bir serverə mövcud bir əlaqə varsa ssh ilə ikinci əlaqə ssh və ya scp əlavə autentifikasiya ilə yeni sessiya yaradır. Seçim ControlPath bütün sonrakı əlaqələr üçün mövcud sessiyadan istifadə etməyə imkan verir. Bu, prosesi əhəmiyyətli dərəcədə sürətləndirəcək: təsir hətta yerli şəbəkədə də nəzərə çarpır və daha çox uzaq resurslara qoşulduqda.
Host remoteserver
HostName remoteserver.example.org
ControlMaster auto
ControlPath ~/.ssh/control/%r@%h:%p
ControlPersist 10m
ControlPath aktiv sessiyanı yoxlamaq üçün yeni bağlantılar üçün yuvanı təyin edir ssh. Sonuncu seçim o deməkdir ki, hətta konsoldan çıxdıqdan sonra da mövcud sessiya 10 dəqiqə açıq qalacaq, beləliklə, bu müddət ərzində mövcud rozetkaya yenidən qoşula bilərsiniz. Əlavə məlumat üçün köməyə baxın. ssh_config man.
18. VLC və SFTP ilə SSH üzərindən video axını
Hətta uzun müddət istifadəçilər ssh и vlc (Video Lan Client) həmişə şəbəkə üzərindən videoya baxmaq lazım olduqda bu rahat seçim haqqında bilmir. Parametrlərdə fayl | Şəbəkə axınını açın proqramları vlc kimi yeri daxil edə bilərsiniz sftp://. Əgər parol tələb olunarsa, sizdən istəniləcək.
sftp://remoteserver//media/uploads/myvideo.mkv
19. İki faktorlu autentifikasiya
Bank hesabınız və ya Google hesabınızla eyni iki faktorlu autentifikasiya SSH xidmətinə aiddir.
Əlbəttə ki, ssh əvvəlcə iki faktorlu autentifikasiya funksiyasına malikdir, bu da parol və SSH açarı deməkdir. Aparat nişanının və ya Google Authenticator tətbiqinin üstünlüyü ondan ibarətdir ki, o, adətən fərqli fiziki cihazdır.
Burada əsas şey bunun əmrə bənzəmədiyini başa düşməkdir ssh host1sonra user@host1:~$ ssh host2 və s.. -J seçimi zəncirdəki növbəti host ilə localhost-un sessiya qurması üçün yönləndirmədən ağıllı şəkildə istifadə edir. Beləliklə, yuxarıdakı nümunədə bizim localhost host4-ə autentifikasiya edir. Yəni, bizim localhost açarlarımız istifadə olunur və localhost-dan host4-ə qədər olan sessiya tam şifrələnir.
Belə bir fürsət üçün ssh_config konfiqurasiya seçimini təyin edin ProxyJump. Əgər müntəzəm olaraq bir neçə hostdan keçməlisinizsə, onda konfiqurasiya vasitəsilə avtomatlaşdırma çox vaxta qənaət edəcəkdir.
21. iptables ilə SSH brute force cəhdlərinin bloklanması
SSH xidmətini idarə edən və qeydlərə baxan hər kəs hər gün hər saat baş verən kobud güc cəhdlərinin sayından xəbərdardır. Gündəlik səs-küyü azaltmağın sürətli yolu SSH-ni qeyri-standart porta köçürməkdir. Faylda dəyişikliklər edin sshd_config konfiqurasiya seçimindən istifadə etməklə Port##.
Ilə iptables siz həmçinin müəyyən həddə çatdıqda porta qoşulma cəhdlərini asanlıqla bloklaya bilərsiniz. Bunu etmək üçün asan bir yol istifadə etməkdir OSSEC, çünki o, nəinki SSH-ni bloklayır, həm də digər host adına əsaslanan müdaxilənin aşkarlanması (HIDS) tədbirlərini həyata keçirir.
22. Port Yönləndirməni Dəyişdirmək üçün SSH Escape
Və son nümunəmiz ssh mövcud sessiya daxilində port yönləndirməsini tez dəyişdirmək üçün nəzərdə tutulmuşdur ssh. Belə bir ssenarini təsəvvür edin. Siz şəbəkənin dərinliyindəsiniz; ola bilsin ki, yarım düzən hostdan keçib köhnə Windows 2003 sisteminin Microsoft SMB-yə ötürülən iş stansiyasında yerli port lazımdır (hər kəs ms08-67-ni xatırlayır?).
Klikləmək enter, konsolda yazmağa cəhd edin ~C. Bu, mövcud əlaqəyə dəyişiklik etməyə imkan verən sessiyadan qaçış ardıcıllığıdır.
Burada yerli 1445 portumuzu daxili şəbəkədə tapdığımız Windows 2003 hostuna yönləndirdiyimizi görə bilərsiniz. İndi sadəcə qaç msfconsole, və getməyə hazırsınız (bu hostdan istifadə etməyi planlaşdırdığınızı nəzərə alsaq).
Tamamlama
Bu nümunələr, məsləhətlər və əmrlər ssh başlanğıc nöqtəsi verməlidir; Hər bir əmr və funksiya haqqında əlavə məlumat man səhifələrində mövcuddur (man ssh, man ssh_config, man sshd_config).
Dünyanın istənilən yerində sistemlərə daxil olmaq və əmrləri yerinə yetirmək bacarığı məni həmişə valeh etmişdi. kimi alətlərlə bacarıqlarınızı inkişaf etdirin ssh oynadığınız hər hansı oyunda daha səmərəli olacaqsınız.