Linux చిట్కాలు & ఉపాయాలు: సర్వర్, తెరవండి

SSH/RDP/ఇతర ద్వారా ప్రపంచంలో ఎక్కడి నుండైనా వారి సర్వర్‌లకు యాక్సెస్‌తో తమకు, వారి ప్రియమైన వారికి, చిన్న RTFM/స్పర్ అందించాల్సిన అవసరం ఉన్నవారి కోసం.

మేము చేతిలో ఉన్న ఏ పరికరం నుండి అయినా 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ని జోడించవచ్చు (/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:

మనలో కూడా ప్రతిదీ ఉంటుంది (కానీ ఇది సరికాదు), కానీ నాక్డ్ అనేది సందేశాలతో చాలా కరుకుగా ఉండే స్నేహితుడు, కాబట్టి మీరు చాలా జాగ్రత్తగా ఉండాలి.

  • వెర్షన్
    Fedora/CentOS రిపోజిటరీలలో, నేటికి సంబంధించిన తాజా నాక్డ్ 0.63. UDP ఎవరికి కావాలి - 0.70 ప్యాకెట్ల కోసం చూడండి.
  • ఇంటర్ఫేస్
    డిఫాల్ట్ Fedora/CentOS కాన్ఫిగరేషన్‌లో ఈ లైన్ . మీ చేతులతో జోడించండి, లేకుంటే అది పని చేయదు.
  • సమయం ముగిసినది
    ఇక్కడ మీరు మీ అభిరుచికి అనుగుణంగా ఎంచుకోవచ్చు. క్లయింట్‌కు అన్ని కిక్‌లకు తగినంత సమయం ఉండటం అవసరం - మరియు పోర్ట్ స్కానర్ బోట్ విచ్ఛిన్నమవుతుంది (మరియు 146% స్కాన్ చేస్తుంది).
  • ప్రారంభం/ఆపు/ఆదేశం.
    ఒక కమాండ్ ఉంటే, ఆదేశం, రెండు ఉంటే, అప్పుడు start_command+stop_command.
    మీరు తప్పు చేస్తే, నాక్డ్ మౌనంగా ఉంటుంది, కానీ పని చేయదు.
  • ప్రోటో
    సిద్ధాంతపరంగా, 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

మీరు డ్రాప్‌కి బదులుగా తిరస్కరించవచ్చు, కానీ డ్రాప్‌తో జీవితం బాట్‌లకు మరింత సరదాగా ఉంటుంది.

3. క్లయింట్

ఈ స్థలం అత్యంత ఆసక్తికరమైనది (నా దృక్కోణం నుండి), మీరు ఏదైనా బీచ్ నుండి మాత్రమే కాకుండా, ఏదైనా పరికరం నుండి కూడా పని చేయాలి.

సూత్రప్రాయంగా, అనేక క్లయింట్లు జాబితా చేయబడ్డాయి వెబ్సైట్ ప్రాజెక్ట్, కానీ ఇది అదే సిరీస్ నుండి “ప్రతిదీ ఇంటర్నెట్‌లో ఉంది.” అందువల్ల, నేను ఇక్కడ మరియు ఇప్పుడు నా చేతివేళ్ల వద్ద పని చేస్తున్న వాటిని జాబితా చేస్తాను.

క్లయింట్‌ను ఎంచుకున్నప్పుడు, ప్యాకెట్‌ల మధ్య ఆలస్యం ఎంపికకు ఇది మద్దతు ఇస్తుందని మీరు నిర్ధారించుకోవాలి. అవును, బీచ్‌లు మరియు 100 మెగాబిట్‌ల మధ్య వ్యత్యాసాలు ఉన్నాయి, ఇచ్చిన ప్రదేశం నుండి సరైన సమయంలో సరైన క్రమంలో ప్యాకెట్‌లు వస్తాయని హామీ ఇవ్వదు.

మరియు అవును, క్లయింట్‌ను సెటప్ చేసేటప్పుడు, ఆలస్యాన్ని మీరే ఎంచుకోవాలి. చాలా సమయం ముగిసింది - బాట్‌లు దాడి చేస్తాయి, చాలా తక్కువ - క్లయింట్‌కు సమయం ఉండదు. చాలా ఆలస్యం - క్లయింట్ సమయానికి చేరుకోలేరు లేదా ఇడియట్‌ల సంఘర్షణ ఉంటుంది ("రేక్స్" చూడండి), చాలా తక్కువ - ప్యాకెట్‌లు ఇంటర్నెట్‌లో పోతాయి.

సమయం ముగిసింది=5s, ఆలస్యం=100..500ms పూర్తిగా పని చేసే ఎంపిక

విండోస్

ఇది ఎంత హాస్యాస్పదంగా అనిపించినా, ఈ ప్లాట్‌ఫారమ్‌కు స్పష్టమైన నాక్ క్లయింట్ Googleకి ఇది చాలా చిన్నవిషయం కాదు. CLI ఆలస్యం, TCP - మరియు విల్లు లేకుండా మద్దతు ఇస్తుంది.

ప్రత్యామ్నాయంగా, మీరు ప్రయత్నించవచ్చు ఇంక ఇదే. స్పష్టంగా నా Google ఒక కేక్ కాదు.

linux

ఇక్కడ ప్రతిదీ సులభం:

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

MacOS

హోమ్‌బ్రూ నుండి పోర్ట్‌ను ఇన్‌స్టాల్ చేయడం సులభమయిన మార్గం:
brew install knock
మరియు కమాండ్‌ల కోసం అవసరమైన బ్యాచ్ ఫైల్‌లను గీయండి:

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

iOS

పని చేసే ఎంపిక KnockOnD (ఉచితం, స్టోర్ నుండి).

ఆండ్రాయిడ్

"నాక్ ఆన్ పోర్ట్స్" ప్రకటన కాదు, కానీ అది కేవలం పనిచేస్తుంది. మరియు డెవలపర్లు చాలా ప్రతిస్పందిస్తారు.

హబ్రేపై PS మార్క్‌డౌన్, అయితే, దేవుడు అతన్ని ఏదో ఒక రోజు ఆశీర్వదిస్తాడు...

యుపిడి 1: ధన్యవాదాలు మంచి వ్యక్తికి కనుగొన్నారు పని చేసే క్లయింట్ Windows కింద.
యుపిడి 2: మరొకటి మంచి మనిషి iptables చివరిలో కొత్త నియమాలను ఉంచడం ఎల్లప్పుడూ ఉపయోగకరంగా ఉండదని నాకు గుర్తు చేసింది. కానీ - ఇది ఆధారపడి ఉంటుంది.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి