1blu vServer Unlimited: Iptables Firewall

Anus+

New Member
Guten Wach allerseits! :-)

Ich bin jetzt seit längerer Zeit besitzer des genannten vServers von 1blu und bisher zufrieden. Langsam aber sicher läuft mein System so wie es soll. Nachdem ich alle meine Dienste abgesichert bzw. unnötige Dienste verbannt habe, bin ich nun an dem Punkt angelangt eine Firewall aufzusetzen.

Ok, das Firewall-Modul in Plesk läuft nicht - macht nichts. Monolithischer Kernel und nur iptables mit Filter-Tabelle verfügbar. Also Hand angelegt... dabei ist folgendes zustande gekommen:
Code:
#!/bin/sh

# enable source validation (ip spoofing protection)
if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
        echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
fi

# delete all existing rules
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -X

# default policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# loopback device is save
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# allow ssh
iptables -A INPUT -p tcp --dport ssh -j ACCEPT

# plesk control panel
iptables -A INPUT -p tcp --dport 8880 -j ACCEPT
iptables -A INPUT -p tcp --dport 8443 -j ACCEPT

# email services
iptables -A INPUT -p tcp --dport pop3s -j ACCEPT
iptables -A INPUT -p tcp --dport imaps -j ACCEPT
iptables -A INPUT -p tcp --dport smtp -j ACCEPT
iptables -A INPUT -p tcp --dport smtps -j ACCEPT

# webserver
iptables -A INPUT -p tcp --dport http -j ACCEPT
iptables -A INPUT -p tcp --dport https -j ACCEPT

# drop the rest
iptables -A INPUT -p tcp -j DROP
iptables -A INPUT -p udp -j DROP
iptables -A INPUT -j DROP

Sieht eigentlich soweit ganz gut aus. http, https, pop3s, imaps und ssh laufen. :)

Der Mailempfang von anderen MTAs (der meines Wissens über SMTP Port 25 läuft) funktioniert. Nur leider funktioniert der Mailversand über SMTP und SMTPS von meinem MUA (Outlook, etc.) nicht. :confused:

Wenn ich die Firewall deaktiviere, funktioniert der Mailversand einwandfrei, womit ich eine falsche Konfiguration von qmail ausschließe.

Jemand vielleicht eine Idee? Bin schon am verzweifeln...


Gruß, Anus+
 
Last edited by a moderator:
"Virtuozzo Power Panel"

Hallo,

und warum nutzt du nicht im "Virtuozzo Power Panel" das Menü "Firewall"?


fragt sich, Peter
 
Hallo Peter,

danke für den Tipp - aber das funktioniert ebenfalls nicht, genauso wenig wie das Firewall Modul in Plesk. :eek:

Ist wohl eine 1blu-Krankheit.

In der Zwischenzeit habe ich das Problem in den Griff bekommen. :-)
Dabei ist dann folgendes Skript entstanden:

Code:
#! /bin/sh
#
# /etc/init.d/1blu-vserver-fw
#   and its symbolic link
# /usr/sbin/rc1blu-vserver-fw
#
#    This program is free software; you can redistribute it and/or modify 
#    it under the terms of the GNU General Public License as published by 
#    the Free Software Foundation; either version 2 of the License, or 
#    (at your option) any later version. 
# 
#    This program is distributed in the hope that it will be useful, 
#    but WITHOUT ANY WARRANTY; without even the implied warranty of 
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
#    GNU General Public License for more details. 
# 
#    You should have received a copy of the GNU General Public License 
#    along with this program; if not, write to the Free Software 
#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
### BEGIN INIT INFO
# Provides:          IP packetfilter
# Required-Start:    $local_fs $network
# Required-Stop:     
# Default-Start:     3 5
# Default-Stop:      0 1 2 4 6
# Short-Description: IP packetfilter based on iptables and filter table
# Description:       This IP packetfilter provides IP packetfilter especially
#	for virtual servers from 1blu company. Because there is only the filter
#	table from iptables available, this packetfilter offers you an excellent
#	basis to secure your virtual server.
### END INIT INFO
# 

# Check for missing binaries (stale symlinks should not happen)
# Note: Special treatment of stop for LSB conformance
IPTABLES_BIN=/usr/sbin/iptables
test -x $IPTABLES_BIN || { echo "$IPTABLES_BIN not installed"; 
	if [ "$1" = "stop" ]; then exit 0;
	else exit 5; fi; }


