Difference between revisions of "Fail2ban/nextcloud"

From SETV Springfield Technical Wiki
Jump to: navigation, search
m
m
Line 4: Line 4:
 
FreeNAS' jail uses IPFW as the basic firewall.
 
FreeNAS' jail uses IPFW as the basic firewall.
  
Add this line in: <code>/etc/rc.conf</code>
+
Add these lines at the bottom of: <code>/etc/rc.conf</code>
  
 
Code:
 
Code:
Line 10: Line 10:
 
  firewall_script="/usr/local/etc/ipfw.rules"
 
  firewall_script="/usr/local/etc/ipfw.rules"
 
  fail2ban_enable="YES"   
 
  fail2ban_enable="YES"   
 +
SAVE
 +
 
MAKE the ipfw.rules file:
 
MAKE the ipfw.rules file:
  
Line 47: Line 49:
 
  <nowiki>#</nowiki> deny and log everything
 
  <nowiki>#</nowiki> deny and log everything
 
  $IPF 500 deny log all from any to any
 
  $IPF 500 deny log all from any to any
 
+
SAVE
 
== Set Up Fail2Ban ==
 
== Set Up Fail2Ban ==
  
Line 69: Line 71:
 
  port = 80,443  
 
  port = 80,443  
 
  protocol = tcp
 
  protocol = tcp
 +
SAVE
 +
Now we need to enable SSH Fail2Ban
 +
<code>cd /usr/local/etc/fail2ban/jail.d</code>
 +
 +
<code>nano sshd.conf</code>
 +
[ssh-ipfw]
 +
enabled  = true
 +
filter  = sshd
 +
action  = ipfw-sshd
 +
logpath  = /var/log/auth.log
 +
ignoreip = [insert SSD net IPs]
 +
maxretry = 3
 +
SAVE
 +
<code>cd /usr/loca/etc/fail2ban/filter.d</code>
 +
<code> nano nextcloud.conf</code>
 +
[Definition]
 +
failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}
 +
ignoreregex =
 +
SAVE
 +
<code>cd /usr/local/etc/fail2ban/action.d</code>
 +
cp /usr/local/etc/fail2ban/action.d/ipfw.conf /usr/local/etc/fail2ban/action.d/ipfw-nextcloud.conf
 +
cp /usr/local/etc/fail2ban/action.d/ipfw.conf /usr/local/etc/fail2ban/action.d/ipfw-sshd.conf
 +
 +
in each new *.conf file
 +
FIND:
 +
<code>actionban =</code>
 +
ADD AFTER '=' (replacing anything already there)
 +
<code>ipfw table 1 add <ip></code>
 +
 +
FIND:
 +
<code>actionunban =</code>
 +
ADD AFTER '=' (replacing anything already there)
 +
<code>ipfw table 1 delete <ip></code>
 +
SAVE
 +
 +
Lastly, enable SSH and Nextcloud logging:
 +
 +
<code> cd /etc/ssh</code>
 +
<code> nano sshd_config</code>
 +
FIND:
 +
<code>LOGGING</code>
 +
Change:
 +
# Logging
 +
# obsoletes QuietMode and FascistLogging
 +
# SyslogFacility AUTH
 +
# LogLevel INFO
 +
 +
TO:
 +
# Logging
 +
# obsoletes QuietMode and FascistLogging
 +
SyslogFacility AUTH
 +
LogLevel INFO
 +
SAVE
 +
 +
<code> cd /usr/local/www/apache24/data/nextcloud/config</code>
 +
<code> nano config.php </code>
 +
FIND:
 +
<code> 'logtimezone' </code>
 +
ABOVE THAT LINE ADD:
 +
<code>  'log_authfailip' => true, </code>
 +
SAVE
 +
 +
Restart services
 +
service apache24 restart
 +
service sshd restart
 +
service ipfw restart
 +
service fail2ban start
 +
 +
If all goes will, you should see something like:
 +
 +
2016-09-26 13:58:00,261 fail2ban.server        [69039]: INFO    Starting Fail2ban v0.9.4.dev0
 +
2016-09-26 13:58:00,262 fail2ban.server        [69039]: INFO    Starting in daemon mode
 +
 +
Any errors, check <code>/var/log/fail2ban.log</code> for further info, and google what you find.

Revision as of 17:58, 26 September 2016

