home » search tags
Die Suche tag = useless ergab 143 Treffer:

Juni
22
janitor » #useless #docker #vpn
Wer Docker auf einem System startet/installiert auf dem ein VPN aktiv ist, wird meist mit folgender Fehlermeldung scheitern: [code]Error starting daemon: Error initializing network controller: list bridge addresses failed: no available network Dies kann man relativ einfach lösen, indem man das Interface manuell erstellt
sudo brctl addbr docker0
sudo ip addr add 192.168.42.1/24 dev docker0
sudo ip link set dev docker0 up
ip addr show docker0
sudo systemctl restart docker

Juni
18
janitor » #useless #self #twitter
Da ich nun endlich wieder zur Pflege von uselessMouse Zeit finde, gibt's auch gleich ein paar Neuerungen, darunter u.a. ein (jetzt bitte einen Trommelwirbel!) eigenen Twitter Account. Was man auf diesem Account finden kann? Erstmal nur die Postings von uselessMouse, aktuell bin ich an der Integration.

Und da ich gerade einen Lauf hatte, gab es auch gleich ein neues Logo bzw. Headergrafik ^^
Juni
17
Docker unter Linux ist Top, aber unter Windows eher ein Flopp



Es soll nur keinen Hyper-V neben mir geben? Geht's noch?
Juni
17
janitor » #useless #iOS #iPhone
Jeder kennt sie, die Schublade in der alles abgeladen wird. Ab und an durchsucht man so eine Schublade...

In meinem Falle ist mir ein altes iPhone 4 in die Hände gefallen, nun stell ich mir die Frage

Was kann man damit noch machen?

Zumindest kein aktuelles iOS installieren, denn leider ist bei iOS 7.x schluss.

Falls jemand eine Idee für die Verwendung eines alten iPhone hat, immer her damit!
Juni
16
janitor » #useless #SSL #security
Ich hatte ja bereits SSL für uselessmouse aktiviert, allerdings war CAcert nicht als trusted in den meisten - bzw. allen - Browser eingetragen, was immer wieder zu Problemen geführt hat.
Aus diesem Grund habe ich mich entschlossen alle Seiten auf Let's Encrypt umzustellen. Im gleichen Zuge hab ich noch ein paar weitere features (CSP, HSTS, XFO,...) aktiviert
Juni
15
Wer TeamCity mittels Docker nutzen möchte/muss kann das folgende docker-compose.yml nutzen

teamcity-server:
image: jetbrains/teamcity-server
ports:
- 8111:8111
volumes:
- ./datadir:/data/teamcity_server/datadir
- ./logs:/opt/teamcity/logs

teamcity_agent:
image: jetbrains/teamcity-agent
volumes:
- ./confdir_agent:/data/teamcity_agent/conf
environment:
- SERVER_URL=teamcity-server:8111
links:
- teamcity-server



ein einfaches docker-compose up sollte anschliessend beide Container starten. Der Agent kann unter "Agents" -> "Unauthorized" gefunden und authorisiert werden.
Dezember
24
janitor » #useless
Knapp 6 Monate ist das letzte Posting her und ich hab' mir als gute Vorsatz für das kommende Jahr vorgenommen wieder öfter bzw. regelmässig etwas zu verfassen.

Die Liste der Artikel die auf eine Veröffentlichung warten ist lange und beinhaltet u.a. die Themen openVPN, ELK, Foreman, Puppet,...
Juni
13
janitor » #useless #self
Wirklich fertig werde ich mit dem Code von UM sicherlich nie, daher gab's heute mal wieder ein kleines Update...

Hauptsächlich drehte es sich um eye candy des Codeblock, und am Layout im allgemeinen (z.B. ist der Schlagschatten nun weg).

Das wichtigste neue Feature ist sicherlich die Möglichkeit nun statischen Inhalt erstellen zu können, s.a. Testseite.
Juni
11
janitor » #useless #wtf
Scheinbar ja, denn ich habe kürzlich diese Mail erhalten:
Notice of Data Breach

You may have heard reports recently about a security incident involving Myspace.
We would like to make sure you have the facts about what happened,
what information was involved and the steps we are taking to protect your information.
...

Mir war garnicht bewusst das ich bei Myspace noch einen Account hatte. Irgendwie ist Myspace in meinen Augen sowas von '90er ;)

Wer die ganze Geschichte lesen möchte, kann das auf dem Blog von Myspace machen.

Farewell myspace...

P.S. ich hab' mein Passwort natürlich geändert, auch wenn ich meinen Account anschliessend gelöscht habe.
Mai
30
janitor » #useless #self #movie
Nur mal so am Rande..."Warcraft - The Beginning" ist:

... absolut genial wenn man das Warcraft-Universum/WoW kennt oder mag. IMHO muss man den Film sehen!

... ein netter Fantasyfilm, wenn man man das Warcraft-Universum/WoW nicht kennt oder mag.


Achja und die Frostwölfe sind einfach ein paar BigBadMotherF***er und Llane ein Lappen! ^^
Mai
27
janitor » #useless #self
Es ist geschafft!

Ab heute läuft UM (und alle services und sub-domains) auf der neuen HW.
Im Verlaufe des Umzuges wurden u.a. auch alle Mailaccounts mit einem neuen Passwort versehen.
Mai
24
janitor » #useless #wtf #twitter
Eigentlich wollte ich in den kommenden Tagen die Integration von Twitter in UM realisieren, aber wenn ich sowas lese beim erstellen eines API-Keys:
Error
You must add your mobile phone to your Twitter
profile before creating an application.
Please read https://support.twitter.com/articles/321492.

dann vergeht mir die Lust!

Wozu und wieso um alles in der Welt benötigt Twitter meine Mobilnummer? facepalm

Vielleicht habe ich keine... oder möchte diese einfach nicht hergeben?! Die haben doch schon meine Email.
Mai
23
Über den Sinn und Unsinn von HTTP-Proxys kann man streiten... aber welchen Sinn macht es bitte in einem Unternehmen einen Proxy zu betreiben der auf externe (!!) Filter angewiesen ist?

Ich hatte hier den Fall das eine GitLab-Instanz auf eine meiner Domains nicht erreichbar war über einen internen Proxy, grund hierfür war der Filter von BlueCoat. Am Inhalt der Seite konnte es nicht liegen, denn die Domain hatte keinerlei Inhalt und auf der Subdomain git.DOMAIN.TLD läuft GitLab...

Für BlueCoat ist es ausreichend eine Domain zu blocken, nur aufgrund ihres Namen ôO egal welcher Inhalt wirklich vorhanden ist. Auf der Seite mit dem Hinweis das der Zugriff blockiert wurde, gibt es auch einen Link zu einem Webformular von BlueCoat das man nutzen kann um zu bitten die Seite zu entsperren.
Also das Formular ausgefüllt, abgeschickt und gedacht

wenn ich überhaupt was hören sollte, dann sicherlich in Wochen


Doch falsch gedacht, nach nur 3h kam folgende Mail
Aufgrund Ihrer Empfehlung und nach sorgfältiger Prüfung
des eingereichten Webinhaltes, hat ein Webinhalts-Analyst diese URL
neu eingestuft als Technologie/Internet

Ob der Zugriff nun wirklich funktioniert, werde ich morgen berichten.
Mai
20
janitor » #useless #self
Es ist geschafft... UM ist auf die neue HW umgezogen!

Alle Dienste sollten nun auf der neuen Hardware laufen und über genügend ressourcen verfügen!

Aktuell ist noch kein Zugriff über HTTPS möglich, da ich noch auf das Zertifikat warte.
Mai
15
janitor » #useless #self
Wie schon geschrieben bin ich aktuell dabei die neue HW für UM einzurichten, bis dato läuft bereits der Mail-, Web- und DNS-Server. Noch offen sind VPN-Server und das backend mit Elasticsearch...

Wenn alles gut geht, dann sollte der eigentlich Umzug auf die neue HW in der kommenden Woche ablaufen.
Mai
12
janitor » #useless #self
Endlich... es gibt neue Hardware für UM!

Aus dem aktuell vorhandenen AMD Athlon 64 5600+ X2 mit 4GB wird ein Intel Core i7 950 mit 48GB ^^

Nach dem Umzug auf die neue HW sollten wieder alle Serverdienste schneller und stabiler laufen.
April
8
janitor » #useless #git
Der eine oder andere hat es sicherlich bereits bemerkt... das GIT von uselessmouse.de ist aktuell nicht verfügbar. Ich gehe davon aus das es bis heute Abend wieder (in neuem Glanz) erreichbar ist.
Februar
27
Die Bahn gibt eine REST-API frei um u.a. Bahnhofssuche, Abfahrtstafel, Ankunftstafel und Zuglauf abzufragen.

Grundsätzlich finde ich die Idee von OpenData nicht schlecht, wenn ich mir die URL der API ansehe, dann finde ich das aber irgendwie gruselig:

http://open-api.bahn.de/bin/rest.exe ... .exe!!!
Januar
30
janitor » #useless #security #gpg
Hier und da muss man den public key eines anderen Benutzers importieren, da ich dieses nur ungerne blind erledige möchte ich den Inhalt des Keys vorher sehen.

Dafür kann man den folgenden Befehl nutzen (hier die info des debmon.org Projects)
gpg repo.key

die Ausgabe sollte wie folgt sein
pub  2048R/29D662D2 2012-10-03
uid debmon.org (debmon.org repository signing key) <contact@debmon.org>
sub 2048R/575BA6B9 2012-10-03</contact@debmon.org>



Möchte man hingegen den kompletten fingerprint sehen muss die Option --with-fingerprint genutzt werden.
Januar
15
janitor » #useless #macos #tools
Eigentlich soll das hier nur eine Gedächtnisstütze für mich selbst sein, wenn wiedermal ein DMG mit einem bestehenden Verzeichnis erstellen möchte. Ein hdiutil create -volname [BESCHREIBUNG] -srcfolder [VERZEICHNIS] -ov -format UDZO [NAME].dmg ist die Lösung!
Dezember
24
janitor » #useless
      \         /   \         /   \         /   \         /
