نکات کاربردی، مثال ها و تونل های SSH

نکات کاربردی، مثال ها و تونل های SSH
مثال های کاربردی SSH، که مهارت های شما را به عنوان یک مدیر سیستم از راه دور به سطح جدیدی می برد. دستورات و نکات نه تنها به استفاده از آن کمک خواهد کرد SSH، بلکه با مهارت بیشتری در شبکه پیمایش کنید.

دانستن چند ترفند ssh برای هر مدیر سیستم، مهندس شبکه یا متخصص امنیت مفید است.

نمونه های عملی SSH

  1. پروکسی جوراب SSH
  2. تونل SSH (تعریف پورت)
  3. تونل SSH به میزبان سوم
  4. معکوس تونل SSH
  5. پروکسی معکوس SSH
  6. نصب VPN از طریق SSH
  7. کپی کردن یک کلید SSH (ssh-copy-id)
  8. اجرای فرمان از راه دور (غیر تعاملی)
  9. ضبط و مشاهده بسته از راه دور در Wireshark
  10. کپی کردن یک پوشه محلی به یک سرور راه دور از طریق SSH
  11. برنامه های رابط کاربری گرافیکی از راه دور با SSH X11 Forwarding
  12. کپی کردن فایل از راه دور با استفاده از rsync و SSH
  13. SSH از طریق شبکه Tor
  14. نمونه SSH به EC2
  15. ویرایش فایل های متنی با استفاده از VIM از طریق ssh/scp
  16. SSH از راه دور را به عنوان پوشه محلی با SSHFS سوار کنید
  17. Multiplexing SSH با ControlPath
  18. پخش ویدئو از طریق SSH با استفاده از VLC و SFTP
  19. احراز هویت دو عاملی
  20. پرش میزبان با SSH و -J
  21. مسدود کردن تلاش‌های brute force SSH با استفاده از iptables
  22. SSH Escape برای تغییر ارسال پورت

اول اصول

تجزیه خط فرمان SSH

مثال زیر از پارامترهای رایجی استفاده می کند که اغلب هنگام اتصال به سرور راه دور با آن مواجه می شوند SSH.

localhost:~$ ssh -v -p 22 -C neo@remoteserver

  • -v: خروجی اشکال زدایی به ویژه هنگام تجزیه و تحلیل مشکلات احراز هویت مفید است. می تواند چندین بار برای نمایش اطلاعات اضافی استفاده شود.
  • - p 22: پورت اتصال به یک سرور SSH راه دور. 22 لازم نیست مشخص شود، زیرا این مقدار پیش فرض است، اما اگر پروتکل روی پورت دیگری باشد، آن را با استفاده از پارامتر مشخص می کنیم. -p. پورت گوش دادن در فایل مشخص شده است sshd_config در قالب Port 2222.
  • -C: فشرده سازی برای اتصال. اگر اتصال آهسته دارید یا متن زیادی مشاهده می کنید، این می تواند سرعت اتصال را افزایش دهد.
  • neo@: خط قبل از نماد @ نشان دهنده نام کاربری برای احراز هویت در سرور راه دور است. اگر آن را مشخص نکنید، به طور پیش فرض به نام کاربری حسابی که در حال حاضر با آن وارد شده اید (~$whoami) می شود. کاربر را نیز می توان با استفاده از پارامتر مشخص کرد -l.
  • remoteserver: نام میزبان برای اتصال ssh، این می تواند یک نام دامنه کاملاً واجد شرایط، یک آدرس IP یا هر میزبانی در فایل میزبان محلی باشد. برای اتصال به میزبانی که از IPv4 و IPv6 پشتیبانی می کند، می توانید پارامتر را به خط فرمان اضافه کنید -4 یا -6 برای وضوح مناسب

تمام پارامترهای فوق اختیاری هستند به جز remoteserver.

با استفاده از فایل پیکربندی