This quick guide is designed to show you how to enable Fail2Ban on the NextCloud jail.

Set Up IPFW

FreeNAS' jail uses IPFW as the basic firewall.

Add these lines at the bottom of: /etc/rc.conf

Code:

firewall_enable="YES"    
firewall_script="/usr/local/etc/ipfw.rules"
fail2ban_enable="YES"  

SAVE

MAKE the ipfw.rules file:

/usr/local/etc/ipfw.rules

Edit IPFW Rules

Edit rules file /usr/local/etc/ipfw.rules

Code:

IPF="ipfw -q add"
ipfw -q -f flush
#loopback
$IPF 10 allow all from any to any via lo0
$IPF 20 deny all from any to 127.0.0.0/8
$IPF 30 deny all from 127.0.0.0/8 to any
$IPF 40 deny tcp from any to any frag
# statefull
$IPF 50 check-state
$IPF 60 allow tcp from any to any established
$IPF 70 allow all from any to any out keep-state
$IPF 80 allow icmp from any to any
#firewall rule used by Fail2Ban to block traffic
$IPF 90 deny all from 'table(1)' to any
# open port DNS (53)
# http (80), https (443) etc
$IPF 150 allow tcp from any to any 443 in
$IPF 160 allow tcp from any to any 443 out
$IPF 170 allow udp from any to any 53 in
$IPF 175 allow tcp from any to any 53 in
$IPF 180 allow udp from any to any 53 out
$IPF 185 allow tcp from any to any 53 out
$IPF 200 allow tcp from any to any 80 in
$IPF 210 allow tcp from any to any 80 out
$IPF 220 allow tcp from any to any 22 in
$IPF 230 allow tcp from any to any 22 out
# deny and log everything
$IPF 500 deny log all from any to any

SAVE

Set Up Fail2Ban

Install Fail2Ban

pkg install security/py-fail2ban

Configuration

cd /usr/local/etc/fail2ban 
cp fail2ban.conf fail2ban.local 
cp jail.conf jail.local

Edit jail.local

Insert at very bottom:

enabled  = true 
filter  = nextcloud 
action  = ipfw-nextcloud 
logpath  = /usr/local/www/apache24/data/nextcloud/data/nextcloud.log 
maxretry = 3 
port = 80,443 
protocol = tcp

SAVE Now we need to enable SSH Fail2Ban cd /usr/local/etc/fail2ban/jail.d

nano sshd.conf

[ssh-ipfw]
enabled  = true
filter   = sshd
action   = ipfw-sshd
logpath  = /var/log/auth.log
ignoreip = [insert SSD net IPs]
maxretry = 3

SAVE cd /usr/loca/etc/fail2ban/filter.d nano nextcloud.conf

[Definition]
failregex={"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}
ignoreregex =

SAVE cd /usr/local/etc/fail2ban/action.d

cp /usr/local/etc/fail2ban/action.d/ipfw.conf /usr/local/etc/fail2ban/action.d/ipfw-nextcloud.conf
cp /usr/local/etc/fail2ban/action.d/ipfw.conf /usr/local/etc/fail2ban/action.d/ipfw-sshd.conf

in each new *.conf file FIND: actionban = ADD AFTER '=' (replacing anything already there) ipfw table 1 add <ip>

FIND: actionunban = ADD AFTER '=' (replacing anything already there) ipfw table 1 delete <ip> SAVE

Lastly, enable SSH and Nextcloud logging:

cd /etc/ssh nano sshd_config FIND: LOGGING Change:

# Logging
# obsoletes QuietMode and FascistLogging
# SyslogFacility AUTH
# LogLevel INFO

TO:

# Logging
# obsoletes QuietMode and FascistLogging
SyslogFacility AUTH
LogLevel INFO

SAVE

cd /usr/local/www/apache24/data/nextcloud/config nano config.php FIND: 'logtimezone' ABOVE THAT LINE ADD: 'log_authfailip' => true, SAVE

Restart services

service apache24 restart
service sshd restart
service ipfw restart
service fail2ban start

If all goes will, you should see something like:

2016-09-26 13:58:00,261 fail2ban.server         [69039]: INFO    Starting Fail2ban v0.9.4.dev0
2016-09-26 13:58:00,262 fail2ban.server         [69039]: INFO    Starting in daemon mode

Any errors, check /var/log/fail2ban.log for further info, and google what you find.