Практикалық кеңестер, мысалдар және SSH туннельдері
Практикалық мысалдар SSH, бұл қашықтағы жүйе әкімшісі ретіндегі дағдыларыңызды жаңа деңгейге көтереді. Пәрмендер мен кеңестер қолдануға ғана емес көмектеседі SSH, сонымен қатар желіде сауаттырақ шарлаңыз.
Бірнеше трюктерді білу 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 пайдаланылуы керек.
Конфигурация файлы арнайы хосттарға қосылу кезінде қосымша конфигурацияны автоматты түрде қолдануға мүмкіндік беру арқылы теру уақытын үнемдей алады.
SCP арқылы SSH арқылы файлдарды көшіру
SSH клиенті файлдарды көшіруге арналған тағы екі өте ыңғайлы құралмен бірге келеді шифрланған ssh қосылымы. scp және sftp пәрмендерін стандартты пайдалану мысалын төменде қараңыз. Көптеген ssh опциялары осы пәрмендерге де қолданылатынын ескеріңіз.
Бұл мысалда файл mypic.png көшірілді қашықтағы сервер қалтаға /медиа/деректер және деп өзгертілді mypic_2.png.
Порт параметріндегі айырмашылық туралы ұмытпаңыз. Бұл жерде көптеген адамдар ұшырылған кезде ұсталады scp пәрмен жолынан. Міне, порт параметрі -P, жоқ -p, дәл ssh клиентіндегі сияқты! Ұмытасың, бірақ уайымдама, бәрі ұмытады.
Консольді жақсы білетіндер үшін ftp, пәрмендердің көпшілігі ұқсас sftp. Сен жасай аласың Басыңыз, Қойыңыз и lsжүрек қалағандай.
sftp neo@remoteserver
Практикалық мысалдар
Осы мысалдардың көпшілігінде нәтижелерге әртүрлі әдістерді қолдану арқылы қол жеткізуге болады. Біздің барлығымыздағыдай оқулықтар және мысалдар, өз жұмысын жай ғана орындайтын практикалық мысалдарға артықшылық беріледі.
1. SSH шұлық проксиі
SSH прокси мүмкіндігі жақсы себеппен №1 болып табылады. Бұл көптеген адамдар түсінгеннен де күшті және қашықтағы сервер қол жеткізе алатын кез келген жүйеге іс жүзінде кез келген қолданбаны пайдалана отырып қол жеткізуге мүмкіндік береді. ssh клиенті бір қарапайым пәрмен арқылы SOCKS прокси арқылы трафикті туннельдей алады. Қашықтағы жүйелерге трафик қашықтағы серверден келетінін түсіну маңызды, бұл веб-сервер журналдарында көрсетіледі.
Мұнда біз TCP 8888 портында шұлық проксиін іске қосамыз, екінші пәрмен порттың тыңдау режимінде белсенді екенін тексереді. 127.0.0.1 қызмет тек жергілікті хостта жұмыс істейтінін көрсетеді. Біз барлық интерфейстерді, соның ішінде ethernet немесе wifi, тыңдау үшін сәл басқа пәрменді пайдалана аламыз, бұл желідегі басқа қолданбаларға (браузерлерге және т.б.) ssh socks прокси арқылы прокси қызметіне қосылуға мүмкіндік береді.
Енді браузерді шұлықтар проксиіне қосылу үшін конфигурациялай аламыз. Firefox-та таңдаңыз Параметрлер | Негізгі | Желі параметрлері. Қосылатын IP мекенжайы мен портты көрсетіңіз.
Браузеріңіздің DNS сұраулары SOCKS прокси арқылы өтуі үшін пішіннің төменгі жағындағы опцияны ескеріңіз. Жергілікті желіңізде веб-трафикті шифрлау үшін прокси серверді пайдаланып жатсаңыз, DNS сұраулары SSH қосылымы арқылы туннельденетін етіп осы опцияны таңдағыңыз келуі мүмкін.
Chrome жүйесінде socks проксиін белсендіру
Chrome браузерін белгілі бір пәрмен жолы параметрлерімен іске қосу шұлықтар проксиін қосады, сонымен қатар браузерден DNS сұрауларын туннельдейді. Сен бірақ тексер. Қолдану tcpdump DNS сұрауларының енді көрінбейтінін тексеру үшін.
Көптеген басқа қолданбалар шұлық проксилерін де пайдалана алатынын есте сақтаңыз. Веб-шолғыш - олардың ішіндегі ең танымалы. Кейбір қолданбаларда прокси серверді қосу үшін конфигурация опциялары бар. Басқаларға көмекші бағдарлама бойынша кішкене көмек қажет. Мысалы, прокси тізбегі Microsoft RDP прокси арқылы іске қосуға мүмкіндік береді, т.б.
Socks прокси конфигурациясының параметрлері proxychains конфигурация файлында орнатылған.
Кеңес: Windows жүйесінде Linux жүйесінен қашықтағы жұмыс үстелін пайдалансаңыз? Клиентті көріңіз FreeRDP. Бұл қарағанда заманауи іске асыру rdesktop, әлдеқайда тегіс тәжірибемен.
Socks прокси арқылы SSH пайдалану мүмкіндігі
Сіз кафеде немесе қонақүйде отырсыз - және өте сенімсіз WiFi пайдалануға мәжбүрсіз. Біз ssh проксиін ноутбуктен жергілікті түрде іске қосамыз және жергілікті Rasberry Pi-де үй желісіне ssh туннелін орнатамыз. Шолғышты немесе шұлық проксиі үшін конфигурацияланған басқа қолданбаларды пайдалана отырып, біз үй желісіндегі кез келген желі қызметтеріне қол жеткізе аламыз немесе үй қосылымы арқылы Интернетке қол жеткізе аламыз. Ноутбук пен үй сервері арасындағы барлығы (Wi-Fi және үйге интернет арқылы) SSH туннелінде шифрланған.
2. SSH туннелі (портты бағыттау)
Ең қарапайым түрде, SSH туннелі жергілікті жүйеде туннельдің екінші жағындағы басқа портқа қосылатын портты ашады.
Параметрді қарастырайық -L. Оны тыңдаудың жергілікті жағы ретінде қарастыруға болады. Сонымен, жоғарыдағы мысалда 9999 порты жергілікті хост жағында тыңдайды және 80 порты арқылы қашықтағы серверге жіберіледі. 127.0.0.1 қашықтағы сервердегі жергілікті хостқа қатысты екенін ескеріңіз!
Қадамға көтерілейік. Келесі мысал тыңдау порттарын жергілікті желідегі басқа хосттармен байланыстырады.
Бұл мысалда біз туннельді қашықтағы серверден 10.10.10.10 жұмыс істейтін веб-серверге қайта бағыттаймыз. Қашықтағы серверден 10.10.10.10 дейінгі трафик енді SSH туннелінде емес. 10.10.10.10 веб-сервер қашықтағы серверді веб-сұраулардың көзі ретінде қарастырады.
4. Кері SSH туннелі
Мұнда қашықтағы сервердегі тыңдау портын конфигурациялаймыз, ол жергілікті хосттағы (немесе басқа жүйедегі) жергілікті портқа қайта қосылады.
Бұл SSH сеансы қашықтағы сервердегі 1999 портынан жергілікті клиенттегі 902 портқа қосылым орнатады.
5. SSH кері прокси
Бұл жағдайда біз ssh қосылымында socks проксиін орнатып жатырмыз, бірақ прокси сервердің қашықтағы соңында тыңдауда. Осы қашықтағы проксиге қосылымдар енді туннельден жергілікті хосттан келген трафик ретінде пайда болады.
Қашықтағы SSH опцияларымен жұмыс істеуде қиындықтар туындаса, мынаны тексеріңіз netstat, тыңдау порты басқа қандай интерфейстерге қосылған. Мысалдарда біз 0.0.0.0 көрсетсек те, бірақ мән болса Gateway порттары в sshd_config деп орнатыңыз жоқ, содан кейін тыңдаушы тек жергілікті хостқа (127.0.0.1) байланысты болады.
Қауіпсіздік туралы ескерту
Туннельдер мен шұлықтар проксилерін ашу арқылы ішкі желі ресурстарына сенімсіз желілер (мысалы, Интернет!) қол жетімді болуы мүмкін екенін ескеріңіз. Бұл қауіпсіздікке елеулі қауіп төндіруі мүмкін, сондықтан тыңдаушының не екенін және оның не қолжетімді екенін түсінгеніңізге көз жеткізіңіз.
6. SSH арқылы VPN орнату
Шабуыл әдістерінің мамандары арасында кең таралған термин (пентесерлер және т.б.) «желідегі тірек нүктесі» болып табылады. Бір жүйеде байланыс орнатылғаннан кейін бұл жүйе желіге одан әрі қол жеткізу үшін шлюзге айналады. Кеңдікте қозғалуға мүмкіндік беретін тірек нүктесі.
Мұндай тірек үшін біз SSH проксиін пайдалана аламыз және прокси тізбегі, дегенмен кейбір шектеулер бар. Мысалы, розеткалармен тікелей жұмыс істеу мүмкін болмайды, сондықтан біз желідегі порттарды мыналар арқылы сканерлей алмаймыз. NmapSYN.
Осы кеңейтілген VPN опциясын пайдалану арқылы байланыс төмендейді 3 деңгейі. Содан кейін біз трафикті туннель арқылы стандартты желі маршрутизациясын пайдаланып жай ғана бағыттай аламыз.
Әдіс пайдаланады ssh, iptables, tun interfaces және маршруттау.
Алдымен сіз осы параметрлерді орнатуыңыз керек sshd_config. Біз қашықтағы және клиенттік жүйелердің интерфейстеріне өзгерістер енгізіп жатқандықтан, біз екі жағынан да түбірлік құқықтар қажет.
PermitRootLogin yes
PermitTunnel yes
Содан кейін біз tun құрылғыларын инициализациялауды сұрайтын параметрді пайдаланып ssh қосылымын орнатамыз.
localhost:~# ssh -v -w any root@remoteserver
Енді интерфейстерді көрсету кезінде бізде tun құрылғысы болуы керек (# 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.
Бум! 3-желілік деңгейде SSH туннелі арқылы VPN. Енді бұл жеңіс.
Қандай да бір мәселе туындаса, пайдаланыңыз tcpdump и pingсебебін анықтау. Біз 3-деңгейде ойнайтындықтан, біздің icmp пакеттері осы туннель арқылы өтеді.
7. SSH кілтін көшіріңіз (ssh-copy-id)
Мұны істеудің бірнеше жолы бар, бірақ бұл пәрмен файлдарды қолмен көшірмеу арқылы уақытты үнемдейді. Ол жай ғана ~/.ssh/id_rsa.pub (немесе әдепкі кілтті) жүйеден көшіреді ~/.ssh/authorized_keys қашықтағы серверде.
localhost:~$ ssh-copy-id user@remoteserver
8. Пәрменді қашықтан орындау (интерактивті емес)
Команда ssh Жалпы, ыңғайлы интерфейс үшін басқа пәрмендермен байланыстыруға болады. Қашықтағы хостта іске қосқыңыз келетін пәрменді тырнақшадағы соңғы параметр ретінде қосыңыз.
Бұл мысалда grep журнал ssh арнасы арқылы жүктелгеннен кейін жергілікті жүйеде орындалады. Егер файл үлкен болса, оны іске қосу ыңғайлы grep екі пәрменді қос тырнақшаға алу арқылы қашықтағы жағында.
Басқа мысал бірдей функцияны орындайды ssh-copy-id 7 мысалдан.
9. Wireshark бағдарламасында қашықтан пакетті түсіру және қарау
Мен өзіміздің біреуін алдым tcpdump мысалдары. Оны пакеттерді қашықтан түсіру және нәтижелерді тікелей Wireshark GUI жергілікті интерфейсінде көрсету үшін пайдаланыңыз.
:~$ ssh root@remoteserver 'tcpdump -c 1000 -nn -w - not port 22' | wireshark -k -i -
10. Жергілікті қалтаны SSH арқылы қашықтағы серверге көшіру
Қалтаны қысатын тамаша трюк bzip2 (бұл пәрмендегі -j опциясы tar), содан кейін ағынды шығарып алады bzip2 екінші жағынан қашықтағы серверде қайталанатын қалтаны жасау.
11. SSH X11 бағыттау арқылы қашықтағы GUI қолданбалары
Егер X клиентте және қашықтағы серверде орнатылған болса, жергілікті жұмыс үстеліндегі терезе арқылы GUI пәрменін қашықтан орындауға болады. Бұл функция бұрыннан бар, бірақ әлі де өте пайдалы. Осы мысалдағыдай қашықтағы веб-шолғышты немесе тіпті VMWawre Workstation консолін іске қосыңыз.
localhost:~$ ssh -X remoteserver vmware
Міндетті жол X11Forwarding yes файлда sshd_config.
12. Rsync және SSH көмегімен файлды қашықтан көшіру
rsync әлдеқайда ыңғайлы scp, каталогтың, файлдардың көп санының немесе өте үлкен файлдардың мерзімді сақтық көшірмелері қажет болса. Тасымалдау сәтсіздігін қалпына келтіру және тек өзгертілген файлдарды көшіру функциясы бар, бұл трафик пен уақытты үнемдейді.
Бұл мысалда қысу қолданылады gzip (-z) және рекурсивті көшіруге мүмкіндік беретін мұрағаттау режимі (-a).
Торсақтар жергілікті хостта прокси үшін 9050 портын пайдаланады. Әдеттегідей, Tor пайдалану кезінде сіз қандай трафик туннельденіп жатқанын және басқа операциялық қауіпсіздік (opsec) мәселелерін мұқият тексеруіңіз керек. DNS сұрауларыңыз қайда кетеді?
14. SSH – EC2 данасы
EC2 данасына қосылу үшін сізге жеке кілт қажет. Оны (.pem кеңейтімі) Amazon EC2 басқару тақтасынан жүктеп алып, рұқсаттарды өзгертіңіз (chmod 400 my-ec2-ssh-key.pem). Кілтті қауіпсіз жерде сақтаңыз немесе оны өз қалтаңызға салыңыз ~/.ssh/.
Параметр -i жай ғана ssh клиентіне осы кілтті пайдалануды айтады. Файл ~/.ssh/config ec2 хостына қосылу кезінде кілтті пайдалануды автоматты түрде конфигурациялауға өте ыңғайлы.
Host my-ec2-public
Hostname ec2???.compute-1.amazonaws.com
User ubuntu
IdentityFile ~/.ssh/my-ec2-key.pem
15. ssh/scp арқылы VIM көмегімен мәтіндік файлдарды өңдеу
Барлық ғашықтар үшін vim Бұл кеңес біраз уақытты үнемдейді. Көмегімен vim файлдар бір пәрменмен scp арқылы өңделеді. Бұл әдіс файлды жергілікті түрде жасайды /tmpсодан кейін біз оны сақтағаннан кейін оны кері көшіреді vim.
localhost:~$ vim scp://user@remoteserver//etc/hosts
Ескерту: пішім әдеттегіден сәл өзгеше scp. Үй иесінен кейін бізде дубль бар //. Бұл абсолютті жол анықтамасы. Бір қиғаш сызық негізгі қалтаға қатысты жолды көрсетеді users.
Бұл қатені көрсеңіз, пәрмен пішімін екі рет тексеріңіз. Бұл әдетте синтаксистік қатені білдіреді.
16. Қашықтағы SSH-ді SSHFS көмегімен жергілікті қалта ретінде орнату
Көмегімен sshfs - файлдық жүйе клиенті ssh - біз шифрланған сеанстағы барлық файлдық әрекеттесулері бар жергілікті каталогты қашықтағы орынға қоса аламыз ssh.
localhost:~$ apt install sshfs
Буманы Ubuntu және Debian-ға орнатыңыз sshfs, содан кейін қашықтағы орынды жүйемізге орнатыңыз.
Әдепкі бойынша, пайдаланып қашықтағы серверге бар қосылым болса 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. VLC және SFTP арқылы SSH арқылы бейне ағыны
Тіпті ұзақ уақыт пайдаланушылар ssh и vlc (Video Lan Client) желі арқылы бейнені шынымен көру қажет болғанда бұл ыңғайлы опцияны әрқашан біле бермейді. Параметрлерде Файл | Желілік ағынды ашыңыз бағдарламалар vlc ретінде орынды енгізуге болады sftp://. Құпия сөз қажет болса, сұрау пайда болады.
sftp://remoteserver//media/uploads/myvideo.mkv
19. Екі факторлы аутентификация
Банк шотыңыз немесе Google есептік жазбаңыз сияқты екі факторлы аутентификация SSH қызметіне қолданылады.
Әрине, ssh бастапқыда екі факторлы аутентификация функциясы бар, ол құпия сөзді және SSH кілтін білдіреді. Аппараттық таңбалауыштың немесе Google Authenticator қолданбасының артықшылығы - бұл әдетте басқа физикалық құрылғы.
Мұнда түсіну керек ең бастысы - бұл бұйрықпен бірдей емес ssh host1, содан кейін user@host1:~$ ssh host2 т.б. -J опциясы жергілікті хостты тізбектегі келесі хостпен сеанс орнатуға мәжбүрлеу үшін қайта жіберуді ақылмен пайдаланады. Сонымен, жоғарыда келтірілген мысалда біздің жергілікті хост 4 хостқа аутентификацияланған. Яғни, біздің localhost кілттері пайдаланылады және localhost-тен host4-ке дейінгі сеанс толығымен шифрланған.
Мұндай мүмкіндік үшін ssh_config конфигурация опциясын көрсетіңіз ProxyJump. Егер сіз үнемі бірнеше хост арқылы өтуіңіз керек болса, конфигурация арқылы автоматтандыру көп уақытты үнемдейді.
21. iptables көмегімен SSH дөрекі күш әрекетін блоктаңыз
SSH қызметін басқарған және журналдарға қараған кез келген адам күн сайын әр сағат сайын болатын дөрекі күш әрекеттерінің саны туралы біледі. Журналдардағы шуды азайтудың жылдам жолы - SSH стандартты емес портқа жылжыту. Файлға өзгертулер енгізіңіз sshd_config конфигурация параметрі арқылы Порт##.
Көмегімен iptables Сондай-ақ белгілі бір шекке жеткенде портқа қосылу әрекеттерін оңай блоктауға болады. Мұны істеудің оңай жолы - пайдалану OSSEC, себебі ол тек SSH-ны блоктап қана қоймайды, сонымен қатар басқа хост атауына негізделген шабуылды анықтау (HIDS) шараларының жиынтығын орындайды.
22. Портты қайта жіберуді өзгерту үшін SSH Escape
Және соңғы мысал ssh бар сеанс ішінде портты қайта жіберуді жылдам өзгертуге арналған ssh. Бұл сценарийді елестетіп көріңіз. Сіз желіде тереңсіз; мүмкін, жарты оннан астам хосттарды секіріп, ескі Windows 2003 жүйесінің Microsoft SMB жүйесіне жіберілетін жұмыс станциясында жергілікті порт қажет болуы мүмкін (кез келген адам ms08-67 есінде ме?).
Басу enter, консольге кіріп көріңіз ~C. Бұл бар қосылымға өзгертулер енгізуге мүмкіндік беретін сеансты басқару реті.
Мұнда сіз 1445 жергілікті портты ішкі желіде тапқан Windows 2003 хостына жібергенімізді көре аласыз. Енді жүгір msfconsole, және сіз жалғастыра аласыз (бұл хостты пайдалануды жоспарлап отырсаңыз).
Аяқтау
Бұл мысалдар, кеңестер мен командалар ssh бастапқы нүктені беру керек; Пәрмендер мен мүмкіндіктердің әрқайсысы туралы қосымша ақпаратты адам беттерінде алуға болады (man ssh, man ssh_config, man sshd_config).
Жүйеге қол жеткізу және әлемнің кез келген жерінде командаларды орындау мүмкіндігі мені әрқашан қызықтырды. сияқты құралдармен дағдыларыңызды дамыту арқылы ssh сіз кез келген ойында тиімдірек бола аласыз.