اگرچه بسیاری با فایل آشنا هستند sshd_config، همچنین یک فایل پیکربندی مشتری برای دستور وجود دارد ssh. مقدار پیش فرض ~/.ssh/config، اما می توان آن را به عنوان پارامتری برای یک گزینه تعریف کرد -F.

Host *
     Port 2222

Host remoteserver
     HostName remoteserver.thematrix.io
     User neo
     Port 2112
     IdentityFile /home/test/.ssh/remoteserver.private_key

دو ورودی میزبان در فایل پیکربندی مثال ssh در بالا وجود دارد. مورد اول به معنای همه هاست هاست که همه از پارامتر پیکربندی پورت 2222 استفاده می کنند. دومی می گوید که برای هاست سرور از راه دور یک نام کاربری، پورت، FQDN و IdentityFile متفاوت باید استفاده شود.

یک فایل پیکربندی می تواند با اجازه دادن به تنظیمات پیشرفته برای اعمال خودکار هنگام اتصال به هاست های خاص، در زمان تایپ بسیار صرفه جویی کند.

کپی کردن فایل ها از طریق SSH با استفاده از SCP

کلاینت SSH با دو ابزار بسیار مفید دیگر برای کپی کردن فایل ها همراه است اتصال ssh رمزگذاری شده. نمونه ای از استفاده استاندارد از دستورات scp و sftp را در زیر ببینید. توجه داشته باشید که بسیاری از گزینه های ssh برای این دستورات نیز اعمال می شود.

localhost:~$ scp mypic.png neo@remoteserver:/media/data/mypic_2.png

در این مثال فایل mypic.png کپی شده به سرور از راه دور به پوشه /رسانه/داده و تغییر نام داد به mypic_2.png.

تفاوت در پارامتر پورت را فراموش نکنید. این جایی است که بسیاری از افراد هنگام راه اندازی گرفتار می شوند scp از خط فرمان در اینجا پارامتر پورت است -Pو نه -p، درست مثل یک کلاینت ssh! شما فراموش خواهید کرد، اما نگران نباشید، همه فراموش می کنند.

برای کسانی که با کنسول آشنایی دارند ftp، بسیاری از دستورات مشابه هستند sftp. شما می توانید انجام دهید فشار, قرار دادن и lsهمانطور که دل می خواهد

sftp neo@remoteserver

مثال های کاربردی

در بسیاری از این مثال ها می توان با استفاده از روش های مختلف به نتایج دست یافت. همانطور که در همه ما کتاب های درسی و به عنوان مثال، اولویت به مثال های عملی است که به سادگی کار خود را انجام می دهند.

1. پروکسی جوراب SSH

ویژگی SSH Proxy به دلیل خوبی شماره 1 است. این قدرتمندتر از آن چیزی است که بسیاری تصور می کنند و به شما امکان دسترسی به هر سیستمی را می دهد که سرور راه دور به آن دسترسی دارد، تقریباً با استفاده از هر برنامه ای. یک کلاینت ssh می تواند ترافیک را از طریق یک پروکسی SOCKS با یک دستور ساده تونل کند. درک این نکته مهم است که ترافیک به سیستم های راه دور از یک سرور راه دور می آید، این در گزارش های وب سرور نشان داده می شود.

localhost:~$ ssh -D 8888 user@remoteserver

localhost:~$ netstat -pan | grep 8888
tcp        0      0 127.0.0.1:8888       0.0.0.0:*               LISTEN      23880/ssh

در اینجا ما یک پروکسی socks را روی پورت TCP 8888 اجرا می کنیم، فرمان دوم بررسی می کند که پورت در حالت گوش دادن فعال است. 127.0.0.1 نشان می دهد که این سرویس فقط روی لوکال هاست اجرا می شود. ما می توانیم از یک دستور کمی متفاوت برای گوش دادن به تمام رابط ها، از جمله اترنت یا وای فای استفاده کنیم، این به سایر برنامه ها (مرورگرها و غیره) در شبکه ما اجازه می دهد تا از طریق پراکسی ssh socks به سرویس پروکسی متصل شوند.

localhost:~$ ssh -D 0.0.0.0:8888 user@remoteserver

اکنون می توانیم مرورگر را برای اتصال به پروکسی socks پیکربندی کنیم. در فایرفاکس، را انتخاب کنید تنظیمات | پایه | تنظیمات شبکه. آدرس IP و پورت را برای اتصال مشخص کنید.

نکات کاربردی، مثال ها و تونل های SSH

لطفاً به گزینه پایین فرم توجه کنید تا درخواست‌های DNS مرورگر شما نیز از طریق یک پروکسی SOCKS انجام شود. اگر از یک سرور پراکسی برای رمزگذاری ترافیک وب در شبکه محلی خود استفاده می کنید، احتمالاً می خواهید این گزینه را انتخاب کنید تا درخواست های DNS از طریق اتصال SSH تونل شوند.

فعال کردن پروکسی جوراب در کروم

راه‌اندازی Chrome با پارامترهای خط فرمان خاص، پروکسی socks و همچنین تونل کردن درخواست‌های DNS از مرورگر را فعال می‌کند. اعتماد کن اما بررسی کن استفاده کنید tcpdump برای بررسی اینکه پرس و جوهای DNS دیگر قابل مشاهده نیستند.

localhost:~$ google-chrome --proxy-server="socks5://192.168.1.10:8888"

استفاده از برنامه های کاربردی دیگر با پروکسی

به خاطر داشته باشید که بسیاری از برنامه های کاربردی دیگر نیز ممکن است از پروکسی جوراب استفاده کنند. مرورگر وب به سادگی محبوب ترین از همه آنها است. برخی از برنامه ها دارای گزینه های پیکربندی برای فعال کردن سرور پراکسی هستند. دیگران به کمک کمی با یک برنامه کمکی نیاز دارند. مثلا، زنجیره های پروکسی به شما امکان می دهد از طریق یک پروکسی جوراب Microsoft RDP و غیره اجرا کنید.

localhost:~$ proxychains rdesktop $RemoteWindowsServer

پارامترهای پیکربندی پروکسی Socks در فایل پیکربندی proxychains تنظیم شده است.

نکته: اگر از دسکتاپ راه دور از لینوکس در ویندوز استفاده می کنید؟ مشتری را امتحان کنید FreeRDP. این یک پیاده سازی مدرن تر از rdesktop، با تجربه ای بسیار روان تر.

گزینه ای برای استفاده از SSH از طریق پروکسی جوراب

شما در یک کافه یا هتل نشسته اید - و مجبور به استفاده از وای فای نسبتاً غیرقابل اعتماد هستید. ما یک پروکسی ssh را به صورت محلی از یک لپ تاپ راه اندازی می کنیم و یک تونل ssh را در شبکه خانگی روی Rasberry Pi محلی نصب می کنیم. با استفاده از یک مرورگر یا سایر برنامه های کاربردی پیکربندی شده برای یک پروکسی جوراب، می توانیم به هر سرویس شبکه در شبکه خانگی خود دسترسی داشته باشیم یا از طریق اتصال خانگی خود به اینترنت دسترسی داشته باشیم. همه چیز بین لپ تاپ و سرور خانگی شما (از طریق Wi-Fi و اینترنت به خانه شما) در یک تونل SSH رمزگذاری شده است.

2. تونل SSH (تعریف پورت)

در ساده ترین شکل، یک تونل SSH به سادگی یک پورت را در سیستم محلی شما باز می کند که به پورت دیگری در انتهای دیگر تونل متصل می شود.

localhost:~$ ssh  -L 9999:127.0.0.1:80 user@remoteserver