_\/ \/_ _\/ \/_ _\/ \/_ _\/ \/_
_\-'"'-/_ _\-'"'-/_ _\-'"'-/_ _\-'"'-/_
(_, ,_) (_, ,_) (_, ,_) (_, ,_)
| ^ ^ | | o o | | a a | | 6 6 |
| | | | | | | |
| | | | | | | |
| Y | | @ | | O | | V |
`._|_.' `._|_.' `._|_.' `._|_.'
Dasher Dancer Prancer Vixen

\ / \ / \ / \ /
_\/ \/_ _\/ \/_ _\/ \/_ _\/ \/_
_\-'"'-/_ _\-'"'-/_ _\-'"'-/_ _\-'"'-/_
(_, ,_) (_, ,_) (_, ,_) (_, ,_)
| q p | | @ @ | | 9 9 | | d b |
| | | | | | | |
| | | | | _ | | |
| \_/ | | V | | (_) | | 0 |
`._|_.' `._|_.' `._|_.' `._|_.'
Comet Cupid Donder Blitzen

\ /
_\/ \/_
_\-'"'-/_
(_, ,_)
| e e |
| |
'-. | _ | .-'
--= |((@))| =--
.-' `._|_.' '-.
Rudolph


Quelle: http://www.angelfire.com/ca/mathcool/christmas.html
November
30
Wenn ich den folgenden Wiki-Eintrag bei Hetzner lese wird mir einfach nur schlecht.
Nicht nur weil mein eigener Server bei Hetzner läuft, sondern auch die Dreistigkeit von Netzprovider (DTAG,...) auf beiden Seiten der Leitung zu kassieren.

Ich stelle mir die Frage was bietet mir der Provider? Ich meine, wieso soll ich mehr zahlen (Stichwort: Double Paid Traffic)?

Mal unter uns, wenn ein Provider (und damit meine ich die Netzprovider) solches Gebahren an den Tag legt, dann sollen seine Kunden einfach von meiner Webseite fernbleiben... oder noch viel besser... sie sollten sich bei ihrem Provider beschweren!

shame on you DTAG!
Update

Bei heise.de hat man den Link nun auch gefunden.
November
28
Im Zuge einer Umstellung von RedHat Satellite auf Spacewalk bin ich auf zwei tools gestoßen die das spiegeln von RPM-repos ermöglicht. Da wäre zum einen mrepo und zum anderen Pulp. Leider konnte ich mit mrepo keine repos aus dem RHN syncen, daher viel meine Wahl auf Pulp.

Die Installation verläuft relativ einfach, lediglich unter EL kommt es zu Problemen mit dem Paket qpid, dies lässt sich aber leicht lösen (dazu später mehr).

Diese Anleitung basiert auf einem EL6-System, sollte sich aber 1:1 auf ein EL7 übertragen lassen.

Pulp repo aktivieren
cd /etc/yum.repos.d/ && \
wget https://repos.fedorapeople.org/repos/pulp/pulp/rhel-pulp.repo


EPEL repo aktivieren
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm  && \
yum clean all && \
yum update


mongodb installieren
yum install mongodb-server


Installation qpid

wie oben bereits beschrieben schlägt die Installation von qpid schlägt aufgrund fehlender Abhängigkeiten fehl, dieses kann man durch die Installation einer alten Version lösen.
wget https://kojipkgs.fedoraproject.org//packages/qpid-proton/0.9/3.el6/x86_64/qpid-proton-c-0.9-3.el6.x86_64.rpm && \
yum localinstall qpid-proton-c-0.9-3.el6.x86_64.rpm

anschließend kann man qpid installieren
yum install qpid-cpp-server qpid-cpp-server-store


Installation Pulp

Die eigentlich Installation von Pulp kann man nun starten
yum groupinstall pulp-server-qpid

Bevor Pulp genutzt werden kann, muss dessen interne DB initialisiert werden
sudo -u apache pulp-manage-db



Nun sollten (falls nicht bereits geschehen) alle Services gestartet und aktiviert werden.
service httpd restart && \
chkconfig httpd on && \
service pulp_resource_manager restart && \
chkconfig pulp_resource_manager on && \
service pulp_workers restart && \
chkconfig pulp_workers on && \
service pulp_celerybeat restart && \
chkconfig pulp_celerybeat on

November
22
Hier und da arbeite ich mit RPM-basierenden Systemen in Verbindung mit Spacewalk, dabei muss ich öfters die Signaturen von RPMs anzeigen editieren... daher hier eine kleine Merkliste:

Installierte Schlüssel anzeigen
rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n'


Fingerprint einer Schlüsseldatei anzeigen
gpg --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY


Schlüssel eines RPMs anzeigen
rpm -K /path/to/RPM

November
22
janitor » #useless #trash
... werde ich hoffentlich wieder genug Zeit finden um hier News o.ä. zu posten. Aktuell komme ich (abgesehen von internen Projekten) leider zu garnichts =(
Oktober
10
janitor » #useless #spam #trash
Eigentlich schaue ich nie in meinen SPAM-Ordner (wieso auch, da liegt ja nur SPAM)... beim heutigen leeren sind mir Mails nach folgendem Muster aufgefallen


Hallo,

Ich verkaufe Emails!

gmx.de 8,2 Millionen
web.de 6,5 Millionen
gmail.com 12 Millionen
freenet.de 1,5 Millionen
t-online.de 5,5 Millionen
hotmail 2,4 Millionen

Misc (verschiedene .de Domains) 9,4 Millionen

Die Emails sind zu 100% gültig (keine bounces) Stand 4 Oktober 2015

Preis $10 000 für alle.


Falls Sie Interesse haben kontaktieren Sie mich per Email unter info@xxx-xxx.xx

Die Bazahlung ist nur mit Bitcoin möglich!


Gruss
Michael


Irgendwie Frage ich mich nun ist das deren ernst?,per SPAM wollen sie SPAMMER die Adressen der SPAM-Empfänger verkaufen?? Und wenn es stimmen sollte, woher kommen die Adressen?

Kann bitte jemand $10K investieren um das genauer analysieren zu können? ;)
Oktober
1
janitor » #useless #jabber #ccc
Nur ein kleiner Hinweis, jabber.ccc.de ist wieder online. hier die ausführliche Information zum Ausfall...
September
29
janitor » #useless #twitter
Weil wir gerade beim Thema Twitter waren, Edward Snowden kann man dort ab heute ebenfalls finden:

@Snowden
September
29
janitor » #useless #jabber
Leider ist aktuell jabber.ccc.de offline, daher bin auch ich z.Zt. nicht zu erreichen.

Die Gründe zur Abschaltung des services sind aktuell noch unklar. Bei Twitter (@jabbercccde) kann man lediglich folgendes lesen:
This server has been temporarily switched off intentionally. The reason is neither government interference nor legal threat (1/2)

Wirklich viel Informationen kann man dazu nicht finden... auch motherboard hat keine weiteen Infos.

Bleibt wohl nur abwarten (oder sich einen neuen Account besorgen)...
Mai
27
Da ich all meine Development-, Test- und Buildsysteme auf Basis von Vagrant und VirtualBox betreibe, hat mir das feature snapshot öfters vor schlaflosen Nächsten bewahrt. Leider ist dieses feature nicht out of the box (zumindest bei Version 1.7.2) aktiv.

Schauen wir uns zuerst alle vorhanden Plugins an
$ vagrant plugin list
vagrant-share (1.1.3, system)

Wie man erkennen kann fehlt das Plugin vagrant-vbox-snapshot welches man mit vagrant plugin install vagrant-vbox-snapshot installiert werden kann.

Folgende Optionen kennt vbox-snapshot:

  • back : führt einen rollback auf den letzten snapshot durch
  • delete : löscht einen snapshot
  • go : stellt einen bestimmten snapshot wieder her.
  • list : listet alle vorhandenen snapshots
  • take : erstellt einen neuen snapshot
Mai
5
Um unterwegs arbeiten zu können, nutze ich VirtualBox auf meinem Laptop.

Heute wollte ich einen Host-only Adapter einrichten, doch diese Option konnte ich bei der entsprechenden VM nicht auswählen



Der entsprechende Adapter muss zuerst unter VirtualBox -> Preferences -> Network -> Host-only Networks hinzugefügt werden


April
22
janitor » #useless #Schweiz
... Neuigkeiten! Versprochen!

Leider ist der Umzug in die Schweiz noch nicht ganz abgeschlossen, daher gibt es hier aktuell kaum Neuigkeiten.

Man kann über die Schweiz sagen was man möchte, aber FTTH ist eine feine Sache. ^^

Ich hab mir soeben eine 1Gb/s Leitung bestellt... die Lieferung soll in den nächsten 5 Tagen erfolgen. Ich bin gespannt!
April
5
janitor » #useless #Schweiz
Dem einen oder anderen wird die Tatsache meines Umzugs sicherlich bekannt sein... ansonsten:

Ab 01.05.2015 wohne und arbeite ich in der Schweiz!


Bis dahin gibt es noch einiges zu erledigen und zu berichten...
März
17
janitor » #useless #self
Auch wenn es hier aktuell still wie in einer Geisterstadt ist... dafür gibt es einen Grund!

Doch dazu gibt's in den nächsten Tagen mehr info und es geht dann auch wieder technisch weiter.
Februar
7
janitor » #useless #twitter
Aktuell bin ich am überlegen ob ich in Twitter in uselessmouse.de integrieren soll!? Ich denke dabei an eine automatisches aktualiseren, sobald ich hier ein Posting verfasse...

Wieso das ganze? Naja, die offensichtlichste Begründung wäre weil man es kann und ich würde es eher als POC sehen.

Na mal sehen ob ich etwas Zeit dafür finden kann.
Februar
4
janitor » #useless #raspberry
Nach langem warten ist es endlich soweit, es gibt einen neuen Bastelrechner sprich den Raspberry Pi 2


Folgendes wurde verbesser bzw. erweitert:
  • A 900MHz quad-core ARM Cortex-A7 CPU (~6x performance)
  • 1GB LPDDR2 SDRAM (2x memory)
  • 4 x USB

Der verdoppelte Speicher und die schnellere CPU sollten einen ordentlichen Zuwachs an performance bringen... und manch eine Anwendung kann nun endlich auch auf dem PI laufen.

