Защита Octoprint с помощь HAProxy

Защита Octoprint с помощь HAProxy

DjinN

НАЗАД

Ставим HAProxy:

  • sudo apt-get install haproxy

Редактируем конфиг:

  • sudo nano /etc/haproxy/haproxy.cfg

global

    maxconn 4096

    user haproxy

    group haproxy

    daemon

    log 127.0.0.1 local0 debug

defaults

    log   global

    mode  http

    option httplog

    option dontlognull

    retries 3

    option redispatch

    option http-server-close

    option forwardfor

    maxconn 2000

    timeout connect 5s

    timeout client 15min

    timeout server 15min

frontend public

  bind :::80 v4v6

  option forwardfor except 127.0.0.1

  use_backend webcam if { path_beg /webcam/ }

  use_backend octoprint_unsecure if { hdr_beg(host) -i 192.168 }

  default_backend octoprint

backend octoprint

  acl needs_scheme req.hdr_cnt(X-Scheme) eq 0

  reqrep ^([^\ :]*)\ /(.*) \1\ /\2

  reqadd X-Scheme:\ https if needs_scheme { ssl_fc }

  reqadd X-Scheme:\ http if needs_scheme !{ ssl_fc }

  option forwardfor

  server octoprint1 127.0.0.1:5000

  acl ValidOctoPrintUser http_auth(OctoPrintUsers)

  http-request auth realm OctoPrint if !ValidOctoPrintUser

backend octoprint_unsecure

  acl needs_scheme req.hdr_cnt(X-Scheme) eq 0

  reqrep ^([^\ :]*)\ /(.*) \1\ /\2

  reqadd X-Scheme:\ https if needs_scheme { ssl_fc }

  reqadd X-Scheme:\ http if needs_scheme !{ ssl_fc }

  option forwardfor

  server octoprint1 127.0.0.1:5000

backend webcam

  reqrep ^([^\ :]*)\ /webcam/(.*)   \1\ /\2

  server webcam1 127.0.0.1:8080

userlist OctoPrintUsers

  user USER password HASHEDPASS

Чтобы не спрашивало пароль, когда входите из локальной сети, проверьте строку   use_backend octoprint_unsecure if { hdr_beg(host) -i 192.168 } и исправьте на вашу сеть.

Если вы хотите использовать просто пароль, а не хеш, то вместо password необходимо использовать insecure-password mypassword, но я настоятельно рекомендую использовать хеш, для этого:

  • sudo apt install whois
  • mkpasswd -m sha-512

И копируем полученный хэш.



Report Page