Hallo zusammen,
wie kann ich mit haproxy oder nginx auf der IPF einen reverse Proxy einrichten, welcher einen Webserver im grünen LAN "schützt"?
Viele Grüße
simpler http/s Proxy
Re: simpler http/s Proxy
hat das niemand im Einsatz? 
ist doch gar nicht so abwägig...

ist doch gar nicht so abwägig...

Re: simpler http/s Proxy
Moin lenny,
es gibt da so einiges im Forum --> search.php?keywords=nginx+reverse aber auch im Wiki --> https://wiki.ipfire.org/nginx/start wärst du fündig geworden .
Hab da mal vor längerem was für Netdata gemacht --> viewtopic.php?t=16987#p99785 wobei Nginx da als Proxy für den Fire gedacht war.
Habe gerade eben ein Nginx update zur Mailingliste geschickt mit http2 Aktivierung im Nginx --> https://patchwork.ipfire.org/patch/2162/ und hatte das vorher unter obigem Szenario getestet. Es gibt mit dem OpenSSL Update ja mittlerweileTLSv1.3 und das wollte ich dann auch mal (only) ausprobieren aber zuerstmal wegen der nginx.conf und der Infra.:
EDIT:
Netdata (als backend) lauscht auf Localhost TCP 19999
Nginx als Proxy (Frontend) lauscht auf TCP 1234
[/EDIT]
Ich habe die hier -->
verwendet. Du musst aber derzeit noch 'http2' in der 'listen' Zeile rausnehmen also anstatt
dadas der derzeitige Nginx noch nicht kann aussserdem kannst du dir überlegen ob du hier
nicht noch TLSv1.2 ranhängst.
Schnellerklärung: Da im 'upstream backend' bei mir alles auf localhost läuft und Nginx auf den Fire (netdata) umleitet würde da dann dein ensprechender 'server' reinkommen.
Konfig hat er aktzeptiert:
Crypto sieht gut aus (musst die CA und DH-Parameter noch entsprechend {hier unter /var/nginx/ca} erstellen):
Generell würde ich mir alle Direktiven mal anschauen und gucken ob du das so haben willst.
Grüsse,
UE
es gibt da so einiges im Forum --> search.php?keywords=nginx+reverse aber auch im Wiki --> https://wiki.ipfire.org/nginx/start wärst du fündig geworden .
Hab da mal vor längerem was für Netdata gemacht --> viewtopic.php?t=16987#p99785 wobei Nginx da als Proxy für den Fire gedacht war.
Habe gerade eben ein Nginx update zur Mailingliste geschickt mit http2 Aktivierung im Nginx --> https://patchwork.ipfire.org/patch/2162/ und hatte das vorher unter obigem Szenario getestet. Es gibt mit dem OpenSSL Update ja mittlerweileTLSv1.3 und das wollte ich dann auch mal (only) ausprobieren aber zuerstmal wegen der nginx.conf und der Infra.:
EDIT:
Netdata (als backend) lauscht auf Localhost TCP 19999
Code: Select all
tcp 0 0 127.0.0.1:19999 0.0.0.0:* LISTEN 30400/netdata
Code: Select all
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 20683/nginx
Ich habe die hier -->
Code: Select all
worker_processes 1;
events {
worker_connections 1024;
}
http {
upstream backend {
# the netdata server
server 127.0.0.1:19999;
keepalive 64;
}
server {
listen 1234 ssl http2;
server_name 192.168.123.234 # green0 IP;
# Authentication
auth_basic "Protected";
auth_basic_user_file .htpasswd;
# TLS settings
ssl_certificate /etc/nginx/ca/nginx.crt;
ssl_certificate_key /etc/nginx/ca/nginx.key;
ssl_protocols TLSv1.3;
ssl_ciphers TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-ARIA256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-AES128-CCM8:ECDHE-ECDSA-ARIA128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ARIA256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ARIA128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-CCM:DHE-RSA-AES256-CCM8:DHE-RSA-ARIA256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-CCM:DHE-RSA-AES128-CCM8:DHE-RSA-ARIA128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384;
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ca/dh.pem;
ssl_ecdh_curve X25519:secp521r1:secp384r1;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; always";
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_pass_request_headers on;
proxy_set_header Connection "keep-alive";
proxy_store off;
}
# make sure there is a trailing slash at the browser
# or the URLs will be wrong
location ~ /netdata/(?<behost>.*) {
return 301 /netdata/$behost/;
}
}
}
dann haltlisten 1234 ssl http2;
Code: Select all
listen 1234 ssl;
Code: Select all
ssl_protocols TLSv1.3;
Schnellerklärung: Da im 'upstream backend' bei mir alles auf localhost läuft und Nginx auf den Fire (netdata) umleitet würde da dann dein ensprechender 'server' reinkommen.
Konfig hat er aktzeptiert:
Code: Select all
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Code: Select all
$ openssl s_client -connect 192.168.123.234:1234
CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 C = DE, ST = HH, L = Hamburg, O = IPFire, OU = FZeit, CN = ipfire, emailAddress = ue@xx.xx
verify error:num=18:self signed certificate
verify return:1
depth=0 C = DE, ST = HH, L = Hamburg, O = IPFire, OU = FZeit, CN = ipfire, emailAddress = ue@xx.xx
verify return:1
---
Certificate chain
0 s:C = DE, ST = HH, L = Hamburg, O = IPFire, OU = FZeit, CN = ipfire, emailAddress = ue@xx.xx
i:C = DE, ST = HH, L = Hamburg, O = IPFire, OU = FZeit, CN = ipfire, emailAddress = ue@xx.xx
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIEhzCCA2+gAwIBAgIUbVXZ3wvfp7USYXYecZ8Ut+yK9Q8wDQYJKoZIhvcNAQEL
BQAwgYExCzAJBgNVBAYTAkRFMQswCQYDVQQIEwJCVzESMBAGA1UEBxMJS2FybHNy
dWhlMQ8wDQYDVQQKEwZJUEZpcmUxDjAMBgNVBAsTBUZaZWl0MRYwFAYDVQQDEw1p
cGZpcmUtc2VydmVyMRgwFgYJKoZIhvcNAQkBFgl1ZUB1ZS5vcmcwHhcNMTkwMzI2
MDQ1NTE2WhcNMjAwMzI1MDQ1NTE2WjCBgTELMAkGA1UEBhMCREUxCzAJBgNVBAgT
AkJXMRIwEAYDVQQHEwlLYXJsc3J1aGUxDzANBgNVBAoTBklQRmlyZTEOMAwGA1UE
CxMFRlplaXQxFjAUBgNVBAMTDWlwZmlyZS1zZXJ2ZXIxGDAWBgkqhkiG9w0BCQEW
CXVlQHVlLm9yZzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL8vteTv
UAOsUM2yr5ztEKeUL/nZAUSWJAeDFRik+j+fYRAFUb+EW7CWyeoC6DkLtp9F+TlQ
aAKdp1R4pRrS6I34o9+VWjd38E1DQTYYE0Bez87lXn0F1e7cXtHb6qZxjQSzXWJ6
4MhS4f7/WzA8c/golcoTFlREu3kQ4Qnqgmh+qMG/+U5Hir08x8IbGcKGtWwzHqfn
H8dUaNB/pCPxSI8LKXNxeNBMpwYfxXU0NsPYLTQxHVf8dHgNAN5ZbEXP8UfJSitn
WkwnZBf/x4WdVrcKMpRL17ncR9KbkKRpP2YW/1rqq2L/8uFj2T/QiBfr9dSuUxhR
hd9+jIZD2PAiMNECAwEAAaOB9DCB8TAdBgNVHQ4EFgQUDW6FO9A2qxb5DyqXKPhE
bO/T+cAwgcEGA1UdIwSBuTCBtoAUDW6FO9A2qxb5DyqXKPhEbO/T+cChgYekgYQw
gYExCzAJBgNVBAYTAkRFMQswCQYDVQQIEwJCVzESMBAGA1UEBxMJS2FybHNydWhl
MQ8wDQYDVQQKEwZJUEZpcmUxDjAMBgNVBAsTBUZaZWl0MRYwFAYDVQQDEw1pcGZp
cmUtc2VydmVyMRgwFgYJKoZIhvcNAQkBFgl1ZUB1ZS5vcmeCFG1V2d8L36e1EmF2
HnGfFLfsivUPMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAEygarf2
Rh0q6M9F0ZzJ2QaAbHA1w0lg2KDCbzWXU6j6GTvzBXegeRzKM6V3Rp5ql8IHtu81
TUWbuJnwOpPVHANpRrcbjLO4BvMp5ezkNOXfn+X0gMzHEKXuih+iKfUDMrKrMdan
dxOxdGrA01nwHWQhTPm2LBalcQanX/IaBT7jDeguPoxIiLaEpSXipyYEHrNtIqK2
YhFWNmEekjLrn65HTfuU/YB5A1oYufeTXSXNuJMdjsGqixgH24KKEitC/u5+G/eV
sXqqPf2ZBwiDG0y2YhjMedtPeDWs+p1X9PB7xPFwQ3NJlT6d+Vo3FLMxyPc+Cyaq
MhhvDOe177Evymo=
-----END CERTIFICATE-----
subject=C = DE, ST = HH, L = Hamburg, O = IPFire, OU = FZeit, CN = ipfire, emailAddress = ue@xx.xx
issuer=C = DE, ST = HH, L = Hamburg, O = IPFire, OU = FZeit, CN = ipfire, emailAddress = ue@xx.xx
---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 1703 bytes and written 381 bytes
Verification error: self signed certificate
---
New, TLSv1.3, Cipher is TLS_CHACHA20_POLY1305_SHA256
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 18 (self signed certificate)
---
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_CHACHA20_POLY1305_SHA256
Session-ID: E7EA92FCDEF338D4E066330B0416F33660FF6E80BE3CB1695F8B6D53CA69D2F0
Session-ID-ctx:
Resumption PSK: 55EE2B0BF68200B084BD45B6C272E3F4A8AFC6A8DB7229CF6F5073151839A2E0
PSK identity: None
PSK identity hint: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - ff 98 7e f6 17 a0 5b cf-e5 18 b0 4f 45 9d e6 fc ..~...[....OE...
0010 - 10 9e 8c 69 30 5a a3 09-7f d6 26 92 26 2b 78 b5 ...i0Z....&.&+x.
0020 - 92 03 74 92 57 38 0b cd-a0 90 ff 15 38 40 09 a8 ..t.W8......8@..
0030 - c4 2b 02 d9 c5 ea 4b c8-6b cb e9 3a 17 3b e1 d0 .+....K.k..:.;..
0040 - a3 e0 bd a8 d9 ed 8f 0b-4b ec a0 48 e4 44 31 1f ........K..H.D1.
0050 - 5a ef d6 e6 d6 96 20 42-ad 6d 9c 2b 5f b5 c4 fe Z..... B.m.+_...
0060 - ce 2f 59 22 8a c4 2e 54-7f d7 66 52 7c 4e e9 3e ./Y"...T..fR|N.>
0070 - 0d a4 ad 01 fc 55 05 68-12 43 45 a1 c0 78 f9 42 .....U.h.CE..x.B
0080 - 37 62 6c 8a d9 e2 ab 08-12 86 da 14 4d a6 61 98 7bl.........M.a.
0090 - 22 26 78 a1 c0 a7 ea e5-a0 66 e0 a7 0c c0 b3 2d "&x......f.....-
00a0 - 57 7f a8 79 f2 5a ce e8-5e 1b fb a1 ec ae bd 93 W..y.Z..^.......
00b0 - 74 67 33 89 9d ab f7 2f-a3 d8 62 60 6c 57 32 0c tg3..../..b`lW2.
00c0 - 6c 7d d4 44 5c 82 46 3a-0e 4e 7b bd fa 69 c1 a5 l}.D\.F:.N{..i..
Start Time: 1553581128
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
---
Post-Handshake New Session Ticket arrived:
SSL-Session:
Protocol : TLSv1.3
Cipher : TLS_CHACHA20_POLY1305_SHA256
Session-ID: CBB4997B9E9AA94F5B95FBEC0DA89964A9E945CAEFDB0322DA36BFCE5EE92481
Session-ID-ctx:
Resumption PSK: 1F1F02C7B8699A87248B0E4F8D3AC1E65AE0EFC8A1F292FC7CE2027DDDFE7773
PSK identity: None
PSK identity hint: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - ff 98 7e f6 17 a0 5b cf-e5 18 b0 4f 45 9d e6 fc ..~...[....OE...
0010 - ec c8 c0 6a b8 d2 28 b5-10 55 b6 bf a3 31 4e bb ...j..(..U...1N.
0020 - 54 3b 6b 76 1a 40 6e c2-ae a0 1d d3 d5 b1 ca 8e T;kv.@n.........
0030 - ab 1b 5c ca 3c 94 7c 0a-de eb de fb 6e be 0f d1 ..\.<.|.....n...
0040 - 7e 1f ff f3 13 14 d9 cc-a8 8a dd 61 6d 8f 7c dc ~..........am.|.
0050 - 58 2e 4e 03 46 3e ef 73-05 88 d5 55 39 b9 08 55 X.N.F>.s...U9..U
0060 - 74 09 ec ea 62 52 6a b0-78 63 d1 8d e9 9f 32 81 t...bRj.xc....2.
0070 - 34 15 5d 7c 7a d7 ce 09-0d 06 e5 79 b8 77 3d 23 4.]|z......y.w=#
0080 - 21 65 2d 92 e4 ee db 3a-55 82 c1 99 c1 3c b7 96 !e-....:U....<..
0090 - 6e 63 2e d4 7b 08 ec d5-2f 4c 4d a6 6b 31 5e a3 nc..{.../LM.k1^.
00a0 - 1c 3b f3 b0 cf 75 e8 2a-90 6b 08 26 35 5d be ea .;...u.*.k.&5]..
00b0 - 3a af b0 6f 1c a4 4d 2a-7b fb 32 53 fb a4 29 d2 :..o..M*{.2S..).
00c0 - d4 43 1e c5 7f d0 b8 15-b3 c9 3f 9f 64 01 ce 2b .C........?.d..+
Start Time: 1553581128
Timeout : 7200 (sec)
Verify return code: 18 (self signed certificate)
Extended master secret: no
Max Early Data: 0
---
read R BLOCK
closed
Grüsse,
UE
Re: simpler http/s Proxy
Das ist ausführlich, Dankeschön! ich bin daran gescheitert, mir aus 5 Quellen eine passende Konfig zu bauen.
Ich werde das mal die nächsten Tage bei mir einbauen, aber viel schiefgehen kann da fast nicht mehr. Vielen Dank!!
Ich werde das mal die nächsten Tage bei mir einbauen, aber viel schiefgehen kann da fast nicht mehr. Vielen Dank!!
Re: simpler http/s Proxy
Jo bitte,
aber denk dran das ist nun relativ spezifisch für meine Anwendung da ist nichts wegen Caching (usw.) drinne da ich bei Netdata schnelle Aktualisierungen brauch, der Gedanke war dir eine Grundlage zu posten mit der du auf deinen Usecase event. aufbauen kannst
.
Grüssle,
UE
aber denk dran das ist nun relativ spezifisch für meine Anwendung da ist nichts wegen Caching (usw.) drinne da ich bei Netdata schnelle Aktualisierungen brauch, der Gedanke war dir eine Grundlage zu posten mit der du auf deinen Usecase event. aufbauen kannst

Grüssle,
UE