Wie immer liegt der Preis bei $35, für mich ein klares muss ich haben ;) und daher hab' ich mir einen bestellt.
Februar
3
Wie hier bereits erwähnt habe ich für knapp eine Woche Google Analytics auf uselessmouse.de eingesetzt und muss zugeben das Ergebnis ist ernüchternd.

OK, ich muss zugeben GA bietet viele bunte Grafiken und detailierte Informationen zu Besuchern aber (IMHO) sind davon ~90% unnötig, lediglich der Punkt Akquisition > Suchanfragen bietet im Gegensatz zu Piwik eine gute Quelle um zu erfahren über welche Keywords die Besucher auf die Seite kommen.

Folgendes ist mir dabei aufgefallen:

Suchanfragen Top3
- kibana4
- logstash fail2ban
- fail2ban logstash

Daher werde ich mich gerne in Zukunft mehr um ELK kümmern und mehr darüber schreiben.

Zielseiten Top3
- /search/tag/useless/
- /archive/news/75/fail2ban-daten-visualisieren-mit-elasticsearchkibanalogstash/
- /search/tag/elasticsearch/

Auch hier zeigt sich das die meisten Besucher an ELK am meisten Interesse haben... dem komme ich natürlich gerne nach.

Sprachen Top3
- ru
- en-us
- de

DAS verwundert mich nun, da meine Seite zu 100% aus de_de besteht... *kopfkratz*

Fazit

Piwik ist für mich nicht nur eine echte Alternative zu GA sondern ein vollwertiger Ersatz, daher ist GA auch wieder deaktivert!
Januar
28
Aktuell lasse ich google analytics auf uselessmouse.de laufen... ob dies dauerhaft aktiv bleiben wird kann ich aktuell nicht sagen.

Grundsätzlich geht es mir darum zu erfahren welche Daten mittels GA erhoben werden können.
Januar
28
janitor » #useless #puppet #bug
Eigentlich wollte ich nur einen NFS-mount mit Puppet durchführen

mount { '/mnt/code/' :
ensure => 'mounted',
device => 'nfs-server:/mnt/code',
fstype => 'nfs',
options => 'defaults',
atboot => true,
}

und beim ersten Durchlauf des agent wurde auch kein Fehler gemeldet und der mount war vorhanden. Ab dem zweiten Durchlauf trat aber der folgende Fehler auf:
Could not evaluate: Execution of '/bin/mount -o defaults /mnt/code/' returned 32: \
mount.nfs: /mnt/code is busy or already mounted



Grund hierfür ist ein Bug von Puppet im handling der mount-ressource, denn tauscht man den resource identifier von /mnt/code/ zu /mnt/code (also ohne abschließenden /) dann läuft alles sauber durch.

Den passenden Bug kann man hier bei Puppet finden.
Januar
28
janitor » #useless #bug #glibc
Auf der oss-sec Mailingliste gab die Firma Qualys bekannt einen Fehler in der glibc beim Aufruf von gethostbyname() gefunden zu haben über den Schadcode ausgeführt werden kann.

Glibc-Versionen ab 2.18 sind von dem Problem nicht mehr betroffen.

Mit folgendem C-Code kann überprüft werden ob ein System betroffen ist
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>

#define CANARY "in_the_coal_mine"

struct {
char buffer[1024];
char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };

