कॉन्टेंट पर जाएँ
Secret Knock

knockd.conf के उदाहरण

knockd /etc/knockd.conf को पढ़ता है: एक [options] सेक्शन और हर दरवाज़े के लिए एक सेक्शन। हर सेक्शन में एक अनुक्रम, समय-सीमा और दस्तक देने वाले पते, %IP%, के लिए चलाया जाने वाला कमांड होता है। अपने स्वयं के पोर्ट चुनें — उदाहरणों वाले पोर्ट कभी दोबारा इस्तेमाल न करें।

कुछ सेकंड के लिए SSH खोलें

सबसे सामान्य सेटअप: एक दस्तक SSH खोलती है और knockd, cmd_timeout के बाद उसे फिर से बंद कर देता है। अगर फ़ायरवॉल स्थापित कनेक्शन स्वीकार करता है, तो आपके पहले से खुले सत्र काम करते रहेंगे।

[options]
    UseSyslog

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    cmd_timeout   = 10
    stop_command  = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf

खोलने और बंद करने के लिए अलग अनुक्रम

टाइमर के बिना, पोर्ट तब तक खुला रहता है जब तक आप बंद करने वाले अनुक्रम की दस्तक नहीं देते। सुविधाजनक है, लेकिन भूलना आसान है — समय-सीमा वाले संस्करण को प्राथमिकता दें।

[options]
    UseSyslog

[openSSH]
    sequence    = 7311:tcp,8822:tcp,9133:udp
    seq_timeout = 10
    tcpflags    = syn
    command     = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

[closeSSH]
    sequence    = 9133:udp,8822:tcp,7311:tcp
    seq_timeout = 10
    tcpflags    = syn
    command     = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
/etc/knockd.conf

एक-बार उपयोग होने वाले अनुक्रम

एक निश्चित अनुक्रम के बजाय, knockd अनुक्रमों की फ़ाइल पढ़ सकता है और हर अनुक्रम को केवल एक बार स्वीकार कर सकता है, ताकि रिकॉर्ड की गई दस्तक को दोबारा चलाया न जा सके। Secret Knock वही सूची रखता है और दरवाज़ा खोलने वाली दस्तक के बाद अगले अनुक्रम पर चला जाता है।

[openSSH]
    one_time_sequences = /etc/knockd/ssh_sequences
    seq_timeout        = 10
    tcpflags           = syn
    start_command      = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
    cmd_timeout        = 10
    stop_command       = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT

# /etc/knockd/ssh_sequences — one sequence per line, each used once
2222:udp,3333:tcp,4444:udp
5555:tcp,6666:udp,7777:tcp
8888:udp,9999:tcp,1111:tcp
/etc/knockd.conf और अनुक्रम फ़ाइल

nftables के साथ

nftables वाले सिस्टम पर, knockd को टाइमआउट के साथ पते को एक सेट में जोड़ने दें; hide-SSH गाइड मिलान करने वाली nftables तालिका दिखाती है।

[openSSH]
    sequence      = 7311:tcp,8822:tcp,9133:udp
    seq_timeout   = 10
    tcpflags      = syn
    start_command = /usr/sbin/nft add element inet filter knocked4 { %IP% timeout 30s }
/etc/knockd.conf

संपादन के बाद

  1. 1Debian और Ubuntu पर, /etc/default/knockd में वह इंटरफ़ेस सेट करें जिस पर knockd सुनता है (KNOCKD_OPTS="-i eth0") और knockd को पुनः आरंभ करें।
  2. 2दस्तक देते समय journalctl -u knockd -f से इसे काम करते हुए देखें।
  3. 3Secret Knock में, + › फ़ाइल से आयात करें अनुक्रम वाले हर सेक्शन को एक दरवाज़े में बदल देता है; एक-बार उपयोग होने वाली अनुक्रम सूचियाँ हाथ से दर्ज करें।

GitHub पर सभी उदाहरण → इस पेज पर हर कॉन्फ़िगरेशन, कॉपी करने के लिए तैयार: github.com/mobilcomm/secretknock-examples (सार्वजनिक डोमेन)।

सवाल

क्या मुझे TCP या UDP चरणों का उपयोग करना चाहिए?

दोनों में से कोई भी काम करता है। दोनों को मिलाने से पोर्ट स्कैन से अनुक्रम का अनुमान लगाना कठिन हो जाता है। यदि आपका सेटअप इसकी जाँच करता है, तो UDP चरण Secret Knock में payload ले जा सकते हैं।

आपके सेटअप के लिए गाइड