بیایید به پارامتر نگاه کنیم -L. می توان آن را به عنوان جنبه محلی گوش دادن در نظر گرفت. بنابراین در مثال بالا، پورت 9999 در سمت لوکال هاست گوش می دهد و از طریق پورت 80 به سرور از راه دور ارسال می شود. لطفا توجه داشته باشید که 127.0.0.1 به لوکال هاست در سرور راه دور اشاره دارد!

از پله بالا برویم مثال زیر پورت های گوش دادن را با میزبان های دیگر در شبکه محلی ارتباط می دهد.

localhost:~$ ssh  -L 0.0.0.0:9999:127.0.0.1:80 user@remoteserver

در این مثال ها ما به یک پورت در وب سرور متصل می شویم، اما این می تواند یک سرور پروکسی یا هر سرویس TCP دیگری باشد.

3. تونل SSH به میزبان شخص ثالث

ما می توانیم از همان پارامترها برای اتصال یک تونل از یک سرور راه دور به سرویس دیگری که روی سیستم سوم اجرا می شود استفاده کنیم.

localhost:~$ ssh  -L 0.0.0.0:9999:10.10.10.10:80 user@remoteserver

در این مثال، ما یک تونل را از سرور راه دور به یک وب سرور در حال اجرا در 10.10.10.10 هدایت می کنیم. ترافیک از سرور راه دور تا 10.10.10.10 دیگر در تونل SSH نیست. وب سرور در 10.10.10.10 سرور از راه دور را منبع درخواست های وب در نظر می گیرد.

4. معکوس تونل SSH

در اینجا ما یک پورت گوش دادن را روی سرور راه دور پیکربندی می کنیم که به پورت محلی در لوکال هاست (یا سیستم دیگر) ما وصل می شود.

localhost:~$ ssh -v -R 0.0.0.0:1999:127.0.0.1:902 192.168.1.100 user@remoteserver

این جلسه SSH یک اتصال از پورت 1999 در سرور راه دور به پورت 902 در مشتری محلی ما برقرار می کند.

5. SSH Reverse Proxy

در این مورد، ما یک پروکسی socks را روی اتصال ssh خود راه اندازی می کنیم، اما پروکسی در انتهای راه دور سرور گوش می دهد. اتصالات به این پراکسی راه دور اکنون از تونل به عنوان ترافیک از میزبان محلی ما ظاهر می شود.

localhost:~$ ssh -v -R 0.0.0.0:1999 192.168.1.100 user@remoteserver

عیب یابی مشکلات تونل های SSH راه دور

اگر مشکلی با کارکرد گزینه های SSH راه دور دارید، بررسی کنید netstat، پورت گوش دادن به چه رابط های دیگری متصل است. اگرچه در مثال ها 0.0.0.0 را نشان دادیم، اما اگر مقدار Gateway Ports в sshd_config تنظیم کنید نه، سپس شنونده فقط به لوکال هاست (127.0.0.1) محدود می شود.

هشدار امنیتی

لطفاً توجه داشته باشید که با باز کردن تونل‌ها و پراکسی‌های جوراب، ممکن است منابع شبکه داخلی برای شبکه‌های غیرقابل اعتماد (مانند اینترنت!) قابل دسترسی باشد. این می تواند یک خطر امنیتی جدی باشد، بنابراین مطمئن شوید که شنونده چیست و به چه چیزی دسترسی دارد.

6. نصب VPN از طریق SSH

یک اصطلاح رایج در میان متخصصان در روش‌های حمله (pentesters و غیره) "یک نقطه تکیه در شبکه" است. هنگامی که یک اتصال در یک سیستم برقرار شد، آن سیستم به دروازه ای برای دسترسی بیشتر به شبکه تبدیل می شود. تکیه گاه که به شما امکان می دهد در عرض حرکت کنید.

برای چنین جایگاهی می توانیم از پروکسی SSH و استفاده کنیم زنجیره های پروکسی، با این حال محدودیت هایی وجود دارد. به عنوان مثال، کار مستقیم با سوکت ها امکان پذیر نخواهد بود، بنابراین ما نمی توانیم پورت های داخل شبکه را از طریق اسکن کنیم. Nmap SYN.

