Server Sicherheit

Server Sicherheit

fail2ban und arno-iptables-firewall

Nachdem wir nun den Server installiert haben, den Webserver eingerichtet und sicherer Konfiguriert haben, widmen wir uns nun der generellen Server Sicherheit und zwar indem wir eine Firewall installieren und ein Prüfsystem.

Kommen wir zum 1. Firewall. Hier hat es sich bewährt die arno-iptables-firewall zu installieren. Warum, weil sie vieles selbst macht und sehr viele vordefinierte Regeln hat.
zur Installation:

erstmal brauchen wir git, apt-get install git.
Danach Klonen wir die neueste Version der Firewall, git clone https://github.com/arno-iptables-firewall/aif.git ~/aif -q
Wir wechseln in das aif Verzeichnis cd ~/aif und führen ein paar Befehle aus:

mkdir -p /usr/local/share/arno-iptables-firewall/plugins
mkdir -p /usr/local/share/man/man1
mkdir -p /usr/local/share/man/man8
mkdir -p /usr/local/share/doc/arno-iptables-firewall
mkdir -p /etc/arno-iptables-firewall/plugins
mkdir -p /etc/arno-iptables-firewall/conf.d
cp bin/arno-iptables-firewall /usr/local/sbin/
cp bin/arno-fwfilter /usr/local/bin/
cp -R share/arno-iptables-firewall/* /usr/local/share/arno-iptables-firewall/
ln -s /usr/local/share/arno-iptables-firewall/plugins/traffic-accounting-show /usr/local/sbin/traffic-accounting-show
gzip -c share/man/man1/arno-fwfilter.1 >/usr/local/share/man/man1/arno-fwfilter.1.gz >/dev/null 2>&1
gzip -c share/man/man8/arno-iptables-firewall.8 >/usr/local/share/man/man8/arno-iptables-firewall.8.gz >/dev/null 2>&1
cp README /usr/local/share/doc/arno-iptables-firewall/
cp etc/init.d/arno-iptables-firewall /etc/init.d/

cp etc/arno-iptables-firewall/firewall.conf /etc/arno-iptables-firewall/
cp etc/arno-iptables-firewall/custom-rules /etc/arno-iptables-firewall/
cp -R etc/arno-iptables-firewall/plugins/ /etc/arno-iptables-firewall/
cp share/arno-iptables-firewall/environment /usr/local/share/
chmod +x /usr/local/sbin/arno-iptables-firewall
chown 0:0 /etc/arno-iptables-firewall/firewall.conf
chown 0:0 /etc/arno-iptables-firewall/custom-rules
chmod +x /usr/local/share/environment

Wir erstellen also ein paar Verzeichnisse und kopieren einige Daten. Jetzt Konfigurieren wir die Firewall:

sed -i "s/^EXT_IF=.*/EXT_IF="${INTERFACE}"/g" /etc/arno-iptables-firewall/firewall.conf
sed -i 's/^EXT_IF_DHCP_IP=.*/EXT_IF_DHCP_IP="0"/g' /etc/arno-iptables-firewall/firewall.conf
sed -i 's/^#FIREWALL_LOG=.*/FIREWALL_LOG="\/var\/log\/firewall.log"/g' /etc/arno-iptables-firewall/firewall.conf
sed -i 's/^DRDOS_PROTECT=.*/DRDOS_PROTECT="1"/g' /etc/arno-iptables-firewall/firewall.conf
sed -i 's/^OPEN_ICMP=.*/OPEN_ICMP="1"/g' /etc/arno-iptables-firewall/firewall.conf
sed -i 's/^#BLOCK_HOSTS_FILE=.*/BLOCK_HOSTS_FILE="\/etc\/arno-iptables-firewall\/blocked-hosts"/g' /etc/arno-iptables-firewall/firewall.conf
sed -i "s/^OPEN_TCP=.*/OPEN_TCP=\"22, 80, 443, 22222\"/" /etc/arno-iptables-firewall/firewall.conf
sed -i 's/^OPEN_UDP=.*/OPEN_UDP=""/' /etc/arno-iptables-firewall/firewall.conf
sed -i 's/^VERBOSE=.*/VERBOSE=1/' /etc/init.d/arno-iptables-firewall
sed -i 's/.*BLOCK_HOSTS_FILE=.*/BLOCK_HOSTS_FILE="\/etc\/arno-iptables-firewall\/blocked-hosts"/' /etc/arno-iptables-firewall/firewall.conf