int main(void) {
struct hostent resbuf;
struct hostent *result;
int herrno;
int retval;

size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
char name[sizeof(temp.buffer)];
memset(name, '0', len);
name[len] = '\0';

retval = gethostbyname_r(name, &resbuf;, temp.buffer, sizeof(temp.buffer), &result;, &herrno;);

if (strcmp(temp.canary, CANARY) != 0) {
puts("vulnerable");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}

Nach dem übersetzen mit
gcc GHOST.c -o GHOST

kann das Binary mit
./GHOST

gestartet werden, die Ausgabe vulnerable bzw. not vulnerable ist selbstsprechend.
Januar
27
Wie ich hier bereits geschrieben habe, wurde der Veröffentlichung von shield für elasticsearch sehnlichst von mir entgegengefiebert... Aber was muss ich lesen:
...Shield enriches our Gold and Platinum subscription...

ôO

Es gibt zwar die Möglichkeit eine 30tägige trial zu erhalten, aber ich konnte auf der ganzen Webseite nichts zu den Preisen der einzelnen Supportverträge finden (transparenz sieht anders aus).

** Update **

Mail an elasticsearch bzgl. Supportpreise ist raus und ich bin gespannt.

Januar
25
janitor » #useless #monitoring
Seit Jahren nutze ich Nagios als das Monitoringwerkzeug, zu 100% war ich damit zwar nie zufrieden da mir in der Basis z.B. folgendes gefehlt hat
  • eine (REST)API
  • ein Webinterface für die Konfiguration


Zwar leisten Erweiterungen wie nagios-api oder NConf gute Arbeit, müssen aber immer manuell gepflegt/erweitert werden.

Als eine mögliche Alternative (nein, zabbix ist für mich kein Alternative) könnte nun boson werden.

Bosun ist eine Entwicklung von Stackoverflow und das Announcment liest sich wirklich spannend und vielversprechend.

Ich denke in den kommenden Tagen werde ich es mir mal etwas genauer ansehen und ausgiebig testen.
Januar
10
janitor » #useless #puppet
Am 24.04. findet in Berlin wieder ein Puppet Camp statt.

Ticket? => Checked!

Hotel? => Checked!

Ich bin gespannt und freu mich.

Januar
7
Eigentlich wollte ich das Thema NCSoft aufsich beruhen lassen, da es keine Möglichkeit gab eine entsprechende Anfrage bzw. ein Hinweis auf deren (schrottiges) Mailing loszuwerden...

Aber ich dachte mir Hey, gib den Jungs doch wenigstens eine Chance....

Nachdem ich also eine Mail an support@ncsoft.com verfasst habe, in der ich detailiert und im besten Sonntagsenglisch das Problem erklärt habe kam eine Mail (ebefalls von support@ncsoft) mit folgendem Inhalt:
PLEASE NOTE:

We are currently directing all requests to our game specific sites and will no longer be accepting requests via the support@ncsoft.com email address. This request will be set to Closed and will not receive a response. Please visit http://help.ncsoft.com and click on the icon for the game you need assistance with. From there, you can browse our knowledge base for the answer to your questions. If you are unable to locate the answer to your problem, please submit a request from the game site and we will assist you as quickly as possible.

We apologize for any inconvenience this may cause.

NCSOFT Support Team


Da fällt mich echt nichtsmehr ein m(

Achja, diese Mail kam von einem Host der auch einen entsprechenden DNS hat
relay=ncwedge02.us.ncsoft.com[64.25.42.36]

Januar
5
Ich bin nur ein Gelegenheitsspieler, aber wenn ich nochmals ein Spiel von NCSoft anfassen sollte, dann...

Nun aber mal der Reihe nach... eigentlich wollte ich in meinem Urlaub nur eine Runde Aion spielen, da ich schon einen Account hatte (irgendwann vor Jahren mal erstellt) wollte ich mich nur nur mal eben schnell anmelden. NCSoft nutzt aber eine Account Schutzfunktion:
Diese IP-Adresse ist nicht authorisiert, auf Ihren Account zuzugreifen. Aus Sicherheitsgründen informieren wir Sie immer, wenn von einem unbekannten Standort aus auf Ihren Account zugegriffen wird.

Na OK, dann schau ich eben in meine Mails. Doch auch nach über 1Std. war noch keine Mail angekommen. Ein Blick in das Logfile auf dem Server zeigte auch den Grund:
Jan  5 20:19:51 localhost postfix/smtpd[22831]: warning: \
hostname 64.25.41-52.ncsoft.com does not resolve to address 64.25.41.52: \
Name or service not known

Jan 5 20:19:51 localhost postfix/smtpd[22831]: NOQUEUE: reject: \
RCPT from unknown[64.25.41.52]:450 4.7.1 Client host rejected:\
cannot find your hostname, [64.25.41.52]; from=support@ncsoft.com to=XXX@XXX \
proto=ESMTP helo=ncwedge99.us.ncsoft.com

Durch ein anschließendes dig stellte sich heraus das für diese IP kein rDNS und kein MX besteht.

Dann bohren wir doch mal weiter und schauen uns den MX für ncsoft.com an:
dig ncsoft.com MX

;; ANSWER SECTION:
ncsoft.com. 3537 IN MX 30 smtp1.ncsoft.net.
ncsoft.com. 3537 IN MX 20 ncwedge01.us.ncsoft.com.
ncsoft.com. 3537 IN MX 20 ncwedge02.us.ncsoft.com.


Aha, es gibt also drei MX für ncsoft.com, da kann man nur hoffen das einer davon auf 64.25.41.52 verweist, doch weit gefehlt
smtp1.ncsoft.net.	60	IN	A	211.189.163.230
ncwedge01.us.ncsoft.com. 3444 IN A 64.25.42.38
ncwedge02.us.ncsoft.com. 3440 IN A 64.25.42.36

Da ich mich weigere meinen Mailserver anzupassen oder die entsprechende IP auf eine whitelist zu setzten, wollte ich NCSoft auf deren (IMHO) grundlegendes Problem hinweisen. Doch was erscheint wenn man auf deren Supportseite auf contact us klickt? Richtig! Das Loginformular welches sich beschwert das festgestellt hat, das ich mich von einer neuen Adresse aus einloggen möchte...

Da kann man sich wirklich nur an den Kopf fassen und ich kann nur sagen shame on you NCSoft!

Und so ein Laden nutzt ein komplettes /20 Netz (64.25.32.0/20)... welch eine Verschwendung von IPv4.
Januar
1
janitor » #useless
Wie schon im letzten Jahr gibt es auch dieses Jahr wieder meine persönliche Yeah und Gnampf Liste:

Gnampfs
  • Die NSA (und deren Lakaien) spionieren noch immer fröhlich vor sich hin, ohne das unsere versch***enen Politiker etwas dagegen tun. (Scheinbar sind PGP und OTR noch relativ sicher)
  • Joe Cocker und Udo Jürgens sind gestorben
  • Politiker sind noch immer alle sch***e wie in den letzten 100Jahren (und ja, damit meine ich u.a. die große Koalition). (diesen Punkt konnte ich 1:1 aus dem letzten Jahr übernehmen)

Yeahs
  • Die NSA (und deren Lakaien) spionieren noch immer fröhlich vor sich hin, ohne das unsere versch***enen Politiker etwas dagegen tun. (Scheinbar sind PGP und OTR noch relativ sicher)
  • Joe Cocker und Udo Jürgens sind gestorben
  • Politiker sind noch immer alle sch***e wie in den letzten 100Jahren (und ja, damit meine ich u.a. die große Koalition). (diesen Punkt konnte ich 1:1 aus dem letzten Jahr übernehmen)
Dezember
24
janitor » #useless
Ich wünsche allen Besuchern frohe und besinnliche Feiertage!

Achja, wer heute noch einen Grund zum Feiern benötigt (abgesehen von Weihnachten) der kann heute z.B. den Geburtstag von Lemmy feiern. ;)
Dezember
6
janitor » #useless #code #RPM
Auch wenn ich bekennender Debianer bin, komme ich beruflich oft mit RPM-basierenden Distributionen wie CentOS und Red Hat in Kontakt.

Daher war es nur eine Frage der Zeit bis zum bau meines ersten RPM, in diesem Falle durfte es eine neue Version (1.7.7) von Nginx sein, da es CentOS bis heute nicht geschafft hat es zu integrieren (die Installation über das EPEL-Repo schied ebenfalls aus, da hier nur Version 1.0.2 liegt). Desweiteren musste das Module upload-progress-module Bestandteil des Servers sein.

Nun aber der Reihe nach...

benötigte Pakete installieren und Benutzer erstellen

Zuerst müssen die nötigen Pakete für die build-Umgebung mit
yum install -y git rpm-build rpmdevtools redhat-rpm-config make gcc

installiert werden.

Zusätzlich wird für den Bau von Nginx noch folgende Pakete installiert
yum install -y pcre-devel zlib-devel openssl-devel


Da ein build niemals als Benutzer root durchgeführt werden sollten, erstellen wir uns gleich noch einen passenden Benutzer crafter
useradd -s /bin/bash -m -d /home/crafter crafter

den wir für alle weiteren Schritte nutzen werden.

build-Umgebung einrichten

Die benötigte Verzeichnisstruktur
rpmbuild/
├── BUILD
├── RPMS
├── SOURCES
├── SPECS
└── SRPMS

kann mit dem Befehl
rpmdev-setuptree

erzeugt werden.

Abschließen kann man das setup durch das erstellen einer Macrosdatei
echo '%_topdir %(echo $HOME)/rpmbuild' > ~/.rpmmacros

.

spec-Datei erstellen

Im Verzeichniss ~/rpmbuild/SPECS/ kann nun die entsprechende nginx.spec erstellt werden
Name:		nginx
Version: 1.7.7
Release: 1%{?dist}
Summary: nginx 1.7.7 with upload module

Group: System Environment/Daemons
License: BSD
URL: http://nginx.org/
Source0: http://nginx.org/download/nginx-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

BuildRequires: pcre-devel
BuildRequires: zlib-devel
BuildRequires: openssl-devel
Requires: pcre
Requires: zlib
Requires: openssl

%description
nginx version %{version}


#-- prepare build
%prep


#--
%setup -q


#-- build
%build
./configure \
--prefix= \
--conf-path=/etc/nginx/nginx.conf \
--pid-path=/var/run/nginx.pid \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--lock-path=/var/lock/subsys/nginx/lock \
--with-http_ssl_module \
--user=apache \
--group=apache \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--http-scgi-temp-path=/var/run/nginx/scgi/ \
--http-uwsgi-temp-path=/var/run/nginx/uwsgi/ \
--add-module=/home/crafter/rpmbuild/SOURCES/nginx-upload-progress-module \
make %{?_smp_mflags}

#-- make installation
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

rm -rf $RPM_BUILD_ROOT/html
mkdir -p $RPM_BUILD_ROOT/etc/init.d/
mkdir -p $RPM_BUILD_ROOT/etc/nginx/
mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
mkdir -p $RPM_BUILD_ROOT/etc/init.d/

#-- clean up
%clean
rm -rf $RPM_BUILD_ROOT


#-- files
%files
%defattr(-,root,root,-)
%doc
/etc/nginx/*
/etc/logrotate.d/*
/sbin/nginx
/etc/init.d/nginx
%changelog

#-- before install
%pre
getent group apache >/dev/null || groupadd -r apache
getent passwd apache >/dev/null || \
useradd -r -g apache -d /var/www -s /sbin/nologin \
-c "webserver user" apache
exit 0

#-- after install
%post
mkdir -p /var/log/nginx
mkdir -p /var/run/nginx
chmod o+x /etc/init.d/nginx
service nginx start

#-- before uninstall
%preun
service nginx stop

#-- after uninstall
%postun


RPM bauen

Nun kann das RPM mit
rpmbuild -v -bb rpmbuild/SPECS/nginx-1.7.7.spec

erstellt werden.
November
27
janitor » #useless #puppet #code
Puppet ist aktuell das Tool der Wahl für mich, doch leider gibt es etwas das ich schmerzlich vermisse... Puppet versteht kein yum groupinstall.

Was aber wenn man z.B. einen kompletten Desktop nachinstallieren möchte? Alle Pakete per Hand identifizieren und entsprechende Definitionen zu schreiben macht keinen Spaß!
Eine wirklich praktische Lösung dafür konnte ich bei ServerFault finden.

Gehen wir davon aus das wir im Modul gnome u.a. die Paketgruppe basic-desktop installieren wollen, dann muss gnome/lib/puppet/provider/yumgroup/default.rb
Puppet::Type.type(:yumgroup).provide(:default) do
desc 'Support for managing the yum groups'

commands :yum => '/usr/bin/yum'

def self.instances
groups = []

yum_content = yum('grouplist')

collect_groups = false

yum_content.each do |line|
break if line.chomp =~ /Available Groups:/

if collect_groups and line.chomp !~ /(Installed|Available)/
current_name = line.chomp.sub(/^\s+/,'\1').sub(/ \[.*\]/,'')
groups << new(
:name => current_name,
:ensure => :present
)
end

collect_groups = true if line.chomp =~ /Installed Groups:/
end
groups
end

def self.prefetch(resources)
instances.each do |prov|
if resource = resources[prov.name]
resource.provider = prov
end
end
end

def create
yum('-y', 'groupinstall', @resource[:name])
@property_hash[:ensure] == :present
end

def destroy
yum('-y', 'groupremove', @resource[:name])
@property_hash[:ensure] == :absent
end

def exists?
@property_hash[:ensure] == :absent
end

end

und gnome/lib/puppet/type/yumgroup.rb
Puppet::Type.newtype(:yumgroup) do
@doc = "Manage Yum groups

A typical rule will look like this:

yumgroup { 'Development tools':
ensure => present,
}
"
ensurable

newparam(:name) do
isnamevar
desc 'The name of the group'
end

end

erstellt werden.

Anschließend kann man im entsprechenden Manifest auf die ressource yumgroup zugreifen
yumgroup {'basic-desktop': ensure => 'present', }

November
27
janitor » #useless #raspberry
Was macht man wenn man ca. 150 Raspberry Pi übrig hat?

Entweder baut man sich einen Cluster oder man baut sich einen 3D-Körperscanner...

(Das Bild habe ich heute im vorbeigehen geschossen, daher leider etwas verwackelt)
November
22
Wer elasticsearch in einer Produktivumgebung einsetzt der hat sicherlich mehr als einmal die fehlenden Sicherheitsmechanismen vermisst.

Wenn man elasticsearch.org glauben darf, wurde das flehen der Kunden/Community erhöht, denn mit shield soll sich einiges in dieser Richtung ändern (und hoffentlich auch verbessern).

Folgende Erweiterungen sollen u.a. in shield enthalten sein:
  • RBAC (roll based access controls)
  • Authentication (Login mit Benutzer + Passwort)
  • Encrypted Communications (verschlüsselte Kommunikation)

Leider gibt es aktuell keine Testversion, aber eins steht fest... sobald diese verfügbar ist wird ein ausführlicher Test auf uselessmouse.de erscheinen.
November
22
Da ist doch glatt am 11.11.2014 eine neue beta von Kibana4 erschienen und ich hab es nicht mitbekommen.

Wenn ich mir den entsprechenden Blogpost und die Screenshots ansehe, dann muss ich sagen nice. Mal sehen welchen Eindruck es hinterlässt wenn ich endlich Zeit finde es auf einem Testsystem mal live zu sehen. Alleine der map support macht diese Version so interessant.
November
21
janitor » #useless #WTF #trash
Wer ein Profil auf Xing oder LinkedIn kennt die Anfragen von Headhunter oder Recruiter die meist mit folgendem beginnen:
Guten Tag, sehr geehrter Herr XXX,

bei der Suche nach einem „[Jobtitel]“ ist mir Ihr Profil aufgefallen...


Das klingt ja erstmal spannend, aber wenn man das Anschreiben weiterliest trifft man auf Anforderungen wie:

  • Erfahrung mit Serverbetriebssystemen => passt
  • Erfahrung mit Windows Clientsystemen => WTF
  • Sicherer Umgang mit aktuellen EDV-Anwendungen wie MS-Office, Email etc. => öhm... LOL

Schaut man sich mein Profil bzw. meinen CV auch nur oberflächlich an, dann wird man feststellen das ich in den letzten 18Jahren nichts aber auch garnichts mit Windows- oder Clientsystemen zutun hatte! Ich empfinde es geradezu als verlogen, wenn Interesse an meinem (ach so spannenden) Profil geheuchelt wird, ohne dies wirklich gelesen zu haben.

Falls sich ein Mitglied der genannten Gruppen hierher verirren sollte, dann macht euch und uns einen gefallen und lest ein Profil komplett durch bevor ihr sinnlose Anfragen verschickt!
November
15
janitor » #useless #puppet #code
Sicherlich fragt sich der eine oder andere zu Beginn seiner Puppet-Karriere wie er diese oder jene resource type in sein Modul einbinden kann bzw. wie er diesen definieren muss/kann.

Gerade wenn man bereits laufende Systeme mit Puppet verwalten will, kommt es vor das z.B. ein Benutzer bereits vorhanden oder ein Paket bereits installiert ist. Hier kommt puppet resource zum einsatz.

Gehen wir davon aus das es den Benutzer janitor bereits auf einem System vorhanden ist und wir diesen 1:1 in unserem Modul abbilden wollen... Nach dem Aufruf von
puppet resource user developer

wird der folgende Puppet-Code erzeugt
user { 'developer':
ensure => 'present',
comment => 'developer,,,',
gid => '4711',
groups => ['adm', 'cdrom', 'sudo', 'dip', 'plugdev', 'lpadmin', 'docker'],
home => '/home/developer',
shell => '/bin/bash',
uid => '6666',
}

welcher direkt in ein entsprechendes Modul eingebunden werden kann.
November
14
janitor » #useless #WTF
Da fehlen mir echt die Worte, wenn die zuständigen Minister ihren Wunschzettel für Europa im Internetzeitalter nach Brüssel faxen (!!!)

Ich wusste nicht das es in der heutigen Zeit noch immer Faxgeräte gibt, aber so sparen sich die Helfer von Oettinger immerhin das Ausdrucken der Email...

Hier mal der passende Artikel bei SPON
November
5
janitor » #useless #puppet
Kann man Puppet auch ohne einen Master nutzen?

Diese Frage hat sich der eine oder andere sicherlich schon gestellt... die Antwort ist ein klares Ja natürlich!.

Grundsätzlich spricht nichts gegen den Einsatz von Puppet ohne einen zentralen Master (wenn man auf Dinge wie Reporting oder zenrales Management verzichten kann).

Der Vorgang zum erstellen von neuen Modulen ist immer gleich, egal ob diese später über einen Master verwaltet odr lokal ausgeführt werden.

Für das folgende Beispiel gehe ich davon aus das ~/puppet-modules/ unser Basisverzeichnis ist, daher erstellt man hier zwei Verzeichnisse mit mkdir {modules,manifests}

Erstellen wir zuerst das Skelett für unser Module in modules/(nennen wir es testmod) mit puppet module generate testmod. Anschließend sollte folgende Verzeichnisstruktur vorhanden sein
my-testmod
├── Gemfile
├── manifests
│   └── init.pp
├── metadata.json
├── Rakefile
├── README.md
├── spec
│   ├── classes
│   │   └── init_spec.rb
│   └── spec_helper.rb
└── tests
└── init.pp

Nun kann my-testmod/manifests/init.pp editiert werden, um z.B. ein Verzeichnis /root/puppet-test/ von Puppet erstellen zu lassen.
class testmod {

file { 'test directory' :
ensure => 'directory',
owner => 'root',
path => '/root/puppet-test/'
}

}

.
Um dieses Modul nun lokal ausführen zu können muss unter ~/puppet-modules/manifests/ die Datei site.pp mit folgendem Inhalt erstellt werden
node default {

include testmod
}

Um nun das Modul lokal auszuführen genügt
puppet apply manifests/site.pp --modulepath ~/puppet-modules/modules/

Wenn alles ohne Probleme ablief, sollte die Ausgabe wie folgt sein
Notice: Compiled catalog for nodename.local in environment production in 0.09 seconds
Notice: /Stage[main]/Testmod/File[test directory]/ensure: created
Notice: Finished catalog run in 0.04 seconds

und das Verzeichnis /root/puppet-test/ sollte vorhanden sein.
November
5
janitor » #useless #puppet
Um die Netzwerkeinstellungen eins RH-basierenden Systems zu verwalten gibt es das Wunderbare Module Network.

Wer das Module nicht mit puppet module install razorsedge-network installiert, der wird u.U. beim Aufruf des Moduls folgende Fehlermeldung erhalten
err: Could not retrieve catalog \
from remote server: Error 400 on SERVER: Unknown function is_ip_address at ... \
on node ...

Der Grund hierfür liegt in der Abhängigkeit zum Modul stdlib. Dieses kann man (wie immer) am einfachsten mit puppet module install puppetlabs-stdlib auf seinem Puppet-Master installieren.
November
4
Wie hier bereits beschrieben kann man das off. repo von elasticsearch mittels Puppet aktivieren.

Möchte man nun elasticsearch installieren, kann man folgenden Code in seinem Manifest nutzen
package { 'elasticsearch pkg' :
ensure => 'latest',
name => 'elasticsearch',
}



Um die benötigte Abhänigkeit zwischen repo und Paket zu definieren, muss die entsprechende Klasse um
before      => Package['elasticsearch pkg'],

erweitert werden.

Alles zusammen in einem Manifest würde dann wie folgt aussehen
class elasticsearch::install {

include apt

apt::source { 'elasticsearch.list' :
before => Package['elasticsearch pkg'],
location => 'http://packages.elasticsearch.org/elasticsearch/1.3/debian',
repos => 'stable main',
release => '',
key => 'D88E42B4',
key_source => 'http://packages.elasticsearch.org/GPG-KEY-elasticsearch',
include_src => false,
}

package { 'elasticsearch pkg' :
ensure => 'latest',
name => 'elasticsearch',
}

}

November
3
Da elasticsearch passende repos für DEB bzw. RPM zur Verfügung stellt, stellte sich die Frage wie kann ich diese per Puppet einbinden?.

Hierzu bietet Puppet-Labs ein passendes Modul Namens apt an.

Um das repo von elasticsearch auf einem System zu aktivieren, kann folgender Code im entsprechenden Manifest genutzt werden
include apt

apt::source { 'elasticsearch' :
location => 'http://packages.elasticsearch.org/elasticsearch/1.3/debian',
repos => 'stable main',
release => '',
key => 'D88E42B4',
key_source => 'http://packages.elasticsearch.org/GPG-KEY-elasticsearch',
include_src => false,
}

Oktober
29
Tools zum erstellen von Screenshots gibt es wie Sand am Meer, aber alle haben einen entscheidenden Nachteil... sie benötigen einen X-Server (oder zumindest Xvfb).

Was aber wenn man keines von beiden zur Verfügung hat?

Gehen wir mal davon aus das wir den Inhalt der Konsole /dev/tty6 benötigen.

Über die entsprechende virtuale Konsole /dev/vcs6 kann man den Inhalt abrufen und bei Bedarf in eine Textdatei umleiten
cat /dev/vcs6 > /tmp/content_tty6.txt

Oktober
26
janitor » #useless #gis
Wie hier bereits beschrieben bietet gis die Möglichkeit um an Informationen von IP-Adressen zu gelangen.

Als neues Feature ging eben die Abfrage von Domains online.
Oktober
25
Da stolpert man im Netzwerk eines Bekannten über ein altes WD MyBook Live auf dem (lt. WD Webseite) die aktuellste Firmware
MyBookLive 02.43.03-022 : Core F/W

installiert ist... nur um festzustellen das es anfällig für Shellshock ist:
MyBookLive:~# env x='() { :;}; echo verwundbar' bash -c ""
verwundbar
MyBookLive:~#

Wenn man nun noch bedenkt das es sich um ein Debian 5 handelt
MyBookLive:~# cat /etc/debian_version 
5.0.4
MyBookLive:~#

für das kein Support mehr besteht...

Da das System unmöglich in diesem Zustand bleiben konnte hab ich mich daran gemacht und die Bash manuell aktualisiert.

Folgende Schritte waren nötig:

benötigte Pakete installieren
apt-get update && apt-get install build-essential gettext bison


Download der sourcen
wget http://ftp.gnu.org/gnu/bash/bash-3.2.tar.gz
tar zxvf bash-3.2.tar.gz
cd bash-3.2


Download und anwenden aller Patches
for i in $(seq -f "%03g" 1 57); do
wget -nv http://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-$i
patch -p0 < bash32-$i
done


Übersetzen und installieren
./configure && make
make install

Oktober
21
janitor » #useless #code #python
Für ein Projekt (u.a. GIS) nutze ich das Tool pythonwhois. Leider kommt es bei manchen Abfragen zur Fehlermeldung.
Exception Type:	UnicodeDecodeError
Exception Value:
'utf8' codec can't decode byte 0xdf in position 706: invalid continuation byte

Der Grund liegt an der fehlerhaften Dekodierung des Rückgabewerts der Abfrage.

Als workaround kann man in pythonwhois/net.py (Zeile 94) die folgende Änderung durchführen:
return buff.decode("utf-8")

ersetzen mit
return buff.decode("utf-8", "replace")

Oktober
20
janitor » #useless
Soeben wurde eine neue Funktion bei uselessmouse aktiviert... unter gis/ kann man nun IP-Adressen lokalisieren.

Aktuell funktionieren lediglich IPv4 Adressen, an der Funktion für IPv6 und Domains arbeite ich.
Oktober
18
janitor » #useless #code
Gerne werden im Quellcode die Kommentare #TODO und #FIXME gesetzt um diese zu einem späteren Zeitpunkt (im einfachsten Falle durch die eingesetzte IDE) wieder zu finden.

Hier mal eine kleine Auswahl:

# TODO: give this to a perl guy who knows how to parse perl...

Aus einem Python Projekt.

# TODO: (grr)

OK, damit kann man natürlich viel Anfangen ôO

# FIXME: to be continued...

Na dann...

# FIXME: ... Not sure why. Add a reason here.

Wenn der Autor es nicht sagen kann, wer denn?

Da fällt mir doch glatt wieder diese geniale Statisik der Schimpfwörter im Kernel von Linux ein!
Oktober
18
janitor » #useless #WTF
Über das FBI und dessen Chef kann man sich noch aus der Ferne ärgern und wundern, aber wenn man liest das auch die deutschen Politiker sich unwohl fühlen wenn über das Thema Verschlüsselung öffentlich geredet wird, dann spätestens ist der Punkt gekommen an dem ihre legitimation infrage stellen muss.

Ich kann garnicht soviel essen wie ich ...
Oktober
17
janitor » #useless #WTF
Manchmal Frage ich mich wirklich ob das FBI (oder welche Organisation auch immer) es mit ihrem ruf nach key-escrow wirklich ernst mein!?

Sind wir mal ehrlich, niemand der über etwas mehr Verstand als ein Einzeller verfügt kann sowas wollen... Wenn ich eins in den letzten 20 Jahren in der IT gerlernt habe, dann die Tatsache das jede Hintertür irgendwann a) gefunden und b) ausgenutzt wird!

Hier mal das aktuelle Zitat von FBI Director James B. Comey
Those charged with protecting our people aren’t always able to access the evidence we need to prosecute crime and prevent terrorism even with lawful authority,” Comey said in the published speech. “We have the legal authority to intercept and access communications and information pursuant to court order, but we often lack the technical ability to do so.


Da bin ich einfach nur sprachlos m(
Oktober
17
Ich blocke gerne mal komplette Netze aus China, Russland oder vergleichbaren Ländern. Meist sind das /12 oder /16 Netze (damit bekommt man schnell und bequem viele Adressen geblockt).

Manche Provider machen es einem aber (absichtlich?) schwer, indem sie ihre Netze stückeln.

Das aktuelle Beispiel ist das Netz eines (großen) Providers aus Hangzhou der DSL-Anschlüsse bereitstellt, aber im Gegensatz zu anderen Providern zerlegt dieser sein Netz in lauter kleine /26 Netze (also 64 Adressen) ôO

WTF!? Welchen Sinn hat das?

Da kommt man mit dem erstellen von passenden Filtern kaum hinterher...

Wer gerne komplette Länder von seinem System fernhalten möchte, der kann iptables z.B. mit ein paar der folgenden Listen füttern.
Oktober
12
janitor » #useless
... macht nicht immer nur der Mai!

Wenn man die Chance hat seine Software from scratch nochmals neu zu bauen ist das neben viel Arbeit aber auch eine Möglichkeit alle Altlasten loszuwerden.

Aus diesem Grund erstrahlt uselessmouse.de nun auch in einem neuen Glanz. Grundlegend hat sich einiges an der Performance geändert (hoffentlich zum Guten) und die Kommentarfunktion ist ersatzlos gestrichen worden.

Wer mit mit in Kontakt treten möchte, kann dies gerne über das entsprechende Kontaktformular machen.
September
22
Wer seine Webanwendungen mit Django entwickelt, der kommt früher oder später an den Punkt an dem eine REST API benötigt wird.

Man kann diese nun selbst basteln oder eine fertige Lösung nutzen. In den letzten Tagen habe ich div. Frameworks für Django getestet und muss sagen das mich das Django REST framework voll und ganz begeistert hat.
Mit nur wenigen Zeilen Code kann man seine Models per API verfügbar machen.

Mit Sicherheit werde ich in der nächsten Zeit eine ausführliche Einleitung posten.
September
19
Heute hat mich die folgende Frage erreicht

Wieso sehe ich in tcpdump noch immer Packete die ich per iptables verwerfe/droppe?


Folgender tcpdump wurd ausgeführt:

tcpdump -i eth0 tcp port 22 -n and not src host $OWNADDR and not dst host $OWNADDR

wobei $OWNADDR die eigene SSH-Verbindung bedeutet.

Hier tat sich eine Verbindung massiv hervor da jede Sekunde ca. 10 Verbindungen von einer Adresse aus (wen wundert es) China initiert wurden.

Nach einem beherzten

iptables -A INPUT a.b.c.d/13 -j DROP

änderte sich... nichts in tcpdump! ôO

Die Frage war nun natürlich wieso werden diese Packete noch angezeigt, obwohl diese verworfen werden (sollen)?

Dies lässt sich relativ leicht erklären, wenn man sich vor Augen hält auf welchem Wege die Packete das System erreichen (vereinfacht):

NET => Networkcard => Kernel

und sich gleichzeitig überlegt wo tcpdump (= Networkcard) bzw. iptables (= Kernel) jeweils die Pakete zu Gesicht bekommt, wird klar wieso ein solches Verhalten normal ist.
September
19
Wie bereits geschrieben hatte ich das Glück ein Elasticsearch Training zu besuchen, alles in allem war es ein wirklich gelungenes Training.

Nachträglich gab's auch die gezeigten Folien als PDF (leider mit meiner Mailadresse als Wasserzeichen), was mich aber wirklich wundern und massiv stört ist die Tatsache das dieses PDF mit einem User- und Ownerpasswort geschützt ist, d.h. ich muss bei jedem öffnen des Dokuments das entsprechende Passwort (nach dem Muster "adazdanf4n371hKJ47DHkjashkas") angeben! ôO

OK, ich kann verstehen das Elasticsearch nicht möchte das die Dokumente unbefugt weitergegeben werden, von daher kann ich das Wasserzeichen verstehen.

Aber welchen Sinn macht das Passwort?

Jeder halbwegs denkende wird das PDF öffnen, "Drucken" auswählen und in ein neues PDF (ohne Passwort) abspeichern.
September
16
Aktuell ist eines meiner Lieblingsthemen elasticsearch, daher geht's heute nach Berlin um an der Schulung core elasticsearch teilzunehmen.

Ich bin wirklich gespannt was/ob es für mich etwas neues zum Thema zu erfahren gibt.
September
15
Es gibt Momente da kann ich garnicht soviel essen wie ich ko**en möchte. Heute ist genau ein solcher Moment...

Microsoft schluck Mojang (die Macher von Minecraft)!

Ich habe schon lange einen Hang zu MC und ich kann mir nicht vorstellen das durch den Aufkauf von Microsoft sich alles zum Besseren wenden wird. Wieso ich das denke? Ganz einfach, denn mir fällt keine Aquise von Microsoft ein bei der am Ende das Produkt dadurch besser wurde.

Und wieso beschleicht mich das leise Gefühl das Minecraft mittelfristig auf C# portiert wird (+ DirectX 11) und jeder Linuxuser in die Röhre schauen wird?

Hier noch die off. Nachricht von Mojang

Und wie immer zeigt sich... jeder ist käuflich, wenn der Preis stimmt.

shame on you Mojang, shame on you Notch
September
6
Eigentlich sollte es nur ein Test sein, aber mittlerweile habe ich mich dazu entschlossen uselessmouse.de auch per SSL anzubieten.

Da ich die Idee eines WOT (Web Of Trust) unterstütze, ist das Zertifikat von uselessmouse.de auch auf dieser Basis von CAcert

Solltet ihr beim Zugriff per SSL erhaltet (s.a. Screenshot).



muss zuerst die passende root.ca importiert werden.

Anschließend sollte die bekannte grüne Leiste zu sehen sein.

August
4
Wie hier bereits geschrieben, nutzt CentOS7 firewalld, wer wie ich lieber mit iptables weiterarbeiten möchte kann dies wie folgt:

service deaktivieren
systemctl mask firewalld


service beenden
systemctl stop firewalld


service iptables installieren
yum -y install iptables-services


service beim booten aktivieren
systemctl enable iptables


service starten
systemctl start iptables

August
4
CentOS 7 ist nun seit ein paar Tagen/Wochen verfügbar und da ich grundsätzlich Neugierig bin, habe ich eine Testinstallation durchgeführt und dabei sind mir u.a. folgende Dinge/Neuerungen aufgefallen:

Aktuell wird i386 nicht unterstützt, es gibt lediglich eine Version für x86_64

Das liebgewonnene ifconfig wurde (endlich) durch ip ersetzt.

CentOS7 nutzt als Firewall firewalld.

Statt netstat kommt ss zum Einsatz.

Wer weiterhin das epel-repo nutzen möchte, kann die aktuelle Beta nutzen (s.a. epel beta repo )
Juni
22
janitor » #useless #trash
Ich mag Skype nicht und bin beruflich gezwungen es (unter Linux) zu nutzen...

Wenn ich mir die Entwicklung von Skype ansehe:

  • 12.2013: Skype kündigt die Desktop-API ab
  • 02.2014: Skype ändert die sein EULA (inkl. Zentrale Zwischenspeicherung und Kontrollen durch Skype)
  • 06.2014: Skype blockiert alte Versionen, aber nicht aus einem technischen Grund sondern weil...


frage ich mich wirklich, ob Skype/Microsoft seine Kunden mit Absicht zu anderen Diensten treibt!?

Update

Das es keinen technischen Grund dafür gibt, zeigt die Tatsache das der aktuelle Client für Linux (Ver. 4.1.0.20) weiterhin unterstützt wird und lediglich die Windows/Mac-Clients kleiner Ver. 6.14 blockiert werden.
Juni
22
Nehmen wir mal an, man betreibt einen Server bei einem deutschen Hoster (dessen Namen ich vorerst nicht nennen möchte) und stellt bei einem zufälligen tail fest das dieser Server von einem anderen System penetriert wird und innerhalb von ca. 20 Minuten über 900 Logeinträge nach folgendem Muster auftauchen

Jun 22 11:44:29 localhost postfix/smtpd[13298]: connect from
static.aaa.bbb.ccc.ddd.---.de[aaa.bbb.ccc.ddd]
Jun 22 11:44:29 localhost postfix/smtpd[13298]: SSL_accept error from
static.aaa.bbb.ccc.ddd.---.de[aaa.bbb.ccc.ddd]: lost connection
Jun 22 11:44:29 localhost postfix/smtpd[13298]: lost connection after
CONNECT from static.aaa.bbb.ccc.ddd.---.de[aaa.bbb.ccc.ddd]
Jun 22 11:44:29 localhost postfix/smtpd[13298]: disconnect from
static.aaa.bbb.ccc.ddd.---.de[aaa.bbb.ccc.ddd]
Jun 22 11:44:29 localhost postfix/smtpd[13300]: connect from
static.aaa.bbb.ccc.ddd.---.de[aaa.bbb.ccc.ddd]
Jun 22 11:44:29 localhost postfix/smtpd[13300]: SSL_accept error from
static.aaa.bbb.ccc.ddd.---.de[aaa.bbb.ccc.ddd]: lost connection



Natürlich schaut man erstmal nach wohin denn die Adresse aaa.bbb.ccc.ddd gehört... und siehe da, diese gehört dem gleichen Provider!

Wer sich nun denkt perfekt dann kann ich das gleich bei dem einkippen und der wird dann schon dafür sorgen das solche Zugriffe beendet werden, der hat sich bei diesem Provider geschnitten!

Nach dem erstellen einen Supporttickets kam nur die lapidare Aussage, man solle sich an abuse@provider.tld wenden... diese Adresse sei aber nur unter der Woche von 08:00 - 16:00Uhr besetzt und mehr könne man nicht machen. ôO

Our office hours concerning abuse enquiries are Monday to Friday (except official holidays) from 08.00 to 16.00 hours (CET).


Ich bin einfach nur sprachlos, aber wie hier bereits geschrieben, schere die Provider sich meist einen **** um solche Anfragen/Hinweise. Das es aber der eigene Provider ist, der auf solche Anfrage nicht reagiert lässt einen die Zusammenarbeit grundlegend überdenken.
Juni
13
Nicht jeder möchte/kann Apache auf seinem System installieren nur um mittels htpasswd eine Passwortdatei erstellen zu können.

Da ich statt Apache auf Nginx setze erzeuge ich die benötigten Passwortdateien wie folgt mit openssl
printf "userName:$(openssl passwd -crypt PaSsWoRt)\n" >> /path/to/access.file



Die Datei /path/to/access.file kann dann in Nginx eingebunden werden

auth_basic_user_file    /path/to/access.file;

Juni
12
janitor » #useless
... als man zuerst denkt.

Eigentlich sollte das aktuelle Projekt nur eine Möglichkeit schaffen über ein Frontend die Maillogs von einem Dutzend Servern durchsuchbar zu machen (Summe der Daten ca. 100GB).

Aber:

Erstens kommt es anders und zweitens als man denkt


Mittlerweile umfasst das Projekt ein Volumen von ca. 11TB (!!) die in einem Elasticsearch-Cluster liegen sollen.
Da die Planung etwas umfassender ist, komme ich aktuell kaum dazu etwas neues zu Posten.
Juni
1
janitor » #useless #code #tooltip
Bei der Einführung von Puppet kommt irgendwann der Punkt an dem auch eigene Software/Scripte ausgerollt werden sollen...

Von der Verwendung des filebucket sollte man aus div. Gründen absehen. Daher stellt sich die Frage wie bekomme ich meinen eigenen Code auf die Systeme?

Zum Glück gibt es FPM (für mich die beste Erfindung seit es geschnittenes Brot gibt).

Damit lassen sich RPM-, DEB-Pakete oder auch Python- und Perlmodule ohne (großen) Aufwand generieren.

Folgendes Beispiel erzeugt ein passendes DEB das sich anschließend ohne Probleme per Hand (oder Puppet) aus dem privaten Repo installieren lässt:

#!/bin/bash

pkgName="um-elasticsearch"
pkgVersion="1.2.0"

debName=$pkgName\_$pkgVersion\_all\.deb

fpm --verbose \
-t deb \
-s dir \
-f \
-C ~/filespace/packages/SRC/ \
--architecture all \
--package ~/filespace/packages/DEB/$debName \
--prefix=/opt/ \
--version $pkgVersion \
--vendor "uselessmouse.de" \
--url "http://uselessmouse.de" \
--workdir ~/filespace/packages/WRK/ \
--depends libc6 \
--depends adduser \
--category web \
--description "Distributed, RESTful Search Engine (Homepage: http://www.elasticsearch.org/)" \
--name $pkgName \
elasticsearch-1.2.0/

Juni
1
Wie bereits erwähnt kam ich in den Genuß ein 3-tägiges Puppet Training im Linuxhotel zu genießen.

Unterkunft

Das Linuxhotel liegt am Rande von Essen in einer wirklich wundervollen Parkanlage, leider konnte ich den Park nicht ausgiebig genießen da es drei Tage wie aus Eimern gegossen hat... aber ich bin mir sicher das es bei gutem Wetter herrlich sein muss dort zu sitzen und zu IT-Themen zu diskutieren.

Die Zimmer sind praktisch, sauber und super ausgestattet (WLAN, eine Schublade mit Gadgets, zwei Fernseher,...)

Im Linuxhotel herrscht das Motto "SB ist Trumpf", d.h. man kann/darf/muss sich selbst bedienen.

Schulung

Die Schulung selbst wurde von Martin Alfke gehalten und man merkte von der ersten Sekunde an das Martin nicht erst seit gestern mit Puppet arbeitet. ;)

Es handelte sich zwar nur um eine Grundlagenschulung, aber die behandelten Themen waren sowohl für Einsteiger als auch alte Hasen spannend und jeder konnte etwas neues dazulernen.

Der für mich größte AHA-Effekt kam beim Thema puppet parameterized class, nach dessen Abschluß ich feststellen musste das ich 99% meine bisherigen Module in die Tonne klopfen kann und besser nochmal von Null beginne.

Fazit

Sowohl das Hotel als auch die Schulung kann ich ohne Einschränkungen empfehlen.
Mai
24
janitor » #useless
Morgen Abend geht's los in Richtung Essen ins Linuxhotel zu einer spannenden Schulung zum Thema Puppet.

Ich bin gespannt was mich erwartet...

Das es diesmal kein Typisches Einzelzimmer für mich gibt, sonder eine WG, finde ich spannend.
April
29
Logstash hat die nette Eigenschaft automatisch das Feld @timestamp beim schreiben in elasticsearch zu erstellen. Dieses bietet sich immer wunderbar zum filtern an.

Wenn man nun aber eigene Daten in elasticsearch ablegen möchte ist das Feld @timestamp bzw. _timestamp nicht unbedingt vorhanden... was tun?

Gehen wir von folgendem Beispiel aus

{
"userID" : "0815" ,
"itemCount" : "1" ,
"mydate" : "2014-04-28 11:30:21" ,
"data" : {"OS" : "Windows7", "version" : "2013.12.0.3"}
}



zwar finden wir hier eine Feld mydate welches aber nur als string übergeben wird, somit ist es nicht möglich Abfragen nach dem Muster zeige Daten der letzten x Tage an zu realisieren.

Doch elasticsearch bietet eine Möglichkeit des mappings an.

Möchte man automatisch einen passenden timestamp erstellen, sobald die Daten in elasticsearch abgelegt werden, hilft folgendes mapping

"_timestamp" : {
"enabled" : true,
"store" : "yes"
}



Möchte man hingegen _timestamp anhand eines bestehenden Feldes generieren (in diesem Falle anhand von mydate) kann das folgende mapping genutzt werden

"_timestamp" : {
"enabled" : true,
"store" : "yes",
"path" : "mydate",
"format" : "yyyy-MM-dd HH:mm:ss"
}

April
19
janitor » #useless #python #code
Wann immer man Bytes summiert und Werte wie 32184729924 als Ergebnis bekommt, fragt man sich wieviele MB bzw. GB sind das?

In Python nutze ich in meinem Skripten immer die folgende Funktion

import math

def convertSize(size):
size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
i = int(math.floor(math.log(size,1024)))
p = math.pow(1024,i)
s = round(size/p,2)
if (s > 0):
return '%s %s' % (s,size_name[i])
else:
return '0B'



Wann immer ich einen Wert in eine benutzerfreundliche Form bringen will/muss genügt der Aufruf

convertSize(float("32184729924"))



und erhalte als Rückgabewert 29.97 GB
April
12
janitor » #useless
Wenn man durch div. Foren rollt, dann wundert man sich teilweise mit welchen Argumenten nun versucht wird gegen OSS zu feuern.

Scheinbar denkt niemand an den Grundgedanken von OSS, man kann den Code auditieren, das benötigt (abgesehen vom Know-How) einges an Zeit welche unbezahlt ist.

Es wäre jetzt genau der richtige Zeitpunkt um für das Lieblingsprojekt seiner Wahl etwas Geld zu spenden, damit die Entwickler vielleicht ein externes Audit ihres Codes bezahlen können.
April
9
janitor » #useless #trash
Was kommt noch? Das Fragt sich sicherlich der eine oder andere und ich kann sagen vieles ;)

Wenn ich die Suchanfragen, Referrer und Klicks richtig deute, dann interessieren sich die meisten für die Themen elasticsearch und logstash.
Aus diesem Grund werde ich in der nächsten Zeit verstärkt auf diese Themen eingehen.

Da ich aktuelle einen Workshop zu diesen Themen vorbereite, kann man gespannt sein ;)
April
8
janitor » #useless #sicherheit
Eigentlich kann man zum aktuellen OpenSSL Bug (genannt Heartbleed) nur eins sagen:

ouch
The Heartbleed bug allows anyone on the Internet to read the memory of the systems protected by the vulnerable versions of the OpenSSL software. This compromises the secret keys used to identify the service providers and to encrypt the traffic, the names and passwords of the users and the actual content. This allows attackers to eavesdrop communications, steal data directly from the services and users and to impersonate services and users.


Eine wirklich ausgezeichnete (technische) Erklärung des Bugs kann man hier finden.

Update 08.04.2014 - 16:00
Debian hat es mittlerweile geschafft eine neue Version zu publizieren, für Red Hat bzw. CentOS stehen diese noch aus.
April
5
janitor » #useless #trash
Über De-Mail kann man denken wie man will (in meinem Augen ist es technisch und konzeptionell ein Totalausfall) aber scheinbar ist der TCom nun endlich eine Zielgruppe eingefallen...



Es gibt einen 20€ Gutschein für einen Onlineschuhhändler (!) wenn DAS mal kein guter Grund für De-Mail ist m(

Eine wirklich gute Erklärung von Linus Neumann zum Thema De-Mail kann man bei Youtube finden.
April
5
Das PAM google-authenticator bietet die Möglichkeit z.B. seinen SSHd mittels TOTP zu schützen. Die Einrichtung ist relativ trivial.

Installation

Zuerst muss man sich die passenden sourcen von der Projektseite besorgen und anschließend entpacken

tar xfj libpam-google-authenticator-1.0-source.tar.bz2



um beim kompilieren das passende PAM zu erstellen, muss am Anfang der Datei Makefile folgendes hinzugefügt werden

LDFLAGS="-lpam"



Das übersetzen und installieren übernimmt

make && make install



Nun sollte die Datei /usr/local/bin/google-authenticator vorhanden sein.

Für jeden Benutzer der sich via google-authenticator am System authentifizieren soll, muss google-authenticator ausgeführt und die erscheinenden Fragen (im Normalfall sollte 'y' die passende Antwort sein) beantworten

  Do you want authentication tokens to be time-based (y/n) y
https://www.google.com/chart?....
Your new secret key is: CVQLXXXXXXX
Your verification code is 72XXX
Your emergency scratch codes are:
153XXXXX
239XXXXX
698XXXXX
232XXXXX
359XXXXX

Do you want me to update your "/home/user/.google_authenticator" file (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

By default, tokens are good for 30 seconds and in order to compensate for
possible time-skew between the client and the server, we allow an extra
token before and after the current time. If you experience problems with poor
time synchronization, you can increase the window from its default
size of 1:30min to about 4min. Do you want to do so (y/n) y

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable rate-limiting for the authentication module.
By default, this limits attackers to no more than 3 login attempts every 30s.
Do you want to enable rate-limiting (y/n) y



Die angezeigte URL (https://www.google.de/....) muss nun im Browser geöffnet und der gezeigte QR-Code mit der passenden App gescannt werden.

PAM aktivieren

Durch hinzufügen von auth required pam_google_authenticator.so in /etc/pam.d/sshd wird das passende PAM für den SSHd bereitgestellt.

Das eigentliche aktivieren geschieht in /etc/ssh/sshd_config durch den Parameter ChallengeResponseAuthentication yes.

Abschließend muss nur der SSHd neugestartet werden.
April
2
Wie hier bereits beschrieben kann man Logstash (und Kibana) nutzen um z.B. die Besucher einer Webseite geographisch darzustellen, das ganze sieht dann z.B. so aus

April
2
Wer elasticsearch/logstash nutzt, der nutzt meist auch Kibana zur Visualisierung.

Die passende conf für Nginx sieht dabei wie folgt aus

location /kibana {
auth_basic "Kibana";
auth_basic_user_file /srv/www/htpasswd.users;
alias /srv/www/html/kibana;
}

# Password protected end points
location ~ ^/kibana-int/dashboard/.*$ {
proxy_pass http://elasticsearch;
proxy_read_timeout 90;
limit_except GET {
proxy_pass http://elasticsearch;
auth_basic "Kibana";
auth_basic_user_file /srv/www/htpasswd.users;
}
}

location ~ ^/kibana-int/temp.*$ {
proxy_pass http://elasticsearch;
proxy_read_timeout 90;
limit_except GET {
proxy_pass http://127.0.0.1:9200;
auth_basic "Kibana";
auth_basic_user_file /srv/www/htpasswd.users;
}
}



Den passenden upstream kann man wie folgt definieren

upstream elasticsearch {
server 127.0.0.1:9200;
keepalive 32;
}

April
2
Da elasticsearch keine (einfache) Möglichkeit bietet den Zugriff zu beschränken, bietet sich Nginx als vorgeschalteter reverse proxy an.

Damit ES nicht auf alle Adressen lauscht, muss der Parameter network.host in config/elasticsearch.yml wie folgt angepasst werden

network.host: 127.0.0.1



Das Setup von Nginx ist relativ einfach.

Ich gehe davon aus das Nginx und ES auf einem Host laufen und die Zugriffe ohne Authentifizierung funktionieren sollen

upstream elasticsearch {
server 127.0.0.1:9200;
keepalive 32;
}

server {
listen 80;
server_name localhost;

access_log /var/log/nginx/nginx_elasticsearch_access.log main;
error_log /var/log/nginx/nginx_elasticsearch_error.log;

root /srv/www/default;
index index.html index.htm;

location / {
proxy_pass http://elasticsearch;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass_header Access-Control-Allow-Origin;
proxy_pass_header Access-Control-Allow-Methods;
proxy_hide_header Access-Control-Allow-Headers;
add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type';
add_header Access-Control-Allow-Credentials true;
}
}

März
27
Was macht man nun mit seiner frischen Installation von elasticsearch?

Als kleines Beispiel habe ich einen Indexer erstellt, der ein definiertes Verzeichnis nach Dateien durchsucht und deren Inhalt in ES ablegt.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import magic
import os
import elasticsearch
from datetime import datetime

indexName = "local-fs"

baseDir = "/home/user"

wantedMime = ['text/x-python', 'text/x-perl', 'text/x-shellscript', 'text/plain']

#-- initialize elasticsearch connection
es = elasticsearch.Elasticsearch("localhost:9200")

#-- read given directory
for dirName, dirNameList, fileNameList in os.walk(baseDir):
for fileName in fileNameList:
filePath = os.path.join(dirName, fileName)
#-- guess file/mime type
mimeType = magic.from_file(filePath, mime=True)
#-- if mimetype is wanted
if mimeType in wantedMime:
#-- read content
with open(filePath, 'r') as infile:
filedata = infile.read()
#-- write everything to elasticsearch
es.index(index=indexName,
doc_type="fs",
body = {
"timestamp": datetime.now(),
"filename": fileName,
"filepath": dirName,
"mimetype": mimeType,
"content": filedata,
})



Das benötigte Pythonmodul magic lässt sich wie immer einfach per pip installieren

sudo pip install python-magic



Wie kommt man aber wieder an die gespeicherten Daten ran? Ein einfacher/schneller weg ist curl

Möchte man z.B. alle Dokumente mit dem mimetype python sehen, genügt der folgende Aufruf:

curl -XGET 'http://localhost:9200/local-fs/_search?pretty' -d \
'{"query":{"bool":{"must":[{"query_string":{"default_field":"fs.mimetype","query":"python"}}],\
"must_not":[],"should":[]}},"from":0,"size":50,"sort":[],"facets":{}}'

März
26
Wer einen Webserver betreibt will gerne wissen aus welcher Region der Welt seine Besucher kommen.
Da ich die Logfiles von div. Webservern mit Logstash verarbeite lag es nahe diese Funktion direkt beim indexieren zu erledigen, somit entfällt zukünftig das manuelle Nachschlagen der Geodaten (z.B. via utrace.de.

Das anpassen von Logstash ist schnell geschehen

Zuerst besorgt man sich eine passende GeoIP-Datenbank, z.B. die Opensource Version von MaxMind
wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz



Nach dem entpacken

gunzip GeoLiteCity.dat.gz && cp GeoLiteCity.dat /opt/logstash/



kann man mit der Konfiguration von Logstash beginnen. Als Basis dient ein System das nach folgender Anleitung "Elasticsearch - Basisinstallation/Testsystem" installiert wurde.

Die zentrale Konfigurationsdatei (in meinem Falle logstash.conf) muss mit folgenden Filter erweitert werden

filter {
if [remoteaddr] {
geoip {
source => "remoteaddr"
target => "geoip"
database => "/opt/logstash/GeoLiteCity.dat"
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float" ]
}
}
}



Nach einem restart/reload von Logstash kann man nun die folgenden neuen Felder finden:


März
26
Ich komme kaum mit dem Updates von elasticsearch hinterher, denn kaum habe ich eine Anleitung für 1.0.1 geschrieben, ist Version 1.1.0 raus. Den passenden Download gibt's hier

Da mich die laaange Liste der breaking changes, new features, enhancements und bugfixes überzeugt hat, sind nun alle meine ES-Systeme aktualisiert.

Bei dieser Gelegenheit habe ich auch gleich Logstash von 0.9.0 auf die passende Version 1.4.0 aktualisiert.
März
21
Da ich in den letzten Wochen/Monaten mich verstärkt dem Thema Logstash/Elasticsearch gewidmet habe, hier nun eine kleine Anleitung zur Installation eines Basis-/Testsystems.

Die Konfiguration von ES für den Livebetrieb sind u.U. umfangreich und abhängig von der vorhandenen Hardware und dem geplanten Einsatz.

Die aktuellste Version von ES kann man auf deren Webseite finden. Bei der hier genutzten Version handelt es sich um Version 1.0.1

Der Download klappt am einfachsten direkt per wget
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.0.1.tar.gz



Anschließend kann man das Paket entpacken

tar xfz elasticsearch-1.0.1.tar.gz



Da ich meist mit verschiedenen Versionen arbeite, möchte ich über cd /opt/elasticsearch/ immer im passenden Verzeichnis laden, daher lege ich einen symbolischen Link an

ln -s elasticsearch-1.0.1/ /opt/elasticsearch



Die konfiguration von ES geschieht über die Datei elasticsearch/config/elasticsearch.yml und ist aufgrund der ausführlichen Dokumentation quasi selbsterklärend. Für das Testsystem ist das anpassen der folgende Parameter ausreichend

cluster.name: Jedi
node.name: "Yoda"



Um keinerlei externe Zugriffe zu ermöglichen, kann man noch den folgenden Parameter anpassen

network.host: 127.0.0.1



Nun kann man ES starten (ich starte es in einem screen)

screen -S elasticsearch /opt/elasticsearch/bin/elasticsearch



Die folgende Meldung zeigt an, das ES erfolgreich gestartet wurde

...
[2014-03-21 14:17:06,378][INFO ][node] [Yoda] started



Kontrollieren kann man es (nach STRG a + d um den screen abzuhängen) mittels netstat -tulpen | grep 9200
tcp6    0    0 127.0.0.1:9200    :::*    LISTEN    1000    3948810    5483/java



oder im Browser über die URL http://localhost:9200

{
"status" : 200,
"name" : "Yoda",
"version" : {
"number" : "1.0.1",
"build_hash" : "5c03844e1978e5cc924dab2a423dc63ce881c42b",
"build_timestamp" : "2014-02-25T15:52:53Z",
"build_snapshot" : false,
"lucene_version" : "4.6"
},
"tagline" : "You Know, for Search"
}

März
19
janitor » #useless #chrome
Grundsätzlich nutze ich gerne Chrome als Browser, doch nach einem Update kam immer nach dem Start die folegende Fehlermeldung (3x!):


Your profile could not be opened correctly.

Some features may be unavailable. Please check that the profile exists and you have permission to read and write its contents.


Beheben konnte ich es mit folgenden Schritten (Chrome vorher beenden!):

cd ~/.config/google-chrome/
mv Default/ Backup/
cp -Ra Backup/ Default

März
18
Für eine meiner elasticsearch-Installationen war ich auf der Suche nach einem passenden frontend/dashboard um alle Parameter zu überwachen.

Über zwei wirklich geniale Plugins bin ich dabei gestolpert:



Zu zwei werde ich demnächst genauere Tests posten.