Өөрсдийгөө болон хайртай хүмүүсээ дэлхийн хаанаас ч SSH/RDP/бусад серверүүд рүүгээ нэвтрэх боломжийг олгох шаардлагатай хүмүүст зориулж жижиг RTFM/spur.
Бид гарт байгаа ямар ч төхөөрөмжөөс VPN болон бусад хонх, шүгэлгүйгээр хийх хэрэгтэй.
Ингэснээр та сервертэй хэт их дасгал хийх шаардлагагүй болно.
Үүний тулд танд хэрэгтэй бүх зүйл
"Бүх зүйл интернетэд байгаа" мэдээжийн хэрэг (тэр ч байтугай
Бид жишээ болгон Fedora/CentOS-г ашиглах дасгал хийх болно, гэхдээ энэ нь хамаагүй.
Спор нь энэ асуудалд эхлэгчдэд болон мэргэжилтнүүдийн аль алинд нь тохиромжтой тул тайлбарууд байх болно, гэхдээ тэдгээр нь богино байх болно.
1. Сервер
-
тогших сервер суулгах:
yum/dnf install knock-server
-
үүнийг тохируулах (жишээ нь ssh дээр) - /etc/knockd.conf:
[options] UseSyslog interface = enp1s0f0 [SSHopen] sequence = 33333,22222,11111 seq_timeout = 5 tcpflags = syn start_command = iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 3600 stop_command = iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT [SSHclose] sequence = 11111,22222,33333 seq_timeout = 5 tcpflags = syn command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
"Нээх" хэсгийг 1 цагийн дараа автоматаар хаахаар тохируулсан. Чи хэзээ ч мэдэхгүй...
-
/etc/sysconfig/iptables:
... -A INPUT -p tcp -m state --state NEW -m tcp --dport 11111 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22222 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 33333 -j ACCEPT ...
-
урагшаа:
service iptables restart service knockd start
-
Та RDP-г дотор нь эргэлдэж буй виртуал Windows серверт нэмж болно (/etc/knockd.conf; өөрийн үзэмжээр интерфэйсийн нэрийг орлуулна уу):
[RDPopen] sequence = 44444,33333,22222 seq_timeout = 5 tcpflags = syn start_command = iptables -t nat -A PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 cmd_timeout = 3600 stop_command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2 [RDPclose] sequence = 22222,33333,44444 seq_timeout = 5 tcpflags = syn command = iptables -t nat -D PREROUTING -s %IP% -i enp1s0f0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2
Бид сервер дээрх үйлчлүүлэгчээс хийсэн бүх цохилтоо командын тусламжтайгаар хянадаг
iptables -S
.
2. Тармуурын гарын авлага
knockd.conf:
Мана нь бас бүх зүйлийг агуулдаг (гэхдээ энэ нь буруу юм), гэхдээ knockd бол зурваст харамч ханддаг найз тул та маш болгоомжтой байх хэрэгтэй.
- хувилбар
Fedora/CentOS репозиторуудад өнөөдрийн хамгийн сүүлийн тогшилт нь 0.63 байна. Хэн UDP хүсч байна - 0.70 пакет хайх. - интерфэйс
Анхдагч Fedora/CentOS тохиргоонд энэ мөр байна ямар ч. Гараараа нэмээрэй, эс тэгвээс энэ нь ажиллахгүй болно. - завсарлага
Энд та өөрийн амтанд тохируулан сонгож болно. Үйлчлүүлэгч бүх цохилтод хангалттай хугацаатай байх шаардлагатай бөгөөд порт сканнерын робот эвдрэх болно (мөн 146% нь сканнердах болно). - эхлүүлэх/зогсоох/тушаал.
Хэрэв нэг команд байвал команд, хоёр байвал эхлүүлэх_команд+зогсоох_команд.
Хэрэв та алдаа гаргавал knockd чимээгүй байх боловч ажиллахгүй. - прото
Онолын хувьд UDP ашиглаж болно. Практикт би tcp, udp хоёрыг хольсон бөгөөд Бали дахь далайн эргээс ирсэн үйлчлүүлэгч зөвхөн тав дахь удаагаа хаалгыг онгойлгож чадсан. Учир нь TCP шаардлагатай үед ирсэн боловч UDP бол баримт биш юм. Гэхдээ энэ бол дахин амтлах асуудал юм. - дараалал
Далд тармуур нь дараалал нь огтлолцох ёсгүй ... яаж тавих вэ ...
Жишээлбэл, энэ нь:
open: 11111,22222,33333
close: 22222,11111,33333
11111 цохилтоор нээлттэй 22222-т дараагийн цохилтыг хүлээх болно. Гэсэн хэдий ч энэ (22222) цохилтын дараа ажиллаж эхэлнэ. нууц тэгээд бүх зүйл эвдэрнэ. Энэ нь үйлчлүүлэгчийн сааталаас бас хамаарна. Ийм зүйл ©.
iptables
Хэрэв /etc/sysconfig/iptables дотор байвал энэ нь:
*nat
:PREROUTING ACCEPT [0:0]
Энэ нь бидэнд огт санаа зовдоггүй тул энд байна:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Энэ нь саад болдог.
knockd нь INPUT гинжин хэлхээний төгсгөлд дүрэм нэмдэг тул бид татгалзах болно.
Мөн энэ татгалзлыг унтраах нь машиныг бүх салхинд нээнэ гэсэн үг юм.
iptables-д төөрөхгүйн тулд юуны өмнө юу оруулах вэ (энэ шиг
- анхдагч CentOS/Fedora дээр Эхнийх нь дүрмийг ("хориогүй зүйлийг зөвшөөрнө") эсрэгээр солино,
- мөн бид сүүлчийн дүрмийг устгана.
Үр дүн нь байх ёстой:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Та мэдээж DROP-ын оронд REJECT хийж болно, гэхдээ DROP-ийн тусламжтайгаар амьдрал нь роботуудад илүү хөгжилтэй байх болно.
3. Үйлчлүүлэгч
Энэ газар хамгийн сонирхолтой нь (миний бодлоор), учир нь та зөвхөн ямар ч далайн эрэг дээр төдийгүй ямар ч төхөөрөмжөөс ажиллах хэрэгтэй.
Зарчмын хувьд хэд хэдэн үйлчлүүлэгчид бүртгэлтэй байдаг
Үйлчлүүлэгчийг сонгохдоо энэ нь пакет хоорондын саатлын сонголтыг дэмжиж байгаа эсэхийг шалгах хэрэгтэй. Тийм ээ, наран шарлагын газруудын хооронд ялгаа байдаг бөгөөд 100 мегабит нь пакетууд тухайн байршлаас зөв цагт, зөв дарааллаар ирэх болно гэдгийг хэзээ ч баталж чадахгүй.
Тиймээ, үйлчлүүлэгчийг тохируулахдаа та саатлыг өөрөө сонгох хэрэгтэй. Хэт их завсарлага - роботууд дайрах болно, хэтэрхий бага - үйлчлүүлэгчид цаг гарахгүй. Хэт их саатал - үйлчлүүлэгч үүнийг цаг тухайд нь хийхгүй эсвэл тэнэгүүдийн зөрчилдөөн гарах болно ("тармуур" -ыг үзнэ үү), хэтэрхий бага - пакетууд интернетэд алга болно.
Хугацаа нь = 5 секунд, саатал = 100..500 мс бол бүрэн ажиллах боломжтой сонголт юм
Windows
Хичнээн инээдтэй сонсогдож байсан ч Google-д энэ платформын тодорхой үйлчлүүлэгч болох нь тийм ч чухал биш юм. Иймээс CLI нь саатал, TCP, нумгүйгээр дэмждэг.
Эсвэл та оролдож болно
Linux
Энд энгийн:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
Хамгийн хялбар арга бол homebrew-ээс портыг суулгах явдал юм.
brew install knock
дараах тушаалуудад шаардлагатай багц файлуудыг зурна уу:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
Тагийн
Ажлын сонголт бол KnockOnD (үнэгүй, дэлгүүрээс).
Android
"Помтууд дээр тогших" Зар сурталчилгаа биш, гэхдээ энэ нь зүгээр л ажилладаг. Мөн хөгжүүлэгчид нэлээд хариу үйлдэл үзүүлдэг.
Хабре дээр PS тэмдэглэгээ хийх нь мэдээжийн хэрэг түүнийг хэзээ нэгэн цагт бурхан ивээх болтугай ...
UPD1: баярлалаа
UPD2: Өөр нэг
Эх сурвалж: www.habr.com