با استفاده از این گزینه VPN پیشرفته تر، اتصال به کاهش می یابد سطح 3. سپس می‌توانیم با استفاده از مسیریابی استاندارد شبکه، ترافیک را از طریق تونل هدایت کنیم.

روش استفاده می کند ssh, iptables, tun interfaces و مسیریابی

ابتدا باید این پارامترها را در آن تنظیم کنید sshd_config. از آنجایی که ما در حال ایجاد تغییرات در رابط های هر دو سیستم از راه دور و مشتری هستیم، ما نیاز به حقوق ریشه در هر دو طرف.

PermitRootLogin yes
PermitTunnel yes

سپس با استفاده از پارامتری که درخواست مقداردهی اولیه دستگاه‌های tun را می‌دهد، یک اتصال ssh برقرار می‌کنیم.

localhost:~# ssh -v -w any root@remoteserver

اکنون باید هنگام نمایش رابط ها یک دستگاه تنظیم داشته باشیم (# ip a). مرحله بعدی آدرس های IP را به رابط های تونل اضافه می کند.

سمت کلاینت SSH:

localhost:~# ip addr add 10.10.10.2/32 peer 10.10.10.10 dev tun0
localhost:~# ip tun0 up

سمت سرور SSH:

remoteserver:~# ip addr add 10.10.10.10/32 peer 10.10.10.2 dev tun0
remoteserver:~# ip tun0 up

اکنون ما یک مسیر مستقیم به یک میزبان دیگر داریم (route -n и ping 10.10.10.10).

شما می توانید هر زیر شبکه را از طریق یک میزبان در طرف دیگر مسیریابی کنید.

localhost:~# route add -net 10.10.10.0 netmask 255.255.255.0 dev tun0

در سمت راه دور باید فعال کنید ip_forward и iptables.

remoteserver:~# echo 1 > /proc/sys/net/ipv4/ip_forward
remoteserver:~# iptables -t nat -A POSTROUTING -s 10.10.10.2 -o enp7s0 -j MASQUERADE

رونق! VPN روی تونل SSH در لایه شبکه 3. حالا این یک پیروزی است.

اگر مشکلی پیش آمد، استفاده کنید tcpdump и pingبرای تعیین علت از آنجایی که ما در لایه 3 بازی می کنیم، بسته های icmp ما از این تونل عبور می کنند.

7. کلید SSH را کپی کنید (ssh-copy-id)

راه های مختلفی برای انجام این کار وجود دارد، اما این دستور با کپی نکردن دستی فایل ها در زمان صرفه جویی می کند. به سادگی ~/.ssh/id_rsa.pub (یا کلید پیش فرض) را از سیستم شما کپی می کند. ~/.ssh/authorized_keys روی سرور راه دور

localhost:~$ ssh-copy-id user@remoteserver

8. اجرای فرمان از راه دور (غیر تعاملی)

تیم ssh برای یک رابط کاربری مشترک و کاربرپسند می توان به دستورات دیگر پیوند داد. فقط دستوری را که می خواهید روی هاست راه دور اجرا کنید را به عنوان آخرین پارامتر در نقل قول اضافه کنید.

localhost:~$ ssh remoteserver "cat /var/log/nginx/access.log" | grep badstuff.php

در این مثال grep پس از دانلود لاگ از طریق کانال ssh در سیستم محلی اجرا می شود. اگر فایل بزرگ است، اجرا راحت تر است grep در سمت راه دور با قرار دادن هر دو دستور در دو گیومه.

مثال دیگری همان عملکرد را انجام می دهد ssh-copy-id از مثال 7

localhost:~$ cat ~/.ssh/id_rsa.pub | ssh remoteserver 'cat >> .ssh/authorized_keys'

9. ضبط و مشاهده بسته از راه دور در Wireshark

من یکی از ما را گرفتم نمونه های tcpdump. از آن برای گرفتن بسته ها از راه دور و نمایش نتایج به طور مستقیم در رابط کاربری گرافیکی محلی Wireshark استفاده کنید.

:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -

10. کپی کردن یک پوشه محلی در سرور راه دور از طریق SSH

یک ترفند خوب که با استفاده از یک پوشه فشرده می شود bzip2 (این گزینه -j در دستور است tar) و سپس جریان را بازیابی می کند bzip2 از طرف دیگر، یک پوشه تکراری در سرور راه دور ایجاد کنید.

localhost:~$ tar -cvj /datafolder | ssh remoteserver "tar -xj -C /datafolder"

11. برنامه های رابط کاربری گرافیکی از راه دور با SSH X11 Forwarding

اگر X بر روی کلاینت و سرور راه دور نصب شده باشد، می توانید از راه دور یک دستور رابط کاربری گرافیکی را با یک پنجره در دسکتاپ محلی خود اجرا کنید. این ویژگی برای مدت طولانی وجود داشته است، اما هنوز بسیار مفید است. مانند این مثال، یک مرورگر وب از راه دور یا حتی کنسول VMWawre Workstation را راه اندازی کنید.

localhost:~$ ssh -X remoteserver vmware

رشته مورد نیاز X11Forwarding yes در پرونده sshd_config.

12. کپی کردن فایل از راه دور با استفاده از rsync و SSH

rsync بسیار راحت تر scp، اگر به پشتیبان گیری دوره ای از یک فهرست، تعداد زیادی فایل یا فایل های بسیار بزرگ نیاز دارید. عملکردی برای بازیابی از شکست انتقال و کپی کردن فقط فایل های تغییر یافته وجود دارد که باعث صرفه جویی در ترافیک و زمان می شود.

این مثال از فشرده سازی استفاده می کند gzip (-z) و حالت بایگانی (-a)، که کپی بازگشتی را امکان پذیر می کند.

:~$ rsync -az /home/testuser/data remoteserver:backup/

13. SSH از طریق شبکه Tor

شبکه Tor ناشناس می تواند ترافیک SSH را با استفاده از دستور تونل کند torsocks. دستور زیر پروکسی ssh را از Tor عبور می دهد.

localhost:~$ torsocks ssh myuntracableuser@remoteserver

بالا تنه از پورت 9050 در لوکال هاست برای پروکسی استفاده خواهد کرد. مثل همیشه، هنگام استفاده از Tor باید به طور جدی بررسی کنید که چه ترافیکی تونل می شود و سایر مسائل امنیتی عملیاتی (opsec). پرس و جوهای DNS شما کجا می روند؟

14. نمونه SSH به EC2

برای اتصال به یک نمونه EC2، به یک کلید خصوصی نیاز دارید. آن را (پسوند pem.) از کنترل پنل Amazon EC2 دانلود کنید و مجوزها را تغییر دهید (chmod 400 my-ec2-ssh-key.pem). کلید را در مکانی امن نگه دارید یا آن را در پوشه خود قرار دهید ~/.ssh/.

localhost:~$ ssh -i ~/.ssh/my-ec2-key.pem ubuntu@my-ec2-public

پارامتر -i به سادگی به مشتری ssh می گوید که از این کلید استفاده کند. فایل ~/.ssh/config ایده آل برای پیکربندی خودکار استفاده از کلید هنگام اتصال به هاست ec2.

Host my-ec2-public
   Hostname ec2???.compute-1.amazonaws.com
   User ubuntu
   IdentityFile ~/.ssh/my-ec2-key.pem

15. ویرایش فایل های متنی با استفاده از VIM از طریق ssh/scp

برای همه عاشقان vim این نکته باعث صرفه جویی در زمان می شود. با استفاده از vim فایل ها از طریق scp با یک دستور ویرایش می شوند. این روش به سادگی فایل را به صورت محلی ایجاد می کند /tmpو پس از ذخیره آن، آن را کپی می کند vim.

localhost:~$ vim scp://user@remoteserver//etc/hosts

توجه: فرمت کمی با حالت معمول متفاوت است scp. بعد از میزبان دوبل داریم //. این یک مرجع مطلق مسیر است. یک اسلش مسیری را نسبت به پوشه اصلی شما نشان می دهد users.

**warning** (netrw) cannot determine method (format: protocol://[user@]hostname[:port]/[path])

اگر این خطا را مشاهده کردید، فرمت فرمان را دوباره بررسی کنید. این معمولاً به معنای یک خطای نحوی است.

16. نصب یک SSH راه دور به عنوان یک پوشه محلی با SSHFS

با استفاده از sshfs - سرویس گیرنده سیستم فایل ssh - ما می توانیم یک دایرکتوری محلی را با تمام تعاملات فایل در یک جلسه رمزگذاری شده به یک مکان راه دور متصل کنیم ssh.

localhost:~$ apt install sshfs

بسته را روی اوبونتو و دبیان نصب کنید sshfs، و سپس به سادگی مکان راه دور را به سیستم ما سوار کنید.

localhost:~$ sshfs user@remoteserver:/media/data ~/data/

17. SSH Multiplexing با ControlPath

به طور پیش فرض، اگر یک اتصال موجود به یک سرور راه دور با استفاده از ssh اتصال دوم با استفاده از ssh یا scp یک جلسه جدید با احراز هویت اضافی ایجاد می کند. گزینه ControlPath اجازه می دهد تا از جلسه موجود برای تمام اتصالات بعدی استفاده شود. این به طور قابل توجهی روند را سرعت می بخشد: تأثیر آن حتی در یک شبکه محلی قابل توجه است، و حتی بیشتر در هنگام اتصال به منابع راه دور.

Host remoteserver
        HostName remoteserver.example.org
        ControlMaster auto
        ControlPath ~/.ssh/control/%r@%h:%p
        ControlPersist 10m

ControlPath سوکتی را برای بررسی اتصالات جدید مشخص می کند تا ببیند آیا جلسه فعالی وجود دارد یا خیر ssh. گزینه آخر به این معنی است که حتی پس از خروج از کنسول، جلسه موجود به مدت 10 دقیقه باز می ماند، بنابراین در این مدت می توانید دوباره به سوکت موجود متصل شوید. برای اطلاعات بیشتر، به راهنما مراجعه کنید. ssh_config man.

18. ویدئو را از طریق SSH با استفاده از VLC و SFTP پخش کنید

حتی کاربران قدیمی ssh и vlc (Video Lan Client) هنگامی که واقعاً نیاز به تماشای یک ویدیو از طریق شبکه دارید، همیشه از این گزینه راحت آگاه نیستند. در تنظیمات فایل | جریان شبکه را باز کنید برنامه vlc می توانید مکان را به عنوان وارد کنید sftp://. اگر رمز عبور لازم باشد، یک پیام ظاهر می شود.

sftp://remoteserver//media/uploads/myvideo.mkv

19. احراز هویت دو مرحله ای

همان احراز هویت دو مرحله‌ای مانند حساب بانکی یا حساب Google شما برای سرویس SSH اعمال می‌شود.

البته، ssh در ابتدا دارای یک تابع احراز هویت دو مرحله ای است که به معنای رمز عبور و کلید SSH است. مزیت توکن سخت افزاری یا برنامه Google Authenticator این است که معمولاً یک دستگاه فیزیکی متفاوت است.

راهنمای 8 دقیقه ای ما را ببینید با استفاده از Google Authenticator و SSH.

20. پرش هاست با ssh و -J

اگر تقسیم‌بندی شبکه به این معنی است که برای رسیدن به شبکه مقصد نهایی باید از چندین میزبان ssh عبور کنید، میانبر -J در زمان شما صرفه‌جویی می‌کند.

localhost:~$ ssh -J host1,host2,host3 [email protected]

نکته اصلی در اینجا این است که این همان دستور نیست ssh host1، پس از آن user@host1:~$ ssh host2 گزینه -J هوشمندانه از فورواردینگ استفاده می کند تا لوکال هاست را مجبور کند تا یک جلسه با میزبان بعدی در زنجیره ایجاد کند. بنابراین در مثال بالا، لوکال هاست ما به host4 احراز هویت شده است. یعنی از کلیدهای لوکال هاست ما استفاده می شود و جلسه از localhost به host4 کاملاً رمزگذاری شده است.

برای چنین امکانی در ssh_config گزینه پیکربندی را مشخص کنید پراکسی جامپ. اگر مرتباً مجبور هستید از چندین میزبان عبور کنید، اتوماسیون از طریق پیکربندی باعث صرفه جویی در زمان می شود.

21. تلاش های brute force SSH را با استفاده از iptables مسدود کنید

هر کسی که یک سرویس SSH را مدیریت کرده و به گزارش‌ها نگاه کرده است، از تعداد تلاش‌های brute force که هر ساعت از روز رخ می‌دهد، می‌داند. یک راه سریع برای کاهش نویز در لاگ ها انتقال SSH به یک پورت غیر استاندارد است. تغییراتی در فایل ایجاد کنید sshd_config از طریق پارامتر پیکربندی بندر##.

با iptables همچنین می‌توانید به‌راحتی تلاش‌ها برای اتصال به یک پورت را پس از رسیدن به یک آستانه خاص مسدود کنید. یک راه آسان برای انجام این کار استفاده از آن است OSSEC، زیرا نه تنها SSH را مسدود می کند، بلکه مجموعه ای از اقدامات تشخیص نفوذ مبتنی بر نام میزبان (HIDS) را انجام می دهد.

22. SSH Escape برای تغییر ارسال پورت

و آخرین مثال ما ssh طراحی شده برای تغییر ارسال پورت در پرواز در یک جلسه موجود ssh. این سناریو را تصور کنید. شما عمیقاً در شبکه هستید. شاید بیش از نیم دوجین هاست داشته باشد و به یک پورت محلی در ایستگاه کاری نیاز داشته باشد که به Microsoft SMB یک سیستم قدیمی ویندوز 2003 ارسال شود (کسی ms08-67 را به خاطر می آورد؟).

کلیک کردن enter، سعی کنید وارد کنسول شوید ~C. این یک توالی کنترل جلسه است که اجازه می دهد تغییراتی در یک اتصال موجود ایجاد شود.

localhost:~$ ~C
ssh> -h
Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KL[bind_address:]port                 Cancel local forward
      -KR[bind_address:]port                 Cancel remote forward
      -KD[bind_address:]port                 Cancel dynamic forward
ssh> -L 1445:remote-win2k3:445
Forwarding port.

در اینجا می توانید ببینید که ما پورت محلی 1445 خود را به هاست ویندوز 2003 که در شبکه داخلی پیدا کرده ایم، فوروارد کرده ایم. حالا فقط بدو msfconsole، و می توانید ادامه دهید (با فرض اینکه قصد دارید از این میزبان استفاده کنید).

اتمام

این مثال ها، نکات و دستورات ssh باید یک نقطه شروع ارائه دهد. اطلاعات بیشتر در مورد هر یک از دستورات و قابلیت ها در صفحات man موجود است (man ssh, man ssh_config, man sshd_config).

من همیشه مجذوب توانایی دسترسی به سیستم ها و اجرای دستورات در هر نقطه از جهان بوده ام. با توسعه مهارت های خود با ابزارهایی مانند ssh در هر بازی که انجام دهید موثرتر خواهید بود.

منبع: www.habr.com

اضافه کردن نظر