نکات و ترفندهای لینوکس: سرور، باز کردن

برای کسانی که نیاز دارند برای خود، عزیزانشان، دسترسی به سرورهایشان را از هر کجای دنیا از طریق SSH/RDP/دیگر، یک RTFM/spur کوچک فراهم کنند.

ما باید بدون VPN و سایر زنگ ها و سوت ها، از هر دستگاهی که در دست داریم کار کنیم.

و برای اینکه مجبور نباشید زیاد با سرور ورزش کنید.

تنها چیزی که برای این نیاز دارید این است در زد، بازوهای مستقیم و 5 دقیقه کار.

البته "همه چیز در اینترنت است" (حتی در هابره، اما وقتی نوبت به یک پیاده سازی خاص می رسد، از اینجا شروع می شود...

ما استفاده از Fedora/CentOS را به عنوان مثال تمرین خواهیم کرد، اما این مهم نیست.

اسپور هم برای مبتدیان و هم برای متخصصان در این زمینه مناسب است، بنابراین نظراتی وجود دارد، اما کوتاهتر خواهند بود.

1. سرور

  • knock-server را نصب کنید:
    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 را به سرور مجازی ویندوز اضافه کنید که در داخل می چرخد ​​(/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٪ ​​اسکن می شود).
  • شروع/توقف/فرمان.
    اگر یک دستور وجود دارد، دستور، اگر دو دستور وجود دارد، سپس start_command+stop_command.
    اگر اشتباه کنید، knockd ساکت می ماند، اما کار نمی کند.
  • proto-
    از نظر تئوری می توان از 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 اضافه می کند، ما Reject دریافت می کنیم.

و خاموش کردن این رد یعنی باز کردن ماشین به روی همه بادها.

برای اینکه در 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 میلی ثانیه یک گزینه کاملاً کارآمد است

ویندوز

مهم نیست که چقدر خنده‌دار به نظر می‌رسد، این که گوگل یک کلاینت واضح برای این پلتفرم را در گوگل بی‌اهمیت می‌کند. به طوری که CLI از تاخیر، TCP - و بدون کمان پشتیبانی می کند.

به عنوان یک گزینه می توانید سعی کنید این هست. ظاهرا گوگل من کیک نیست.

لینـوکــس

همه چیز در اینجا ساده است:

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

IOS

یک گزینه کار KnockOnD (رایگان، از فروشگاه) است.

آندروید

"در پورت ها ضربه بزنید" تبلیغات نیست، اما فقط کار می کند. و توسعه دهندگان کاملاً پاسخگو هستند.

PS علامت گذاری به هابره، البته خدا رحمتش کنه روزی...

UPD1: با تشکر از به یک فرد خوب یافت مشتری کار زیر ویندوز
UPD2: یکی دیگه مردخوب به من یادآوری کرد که قرار دادن قوانین جدید در انتهای iptables همیشه مفید نیست. اما - بستگی دارد.

منبع: www.habr.com

اضافه کردن نظر