Mereka yang perlu menyediakan diri mereka sendiri, kekasih, akses ke server mereka dari mana saja di dunia melalui SSH / RDP / atau - RTFM kecil / memacu.
Kita perlu melakukannya tanpa VPN dan lonceng dan peluit lainnya, dari perangkat apa pun yang ada.
Dan agar server tidak berolahraga terlalu banyak.
Yang Anda butuhkan adalah ketukan , lengan lurus, dan 5 menit kerja.
"Semuanya ada di Internet," tentu saja (bahkan di Habré ), tetapi ketika sampai pada implementasi spesifik, itu dimulai ...
Kami akan menggunakan contoh Fedora / CentOS, tetapi itu tidak masalah.
Spur akan cocok untuk pemula dan bison bisnis ini, sehingga akan ada komentar, tetapi lebih pendek.
1. Server
masukkan knock-server:
yum/dnf install knock-server
konfigurasikan (misalnya 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
Bagian "pembuka" diatur ke tutup-otomatis setelah 1 jam. Kamu 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 ...
maju:
service iptables restart service knockd start
Anda dapat menambahkan RDP ke dalam virtual Windows Server spinning di dalam (/etc/knockd.conf; beri nama antarmuka sesuai selera 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
Semua tendangan kami dari klien dimonitor di server dengan perintah iptables -S
.
2. Panduan Rake
knockd.conf:
Semuanya ada di mans juga (tapi ini tidak akurat), namun knockd adalah seorang kawan yang agak pelit dengan pesan, jadi Anda harus sangat berhati-hati.
- versi
Dalam repositori Fedora / CentOS, knockd ekstrim untuk hari ini adalah 0,63. Siapa yang mau UDP - cari 0,70 paket. - antarmuka
Dalam konfigurasi Fedora / CentOS default, baris ini tidak ada . Tambahkan dengan tangan, jika tidak maka tidak akan berfungsi. - batas waktu
Di sini untuk memilih secukupnya. Klien perlu memiliki waktu yang cukup untuk semua tendangan - dan bot-scanner port akan terputus (dan 146% akan memindai itu). - mulai / berhenti / perintah.
Jika perintahnya adalah satu - maka perintah, jika dua - maka start_command + stop_command.
Jika Anda melakukan kesalahan, knockd akan tetap diam, tetapi tidak akan berhasil. - proto
Secara teoritis, Anda dapat menggunakan UDP. Dalam praktiknya, saya mencampur tcp dan udp, dan seorang klien dari pantai di Bali hanya bisa membuka gerbang untuk yang kelima kalinya. Untuk TCP terbang bila perlu, dan UDP bukan fakta. Tapi ini masalah selera, lagi. - urutan
Penggaruk tersirat adalah bahwa urutannya tidak boleh tumpang tindih ... bagaimana mengatakannya ...
Sebagai contoh, ini:
open: 11111,22222,33333 close: 22222,11111,33333
Tendangan 11111 terbuka akan menunggu untuk tendangan berikutnya pada 22222. Namun, tendangan (22222) ini akan mulai bekerja dekat dan semuanya akan pecah. Itu tergantung pada keterlambatan klien juga. Hal-hal seperti itu ©.
iptables
Jika di / etc / sysconfig / iptables ini dia:
*nat :PREROUTING ACCEPT [0:0]
itu tidak mengganggu kita, maka ini dia:
*filter :INPUT ACCEPT [0:0] ... -A INPUT -j REJECT --reject-with icmp-host-prohibited
Taki mengganggu.
Karena knockd menambahkan aturan di akhir rantai INPUT, kami ditolak.
Dan untuk mematikan tolak ini adalah membuka mobil ke semua angin.
Agar tidak masuk ke iptables, tempat meletakkan sesuatu sebelumnya (seperti yang disarankan orang ), kami akan membuatnya lebih mudah:
- default di CentOS / Fedora aturan pertama ("apa yang tidak dilarang - diizinkan") diganti dengan yang sebaliknya,
- dan hapus aturan terakhir.
Hasilnya harus:
*filter :INPUT DROP [0:0] ... #-A INPUT -j REJECT --reject-with icmp-host-prohibited
Anda bisa, tentu saja, membuat REJECT bukannya DROP, tetapi dengan DROP, bot akan lebih menyenangkan.
3. Pelanggan
Di tempat ini yang paling menarik (dari sudut pandang saya), karena Anda harus bekerja tidak hanya dari pantai mana pun, tetapi juga dari perangkat apa pun.
Pada prinsipnya, sejumlah klien terdaftar di situs web proyek, tetapi ini dari seri yang sama "semuanya ada di Internet". Karena itu, saya akan mendaftar apa yang berfungsi di sini dan sekarang di ujung jari saya.
Saat memilih klien, Anda harus memastikan bahwa itu mendukung opsi penundaan antar paket. Ya, pantai dan perselisihan ke pantai dan 100 megabit tidak pernah menjamin bahwa paket tiba dalam urutan yang tepat pada waktu yang tepat dari tempat ini.
Dan ya - saat menyiapkan klien, penundaan harus dipilih secara independen. Banyak batas waktu - bot akan menyerang, sedikit - klien tidak akan tepat waktu. Ada banyak penundaan - klien tidak akan tepat waktu atau akan ada konflik orang idiot (lihat "rake"), sedikit - paket akan tersesat kembali di Internet.
Dengan batas waktu = 5d, penundaan opsi yang berfungsi penuh = 100..500 ms
Windows
Tidak peduli seberapa konyol kedengarannya, tetapi bagi Google ketukan-klien yang berbeda untuk platform ini cukup tidak penting. CLI mendukung penundaan, TCP - dan tanpa busur.
Sebagai pilihan, Anda dapat mencobanya di sini . Ternyata Google saya bukan kue.
Linux
Semuanya sederhana di sini:
dnf install knock -y knock -d <delay> <dst_ip> 11111 22222 33333
MacOS
Cara termudah adalah dengan meletakkan port dari homebrew:
brew install knock
dan menggambar untuk dirimu sendiri kemeja tubuh Komandan formulir:
#!bin/sh knock -d <delay> <dst_ip> 11111 22222 33333
iOS
Opsi kerja adalah KnockOnD (gratis, dari toko).
Android
"Ketuk Port". Bukan iklan, tetapi hanya bekerja. Dan pengembangnya cukup responsif.
Penurunan harga PS pada Habr, tentu saja, Tuhan memberkati dia suatu hari nanti ...
UPD1 : terima kasih kepada orang yang baik, klien yang bekerja untuk Windows ditemukan.
UPD2 : orang baik lainnya ingat bahwa menempatkan aturan baru di akhir iptables tidak selalu berguna. Tapi - itu tergantung.