Mijn vraag
Hoe kan het dat Fail2ban en UFW IP adressen niet blokkeren?
Relevante software en hardware die ik gebruik
Debian 9
Fail2ban v0.9.6
UFW 0.35
Nextcloud 15
Apache 2.4
Synology DSM 6.2.1
Wat ik al gevonden of geprobeerd heb
Ik heb thuis een Linux server staan waarop Debian 9 draait. De server staat achter een reverse proxy van Synology. Op de server heb ik Nextcloud geïnstalleerd en deze kan ik prima bereiken van buiten af.
Ik wil nu de Linux server wat beter beveiligen door middel van UFW en Fail2ban. Het installeren en instellen is allemaal gelukt (denk ik). Alleen als ik nu mijzelf probeer buiten te sluiten door 3 keer een foute inlogpoging te doen merk ik dat ik mijn ip adres niet wordt geblokkeerd. Echter zie ik wel in de UFW een REJECT regel staan dat het IP adres is geblokkeerd maar toch lukt het mij om nog in te loggen.
Omdat de server achter een reverse proxy zit van de Synology heb ik paar dingen aangepast in mijn virtual host. Ik heb nu dit staan in de virtualhost van Nextcloud:
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" forwarded
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!forwarded
CustomLog ${APACHE_LOG_DIR}/access.log forwarded env=forwarded
Ik zie nu netjes de remote IP adressen te voor schijn komen in de apache log en niet die van mijn Synology. Om de remote IP adressen in de Nextcloud log te zien heb ik het volgende toegevoegd aan mijn nextcloud.config:
'trusted_proxies' =>
array (
0 => 'IP address van Synology',
),
'forwarded_for_headers' =>
array (
0 => 'HTTP_X_FORWARDED_FOR',
),
Ook hier zie ik nu de remote IP adres staan i.p.v. die van de nas.
Om een jail te maken voor Nextcloud heb ik paar dingen gedaan. De eerste is een conf file maken in de /etc/fail2ban/filter.d folder met de naam nextcloud.conf. Ik heb daar het volgende ingezet:
[Definition]
failregex=^{.*Login failed: '.*' \(Remote IP: '<HOST>'\).*}$
ignoreregex =
De tweede stap is /etc/fail2ban/jail.d een conf file aanmaken met de naam nextcloud.conf. Hierin staat:
[nextcloud]
backend = auto
enabled = true
port = http, https
protocol = tcp
filter = nextcloud
#Number of retrys before to ban
maxretry = 3
#time in seconds
bantime = 36000
findtime = 36000
logpath = /var/html/www/nextcloud/data/nextcloud.log
Ik heb ook nog paar zaken aangepast in jail.local. Dat is:
ignoreip = 127.0.0.1/8 local_ip/24
banaction = ufw
Om de veranderingen actief te maken heb ik gedaan:
sudo systemctl reload fail2ban
sudo fail2ban-client reload
Kreeg geen foutmeldingen terug.
Vervolgens heb ik de jail uitgeprobeerd door middel van een VPN naar de Nextcloud pagina te gaan. Daar heb ik meerdere fout inlogpogingen gedaan. In de fail2ban status zie ik het volgende:
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 185.107.94.175
En in UFW zie ik staan:
Anywhere REJECT IN 185.107.94.175
Deze staat bovenaan in de firewall regel.
Ik zie in de ufw log niet het IP adres terug komen van 185.107.94.175. Wel die van mijn NAS.
Als ik bovenstaande output lees zou ik denken dat ik ben geblokkeerd maar toch kan ik nog naar de Nextcloud pagina gaan.
Ik ben er achter gekomen dat als ik de proxy er tussen haal en alles direct via de Linux server laat lopen dat het dan wel werkt. Het lijkt er op UFW de proxy ip adres hanteert en niet de remote ip.
Wat doe ik verkeerd dat het IP adres niet wordt geblokkeerd?
Hoe kan het dat Fail2ban en UFW IP adressen niet blokkeren?
Relevante software en hardware die ik gebruik
Debian 9
Fail2ban v0.9.6
UFW 0.35
Nextcloud 15
Apache 2.4
Synology DSM 6.2.1
Wat ik al gevonden of geprobeerd heb
Ik heb thuis een Linux server staan waarop Debian 9 draait. De server staat achter een reverse proxy van Synology. Op de server heb ik Nextcloud geïnstalleerd en deze kan ik prima bereiken van buiten af.
Ik wil nu de Linux server wat beter beveiligen door middel van UFW en Fail2ban. Het installeren en instellen is allemaal gelukt (denk ik). Alleen als ik nu mijzelf probeer buiten te sluiten door 3 keer een foute inlogpoging te doen merk ik dat ik mijn ip adres niet wordt geblokkeerd. Echter zie ik wel in de UFW een REJECT regel staan dat het IP adres is geblokkeerd maar toch lukt het mij om nog in te loggen.
Omdat de server achter een reverse proxy zit van de Synology heb ik paar dingen aangepast in mijn virtual host. Ik heb nu dit staan in de virtualhost van Nextcloud:
SetEnvIf X-Forwarded-For "^.*\..*\..*\..*" forwarded
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" forwarded
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!forwarded
CustomLog ${APACHE_LOG_DIR}/access.log forwarded env=forwarded
Ik zie nu netjes de remote IP adressen te voor schijn komen in de apache log en niet die van mijn Synology. Om de remote IP adressen in de Nextcloud log te zien heb ik het volgende toegevoegd aan mijn nextcloud.config:
'trusted_proxies' =>
array (
0 => 'IP address van Synology',
),
'forwarded_for_headers' =>
array (
0 => 'HTTP_X_FORWARDED_FOR',
),
Ook hier zie ik nu de remote IP adres staan i.p.v. die van de nas.
Om een jail te maken voor Nextcloud heb ik paar dingen gedaan. De eerste is een conf file maken in de /etc/fail2ban/filter.d folder met de naam nextcloud.conf. Ik heb daar het volgende ingezet:
[Definition]
failregex=^{.*Login failed: '.*' \(Remote IP: '<HOST>'\).*}$
ignoreregex =
De tweede stap is /etc/fail2ban/jail.d een conf file aanmaken met de naam nextcloud.conf. Hierin staat:
[nextcloud]
backend = auto
enabled = true
port = http, https
protocol = tcp
filter = nextcloud
#Number of retrys before to ban
maxretry = 3
#time in seconds
bantime = 36000
findtime = 36000
logpath = /var/html/www/nextcloud/data/nextcloud.log
Ik heb ook nog paar zaken aangepast in jail.local. Dat is:
ignoreip = 127.0.0.1/8 local_ip/24
banaction = ufw
Om de veranderingen actief te maken heb ik gedaan:
sudo systemctl reload fail2ban
sudo fail2ban-client reload
Kreeg geen foutmeldingen terug.
Vervolgens heb ik de jail uitgeprobeerd door middel van een VPN naar de Nextcloud pagina te gaan. Daar heb ik meerdere fout inlogpogingen gedaan. In de fail2ban status zie ik het volgende:
`- Actions
|- Currently banned: 1
|- Total banned: 1
`- Banned IP list: 185.107.94.175
En in UFW zie ik staan:
Anywhere REJECT IN 185.107.94.175
Deze staat bovenaan in de firewall regel.
Ik zie in de ufw log niet het IP adres terug komen van 185.107.94.175. Wel die van mijn NAS.
Als ik bovenstaande output lees zou ik denken dat ik ben geblokkeerd maar toch kan ik nog naar de Nextcloud pagina gaan.
Ik ben er achter gekomen dat als ik de proxy er tussen haal en alles direct via de Linux server laat lopen dat het dan wel werkt. Het lijkt er op UFW de proxy ip adres hanteert en niet de remote ip.
Wat doe ik verkeerd dat het IP adres niet wordt geblokkeerd?