Tip & trik Linux: server, buka

Bagi mereka yang perlu memberi diri mereka sendiri, orang yang mereka cintai, akses ke server mereka dari mana saja di dunia melalui SSH/RDP/lainnya, RTFM/spur kecil.

Kita perlu melakukannya tanpa VPN dan fasilitas lainnya, dari perangkat apa pun yang ada.

Dan agar Anda tidak perlu terlalu banyak berolahraga dengan server.

Yang Anda perlukan untuk ini hanyalah ketukan, lengan lurus dan 5 menit kerja.

“Semuanya ada di Internet,” tentu saja (bahkan di Internet). Habré), tetapi jika menyangkut implementasi spesifik, di sinilah dimulainya...

Kita akan berlatih menggunakan Fedora/CentOS sebagai contoh, tapi itu tidak masalah.

Taji ini cocok untuk pemula dan ahli dalam hal ini, jadi akan ada komentar, tetapi akan lebih pendek.

1. Pelayan

  • instal ketukan-server:
    yum/dnf install knock-server

  • konfigurasikan (misalnya di 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 “pembukaan” diatur untuk menutup otomatis setelah 1 jam. Kau tak 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 server Windows virtual yang berputar di dalamnya (/etc/knockd.conf; gantikan 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

    Kami melacak semua tendangan kami dari klien di server dengan perintah iptables -S.

2. Panduan untuk menyapu

ketukan.conf:

Mana juga berisi segalanya (tapi ini tidak akurat), tetapi knockd adalah teman yang agak pelit dengan pesan, jadi Anda harus sangat berhati-hati.

  • versi
    Di repositori Fedora/CentOS, ketukan terbaru untuk hari ini adalah 0.63. Siapa yang mau UDP - cari paket 0.70.
  • antarmuka
    Dalam konfigurasi default Fedora/CentOS, baris ini Tidak. Tambahkan dengan tangan Anda, jika tidak maka tidak akan berhasil.
  • batas waktu
    Di sini Anda bisa memilih sesuai selera Anda. Klien harus memiliki cukup waktu untuk melakukan semua tindakan - dan bot pemindai port akan rusak (dan 146% akan memindai).
  • mulai/berhenti/perintah.
    Jika ada satu perintah, maka perintah, jika ada dua, maka start_command+stop_command.
    Jika Anda melakukan kesalahan, knockd akan tetap diam, tetapi tidak akan berfungsi.
  • prototipe
    Secara teoritis, UDP dapat digunakan. Dalam praktiknya, saya mencampurkan tcp dan udp, dan klien dari pantai di Bali hanya mampu membuka gerbang untuk kelima kalinya. Karena TCP tiba saat dibutuhkan, namun UDP bukanlah fakta. Tapi sekali lagi, ini masalah selera.
  • urutan
    Penggaruk tersirat adalah bahwa urutannya tidak boleh berpotongan... bagaimana mengatakannya...

Misalnya, seperti:

open: 11111,22222,33333
close: 22222,11111,33333

Dengan tendangan 11111 Buka akan menunggu tendangan berikutnya di 22222. Namun, setelah tendangan ini (22222) akan mulai bekerja menutup penjualan dan semuanya akan hancur. Hal ini tergantung pada keterlambatan klien juga. Hal-hal seperti itu ©.

iptables

Jika di /etc/sysconfig/iptables ini adalah:

*nat
:PREROUTING ACCEPT [0:0]

Itu tidak terlalu mengganggu kami, jadi ini dia:

*filter
:INPUT ACCEPT [0:0]
...
-A INPUT -j REJECT --reject-with icmp-host-prohibited

Itu memang mengganggu.

Karena knockd menambahkan aturan pada akhir rantai INPUT, kita akan mendapat penolakan.

Dan mematikan penolakan ini berarti membuka mobil terhadap segala angin.

Agar tidak tersesat di iptables apa yang harus dimasukkan sebelum apa (seperti ini orang-orang sarankan) mari kita buat lebih sederhana:

  • bawaan di CentOS/Fedora pertama aturan (“apa yang tidak dilarang diperbolehkan”) akan diganti dengan yang sebaliknya,
  • dan kami menghapus aturan terakhir.

Hasilnya seharusnya:

*filter
:INPUT DROP [0:0]
...
#-A INPUT -j REJECT --reject-with icmp-host-prohibited

Anda tentu saja dapat melakukan REJECT daripada DROP, tetapi dengan DROP hidup akan lebih menyenangkan bagi bot.

3. Klien

Tempat ini adalah 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 Online proyek, tapi ini dari seri yang sama "semuanya ada di Internet". Oleh karena itu, saya akan membuat daftar apa yang berhasil di ujung jari saya di sini dan saat ini.

Saat memilih klien, Anda perlu memastikan bahwa klien tersebut mendukung opsi penundaan antar paket. Ya, ada perbedaan antara pantai dan 100 megabit tidak pernah menjamin bahwa paket akan tiba dalam urutan yang benar pada waktu yang tepat dari lokasi tertentu.

Dan ya, saat menyiapkan klien, Anda harus memilih sendiri penundaannya. Terlalu banyak waktu tunggu - bot akan menyerang, terlalu sedikit - klien tidak akan punya waktu. Terlalu banyak penundaan - klien tidak akan tiba tepat waktu atau akan ada konflik orang bodoh (lihat “penggaruk”), terlalu sedikit - paket akan hilang di Internet.

Dengan timeout=5s, delay=100..500ms adalah opsi yang sepenuhnya berfungsi

Windows

Betapapun lucunya kedengarannya, tidaklah sepele bagi Google sebagai klien yang jelas untuk platform ini. Sehingga CLI mendukung penundaan, TCP - dan tanpa busur.

Atau, Anda dapat mencoba ini. Rupanya Google saya bukanlah kue.

Linux

Sederhana saja di sini:

dnf install knock -y
knock -d <delay> <dst_ip> 11111 22222 33333

MacOS

Cara termudah adalah menginstal port dari homebrew:
brew install knock
dan menggambar file batch yang diperlukan untuk perintah seperti:

#!bin/sh
knock -d <delay> <dst_ip> 11111 22222 33333

iOS

Opsi yang berfungsi adalah KnockOnD (gratis, dari toko).

Android

"Ketuk Pelabuhan" Bukan iklan, tapi berhasil. Dan pengembangnya cukup responsif.

Penurunan harga PS di Habré, tentu saja Tuhan memberkatinya suatu hari nanti...

UPD1: terimakasih untuk kepada orang baik ditemukan klien yang bekerja di bawah Windows.
UPD2: Yang lainnya orang baik mengingatkan saya bahwa menempatkan aturan baru di akhir iptables tidak selalu berguna. Tapi itu tergantung.

Sumber: www.habr.com

Tambah komentar