Nextcloud mit NGNIX Proxy Manager und Cloudflare


h0schi

Recommended Posts

Hallo Zusammen,

 

ich habe auf meinem Unraid-System ein Nextcloud-Container laufen.

Die Einrichtung mit MariaDB war soweit problemlos.

 

Nachdem ich den Nextcloud-Container nach Außen, über den NGNIX Proxy Manager, freigebe und das Cloudflare Zertifikat abrufe, erhalte ich in der Nextcloud-Protokollierung ständig folgende Fehlermeldung über Cloudflare-Adressen:

 

Der Cloudflare DNS ist mit Proxy.

 

Quote

Warning        core    Login failed: 'ncp' (Remote IP: '162.158.111.151')       2021-02-12T17:13:03+0100

Warning        core    Login failed: 'ncp' (Remote IP: '141.101.104.143')       2021-02-12T17:12:50+0100

Warning        core    Login failed: 'ncp' (Remote IP: '141.101.105.114')        2021-02-12T17:12:31+0100

Warning        core    Login failed: 'ncp' (Remote IP: '141.101.76.202')        2021-02-12T17:12:15+0100

Warning        core    Login failed: 'ncp' (Remote IP: '172.69.54.33')          2021-02-12T17:11:43+0100

Warning        core    Login failed: 'ncp' (Remote IP: '162.158.111.151')        2021-02-12T17:11:11+0100

Warning        core    Login failed: 'ncp' (Remote IP: '141.101.105.106')        2021-02-12T17:10:33+0100

Warning        core    Login failed: 'ncp' (Remote IP: '141.101.104.175')        2021-02-12T17:09:59+0100

Warning        core    Login failed: 'ncp' (Remote IP: '141.101.104.143')        2021-02-12T17:09:25+0100

Warning        core    Login failed: 'ncp' (Remote IP: '162.158.111.151')        2021-02-12T17:08:52+0100

Warning        core    Login failed: 'ncp' (Remote IP: '162.158.88.194')        2021-02-12T17:08:17+0100

 

Gibt es hierfür einen Trick ?

Ich habe schon mehrere Sachen bzgl. "trusted proxies", NGNIX Proxy Manager Advanced Attribues, etc. versucht, aber nichts hat geholfen :(

In der config.php von Nextcloud brachten die Werte auch keine Besserung:

Quote

'trusted_proxies' => array('10.42.0.0/16', '103.21.244.0/22', '103.22.200.0/22', '103.31.4.0/22', '104.16.0.0/12', '108.162.192.0/18', '131.0.72.0/22', '141.101.64.0/18', '162.158.0.0/15', '172.64.0.0/13', '173.245.48.0/20', '188.114.96.0/20', '190.93.240.0/20', '197.234.240.0/22', '198.41.128.0/17', '2400:cb00::/32', '2606:4700::/32', '2803:f800::/32', '2405:b500::/32', '2405:8100::/32', '2c0f:f248::/32', '2a06:98c0::/29'),

 

Quote

 'forwarded_for_headers' => array('HTTP_CF_CONNECTING_IP'),

 

 

Vielleicht hat Jemand das gleiche Probleme oder eine Idee wie ich das Problem beheben kann ?

 

 

Danke und ein schönes Wochenende

 

Edited by h0schi
Link to comment
1 hour ago, h0schi said:

über den NGNIX Proxy Manager, freigebe und das Cloudflare Zertifikat abrufe

 

Kannst du das näher erläutern? Ich hätte jetzt in NPM das Lets Encrypt Zertifikat ohne Cloudflare bestellt. Und danach auf Cloudflare umgestellt. Also warum genau willst du ein Zertifikat von Cloudflare verwenden? Und wie hast du das eingerichtet?

 

1 hour ago, h0schi said:

in der Nextcloud-Protokollierung ständig folgende Fehlermeldung über Cloudflare-Adressen:

Für mich sehen diese Fehler nach Login-Versuchen mit dem falschen Passwort aus. Also Bruteforce-Attacken (was normal ist, wenn man eine Seite öffentlich hostet). Die IP des eigentlichen Users siehst du nicht wegen dem Cloudflare Proxy.

 

Bearbeite mal die nextcloud config.php und füge nach <?php das ein:

var_dump($_SERVER);

 

Beim Aufruf von Nextcloud während Cloudflare aktiv ist, solltest du nun alle HTTP Variablen sehen. Auch die "HTTP_CF_CONNECTING_IP", falls das überhaupt stimmt.

 

Ich kann mir übgrigens vorstellen, dass NPM der Proxy ist, den Nextcloud sieht und der die Variable "verschluckt". Dh Nextcloud sieht alls REMOT_ADDR gar nicht die von Cloudflare, sondern die lokale von NPM. Aber das wirst du durch die Ausgabe von $_SERVER sehen.

Link to comment

Ich lege im NPM den Host, wähle Request a new SSL Certificate und anschließend DNS Challenge aus.

Die DNS Zone und den A-Eintrag gibts es bereits.

Wird DNS Challenge verwendet um den DNS-Eintrag inkl. Zertifikat anzufordern ?



 

 

Ich glaube nicht dass es Angriffe sind.

Selbst nach Deaktivierung von Brute-Force entstehen die Fehlermeldung die Fehlermeldung wird von dem Core-Modul, also von Nextcloud generiert.

 

Danke für die Tipps - Ich werd es mal versuchen :)

 


 

 

 

 

 

Edited by h0schi
Link to comment
16 hours ago, h0schi said:

Selbst nach Deaktivierung von Brute-Force entstehen die Fehlermeldung

 

Was auch völlig normal ist. Die Fehlermeldungen sagen ja nur aus, dass jemand beim Login das falsche Passwort eingegeben hat.

 

Eine Brute-Force-Attacke macht das, nur eben sehr schnell. Ein Schutz, reduziert dabei die Angriffsgeschwindigkeit. Im Falle von Nextcloud wird die IP für 24 Stunden gesperrt:

Quote

If triggered, brute force protection makes requests coming from an IP on a bruteforce protected controller with the same API slower for a 24 hour period.

 

In deinem Fall verursacht das nur das zusätzliche Problem, dass auch reguläre Nutzer keinen Login mehr tätigen können, wenn sie über die selbe Proxy IP von Cloudflare reinkommen. Aber das ist ein anderes Thema.

 

16 hours ago, h0schi said:

Ich lege im NPM den Host, wähle Request a new SSL Certificate und anschließend DNS Challenge aus.

Und ich frage noch mal. Warum willst du ein Zertifikat von Cloudflare nehmen und keines von Let's Encrypt? Hast du es mal mit Lets Encrypt versucht? Dafür muss Port 80 auf NPM geleitet werden, ansonsten kann er das Zertifikat nicht validieren.

 

Ansonsten lies mal hier:

https://github.com/jc21/nginx-proxy-manager/issues/680

Link to comment

Habs hinbekommen.

Hab die Umgebung (Nextcloud, MariaDB und NPM) neu installiert.

 

Hab per NPM über die Lets Encrypt DNS-Challenge das Wildcard-Zertifikat von Cloudflare geholt und eingebunden.

 

Nach dem Einbinden des CF-Zertifikats war Nextcloud erreichbar.

Unter den Logs waren die dauerhaften Fehlversuche verschwunden.

 

Bei einem fehlerhaften Anmeldeversuch wird bis dahin die IP-Adresse von Cloudflare angezeigt.

Durch hinzufügen folgender beider Zeilen in der config.php bekommt man bei fehlerhaften Anmeldeversuche die wirkliche IP-Adresse angezeigt:

 

Quote

  'trusted_proxies' => array (
  '173.245.48.0/20', '103.21.244.0/22', '103.22.200.0/22', '103.31.4.0/22', '141.101.64.0/18', '108.162.192.0/18', '190.93.240.0/20', '188.114.96.0/20', '197.234.240.0/22', '198.41.128.0/17', '162.158.0.0/15', '104.16.0.0/12', '172.64.0.0/13', '131.0.72.0/22', '2400:cb00::/32', '2606:4700::/32', '2803:f800::/32', '2405:b500::/32', '2405:8100::/32', '2a06:98c0::/29', '2c0f:f248::/32'
),

 

Quote

'forwarded_for_headers' => array('HTTP_CF_CONNECTING_IP'),

 

Cloudflare IP-Ranges:

https://www.cloudflare.com/ips/

 

 

Bei NPM habe ich unter dem betroffenen Proxy Host unter dem Tab "Advanced" folgende Custom Nginx Configuration eingetragen:

 

Quote

    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_max_temp_file_size 16384m;
    client_max_body_size 0;

 

location /.well-known/carddav {
    return 301 $scheme://$host/remote.php/dav;
}

location /.well-known/caldav {
    return 301 $scheme://$host/remote.php/dav;
}

 

 

Weiß Jemand wie man den Befehl "occ db:add-missing-indices" in dem Nextcloud-Container von knex666 ausführt ?

Ich bekomme egal was ich mache immer wieder die Meldung und komme anschließend leider nicht weiter.

Quote

Console has to be executed with the user that owns the file config/config.php
Current user id: 0
Owner id of config.php: 33
Try adding 'sudo -u #33' to the beginning of the command (without the single quotes)
If running with 'docker exec' try adding the option '-u 33' to the docker command (without the single quotes)

 

 

 

Edited by h0schi
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.