Линуксийн зөвлөмж ба заль мэх: сервер, нээ

Өөрсдийгөө болон хайртай хүмүүсээ дэлхийн хаанаас ч SSH/RDP/бусад серверүүд рүүгээ нэвтрэх боломжийг олгох шаардлагатай хүмүүст зориулж жижиг RTFM/spur.

Бид гарт байгаа ямар ч төхөөрөмжөөс VPN болон бусад хонх, шүгэлгүйгээр хийх хэрэгтэй.

Ингэснээр та сервертэй хэт их дасгал хийх шаардлагагүй болно.

Үүний тулд танд хэрэгтэй бүх зүйл тогшлоо, шулуун гар, 5 минутын ажил.

"Бүх зүйл интернетэд байгаа" мэдээжийн хэрэг (тэр ч байтугай Хабре), гэхдээ тодорхой хэрэгжилтийн тухай ярихад энэ нь эндээс эхэлдэг ...

Бид жишээ болгон 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, нумгүйгээр дэмждэг.

Эсвэл та оролдож болно энэ бол энэ. Миний Google бол бялуу биш бололтой.

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: баярлалаа сайн хүнд олдсон ажиллаж байгаа үйлчлүүлэгч Windows доор.
UPD2: Өөр нэг сайн залуу iptables-ийн төгсгөлд шинэ дүрэм тавих нь үргэлж ашигтай биш гэдгийг надад сануулсан. Гэхдээ - энэ нь хамаарна.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх