Uruchamianie skryptów po podaniu sekwencji na porty IP
Ostatnia zmiana: 2013-11-26 18:43

Knockd jest programem pozwalającym na uruchomienie programu lub skryptu po próbie określonych połączeń na porty IP. Przykładowe zastosowanie: domyślnie mamy zabroniony dostęp do ssh na serwerze. Przez wykonanie odpowiedniej sekwencji zapytań można odblokować dostęp.

Instalacja



    # opkg update
    # opkg install knockd

Konfiguracja

Zawarta jest w pliku /etc/knockd.conf. Jego przykładowa konfiguracja może wyglądać następująco:


    [options]
        logfile = /var/log/knockd.log

    [openSSH]
        sequence = 7000,8000,9000
        seq_timeout = 15
        command = /usr/sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags = syn

    [closeSSH]
        sequence = 9000,8000,7000
        seq_timeout = 15
        command = /usr/sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags = syn

Uruchomienie



    # knockd -i eth1 -d

Uruchomienie demona na przykładowym interfejsie wan (który w tym przykładzie był to eth1).

Testowanie

Przy takiej konfiguracji po "zastukaniu" na port 7000, 8000, 9000 powinien nam się otworzyć dostęp na port 22 (ssh). Po "zastukaniu" na port 9000, 8000, 7000 zaś ponownie się zamknąć. Fizycznie można to wykonać poleceniami:


    $ telnet ip_serwera 7000
    $ telnet ip_serwera 8000
    $ telnet ip_serwera 9000

Po każdym telnecie połączenie zamknie się samo. Na całą sekwencję mamy 15s wg konfiguracji. W pliku logu (/var/log/knockd.log) jest informacja o działaniu programu. W niektórych przypadkach może okazać się potrzeba otworzenia na firewallu zdefiniowanych portów (7000, 8000 i 9000).