der runde würfel

26. August 2011

Apache Range Request Exploit

Kategorie: Computer,Kurios,Privat — Schlagwörter: , , , , , , , , , , , , , , — bigfoot @ 22:17

Bereits im Jahr 2005 (CVE-2005-2728) gab es einen ähnlichen Vorfall. Ebenso ähnlich gelagert 2007 (CVE-2007-0086). Nun kommt es erneut zu hektischen Flecken auf den Gesichtern von Systemadministratoren. Denn die Möglichkeit den Apache Webserver mit einem Range Request in die Knie zu zwingen, besteht erneut.

Die Entwickler von Apache beabsichtigen binnen 48 Stunden einen Patch auf den Markt zu bringen, um das Problem zu beheben.

Aktuell besteht hierzu ein CVE-2011-3192, sowie der entsprechende Eintrag bei secunia.com.

Zur Zeit gibt es zwei praktikable Varianten die als Workaround fungieren können.

1.) Eine Rewrite Rule, die jedoch unter Umständen auf dem System bestehende Regeln beeinträchtigen können.

RewriteCond %{HTTP:range} ^bytes=[^,]+(,[^,]+){0,4}$
RewriteRule .* – [F]

2.) Durch das aktivieren von mod_headers kann man gezielt den Range Header bearbeiten. Das gibt dann gezielt einen StatusCode “200″ zurück.

SetEnvIf Range (,.*?){10,} bad-range=1
SetEnvIf Range (?:,.*?){10,10} bad-range=1
RequestHeader unset Range env=bad-range

Andere Wege, den Header ganz zu entfernen oder die Header in Ihrer gesamten Größe zu begrenzen, führt in der Regel dazu, daß Streams, eBooks, etc. nicht vernünftig connectieren können.

Bleibt abzuwarten, wie lange das ApacheKiller.pl kursiert, es einen Patch gibt und wie lange es dauert, bis die Systemadministratoren diesen auch eingepflegt haben.

15. April 2011

iptables und brute-force

Kategorie: Computer — Schlagwörter: , , , , , , , , , , — bigfoot @ 22:55

Das Logfile meines Servers quillt jede n8 über. Eine Brute-Force SSH Attacke nach der anderen. Ein Freund sandte mir folgende Lösung zu:

iptables -N SSH_WHITELIST
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –set –name SSH
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j SSH_WHITELIST
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 600 –hitcount 2 –rttl –name SSH -j NFLOG –nflog-prefix SSH_brute_force
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -m recent –update –seconds 600 –hitcount 4 –rttl –name SSH -j DROP

Ich werde mal sehen, was das bringt.

9. April 2011

Linux iptables Firewall

Kategorie: Computer — Schlagwörter: , , , , , , , , , , , , , , — bigfoot @ 23:43
Ein Beispiel Script für eine Firewall, einfach ein Script anlegen unter /etc/init.d/firewall und via update-rc…. einbinden.
/etc/init.d/firewall

#!/bin/sh
# Firewallscript von tsmag.de
# Erstellt 8.9.2006, Revision 3 – 08.04.2011

WANIF=”eth1″
LANIF=”eth0″
DMZIF=”eth2″
INTIF=”eth3″

WANIP=”111.111.111.111″
LANIP=”10.100.37.6″
DMZIP=”10.100.38.254″
INTIP=”10.100.39.254″
NTPIP=”132.187.3.3″
EXTDNS=”130.149.4.20 141.1.1.1″
INTDNS=”10.100.37.251″

case “$1″ in

start)
echo “START FIREWALL”
modprobe nf_conntrack_ftp
# Standardverhalten setzen
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Alte Regeln entfernen

iptables -F
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

# Loopback-IF freigeben

iptables -A INPUT -s 127.0.0.1 -i lo -j ACCEPT
iptables -A INPUT -s $WANIP -i lo -j ACCEPT
iptables -A INPUT -s $LANIP -i lo -j ACCEPT
iptables -A INPUT -s $INTIP -i lo -j ACCEPT
iptables -A INPUT -s $DMZIP -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Antworten und bestehende Verbindungen akzeptieren

iptables -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state –state RELATED,ESTABLISHED -j ACCEPT

