Μετάβαση στο περιεχόμενο
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 να προσθέτει τη διεύθυνση σε ένα σύνολο με χρονικό όριο· ο οδηγός απόκρυψης 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. 1Σε Debian και Ubuntu, ορίστε τη διεπαφή στην οποία ακούει το knockd στο /etc/default/knockd (KNOCKD_OPTS="-i eth0") και επανεκκινήστε το knockd.
  2. 2Παρακολουθήστε τη λειτουργία του με journalctl -u knockd -f ενώ χτυπάτε.
  3. 3Στο Secret Knock, + › Εισαγωγή από αρχείο μετατρέπει κάθε ενότητα με ακολουθία σε πόρτα· εισαγάγετε τις λίστες ακολουθιών μίας χρήσης με το χέρι.

Όλα τα παραδείγματα στο GitHub → Κάθε διαμόρφωση αυτής της σελίδας, έτοιμη για αντιγραφή: github.com/mobilcomm/secretknock-examples (κοινό κτήμα).

Ερωτήσεις

Πρέπει να χρησιμοποιώ βήματα TCP ή UDP;

Και τα δύο λειτουργούν. Ο συνδυασμός τους κάνει μια ακολουθία δυσκολότερο να προβλεφθεί από μια σάρωση θυρών. Τα βήματα UDP μπορούν να μεταφέρουν φορτίο δεδομένων στο Secret Knock, αν η ρύθμισή σας το ελέγχει.

Οδηγοί για τη διαμόρφωσή σας