So wer hier noch mehr offene Ports braucht kann sie beim sed Befehl mit hinterlegen oder in der /etc/arno-iptables-firewall/firewall.conf nach 22222 suchen dort eintragen speichern neustarten.

Jetzt führen wir noch den Befehl update-rc.d -f arno-iptables-firewall start 11 S . stop 10 0 6 >/dev/null 2>&1 aus.

Ich arbeite gerne mit einem Blocked-hosts File in der IP Adressen stehen die von vorn herein einfach gesperrt werden.
Dazu legen wir eine Datei an Namens blocked-hosts entweder in /etc/cron.daily oder in cron.weekly  je nach dem was euch so beliebt, mir reicht glaube ich Wöchentlich.
Ich kenn einen der einen kennt usw., denn schlaue Leute haben etwas geschrieben, in die blocked-hosts Datei fügt ihr:

#!/bin/sh

BLACKLIST_DIR="/root/blacklist"
BLACKLIST="/etc/arno-iptables-firewall/blocked-hosts"
BLACKLIST_TEMP="$BLACKLIST_DIR/blacklist"

LIST="http://www.projecthoneypot.org/list_of_ips.php?t=d&rss=1 \
http://check.torproject.org/cgi-bin/TorBulkExitList.py?ip=1.1.1.1 \
http://www.maxmind.com/en/anonymous_proxies \
http://danger.rulez.sk/projects/bruteforceblocker/blist.php \
http://rules.emergingthreats.net/blockrules/compromised-ips.txt \
http://www.spamhaus.org/drop/drop.lasso \
http://cinsscore.com/list/ci-badguys.txt \
http://www.openbl.org/lists/base.txt \
http://www.autoshun.org/files/shunlist.csv \
http://lists.blocklist.de/lists/all.txt"

for i in "$LIST"; do
wget -T 10 -t 2 -O - $i | grep -Po '(?:\d{1,3}\.){3}\d{1,3}(?:/\d{1,2})?' >> $BLACKLIST_TEMP
done

sort $BLACKLIST_TEMP -n | uniq > $BLACKLIST
cp $BLACKLIST_TEMP $BLACKLIST_DIR/blacklist_$(date '+%d.%m.%Y_%T' | tr -d :) && rm $BLACKLIST_TEMP
/etc/init.d/arno-iptables-firewall restart
/etc/init.d/fail2ban restart

ein und erstellt das Verzeichnis mkdir /root/blacklist und machen die Blocked-hosts Datei ausführbar chmod +x /etc/cron.daily/blocked-hosts oder halt weekly.
Hier werden von den verschiedensten Seiten, IP-Adressen zusammengesucht, die direkt gesperrt werden.

Kommen wir nun noch zum fail2ban, installation apt-get install fail2ban.
Nun noch konfigurieren, die Datei /etc/fail2ban/jail.conf öffnen.

bantime  = 84600
maxretry = 3

Weiter unten bei SSH

enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3

hier gibt es auch noch viele andere Sachen einzustellen. Das bleibt euch überlassen.

Mit diesen Einstellungen wird jeder der sich 3 mal falsch einloggt gebant/geblockt und zwar für 23,5 Stunden, also Vorsicht wenn ihr euch 3 mal falsch einloggt.

das sollte reichen, nun am besten noch ein Reboot, denn der tut immer gut ?