суббота, 9 февраля 2019 г.

openwrt + sslh = 🕵

Заметки о конфигурации мультиплексора протоколов sslh под openwrt. Будем использовать 443 порт и для https и для ssh и для vpn

готовимся

ставим из репозитариев `opkg install sslh`
на момент написания заметки у меня была версия (v1.19c-1). Посмотрим какие протоколы есть `sslh -h` и среди вывода видим
[--ssh ]
[--openvpn ]
[--tinc ]
[--xmpp ]
[--http ]
[--ssl ]
[--tls ]
[--adb ]
[--anyprot ]

теперь осталось подправить конфиг nginx.
Меня несколько стала напрягять доступность вебморды из внешки. И ну так как в скором времни решил настроить vpn в локалку, то эта опция вообще становится лишней. В ход в админку - только из DMZ.

server {
    listen 8443 ssl;
    listen [::]:8443 ssl;
    server_name  192.168.1.12 nethead.lan;
    ssl on;
    ssl_certificate      /etc/acme/box.now.io/box.now.io.cer;
    ssl_certificate_key  /etc/acme/box.now.io/box.now.io.key;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    client_header_buffer_size    1k;
    client_header_timeout        12;
    large_client_header_buffers  2 1k;
    client_body_buffer_size      10K;
    client_body_timeout          12;
    client_max_body_size         8m;
    location / {
        root                /www;
        proxy_pass          http://localhost:81;
        index               index.html index.htm;
        proxy_set_header    X-Forwarded-Proto https;
    }

}
Как видно, админка по ssl теперь будет доступна на 8443 порту. На него и будем прописывать конфиг мультиплексора. Кстати админка должна перестать работать.

настраиваем


окей, теперь стартуем и разрешаем демонизацию
/etc/init.d/sslh start
/etc/init.d/sslh enable

И получаем ругань, что надо разрешить хотя бы один протокол. Особо курить маны не надо, загляни в `vim /etc/config/sslh`, там будет все понятно.
package 'sslh'

config 'sslh' 'default'
    # disable or enable
    option 'enable' '1'
    # listen defaults to '0.0.0.0:443' (all interfaces)
    # multiple -p arguments may be supplied using a uci list
    # -p :
    option 'listen' '0.0.0.0:443'
    # ssh defaults to 'localhost:22'
    # --ssh :
    option 'ssh' 'localhost:2250'
    # ssl defaults to 'localhost:443'
    # --ssl :
    option 'ssl' 'localhost:8443'
    # openvpn defaults to 'localhost:1194'
    # --openvpn :
    #option 'openvpn' ''
    # tinc defaults to 'localhost:655'
    # --tinc :
    #option 'tinc' ''
    # xmpp defaults to 'localhost:5222'
    # --xmpp :
    #option 'xmpp' ''
    #option wireguard
    option 'anyport' 'localhost:8443'
    # timeout (for ssh, then ssl is assumed) defaults to 2
    # -t
    option 'timeout' '2'
    # verbose defaults to off
    # -v
    option 'verbose' '0'
    # use external config file
    # option configfile '/etc/sslh.conf'
Подсасываем новые конфиги `/etc/init.d/sslh reload` и на этом этапе админка должна заработать

а что там есть еще


/etc/sslh.conf такой, в принципе полностью повторяет функционал uci. Так что в него даже не стоит смотреть.

Что весьма занятно, так как это в версии 19 появились ряд вещей суля по логу. Ищем коммит. Ищем что там есть еще. Однако тема adb там слабо раскрывается. Видимо это для дебага андроида по вайфайю.