Owncloud auf Webserver 4 – Firewall richtig konfigurieren

In dieser Artikelserie beschreibe ich, wie ihr mit einem ausgemusterten PC als Server euren eigen Webserver mit Owncloud und SSL-Verschlüsselung erstellen könnt. Hier zeige ich euch, wie ihr den SSH-Server sicherer konfigurieren könnt und die Firewall iptables richtig einstellt, damit euer Server nicht so leicht angegriffen werden kann.

SSH-Zugang Port ändern

Der Standardport von SSH ist 22. Wenn dieser nicht umgelegt wird, ist dieser für Angreifer bekannt und daher eine potentielle Schwachstelle. Im Folgenden zeige ich wie der SSH-Zugang von Port 22 auf Port 8001 umgelegt wird. Vorher muss die Konfigurationsdatei /etc/ssh/sshd_config gesichert werden. Weitere nützliche Hilfe findet ihr hier.

# root werden
su
nano /etc/ssh/sshd_config
# folgende Zeile wird geändert
# What ports, IPs and protocols we listen for
Port 8001
service ssh restart

Weitere nützliche Kommandos für den SSH-Server sind

service ssh stop
service ssh start
service ssh status

Firewall einrichten

Bei der Einrichtung habe ich mich an den Ausführungen unter https://www.digitalocean.com/community/articles/how-to-setup-a-basic-iptables-configuration-on-centos-6 orientiert. Die Datei firewall.sh enthält die Regeln, welches als Shellskript ausgeführt wird, hier muss insbes. der Port für SSH offen gehalten werden.

#!/bin/bash

# https://www.digitalocean.com/community/articles/how-to-setup-a-basic-iptables-configuration-on-centos-6

#default Input is "ACCEPT"
iptables -P INPUT ACCEPT

#flush the firewall
iptables -F

#Security: block null-pakets
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP

#Security: block tcp-syn-flodding
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

#Security: block XMAS-pakets
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP

#localhost interface
iptables -A INPUT -i lo -j ACCEPT

#HTTP, HTTPS
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

#SMTP
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT

#POP3
iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT

#IMAP
iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT

#SSH geändert von 22 auf 8001
iptables -A INPUT -p tcp -m tcp --dport 8001 -j ACCEPT

#FTP
iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

#It will allow any established outgoing connections to receive replies from the server on the other side of that connection.
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#else Input is drop
iptables -P INPUT DROP

#default Forwarding-Chain policy is "DROP"
iptables -P FORWARD DROP

#default Policy for Output-Chain ist "ACCEPT"
iptables -P OUTPUT ACCEPT

#show rules
iptables -L -v

Die Firewallregeln werden mit folgenden Kommando persistent gemacht (vgl. http://wiki.debian.org/iptables):

iptables-save > /etc/iptables.up.rules

Das Ergebnis kann man sich wie folgt ansehen

cat /etc/iptables.up.rules
# Generated by iptables-save v1.4.14 on Fri Jul 5 14:40:55 2013
*filter
:INPUT DROP [59:11349]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [2513:169057]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 8001 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
COMMIT
# Completed on Fri Jul 5 14:40:55 2013

Hier noch ein interessantes Video:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert