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: