/dev/blog/ID10T

Advertisement

Linux: SSH-Server sichern

• Linux • Comments

Da ich meinen vServer ja komplett neu aufsetzen muss, nutze ich die Gelegenheit, um hier meine Konfiguration der /etc/ssh/sshd_config zur Sicherung des SSH-Servers aufzuführen. Dazu poste ich hier einfach eine beispielhafte sshd_config mit (englischen) Kommentaren.

# sshd_config by m3adow, created 2013-09-06
# Tested for:
# OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010

# Restrict to IPv4. Change to inet6 for IPv6 only. Comment it out or use "any" for no restriction.
AddressFamily inet

# Set AuthorizedKeysFile to standard for visibility.
#AuthorizedKeysFile .ssh/authorized_keys

# Disable ALL authentication methods
# We'll enable those for our loginuser.
ChallengeResponseAuthentication no
GSSAPIAuthentication no
HostbasedAuthentication no
KerberosAuthentication no
PasswordAuthentication no
PubKeyAuthentication no
RSAAuthentication no
UsePAM no

# Reduce LoginGraceTime to 60 seconds
LoginGraceTime 60

# Reduce MaxAuthTries to make manual bruteforcing more difficult
MaxSessions 4
# Enable random early drops for unauthenticated connections
MaxStartups 4:60:8

# Configure Logging
LogLevel INFO
SyslogFacility AUTH

# Empty Passwords are bad, mkay? Use Pubkeys for this.
PermitEmptyPasswords no

# Root Login via SSH is bad too.
# If you really want this, use "without-password" to enable root Login with Pubkey only.
PermitRootLogin no

# Change the SSH-Port to prevent a lot of automated Login Tries which clutter up your logfiles.
Port 4711

# Print the last Login.
PrintLastLog yes

# Only use the secure SSH-Protocol 2
Protocol 2

# Enable StrictMode
StrictModes yes

# Since I don't think X11 belongs to a server, there's no use for Forwarding.
X11Forwarding no

# Only use Ciphers and MACs which are declared safe by the German BSI
Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256
MACs hmac-sha1,[email protected],hmac-ripemd160

# No we set up our loginuser "foo" which is the only user allowed to access the server.
Match User foo
        # We only want Public Key Authentication since it's the most secure way.
        PubKeyAuthentication yes

Die Datei kann natürlich gerne auf anderen Servern genutzt werden. :-)
Ich denke, dass diese config-Datei selbst erklärend ist. Falls ihr aber trotzdem noch Fragen habt, nur zu.

CentOS 6.4: tmux installieren

• Linux • Comments

Wie schon in meinem letzten Post angekündigt, kommen jetzt tröpfchenweise neue Anleitungen für CentOS, die neue Distribution auf meinem (leider) frisch installiertem Server. Heute eine kurze Anleitung, wie man unter CentOS den Terminal Multiplexer tmux kompiliert.

Als erstes installieren wir die von tmux benötigten Libraries. Das wäre zum einen ncurses und die ncurses Developement files (ncurses-devel), die wir einfach mit yum installieren.

yum install ncurses ncurses-devel

Außerdem benötigen wir noch die libevent-library, deren Version im Repository allerdings zu alt ist. Also kompilieren wir aus der Quelle. Ich persönlich präferiere für solche Tarballs das Verzeichnis /usr/local/src, aber das bleibt euch überlassen.

wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
tar xzvf libevent-2.0.21-stable.tar.gz && cd libevent-2.0.21-stable
./configure && make
make install

Nun schnappen wir uns tmux aus den Quellen und installieren auch dieses.

wget -O tmux-1.8.tar.gz http://sourceforge.net/projects/tmux/files/tmux/tmux-1.8/tmux-1.8.tar.gz/download
tar xzvf tmux-1.8.tar.gz && cd tmux-1.8
./configure && make
make install

Anschließend solltet ihr tmux bereits nutzen können.

Solltet ihr die Fehlermeldung

tmux: error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory

bekommen, liegt das vermutlich daran, dass ihr entweder vergessen habt ldconfig auszuführen oder dass eure Environment Variable LD_LIBRARY_PATH für ldconfig nicht den Ordner für lokal kompilierte libraries enthält. Dann empfehle ich folgendes:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"/usr/local/lib"
echo export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\"/usr/local/lib\" >> /etc/bashrc

Viel Spaß mit tmux.

CentOS: SSH Pubkey Authentication ermöglichen

• Linux • Comments

Kurztipp:
Wenn ihr euch in CentOS nicht per Public Key authentifizieren könnt, auch wenn der sshd korrekt konfiguriert ist und ihr in den Logs selbst mit DEBUG-Logging nichts finden könnt, kann es gut sein, dass euch SELinux einen Strich durch die Rechnung macht. Habt ihr den ~/.ssh-Ordner neu erstellt, ist es sehr wahrscheinlich, dass SELinux den Sicherheitskontext dieses Ordners nicht mag und deswegen die Public Key Authentication blockt. Um dies zu beheben gibt es zwei Wege:

Warum man immer ein Backup haben sollte...

• Linux • Comments

hat sich mir heute morgen schön gezeigt. Ich bekam folgende Mail von meinem vServer Provider Netcup:

Guten Morgen Till Wiese,

die Wartungsarbeiten am Wirtsystem Ihres vServers sind beendet. Leider haben diese deutlich länger gedauert als geplant. Der Grund hierfür ist ein Schaden am Festplattensystem auf dem Wirtsystem. Dieser Schaden hat dafür gesorgt, dass leider alle gespeicherten Daten auf dem Server unwiderruflich verloren gingen.

Leider ist es uns nicht gelungen, Ihre Daten zu rekonstruieren. Trotz RAID-Verbund, ist es zu einem totalen Datenverlust gekommen. Das so etwas passiert ist sehr unwahrscheinlich, aber leider, technisch nicht auszuschließen. Wir bedauern den Vorfall sehr und hoffen, dass Sie entsprechend §5.4 der vereinbarten AGB, regelmäßige Sicherungen Ihres
Systems vorgenommen haben.

Wenn Sie die Datensicherung über die Snapshot Export Funktion des vServercontrolpanels vorgenommen haben, können Sie Ihre Datensicherungen über dieses direkt zurück spielen. Ihr vServer bootet anschließend mit dem von Ihnen ausgewählten Datenbestand neu.

Haben Sie über unseren FTP-Backupspace oder über externen Backupspace Ihre Datensicherungen vorgenommen, müssen Sie zunächst ein Betriebssystem einspielen und dann Ihre Daten zurück kopieren.

Uns fällt es nicht leicht, Ihnen diese schlechte Nachricht übermitteln zu müssen. Seit 2:30 Uhr morgens haben wir versucht die Daten zu retten. Insgesamt drei Techniker waren hierfür im Einsatz. Leider mussten wir dann feststellen, dass die Daten des Nodes nicht mehr zu reparieren waren. Wir haben nun einen komplett neuen Server bereit gestellt, um zukünftige Probleme am Festplattencontroller, so gut es geht, zu vermeiden. Für den Datenverlust bitten wir bei Ihnen um Entschuldigung.

Sollten Sie Fragen haben oder Hilfe benötigen, stehen wir Ihnen gerne für ein offenes lösungsorientiertes Gespräch zur Verfügung.

Mit freundlichen Grüßen

Ihr netcup Team

2013-09-06-kernel-panicJep, ein "professioneller" Serveranbieter hat gestern nacht einen Haufen Server zerstört.
Dass man seine Backupscripte auch ab und an kontrollieren sollte, habe ich zusätzlich gelernt. Meines lief nämlich nicht richtig, weswegen meine Backups unbrauchbar sind. :-(
Jetzt geht es also an die Neuinstallation. Zur Abwechslung werde ich mal CentOS einsetzen. Für die Leser dieses Blogs dürfte das ein Vorteil sein, da damit vermutlich viele neue Einträge über die Installation von diversen Applikationen entstehen werden. Für mich ist es eine mittlere Katastrophe. Man darf gespannt abwarten, ob Netcup es bei dieser lapidaren E-Mail belässt oder noch andere Wiedergutmachungen anstossen wird.
Ich werde mir auf jeden Fall Gedanken machen, ob Netcup nach so einem GAU für mich noch länger in Frage kommt. Kann wer einen anderen guten vServer-Provider empfehlen, der richtige Virtualisierung über KVM o.ä. nutzt und iptables sowie TUN/TAP-Interfaces unterstützt?

Bild: Kevin Collins, CC BY 2.0

Linux - auf mehrere Strings in einer Zeile greppen

• Linux • Comments

Linux ist toll. Für jedes Problem findet man schnell eine Lösung, die meistens sogar auf der Hand liegt oder einem zumindest nach Erklärung sofort einleuchtet. So auch bei diesem Kurztipp. Will man eine Datei nach mehreren Strings durchsuchen, habe ich zwei favorisierte Methoden.

Pcregrep

Weiß man, in welcher Reihenfolge die Strings in der Zeile vorkommen, kann man das Programm pcregrep nutzen, insofern es denn installiert ist oder nachinstalliert werden kann. Damit kann man dann perlähnliche Regular Expressions nutzen, die das ganze Konstrukt sehr einfach machen. Um beispielsweise den Benutzer "m3adow" mit der bash als Shell in der Passwd zu suchen, reicht dann ein:

getent passwd | pcregrep "m3adow.*bash"

Da pcregrep wie gesagt perlähnliche RegEx nutzt, ist es sehr mächtig.

Piping

Weiß man nicht genau, in welcher Reihenfolge die Strings in der Zeile vorkommen, hat pcregrep nicht auf dem System und kennt sich auch nicht mit Regular Expressions aus, kann man immer noch die "Lösung des kleinen Mannes" nutzen und mehrere greps hintereinander pipen.

getent passwd|grep "m3adow"|grep "bash"

Das ist zwar nicht so effizient, da grep mehrfach aufgerufen wird, klappt aber auf jeden Fall.
Falls ihr noch andere Methoden habt, dieses Problem zu lösen, freue ich mich, diese in den Kommentaren zu lesen. :-)

Advertisement