Port auf entfernten Server mit netcat prüfen

Heute wollte ich ein E-Mail Konto auf meinem Laptop einrichten. Bekam aber immer wieder die Meldung, das keine Verbindung zum Server besteht. Meine erste Vermutung war die Firewall auf dem Server. Also wollte ich wissen ob der Port überhaupt offen ist.

necat lieferte die Antwort. POP3_SSL ist nicht offen für meine IP.

$ nc -zv www.domainname.de 995
nc: connect to www.domainname.de port 995 (tcp) failed: Connection timed out

Nützlich: mit netcat lassen sich auch Portbereiche definieren und testen.

$ nc -zv www.domainname.de 80-83
Connection to www.domainname.de 80 port [tcp/http] succeeded!
nc: connect to www.domainname.de port 81 (tcp) failed: Connection timed out
nc: connect to www.domainname.de port 82 (tcp) failed: Connection timed out
nc: connect to www.domainname.de port 83 (tcp) failed: Connection refused

Webfonts in CDN ablegen (Access-Control-Allow-Origin)

Ich verwende gern die Webfonts Font Awesome um meine Projekte ein wenig zu verschönern. Das Projekt bietet neben einem CDN auch die Möglichkeit die Projektdateien herunterzuladen. Kurz den Pfad zu den Fonts anpassen und schon kann es losgehen.

Bei Absoluten Pfaden hat man aber schnell das Problem, das beim Ablegen der Fonts im CDN (oder unter einer Subdomain für statische Inhalte) der Browser das Laden aufgrund des fehlenden Access-Control-Allow-Origin Header blockt.

Um den Zugriff nun auch von anderen Domains aus zu erlauben, z.B. einer lokalen Testumgebung, kann bei einem Apache die Site-Konfiguration oder eine .htaccess Datei genutzt werden.

Ich habe dazu einfach die folgende Zeilen in die .htaccess geschrieben.

<IfModule mod_headers.c>
    <FilesMatch "\.(ttf|ttc|otf|eot|svg|woff)$">
       Header set Access-Control-Allow-Origin "*"
    </FilesMatch>
</IfModule>

Hinweis: Beim Apache muss das Modul headers aktiviert sein. Unter Ubuntu funktioniert das wie folgt.

$ sudo a2enmod headers
$ sudo service apache2 restart

Bei der Verwendung eines NGINX einfach die folgenden Zeilen in die Konfigurationsdatei einfügen.

if ($filename ~* ^.*?\.(ttf)|(ttc)|(otf)|(eot)|(svg)|(woff)$){
	add_header Access-Control-Allow-Origin *;
}

Gruppieren und zählen von IP Adressen in der access.log

Manchmal will man als Administrator/Webmaster wissen, von welchen IP Adressen auf den Webserver zugegriffen wird. Ein sehr schneller weg um das herauszufinden geht über die access.log.

Der folgende Befehl liefert die Anzahl aller IP Adressen in der access.log.

$ pcregrep -o ‚^[0-9.]+(?=\s)‘ /var/log/apache2/access.log | sort | uniq -c | sort -bg

Das Egebnis sieht in etwa so aus. (Die Anzahl der Einträge gefolgt von der IP)

   5 84.159.***.***
  39 216.67.***.***
  41 81.16.***.***
  90 10.100.100.123
 919 10.100.100.36
1880 10.100.100.56
2613 10.100.100.56

Hinweis: Die öffentlichen IP Adressen dieses Beispiels eines Testservers wurden mit Sternchen unkenntlich gemacht.

Sollte pcregrep nicht installiert sein, kann man es wie folgt installieren.

$ sudo apt-get install pcregrep

CSR für Zertifikatsanfrage erstellen

Damin man ein SSL Zertifikat bei einer CA (Certification Authority) beantragen kann, benötigt man einen CSR (Certificate Signing Request). Diesen erstelle ich immer auf der Maschine auf der später das SSL Zertifikat eingesetzt werden soll.

Ausgangspunkt für einen CSR ist ein privater Schlüssel. Sollte dieser nicht vorhanden sein, kann er mit folgendem Befehl erstellt werden.

$ openssl genrsa -out domainname.de.key 4096

Jetzt kann mit Hilfe des privaten Schlüssels der CSR erzeugt werden.

$ openssl req -new -key domainname.de.key -out domainname.de.csr

Im folgenden werden ein paar informationen abgefragt:

Country Name (2 letter code) [AU]: DE
State or Province Name (full name) [Some-State]: Berlin
Locality Name (eg, city) []: Berlin
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Firmenname GmbH
Organizational Unit Name (eg, section) []:  
Common Name (eg, YOUR name) []: www.domainname.de
Email Address []: webmaster@domainname.de

Bei Bedarf kann man den CSR noch einmal testen:

$ openssl req -noout -text -in domainname.de.csr

Der erstellte CSR kann jetzt beim Zertifikatsausteller eingereicht werden.

Node.js und npm unter Ubuntu 12.04 installieren

Ich betreue einige Systeme die mit Ubuntu 12.04 LTS laufen. Der Long Term Support hat einige Vorteile. Leider sind die Software Versionen in den Paketquellen nicht immer die aktuellsten. Beispielsweise ist in den offiziellen Paketquellen für Ubuntu 12.04 nur die Version v0.6.12 von Node.js verfügbar.

Damit man mit der aktuellsten Version von Node.js kann, verwendet man am besten das PPA von Chris Lea.

$ sudo apt-get install python-software-properties
$ sudo apt-add-repository ppa:chris-lea/node.js
$ sudo apt-get update

Installieren von Node.js

$ sudo apt-get install nodejs

Testen

$ node -v
v0.10.33

Npm sollte jetzt auch aktuell sein.

$ npm -v
1.4.28

Hinweis: Die Versionsnummer zeigt im Beispiel den Stand heute und kann morgen schon eine andere sein.