. /etc/rc.status

# Reset status of this service
rc_reset

case "$1" in
    start)
	echo -n "Starting 1blu vServer firewall... "
	## enable source validation (ip spoofing protection)
	if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
		echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
	fi

	## delete all existing rules
	$IPTABLES_BIN -F INPUT
	$IPTABLES_BIN -F OUTPUT
	$IPTABLES_BIN -F FORWARD
	$IPTABLES_BIN -X

	## default policy
	$IPTABLES_BIN -P INPUT DROP
	$IPTABLES_BIN -P OUTPUT DROP
	$IPTABLES_BIN -P FORWARD DROP

	## loopback device is save
	$IPTABLES_BIN -A INPUT -i lo -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -o lo -j ACCEPT

	## allow ssh
	$IPTABLES_BIN -A INPUT -p tcp --dport ssh -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport ssh -j ACCEPT

	## plesk control panel
	$IPTABLES_BIN -A INPUT -p tcp --dport 8880 -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport 8880 -j ACCEPT
	$IPTABLES_BIN -A INPUT -p tcp --dport 8443 -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport 8443 -j ACCEPT

	## domain name service
	$IPTABLES_BIN -A INPUT -p udp --dport domain -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p udp --sport domain -j ACCEPT
	$IPTABLES_BIN -A INPUT -p tcp --dport domain -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport domain -j ACCEPT

	## email services
	$IPTABLES_BIN -A INPUT -p tcp --dport smtp -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport smtp -j ACCEPT
	$IPTABLES_BIN -A INPUT -p tcp --dport smtps -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport smtps -j ACCEPT
	$IPTABLES_BIN -A INPUT -p tcp --dport pop3s -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport pop3s -j ACCEPT
	$IPTABLES_BIN -A INPUT -p tcp --dport imaps -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport imaps -j ACCEPT

	## webserver
	$IPTABLES_BIN -A INPUT -p tcp --dport http -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport http -j ACCEPT
	$IPTABLES_BIN -A INPUT -p tcp --dport https -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport https -j ACCEPT

	## allow connections from higher ports to the outside
	$IPTABLES_BIN -A INPUT -p tcp --dport 1024: -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p tcp --sport 1024: -j ACCEPT
	$IPTABLES_BIN -A INPUT -p udp --dport 1024: -j ACCEPT
	$IPTABLES_BIN -A OUTPUT -p udp --sport 1024: -j ACCEPT

	## drop the rest
	$IPTABLES_BIN -A INPUT -p tcp -j DROP
	$IPTABLES_BIN -A OUTPUT -p tcp -j DROP
	$IPTABLES_BIN -A INPUT -p udp -j DROP
	$IPTABLES_BIN -A OUTPUT -p udp -j DROP
	$IPTABLES_BIN -A INPUT -j DROP
	$IPTABLES_BIN -A OUTPUT -j DROP
	
	# Remember status and be verbose
	rc_status -v
	;;

	stop)
	echo -n "Shutting down 1blu vServer firewall... "

	# delete all existing rules
        $IPTABLES_BIN -F INPUT
        $IPTABLES_BIN -F OUTPUT
        $IPTABLES_BIN -F FORWARD
        $IPTABLES_BIN -X

        # default policy
        $IPTABLES_BIN -P INPUT ACCEPT
        $IPTABLES_BIN -P OUTPUT ACCEPT
        $IPTABLES_BIN -P FORWARD ACCEPT
	
	# Remember status and be verbose
	rc_status -v
	;;

	restart)
	## Stop the service and regardless of whether it was
	## running or not
	$0 stop
	$0 start

	# Remember status and be quiet
	rc_status
	;;

	*)
	echo "Usage: $0 {start|stop|restart}"
	exit 1
	;;
esac
rc_exit

Standard POP3 und IMAP sind deaktiviert, da man ohnehin stattdessen die Varianten POP3s und IMAPs mit SSL Verschlüsselung verwenden sollte. Bei SMTP ist die unverschlüsselte Version nicht deaktiviert, da diese für den MTA benötigt wird. SMTPs ist allerdings möglich.
Das Skript lässt sich wunderbar mit dem SuSE Runlevel-Editor ins System einbinden... einfach das ganze nach /etc/init.d/ kopieren und einen Symlink von /usr/sbin/ auf das Skript (mit rc am Anfang wenn man es LSB konform haben möchte).


Gruß, Anus+
 
Last edited by a moderator:
Back
Top