Практычныя парады, прыклады і тунэлі SSH

Практычныя парады, прыклады і тунэлі SSH
Практычныя прыклады SSH, якія выведуць на новы ўзровень вашыя навыкі выдаленага сістэмнага адміністратара. Каманды і парады дапамогуць не толькі выкарыстоўваць SSH, але і больш пісьменна перамяшчацца па сетцы.

Веданне некалькіх трукаў ssh карысна любому сістэмнаму адміністратару, сеткаваму інжынеру ці адмыслоўцу па бяспецы.

Практычныя прыклады SSH

  1. SSH socks-проксі
  2. Тунэль SSH (пераадрасаванне партоў)
  3. SSH-тунэль на трэці хост
  4. Зваротны SSH-тунэль
  5. Зваротны проксі SSH
  6. Устаноўка VPN па SSH
  7. Капіраванне ключа SSH (ssh-copy-id)
  8. Выдаленае выкананне каманд (неінтэрактыўна)
  9. Выдалены перахоп пакетаў і прагляд у Wireshark
  10. Капіраванне лакальнай тэчкі на выдалены сервер па SSH
  11. Выдаленыя прыкладанні GUI з пераадрасаваннем SSH X11
  12. Выдаленае капіраванне файлаў з дапамогай rsync і SSH
  13. SSH праз сетку Tor
  14. SSH да інстансу EC2
  15. Рэдагаванне тэкставых файлаў з дапамогай VIM праз ssh/scp
  16. Мантаванне выдаленага SSH як лакальнай тэчкі з SSHFS
  17. Мультыплексаванне SSH з дапамогай ControlPath
  18. Струменевае відэа па SSH з дапамогай VLC і SFTP
  19. двухфакторную аўтэнтыфікацыя
  20. Скачкі па хастах з SSH і -J
  21. Блакаванне спроб брутфорса 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-адрас або любы хост у лакальным файле hosts. Для падлучэння да хаста, які падтрымлівае і 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 два запісы хаста. Першая пазначае ўсе хасты, для ўсіх ужываецца параметр канфігурацыі Port 2222. Другая кажа, што для хаста remoteserver варта выкарыстоўваць іншае імя карыстальніка, порт, FQDN і IdentityFile.

Файл канфігурацыі можа зэканоміць шмат часу на ўвод сімвалаў, дазваляючы аўтаматычна ўжываць прасунутую канфігурацыю пры падлучэнні да пэўных хастаў.

Капіраванне файлаў па SSH з дапамогай SCP

SSH-кліент пастаўляецца з двума іншымі вельмі зручнымі інструментамі для капіявання файлаў па зашыфраванаму ssh-злучэнню. Ніжэй гл. прыклад стандартнага выкарыстання каманд scp і sftp. Звярніце ўвагу, што многія параметры для ssh прымяняюцца і ў гэтых камандах.

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

У гэтым прыкладзе файл mypic.png скапіяваны на remoteserver у тэчку /media/data і перайменаваны ў mypic_2.png.

Не забывайце аб розніцы ў параметры порта. На гэтым трапляецца шмат хто, хто запускае. scp з каманднага радка. Тут параметр порта -P, А не -p, як у ssh-кліенце! Вы забудзецеся, але не хвалюйцеся, усё забываюць.

Для тых, хто знаёмы з кансольным ftp, многія з каманд падобныя ў sftp. Вы можаце зрабіць штурхаць, put и ls, як сэрца пажадае.

sftp neo@remoteserver

Практычныя прыклады

У шматлікіх з гэтых прыкладаў можна дасягнуць выніку рознымі метадамі. Як і ва ўсіх нашых падручніках і прыкладах, перавага аддаецца практычным прыкладам, якія проста робяць сваю справу.

1. SSH socks-проксі

Функцыя 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 паказвае, што служба працуе толькі на localhost. Мы можам прымяніць крыху іншую каманду для праслухоўвання ўсіх інтэрфейсаў, уключаючы ethernet або wifi, гэта дазволіць іншым прыкладанням (браўзэрам і т д.) у нашай сетцы падлучацца да проксі-сэрвісу праз ssh socks-проксі.

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

Цяпер можам наладзіць браўзэр для падлучэння да socks-проксі. У Firefox абярыце Наладкі | Асноўныя | Параметры сеткі. Пазначце IP-адрас і порт для падлучэння.

Практычныя парады, прыклады і тунэлі SSH

Звярніце ўвагу на опцыю ў ніжняй частцы формы, каб DNS-запыты браўзэра таксама ішлі праз проксі SOCKS. Калі выкарыстоўваеце проксі-сервер для шыфравання вэб-трафіку ў лакальнай сетцы, то напэўна захочаце абраць гэтую опцыю, каб DNS-запыты тунэляваліся праз SSH-злучэнне.

Актывацыя socks-проксі ў Chrome

Запуск Chrome з пэўнымі параметрамі каманднага радка актывуе socks-проксі, а таксама тунэляванне DNS-запытаў з браўзэра. Давярай, але правярай. Выкарыстоўвайце tcpdump для праверкі, што DNS-запыты больш не бачныя.

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

Выкарыстанне іншых прыкладанняў з проксі

Майце на ўвазе, што многія іншыя прыкладанні таксама могуць выкарыстоўваць socks-проксі. Вэб-браўзэр проста самае папулярнае з іх. У некаторых прыкладанняў ёсць параметры канфігурацыі для актывацыі проксі-сервера. Іншым трэба крыху дапамагчы дапаможнай праграмай. Напрыклад, proxychains дазваляе запусціць праз socks-проксі Microsoft RDP і інш.

localhost:~$ proxychains rdesktop $RemoteWindowsServer

Параметры канфігурацыі socks-проксі задаюцца ў файле канфігурацыі proxychains.

Падказка: калі карыстаецеся выдалены працоўны стол з Linux на Windows? Паспрабуйце кліент FreeRDP. Гэта больш сучасная рэалізацыя, чым rdesktop, з значна больш плыўным узаемадзеяннем.

Варыянт выкарыстання SSH праз socks-проксі

Вы сядзіце ў кафэ або гасцініцы - і вымушаныя выкарыстоўваць даволі ненадзейны WiFi. З наўтбука лакальна запускаем ssh-проксі і ўсталёўваны ssh-тунэль у хатнюю сетку на лакальны Rasberry Pi. Выкарыстоўваючы браўзэр або іншыя прыкладанні, настроеныя для socks-проксі, мы можам атрымаць доступ да любых сеткавых службаў у нашай хатняй сетцы або выйсці ў інтэрнэт праз хатняе падлучэнне. Усё паміж вашым наўтбукам і хатнім серверам (праз Wi-Fi і інтэрнэт да хаты) зашыфравана ў тунэлі SSH.

2. Тунэль SSH (пераадрасацыя партоў)

У найпростай форме SSH-тунэль проста адчыняе порт у вашай лакальнай сістэме, які падлучаецца да іншага порта на іншым канцы тунэля.

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

Разбяром параметр -L. Яго можна ўявіць як лакальны бок праслухоўвання. Такім чынам, у прыкладзе вышэй порт 9999 праслухоўваецца на баку localhost і пераадрасуецца праз порт 80 на remoteserver. Звярніце ўвагу, што 127.0.0.1 адносіцца да localhost на выдаленым серверы!

Паднімемся на прыступку. У наступным прыкладзе парты праслухоўвання звязваюцца з іншымі вузламі лакальнай сеткі.

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

У дадзеным прыкладзе мы перанакіроўваем тунэль ад remoteserver да вэб-сервера, які працуе на 10.10.10.10. Трафік з remoteserver да 10.10.10.10 ужо не ў SSH-тунэлі. Вэб-сервер на 10.10.10.10 будзе лічыць remoteserver крыніцай вэб-запытаў.

4. Зваротны SSH-тунэль

Тут наладзім які праслухоўвае порт на выдаленым серверы, які будзе падлучацца зваротна да лакальнага порта на нашым localhost (ці іншай сістэме).

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

У гэтай SSH-сесіі усталёўваецца злучэнне з порта 1999 на remoteserver да порта 902 на нашым лакальным кліенце.

5. Зваротны проксі SSH

У гэтым выпадку мы ўсталёўваны socks-проксі на нашым ssh-злучэнні, аднак проксі слухае на выдаленым канцы сервера. Падлучэнні да гэтага выдаленага проксі зараз з'яўляюцца з тунэля як трафік з нашага localhost.

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

Устараненне праблем з выдаленымі SSH-тунэлямі

Калі ў вас узніклі праблемы з працай выдаленых опцый SSH, праверце з дапамогай netstat, да якіх яшчэ інтэрфейсаў падлучаны порт праслухоўвання. Хоць мы ў прыкладах паказалі 0.0.0.0, але калі значэнне GatewayPorts в sshd_config ўстаноўлена ў значэнне Няма., то листенер будзе прывязаны толькі да localhost (127.0.0.1).

Папярэджанне бяспекі

Звярніце ўвагу, што пры адкрыцці тунэляў і socks-проксі ўнутраныя сеткавыя рэсурсы могуць быць даступныя ненадзейным сеткам (напрыклад, інтэрнэту!). Гэта можа быць сур'ёзнай пагрозай бяспецы, таму пераканайцеся, што вы разумееце, што ўяўляе сабой слухач і да чаго ў яго ёсць доступ.

6. Устаноўка VPN па SSH

Агульны тэрмін сярод спяцоў па метадах нападу (пентэстэры і інш.) – гэта «кропка апоры ў сетцы». Пасля ўсталявання злучэння ў адной сістэме гэтая сістэма становіцца шлюзам для наступнага доступу да сеткі. Кропка апоры, якая дазваляе рухацца ўшыркі.

Для такой кропкі апоры мы можам выкарыстоўваць SSH-проксі і proxychains, Аднак ёсць некаторыя абмежаванні. Напрыклад, не атрымаецца працаваць напрамую з сокетамі, таму мы не зможам сканаваць парты ўнутры сеткі праз Nmap SYN.

Выкарыстоўваючы гэты больш прасунуты варыянт VPN, падлучэнне змяншаецца да ўзроўню 3. Затым мы можам проста накіраваць трафік праз тунэль, выкарыстоўваючы стандартную сеткавую маршрутызацыю.

Метад выкарыстоўвае ssh, iptables, tun interfaces і маршрутызацыю.

Спачатку трэба задаць гэтыя параметры ў sshd_config. Паколькі мы ўносім змены ў інтэрфейсы і выдаленай, і кліенцкай сістэмы, нам патрэбныя правы root абапал.

PermitRootLogin yes
PermitTunnel yes

Затым усталюем ssh-злучэнне, выкарыстаючы параметр, які запытвае ініцыялізацыю tun-прылад.

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.

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. Выкарыстоўвайце яго для выдаленага перахопу пакетаў з выдачай выніку непасрэдна ў GUI лакальнага 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. Выдаленыя прыкладанні GUI з пераадрасацыяй SSH X11

Калі на кліенце і выдаленым серверы ўсталяваныя "іксы", то можна выдалена выканаць каманду GUI, з акном на вашым лакальным працоўным стале. Гэтая функцыя існуе даўным даўно, але па-ранейшаму вельмі карысная. Запусціце выдалены вэб-браўзэр ці нават кансоль 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

Torsocks будзе выкарыстоўваць для проксі порт 9050 на localhost. Як заўсёды пры выкарыстанні 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

На Ubuntu і Debian усталюем пакет sshfs, а затым проста прымантуем выдаленае размяшчэнне да нашай сістэмы.

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

17. Мультыплексаванне SSH з дапамогай 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) не заўсёды ведаюць аб гэтай зручнай опцыі, калі вельмі трэба паглядзець відэа па сетцы. У наладах File | Open Network Stream праграмы 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 хітра выкарыстоўвае пераадрасаванне, каб localhost усталёўваў сеанс з наступным хастом у ланцужку. Такім чынам, у прыведзеным вышэй прыкладзе наш localhost аўтэнтыфікуецца на host4. Гэта значыць, выкарыстоўваюцца нашы ключы localhost, а сеанс ад localhost да host4 цалкам зашыфраваны.

Для такой магчымасці ў ssh_config укажыце опцыю канфігурацыі ProxyJump. Калі рэгулярна даводзіцца пераходзіць праз некалькі хастоў, то аўтаматызацыя праз канфіг зэканоміць масу часу.

21. Блакаванне спроб брутфорса SSH з дапамогай iptables

Любы, хто кіраваў сэрвісам SSH і перачытваў логі, ведае аб колькасці спробаў брутфорса, якія адбываюцца кожную гадзіну кожны дзень. Хуткі спосаб паменшыць шум у логах - перанесці SSH на нестандартны порт. Унясіце змены ў файл sshd_config з дапамогай параметра канфігурацыі Port##.

З дапамогай iptables таксама можна лёгка блакаваць спробы падлучэння да порта па дасягненні вызначанага парога. Просты спосаб зрабіць гэта - выкарыстоўваць АССЭК, паколькі ён не толькі блакуе SSH, але выконвае кучу іншых мер па выяўленні ўварванняў на базе імя хаста (HIDS).

22. SSH Escape для змены пераадрасацыі партоў

І наш апошні прыклад ssh прызначаны для змены пераадрасацыі партоў на лета ў рамках існуючага сеанса ssh. Уявіце такі сцэнар. Вы глыбока ў сетцы; магчыма, скокнулі праз паўтузіна хастоў і вам патрэбен лакальны порт на працоўнай станцыі, які перанакіраваны на Microsoft SMB старой сістэмы Windows 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 на хост Windows 2003, які знайшлі ва ўнутранай сетцы. Цяпер проста запусціце msfconsole, і можна ісці далей (мяркуючы, што вы плануеце выкарыстоўваць гэты хост).

Завяршэнне

Гэтыя прыклады, парады і каманды ssh павінны даць адпраўную кропку; дадатковая інфармацыя аб кожнай з каманд і магчымасцяў даступная на даведачных старонках (man ssh, man ssh_config, man sshd_config).

Мяне заўсёды зачароўвала магчымасць звяртацца да сістэм і выконваць каманды ў любым пункце свету. Развіваючы свае навыкі па працы з інструментамі накшталт ssh вы станеце больш эфектыўным у любой гульні, у якую гуляеце.

Крыніца: habr.com

Дадаць каментар