# Lokales Netzwerk freigeben

iptables -A INPUT -s 10.100.37.0/24 -j ACCEPT
iptables -A OUTPUT -d 10.100.37.0/24 -j ACCEPT

# SSH freigeben

iptables -A INPUT -p tcp –dport 22 -j ACCEPT

# Den Zugriff auf die Ext. DNSServer erlauben

for DNSSERV in $EXTDNS
do
iptables -A OUTPUT -p udp -d $DNSSERV –dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -d $DNSSERV –dport 53 -j ACCEPT
done
iptables -A OUTPUT -p udp –dport 53 -j REJECT

# Webzugriffe zulassen

iptables -A INPUT -p tcp –dport 80 -i $LANIF -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -i $WANIF -j ACCEPT
iptables -A INPUT -p tcp –dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 443 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 80 -i $WANIF -j ACCEPT

# SMTP zulassen

iptables -A INPUT -p tcp -i lo -s 127.0.0.1 –dport 25 -j ACCEPT
iptables -A INPUT -p tcp -i $LANIF -s $LANIP –dport 25 -j ACCEPT
iptables -A INPUT -p tcp -i $INTIF -s $INTIP –dport 25 -j ACCEPT
iptables -A INPUT -p tcp -i $DMZIF -s $DMZIP –dport 25 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 25 -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -i $WANIF –dport 587 -j ACCEPT
iptables -A INPUT -p tcp -i $LANIF –dport 587 -j ACCEPT
iptables -A INPUT -p tcp -i $INTIF –dport 587 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 587 -m state –state ESTABLISHED,RELATED -j ACCEPT

# POP3 fuer die Zeit des Testens freigeben

iptables -A INPUT -p tcp -i $LANIF -s 10.100.37.0/24 –dport 110 -j ACCEPT
iptables -A INPUT -p tcp -i $INTIF -s 10.100.38.0/24 –dport 110 -j ACCEPT
iptables -A INPUT -p tcp -i $DMZIF -s 10.100.39.0/24 –dport 110 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 110 -j ACCEPT
# POP3 SSL Freigeben
iptables -A INPUT -p tcp -d $WANIP –dport 995 -j ACCEPT
iptables -A OUTPUT -p tcp –dport 995 -m state –state ESTABLISHED,RELATED -j ACCEPT
#SNMP zulassen
iptables -A INPUT -p udp -i lo -d 127.0.0.1 –dport 161 -j ACCEPT
iptables -A OUTPUT -p udp -d 127.0.0.1 –dport 161 -j ACCEPT
# Specific connections
iptables -A INPUT -p udp -s $NTPIP –sport 123 -m state –state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p udp -d $NTPIP –dport 123 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp –sport 1024: –dport 1024: -m state –state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp –sport 1024: –dport 1024: -m state –state ESTABLISHED,RELATED -j ACCEPT
# Spoofing Attacken unterbinden und DoS
iptables -A INPUT -p tcp -m state –state NEW -m limit –limit 15/minute –limit-burst 3 -j ACCEPT
iptables -N SYN_FLD
iptables -A INPUT -p tcp –syn -j SYN_FLD
iptables -A SYN_FLD -m limit –limit 1/s –limit-burst 3 -j RETURN
iptables -A SYN_FLD -j DROP
iptables -A INPUT -p icmp -m limit –limit 1/s –limit-burst 1 -j ACCEPT
iptables -A INPUT -p icmp -j DROP
iptables -A OUTPUT -p icmp -j ACCEPT
#### WEITERES AUS SICHERHEITSGRUENDEN ENTFERNT
;;
stop)
echo “STOP FIREWALL”
iptables -F
iptables -X
# Default Policies setzen
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
;;
status)
echo “SHOW STATUS”
iptables -L -vn
;;
*)
echo “CALL UNDEFINED”
echo “Syntax: $0 {start|stop|status}”
exit 1
;;
esac

6. April 2011

Linux und die Zeit

Kategorie: Computer — Schlagwörter: , , , , , , , , , , — bigfoot @ 03:16

Wie hält man seinen Server aktuell? Ganz einfach, in dem man hin und wieder die Computer Zeit mit einem Zeitserver abgleicht:

Shellscript unter /root/scripts/ntp.sh

#! /bin/bash

#/usr/sbin/ntpdate -b wrzx03.rz.uni-wuerzburg.de
/usr/sbin/ntpdate -b wrzx03.rz.uni-wuerzburg.de > /dev/null 2>&1

Die erste Zeile ist auskommentiert, denn um die Firewall zu testen, sollte man schon Fehlermeldungen ausgeben lassen. Im Betrieb später, ist das Wurscht.
Und in der /etc/crontab
……..
00 *    * * *   root    /root/scripts/ntp.sh
………

Von nun an, ist die Zeit in etwa immer OK.

 

7. Dezember 2010

Smardcards und Windows 7

Windows 7 mit 64 Bit (x64) ist schon was feines. Was ich aber nicht verstehe, ist die angebliche Kompatibilität zu 2000, XP und Vista.
Heute wollte ich die SiCrypt Smartcard in Betrieb nehmen. Dazu in den Schrank gegriffen und die CD’s rausgeholt. Einen kompletten Satz Cryptographie CD’s ins Wohnzimmer getragen und fleissig Diskjockey gespielt. Doch SiCrypt (Cryptographic Service Provider Tools), SiCrypt Smart 2, sowie protect² SmartCase lassen sich nicht einfach installieren. Trotz kompatibilitätsmodus. Nicht mal den Treiber für die Standart Smartcard will der Computer auf die SSD kopieren.
Noch mal aufgestanden und die CD’s gegen einen weiteren Satz getauscht. SmartCase Logon+ in der Version 3.0.3. Das war beim Laptop dabei. Das klappt, aber mit der Windows eigenen SmartCard Verwaltung bekomme ich die Karte nicht ans laufen. Jetzt fragt Ihr Euch sicherlich, warum so einen HäckMäck. Nun ich wollte einige Domains mit einer SSL Clientzertifikatsauthentifizierung ausstatten, so dass die SSL Inhalte erst nach der Zertifikatsvalidierung und der Eingabe des Benutzers und des Web-Passwortes. Da die SmartCard aber nur das Zertifikat freigibt, wenn man als richtiger Benutzer angemeldet ist, sowie die PIN der SmartCard kennt, ist das Verfahren recht sicher. Sollte man die Freigabe noch mit mindestens zwei Fingerabdrücken verbinden, wäre es Paranoid – aber möglich.
Naja, jedenfalls lese ich die SmartCard in die Software ein und ich werde aufgefordert, die PIN einzugeben. Ich wälze also alle Handbücher und beigefügten Zettel des damaligen Lieferumfanges durch und finde nichts. Doch die große Krake Gurgel kennt bestimmt des Rätsels Lösung und so werde ich tatsächlich auf den Seiten des Kartenherstellers fündig. In einem Dokument zur API Beschreibung finde ich zufällig die default PIN: “12345678″ Suuuuper. Dann kann es jetzt ja los gehen. PIN’s vom User und vom Admin der Karte geändert und das Securedrive installiert.
Eine 512 MB große Datei auf dem NAS-Server angelegt. 2048 Bit Schlüssel drüber gebügelt und alles ist gut. Ist alles gut? Ich entscheide mich zu einer zusätzlichen Verschlüsselung und lege in die 512 MB große Datei, eine 507 MB große TrueCrypt Datei an. Wenn ich es jetzt noch schaffe, dass der Key vom TrueCrypt mit auf die SmartCard wandert und die ganze Klamotte auch mit der Karte meiner Frau funktioniert,… Ein langer Weg, aber den muss ich jetzt zu Ende gehen.
Achja, die CSP API konnte ich übrigens nicht mehr finden, auch wenn Sie für .NET Framework 4 angekündigt war. Scheinbar ist das Thema zu heiß geworden. Jedenfalls sind alle Links die ich bei msdn aufgerufen hatte, nur Text oder funktionieren nicht. Einen Download mit der API jedenfalls, ist nicht da. Somit ist das Thema Cryptographie etwas weiter weg gerutscht. Aber ich hoffe, dass ich das Teil noch irgentwo herbekomme.

Ältere Einträge »

powered by wordpress; my content © 2009 - 2016