SSH Туннелін пайдалану тұжырымдамасы
SSH туннельдеу қорғалмаған желі арқылы екі компьютер арасында шифрланған байланыс орнатуға мүмкіндік береді. SSH туннелі TCP/IP пакеттерін бір компьютер портынан екіншісіне тасымалдауға негізделген, сондықтан бұл технологияны кейде «SSH Портын Бағыттау»деп те атайды.
SSH туннельдерінің маңызды артықшылығы конфигурацияның қарапайымдылығы болып табылады-қосылым сервердегі SSH қызметімен орнатылғандықтан, көп жағдайда қазірдің өзінде жұмыс істеп тұрғандықтан, қосымша әрекеттер қажет емес.
Синтаксис
Туннель жасау кезінде екі негізгі режимді пайдалануға болады: Жергілікті және Қашықтан.
Жергілікті туннель жасау үшін-L параметрі пайдаланылады және пәрмен келесідей болуы мүмкін:
ssh -L local_port:local_host:remote_port remote_host
Қашықтағы хост атауының орнына user_ssh @ ip_server мекенжай жұбын пайдалануға болады, ал ssh пәрмені ssh пайдаланушысына сәйкес келетін пайдаланушының атынан орындалса, ТЕК IP мекенжайын көрсету жеткілікті.
Қашықтағы туннельді құру пәрменінің синтаксисі ұқсас, бірақ-R параметрін қолданады.:
ssh -R remote_port:local_host:local_port remote_host
Қашықтағы туннельді (SSH клиенті) басқаратын компьютер брандмауэрдің артында орналасуы немесе кіріс қосылымдарын мүлде қабылдамауы мүмкін екенін ескеріңіз. Осылайша, қашықтағы туннель ғаламдық желіден қол жетімсіз компьютерге қосылуды қамтамасыз ете алады. Осы себепті қашықтағы туннельдерді Көбінесе Кері туннельдер деп те атайды.
Ssh пәрменінің синтаксисінің толық сипаттамасын «man ssh» пәрмені арқылы алуға болады.
SSH туннельдерімен жұмыс істеу мысалдары
1. Сервердегі қызметке қосылыңыз (жергілікті SSH туннелі).
Айталық, PostgreSQL дерекқор қызметі 1.2.3.4 IP мекенжайы бар серверде жұмыс істейді, жергілікті 5432 портында тыңдайды. Бұл портқа сырттан қосылу мүмкін емес, БІРАҚ SSH қызметін (sshd) тыңдап отырған серверде 22-порт ашық. SSH қосылымы пайдаланушы үшін ашық. Бұл жағдайда дерекқорға кіру үшін жергілікті компьютерде пәрменді іске қосуға болады.
ssh -L 5555:localhost:5432 user@1.2.3.4
Енді 5555 порты жергілікті компьютерден сервердегі 5432 портына жіберіледі және пәрменді іске қосу арқылы қашықтағы дерекқорға қосылуға болады
psql -h localhost -p 5555
2. Портты қашықтан бағыттау
Енді тапсырманы сәл қиындатайық. «Біздің» деректер базасы интернетке қосылмаған серверде орнатылған делік, мысалы, «сұр» IP мекенжайы бар, бірақ біз оған » ақ » мекенжайы бар жергілікті компьютерден қол жеткізгіміз келеді.6.7.8.9 ЖӘНЕ SSH қызметі жұмыс істейді. Бұл жағдайда серверде келесі пәрменді іске қосуға болады:
ssh -R 5555:localhost:5432 user@6.7.8.9
Осыдан кейін сервердегі 5555 порты жергілікті компьютердегі 5432 портына жіберіледі, бұл бізге сол psql пәрменін орындауға мүмкіндік береді.
Пәрменімен қашықтағы сервердегі қосылымды тексеруге болады “lsof -i -P -n | grep LISTEN” or “ss -nlpt”:

Осы пәрменнің шығысындағы соңғы екі жол сервер күткендей 5555 портындағы жергілікті қосылымдарды тыңдап жатқанын білдіреді.
Әрине, Біз PostgreSQL қызметін тек мысал ретінде келтірдік. Осылайша, сіз кез-келген қызметке, мысалы, веб-серверге қашықтан қол жеткізуді ұйымдастыра аласыз. Мұндай портты бағыттауды ұйымдастыру үшін командамызды сәл өзгертейік.:
ssh -R 4433:localhost:4430 user@6.7.8.9
БҰЛ ЖЕРДЕ SSH клиенті бар компьютердегі веб-сервер қашықтағы серверден 4433 порты жіберілетін 4430 портында тыңдайды деп есептейміз. Әдепкі бойынша, 4433 портына тек 127.0.0.1 (localhost) жергілікті IP мекенжайынан кіруге болатынын ескеріңіз. Интернеттен клиенттер біздің веб-серверімізге қосыла алатындай ЕТІП, SSH қызмет параметрлерінде (ssh_config) портты сыртқы желілік интерфейстерге (gatewayports иә) бағыттауды қосуға болады. Бұл жағдайда клиенттер веб-серверге кіру үшін браузердің мекенжай жолағында порт нөмірін көрсетуі керек.:
https://6.7.8.9:4433
Стандартты 443 портын пайдалану және SSH параметрлерін өзгертпеу үшін прокси қызметін, мысалы, nginx арқылы 443 портынан ішкі 4433 портына сыртқы қосылымдарды қосымша жіберуге болады.
КОМПЬЮТЕРДІ қайта іске қосқаннан кейін SSH туннелін қолжетімді ету үшін ssh -L немесе ssh -R пәрменін шақыратын жағында systemd қызметін пайдалану ыңғайлы. Өз қызметімізді жасау үшін /etc/system/system каталогына файл қосыңыз, мысалы, ssh-туннель.осындай мазмұндағы қызмет:
[Unit]
Description=SSH tunnel
After=network-online.target
[Service]
ExecStart=/usr/bin/ssh -i /home/user/.ssh/ssh-tunnel-key -NT \
-o ServerAliveInterval=60 -o ExitOnForwardFailure=yes \
-R 4433:localhost:4430 user@6.7.8.9
RestartSec=15
Restart=always
[Install]
WantedBy=network-online.target
Мұнда біз туннельді іске қосудың бірнеше қосымша параметрлерін көрсеттік:
-i /root/.ssh/ssh-tunnel-key — ssh-туннель-кілт жеке SSH кілтінің орнын анықтайды.
-N — қашықтағы пәрменді орындамаңыз.
— T — жалған терминалды өшіріңіз.
— O — ServerAliveInterval=60 және-o ExitOnForwardFailure=иә қосылымды жоғалтқаннан кейін қызметті қайта іске қосуға мүмкіндік беретін опциялар болып табылады.
Осылайша, ssh-туннель қызметі желі интерфейсі байланыс орнатқаннан кейін сервер іске қосылғанда автоматты түрде іске қосылады (network-online.target) және ықтимал қосылым үзілісінен кейін қайта іске қосылды.
Ssh-туннель файлын жасағаннан кейін пәрмендерді ретімен орындау керек:
sudo systemctl daemon-reload
sudo systemctl start ssh-tunnel.service
sudo systemctl enable ssh-tunnel.service
Қызмет күйін стандартты әдіс арқылы тексеруге болады.:
sudo systemctl status ssh-tunnel.service
SOCKS-прокси-сервер және портты динамикалық бағыттау
SSH қауіпті желі арқылы желілік түйіндерге қауіпсіз қол жеткізуге мүмкіндік беретін тағы бір өте пайдалы мүмкіндікті қолдайды. Бұл режим ЖИІ ШҰЛЫҚ прокси деп аталады.
БІЗДЕ SSH қызметі және IP мекенжайы 1.2.3.4 жұмыс істейтін сервер бар делік. Серверде бізді қызықтыратын Интернет-ресурстарға тікелей қосылу мүмкіндігі бар. Бұл жағдайда жергілікті компьютерде келесі пәрменді іске қосу жеткілікті:
ssh -D 8888 user@1.2.3.4
Мұндағы-D параметрі портты динамикалық бағыттауды білдіреді. Қолданба 8888 портына қосылым орнатқан кезде, ол қауіпсіз арна арқылы 1.2.3.4 серверіне қайта бағытталады, содан кейін қолданба қашықтағы серверден қажетті түйінге қосылым жасау үшін SOCKS протоколын пайдаланады..
ӨЗІҢІЗДІҢ SOCKS прокси-серверіңізді пайдаланудың маңызды артықшылығы БАР: SSH арқылы жұмыс істегенде құпия сөздерді, кіру кодтарын, несие картасының нөмірлерін және басқа құпия деректерді қауіпсіз енгізуге болады, бұл жалпыға ортақ прокси-серверлерді пайдалану кезінде қатаң түрде ұсынылмайды.
Бірнеше туннельдер және бірнеше хосттарды ауыстыру
Бір сервермен бөлек қосылымдар жасамау үшін, мысалы, бірнеше-L параметрлерін көрсету арқылы бір қосылым арқылы бірнеше туннельдер жасауға болады:
ssh -L 5555:server1:5432 -L 4433:server2:4430 user@server3
Бұл жағдайда localhost:5555-ке кірген кезде біз server1:5432-ге жетеміз, ал localhost:4433-ке кірген кезде байланыс server2:4430-ға бағытталады. Екі жағдайда да мақсатты серверлер server3 түйінінің артында орналасқан.
Хосттардың үстінен секіру
Егер сіздің желіңіз сегменттерге (ішкі желілерге) бөлінген болса, ішкі желіден тыс компьютерге қосылу үшін -J (Прокси Арқылы Секіру) опциясын пайдалануға болады. Бұл опция, мысалы, NAT артында орналасқан және Интернеттен кіру мүмкіндігі жоқ бұлттағы серверлерге кіру үшін де пайдалы.
Пәрмен синтаксисі өте қарапайым:
ssh -J <jump server> <remote target>
Jump сервері жеке ішкі желіге кіру үшін пайдаланылатындықтан, оны жиі «бастион»деп атайды. Ірі инфрақұрылымдарда қауіпсіздік мақсатында бастион ретінде жеке сервер пайдаланылады, ол тек бір тапсырманы орындайды — ішкі қызметтерге прокси қоңырауларды жіберу. Мұндай қызметтер веб-серверлер, DNS серверлері, пошта, FTP және VPN серверлері және т.б. болуы мүмкін.
Қажет болса, бірнеше секіру серверлері болуы мүмкін, мысалы:
ssh -J host1,host2,host3 user@host4
БҰЛ ЖАҒДАЙДА SSH host1 сервер тізбегі…host3 арқылы host4 серверіне туннель жасайды.
Айта кету керек, аралық сервер арқылы қосылу кезінде сіз оған қосылған компьютер емес, осы сервердің авторизация кілттері пайдаланылады. Кілттерді компьютерден серверге жіберу ҮШІН SSH Агентін Қайта Бағыттау технологиясын пайдалануға болады, мысалы,- a параметрін (ssh-agent аутентификация агентін қайта жіберу)пайдалану.:
ssh -A user@host
Қауіпсіздік ескертпесі: кілттерді қайта жіберу кезінде жергілікті авторизация деректері аралық сервердің файлдық жүйесінде сақталмайды, бірақ қоршаған ортаның айнымалыларында әлі де қолжетімді. Сондықтан, Сіз Басқармайтын серверлерде Экспедиторды пайдалануды ұсынбаймыз. Сондай-ақ, жергілікті конфигурация файлында» Экспедитор иә » параметрін пайдалануды ұсынбаймыз ~/.ssh / config тұрақты негізде.
SSH Туннелінің Қауіпсіздігі
SSH криптографияға негізделген, трафикті шифрлау алгоритмі, оны шифрлау үшін арнайы кілттер қажет. Бұл әдістің жоғары сенімділігіне қарамастан, біз кейбір қосымша қауіпсіздік шараларын ұсына аламыз.:
- Құпия сөзбен кіруді өшіру. Ашық парольмен кірудің орнына кілтті пайдалануды ұсынамыз.
- Түбірлік қатынасты өшіру. Суперпайдаланушының қашықтан қол жеткізуі, бұзылған жағдайда, шабуылдаушыға серверге шектеусіз қол жеткізуге мүмкіндік береді. Сондықтан Дөрекі Күш шабуылдарын жасайтын роботтар алдымен түбірлік тіркелгінің құпия сөзін табуға тырысады. ИНТЕРНЕТКЕ кіру мүмкіндігі бар кез келген дерлік серверде сәтсіз кіру әрекеттері ТУРАЛЫ SSH қызметтері журналының жазбаларын қарау арқылы мұны тексеру оңай. Сондықтан, түбірлік қатынаудың орнына, артықшылықты емес пайдаланушының атынан қосылымды, қажет болған жағдайда sudoers файлында көрсетілген дөңгелектер тобының мүшесін пайдалануды ұсынамыз.
- SSH жүйесіне кіру әрекеттерін шектеңіз. Серверге сәтті дөрекі шабуыл жасау қаупін азайту үшін стандартты емес пайдаланушы аттарын пайдалану, сондай-ақ авторизациялау әрекеттерінің санын шектеу ұсынылады. Мұны кірістірілген SHH құралдарының көмегімен, мысалы, /etc/ssh/sshd_config конфигурация файлындағы MaxAuthTries мәнін азайту арқылы немесе fail2ban сияқты сыртқы құралдарды пайдалану арқылы жасауға болады.
