Bagi mereka yang perlu menyediakan diri mereka, orang tersayang, dengan akses kepada pelayan mereka dari mana-mana sahaja di dunia melalui SSH/RDP/lain-lain, RTFM/spur kecil.
Kita perlu melakukannya tanpa VPN dan loceng dan wisel lain, dari mana-mana peranti di tangan.
Dan supaya anda tidak perlu bersenam terlalu banyak dengan pelayan.
Apa yang anda perlukan untuk ini ialah
βSemuanya ada di Internet,β sudah tentu (walaupun pada
Kami akan berlatih menggunakan Fedora/CentOS sebagai contoh, tetapi itu tidak penting.
Spur ini sesuai untuk pemula dan pakar dalam perkara ini, jadi akan ada ulasan, tetapi mereka akan lebih pendek.
1. Pelayan
-
pasangkan knock-server:
yum/dnf install knock-server
-
konfigurasikannya (contohnya pada 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
Bahagian "pembukaan" ditetapkan untuk ditutup secara automatik selepas 1 jam. Anda tidak pernah tahu...
-
/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 ...
-
ke hadapan:
service iptables restart service knockd start
-
anda boleh menambah RDP pada Pelayan Windows maya berputar di dalam (/etc/knockd.conf; gantikan nama antara muka mengikut citarasa anda):
[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
Kami menjejaki semua sepakan kami dari klien pada pelayan dengan arahan
iptables -S
.
2. Panduan untuk garu
knockd.conf:
Mana juga mengandungi segala-galanya (tetapi ini tidak tepat), tetapi knockd adalah rakan yang agak kedekut dengan mesej, jadi anda perlu berhati-hati.
- versi
Dalam repositori Fedora/CentOS, ketukan terkini untuk hari ini ialah 0.63. Siapa nak UDP - cari 0.70 peket. - antara muka
Dalam konfigurasi lalai Fedora/CentOS baris ini tidak. Tambah dengan tangan anda, jika tidak, ia tidak akan berfungsi. - timeout
Di sini anda boleh memilih mengikut citarasa anda. Pelanggan perlu mempunyai masa yang cukup untuk semua sepakan - dan bot pengimbas port akan rosak (dan 146% akan mengimbas). - mula/berhenti/perintah.
Jika terdapat satu perintah, maka perintah, jika ada dua, maka start_command+stop_command.
Jika anda membuat kesilapan, ketukan akan tetap senyap, tetapi tidak akan berfungsi. - prototaip
Secara teorinya, UDP boleh digunakan. Dalam praktiknya, saya mencampurkan tcp dan udp, dan pelanggan dari pantai di Bali dapat membuka pintu hanya untuk kali kelima. Kerana TCP tiba apabila diperlukan, tetapi UDP bukanlah fakta. Tetapi ini adalah soal rasa, sekali lagi. - turutan
Raut tersirat ialah urutan tidak boleh bersilang ... bagaimana untuk meletakkannya ...
Sebagai contoh, ini:
open: 11111,22222,33333
close: 22222,11111,33333
Dengan sepakan 11111 membuka akan menunggu sepakan seterusnya pada 22222. Namun, selepas ini (22222) sepakan ia akan mula berfungsi rapat dan semuanya akan pecah. Ini bergantung kepada kelewatan pelanggan juga. Perkara sedemikian Β©.
iptables
Jika dalam /etc/sysconfig/iptables ini adalah:
*nat
:PREROUTING ACCEPT [0:0]
Ia tidak benar-benar mengganggu kami, jadi inilah:
*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited
Ia mengganggu.
Memandangkan knockd menambahkan peraturan pada penghujung rantai INPUT, kita akan mendapat penolakan.
Dan mematikan penolakan ini bermakna membuka kereta kepada semua angin.
Agar tidak tersesat dalam iptables apa yang perlu dimasukkan sebelum apa (seperti ini
- lalai pada CentOS/Fedora 1 peraturan (βapa yang tidak dilarang adalah dibenarkanβ) akan digantikan dengan sebaliknya,
- dan kami mengalih keluar peraturan terakhir.
Hasilnya sepatutnya:
*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited
Anda boleh, sudah tentu, melakukan TOLAK dan bukannya DROP, tetapi dengan DROP kehidupan akan menjadi lebih menyeronokkan untuk bot.
3. Pelanggan
Tempat ini adalah yang paling menarik (dari sudut pandangan saya), kerana anda perlu bekerja bukan sahaja dari mana-mana pantai, tetapi juga dari mana-mana peranti.
Pada dasarnya, beberapa pelanggan disenaraikan di
Apabila memilih pelanggan, anda perlu memastikan bahawa ia menyokong pilihan kelewatan antara paket. Ya, terdapat perbezaan antara pantai dan 100 megabit tidak pernah menjamin bahawa paket akan tiba dalam susunan yang betul pada masa yang tepat dari lokasi tertentu.
Dan ya, apabila menyediakan pelanggan, anda perlu memilih kelewatan itu sendiri. Terlalu banyak tamat masa - bot akan menyerang, terlalu sedikit - pelanggan tidak akan mempunyai masa. Terlalu banyak kelewatan - pelanggan tidak akan sampai tepat pada masanya atau akan ada konflik orang bodoh (lihat "rakes"), terlalu sedikit - paket akan hilang di Internet.
Dengan tamat masa=5s, kelewatan=100..500ms ialah pilihan yang berfungsi sepenuhnya
Windows
Tidak kira betapa lucunya bunyinya, ia agak tidak remeh bagi Google sebagai pelanggan ketuk yang jelas untuk platform ini. Supaya CLI menyokong kelewatan, TCP - dan tanpa haluan.
Sebagai alternatif, anda boleh cuba
Linux
Semuanya mudah di sini:
dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
Cara paling mudah ialah memasang port dari homebrew:
brew install knock
dan lukis fail kelompok yang diperlukan untuk arahan seperti:
#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Pilihan yang berfungsi ialah KnockOnD (percuma, dari kedai).
Android
"Ketuk Pelabuhan" Bukan pengiklanan, tetapi ia hanya berfungsi. Dan pemaju agak responsif.
Penurunan PS pada HabrΓ©, sudah tentu, Tuhan memberkati dia suatu hari nanti...
UPD1: terima kasih kepada
UPD2: Yang lagi satu
Sumber: www.habr.com