Kategorien
lighttpd Linux

WordPress rewrite im Lighttpd

Um WordPress in dem Webserver Lighttpd mit “schönen URLs” zu betreiben ist ein Rewrite der Adresse notwendig.
Die benötigte “modrewrite” Regel in der Lighttpd habe ich für mich als Erinnerung folgend hinterlegt.:

$HTTP[”host”] =~ “^(?:www\.)?DOMAINNAMEN\.TLD(?::|$)” {
server.document-root = “/var/www/hosts/DOMAIN.TLD/”
accesslog.filename = “/var/www/logs/DOMAIN.TLD-access.log”
url.rewrite = ( “^/(wp-admin/|wp-content/|wp-includes/|wp-login\.php|xmlrpc\.php|robots\.txt|sitemap\.xml|wp-).*” => “$0″,
“^” => “index.php” )
}

 

Kategorien
lighttpd Linux

Lighttpd 1.5 – rebuild

System vorbereiten

aptitude install checkinstall python-mysqldb liblua5.1-dev libmysqlclient-dev \
libssl-dev libbz2-dev libpcre3-dev libgtkhtml2-0 libgtkhtml2-dev \
libsqlite-dev libsqlite3-dev libmemcache-dev libaio-dev libldap2-dev \
automake1.9 libgeoip-dev e2fsprogs e2fsprogs-devel \
aptitude remove --purge automake1.4 automake1.7 automake1.8

alleine wegen den Konfigurations und startscripten:

aptitude install lighttpd

Quellen herunterladen

cd /usr/src svn co svn://svn.lighttpd.net/lighttpd/trunk/
mv /usr/src/trunk /usr/src/lighttpd-1.5.0
cd /usr/src/lighttpd-1.5.0
./autogen.sh

GeoIP Modul für Lighttpd 1.5

wget http://redmine.lighttpd.net/attachments/download/717/mod_geoip_for_1.5.c
mv mod_geoip_for_1.5.c src/mod_geoip.c
vi src/Makefile.am
nach der letzter "lib_LTLIBRARIES" Zeile folgendes einfügen:
lib_LTLIBRARIES += mod_geoip.la
mod_geoip_la_SOURCES = mod_geoip.c
mod_geoip_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_geoip_la_LIBADD = $(common_libadd) -lGeoIP

GeoIP Datenbanken herunterladen

wget -O /var/www/GeoIP.dat.gz http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget -O /var/www/GeoLiteCity.dat.gz http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip /var/www/*.dat.gz

 

/etc/lighttpd/conf-available/10-geoip.conf
#### GeoIP
geoip.db-filename = “/var/www/GeoIP.dat”
geoip.memory-cache = “enable”
#### GeoIP Lite City
# geoip.db-filename = “/var/www/GeoLiteCity.dat”
# geoip.memory-cache = disable
server.modulesi += ( “mod_geoip” )

./configure –enable-maintainer-mode –prefix=/usr –with-openssl –with-lua=lua5.1 –with-memcache –with-gdbm –with-webdav-props –with-ldap –with-attr –with-linux-aio –with-mysql –with-webdav-locks

make
checkinstall –install=no -D –default –pakdir=/usr/src –gzman=yes

aptitude remove lighttpd

dpkg -i lighttpd_1.5.0-1_i386.deb

Kategorien
Linux

Nützliche OpenSSL Commands

Formatwandlung eines Zertifikates vom .pem in das .pkcs12 Format

openssl pkcs12 -export -out mycert.p12 \
-inkey $HOME/.globus/userkey.pem \
-in $HOME/.globus/usercert.pem -name “My Certificate”

Formatwandlung eines Host Zertifikates vom .pkcs12 in das .pem Format

openssl pkcs12 -in host.domain.p12 -clcerts -nokeys -out host.domain.cert.pem
openssl pkcs12 -in host.domain.p12 -nocerts -nodes -out host.domain.key.pem

# These files should then be placed in /etc/grid-security and httpd.conf
# modified accordingly. host.domain.cert.pem can safely be world readable
# but host.domain.key.pem must only be readable by root!:
chown root.root host.domain.key.pem
chmod 0400 host.domain.key.pem

Formatwandlung eines Benutzer Zertifikates vom .pkcs12 in das .pem Format

openssl pkcs12 -in export.p12 -clcerts -nokeys -out $HOME/.globus/usercert.pem
openssl pkcs12 -in export.p12 -nocerts -out $HOME/.globus/userkey.pem

# The user certificate can safely be world readable, but userkey.pem
# must only be readable by you!
chmod 0400 $HOME/.globus/userkey.pem

Passwort des Private keys ändern

openssl rsa -in $HOME/.globus/userkey.pem -des3
# you will be prompted for the old passphrase, the new passphrase
# and to verify the new passphrase

Informationen aus dem Zertifikat anzeigen.

# viele Informationen
openssl x509 -text -in cert.pem

# Aussteller
openssl x509 -noout -in cert.pem -issuer

# subject
openssl x509 -noout -in cert.pem -subject

# in welchem Zeitraum ist es gültig?
openssl x509 -noout -in cert.pem -dates

# Der Hash wert des Zertifikates
openssl x509 -noout -in cert.pem -hash

# Der MD5 Fingerprint
openssl x509 -noout -in cert.pem -fingerprint

Zertifikat überprüfen

openssl verify cert.pem

Kategorien
Linux

Prozesse verwalten

Prozess Anhalten: [Strg]+z
Prozess Beenden: [Strg]+c
Prozess in den Vordergrund holen: fg
Prozess in den Hintergrund schieben: bg

Kategorien
Forensik IPTables Linux security

Offene Ports anzeigen

Um herauszufinden welcher Dienst auf welchem Port lauscht sind folgende Zeilen sehr hilfreich.

netstat -anp | egrep '(Proto|0.0.0.0|:::)' | grep -v '127.0.0.1'
lsof -i
lsof |grep LISTEN
Kategorien
Forensik Linux security

Login versuche…

Es gibt auf jedem, offen im Internet zu erreichenden Server eine Unzahl von Login Versuchen mit den verscheidensten Benutzernahmen. Diese Bruteforce-Angriffe können einen Server auslasten und, im Schlimmsten Fall wird auch bei größter Vorsicht doch einmal ein Kennwort erraten.

Die SSH-Loginversuche lassen sich unter Linux mit den folgenden Snippets beobachten.:

cat /var/log/auth.log |grep "Failed password for invalid user "|cut -d' ' -f11|sort|uniq
cat /var/log/auth.log |grep "Failed password for invalid user "|cut -d' ' -f11|sort|wc -l

Um diese Bruteforce Passwort-Versuche zu unterbinden bietet es sich an im IPTABLES die Fehlerhaften Logins zu Monitoren und nach einigen Versuchen den Port 22, oder entsprechenden SSH-Port für einige Zeit zu sperren.

Im folgenden Beispiel wird eine Ausnahmeliste erszellt, bei diesen IP-Adressen wird nicht gesperrt, und im Anschluss nach 2 erfolglosen Loginversuchen ein Logeintrag gemacht und der Port 22 für 240 Sekunden gesperrt.

iptables -N SSH_WHITELIST
iptables -A SSH_WHITELIST -s 192.168.0.1 -m recent --remove --name SSH -j ACCEPT
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 240 --hitcount 2 --rttl --name SSH -j ULOG --ulog-prefix SSH_brute_force
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 240 --hitcount 2 --rttl --name SSH -j DROP