Categories
Linux Network Server Shell

Get WAN IP address via shell

Sometimes one needs to get the WAN IP address via shell.

#!/bin/sh

set -e
set -u

C_DIG="$(which dig)"

DEBUG=0

while [[ ${#} -gt 0 ]]; do
    KEY="${1}"

    case "${KEY}" in
        -d|--debug)
            DEBUG=1
            shift
        ;;
    esac
done

QUERY_TYPE="A"
DIG_OPTIONS="+short"

DNS_SERVER="resolver1.opendns.com"
QUERY_VALUE="myip.opendns.com"

# short version: dig @resolver1.opendns.com A myip.opendns.com +short
IP_ADDRESS="$(${C_DIG} @${DNS_SERVER} ${QUERY_TYPE} ${QUERY_VALUE} ${DIG_OPTIONS})"
RC=${?}

# if the IP address could be successfully retrieved by querying OpenDNS echo it and exit
if [ ${RC} -eq 0 ]; then
    if [ ${DEBUG} -eq 1 ]; then
        echo "Server queried: OpenDNS"
    fi

    echo "${IP_ADDRESS}"

    exit 0
fi

DNS_SERVER="ns1-1.akamaitech.net"
QUERY_VALUE="whoami.akamai.net"

# short version: dig @ns1-1.akamaitech.net A whoami.akamai.net +short
IP_ADDRESS="$(${C_DIG} @${DNS_SERVER} ${QUERY_TYPE} ${QUERY_VALUE} ${DIG_OPTIONS})"
RC=${?}

# if the IP address could be successfully retrieved by querying Akamai echo it and exit
if [ ${RC} -eq 0 ]; then
    if [[ "${DEBUG}" == "-d" ]]; then
        echo "Server queried: Akamai"
    fi

    echo "${IP_ADDRESS}"

    exit 0
fi

DNS_SERVER="ns1.google.com"
QUERY_VALUE="o-o.myaddr.l.google.com"
QUERY_TYPE="TXT"

# short version: dig @ns1.google.com TXT o-o.myaddr.l.google.com +short
IP_ADDRESS="$(${C_DIG} @${DNS_SERVER} ${QUERY_TYPE} ${QUERY_VALUE} ${DIG_OPTIONS})"
RC=${?}

# if the IP address could be successfully retrieved by querying Google echo it and exit
if [ ${RC} -eq 0 ]; then
    if [[ "${DEBUG}" == "-d" ]]; then
        echo "Server queried: Google"
    fi

    echo "${IP_ADDRESS}"

    exit 0
fi

exit 1

Source

This has been taken from https://unix.stackexchange.com/a/81699 and put into a small script to provide some kind of failover if one service might not be available.

Categories
fail2ban Linux Security Server

fail2ban show bans and unban

List jails

List bans of jail

Unban IP in jail

Categories
CentOS Linux Server Teamspeak 3

Teamspeak 3 Server on CentOS 7

You’ll be surprised when you see how easy it is to setup a Teamspeak 3 server.

Table of contents

  1. Creating a specific user
  2. Downloading Teamspeak 3 server
  3. Setting up the server
  4. Configuring the firewall
  5. Finishing

1 Creating a specific user

First we will create a user for the Teamspeak 3 server. Of course this is just a recommendation, you can use any user you would like to.

2 Downloading Teamspeak 3 server

After creating and logging in as the user we will download Teamspeak 3.

Go to Teamspeak and download the latest server for Linux, preferably 64-bit. At the time of writing the latest version was 3.0.11.3, so you might want to replace those values for future releases. I additionally rename the folder so I can always see which one is my current installation.

3 Setting up the server

Go to the Teamspeak 3 directory and initialize the server.

You will get to see some server output which is partially very important!

——————————————————————
I M P O R T A N T
——————————————————————
Server Query Admin Account created
loginname= “serveradmin”, password= “DRGE1uHG”
——————————————————————

——————————————————————
I M P O R T A N T
——————————————————————
ServerAdmin privilege key created, please use it to gain
serveradmin rights for your virtualserver. please
also check the doc/privilegekey_guide.txt for details.

token=w+cyh2W4JcA2n7nuIIH2xVpA5JZb17BtuiouxRmr
——————————————————————

You can stop the server by pressing CTRL + c.

I replaced the not so important parts with three dots.

On the one hand you have the server query admin account details and on the other hand a token you have to use to gain serveradmin rights when you – later – logged onto the server.

Additionally we will create an inifile to store some settings for the server.

The content of the ts3server.ini is as follows.

Here you can also adjust the ports to your specific needs but I will stick to the essential settings, namely the IPs the server is meant to listen on.

We will change voice_ip, filetransfer_ip and query_ip to the actual IP of the interface.

Next step is to tell the server to actually include the inifile. We do this by changing the ts3server_startscript.sh. Comment out line 5 and add the following, so that the first few lines look like this.

You can now start, stop or restart the server with the folloing commands.

4 Configuring the firewall

To be able to connect to the server we need to allow some ports on the firewall. For maximum flexibility I do recommend creating a new firewall configuration file for voice, filetransfer and query each.

  1. Firewall configuration file for voice

  2. Firewall configuration file for filetransfer

  3. Firewall configuration file for query

Now that we created the configuration files we need to add them to the firewall.

5 Finishing

When you connect to your brand new server you will be asked to enter the token which was display when we initialized the server. As you do so you will be the Server Admin.

This is now a working Teamspeak 3 server. But to make it more secure you do need to add some groups and give them the required or specifig rights.

Categories
Linux RAM Raspberry Pi Server Swap

Raspberry Pi – SWAP erweitern

  1. Vorwort
  2. Swap erweitern

    1. Auf dem Pi einloggen
    2. Sich root-Rechte geben
    3. Die Datei “/etc/dphys-swapfile” öffnen und bearbeiten
    4. Setup und AKtivierung des Swap

1 Vorwort

Der RAM eines (Stand: 21.10.2014) aktuellen Raspberry Pi (B+) ist 512MB groß.

Je nach Anwendung(-en) kann der Pi an seine Grenzen geraten. Dass er trotzdem so stabil wie möglich weiter läuft sollte man also den Swap erweitern (Standard müsste 100MB sein).

Bei meinem Pi benutze ich einen 16GB Speicher – das ist für meine Zwecke mehr als genug. Also kann ich auch den Swap großzügig vergrößern.

2 Swap erweitern

2.1 Auf dem Pi einloggen

Das kann man entweder per SSH oder direkt “vor Ort” machen.

2.2 Sich root-Rechte geben

Entweder man loggt sich als root-User ein oder man führt jeden Befehl mit dem vorangestellten “sudo” aus

2.3 Die Datei “/etc/dphys-swapfile” öffnen und bearbeiten

Die Datei “/etc/dphys-swapfile” mit

öffnen und folgende Zeile einfügen (überschreiben):

2.4 Setup und AKtivierung des Swap

Anschließend folgt ein Setup der Swap-Datei und das aktivieren des Swap.

Der Swap sollte nun on-the-fly geändert werden und ihr solltet somit einen größeren Spielraum beim RAM zur Verfügung haben.

Categories
Allgemein Linux Raspberry Pi Server

Raspberry Pi – Raspbian installieren

Nachdem ich gelesen habe, dass der nächste Raspberry Pi (Version 2) frühestens 2017 kommen solle. Meine Hoffnung wurde zerschmettert und somit habe ich mir einen Raspberry Pi B+ (B Plus) zugelegt.

Edit: Mittlerweile ist er ja bereits erschienen, groß geändert hat sich an der Vorgehensweise allerdings nichts.

Hier eine kleine Anleitung zur Installation eines Raspbian. Die Vorgehensweise müsste sich allerdings auch auf die anderen Betriebssysteme übertragen lassen.

  1. Benötigte Materialien
  2. Vorbereitung
  3. Betriebssystem installieren
  4. Abschluss

1 Benötigte Materialien

  • Einen Raspberry Pi B+ (wobei diese Anleitung auch auf alle Vorgänger zutreffen dürfte)
  • Eine Flash-Speicherkarte (je nach Version)
    • Raspberry Pi B+ => microSD
    • Vorgänger des B+ => SD
  • Eine Stromversorgung für den Pi
  • Für die Erstinstallation einen Monitor / Fernseher mit HDMI-Anschluss (Composite sollte auch funktionieren)
  • Eine USB-Tastatur
  • Einen Internetzugang

2 Vorbereitung

Zur Vorbereitung werden wir erst einmal das Betriebssystem herunterladen. Das macht man am Besten durch die offizielle Quellen. Die heruntergeladene Datei wird entpackt, dadurch hat man dann eine .img Datei.

Diese .img Datei kann man nun mit dem Win32 Disk Imager auf die (micro-)SD-Karte spielen.

Dazu startet man den Disk Imager, wählt den entsprechenden Pfad zur .img Datei aus, wählt das richtige Device (Gerät, Laufwerksbuchstabe) aus und sobald man sich vergewissert hat, dass alle Angaben korrekt sind, drückt man auf den Button “Write“.

Dadurch wird das Image auf die (micro-)SD-Karte geschrieben.

!!! Bevor die Stromversorgung des Pi hergestellt wird

Nachdem das Betriebssystem erfolgreich auf die (micro-)SD-Karte geschrieben wurde kann es in den dafür vorgesehenen Slot geschoben werden. Anschließend noch das Internetkabel, die Tastatur und den Monitor / Fernseher anschließen.

Nachdem man sich vergewissert hat, dass alles richtig angeschlossen und vorbereitet ist, kann die Stromversorgung des Pi hergestellt werden.

3 Betriebssystem installieren

Beim ersten Systemstart wird eine Vorkonfiguration vorgenommen – das kann etwas dauern.

Das Betriebssystem zu installieren ist durch die geführte Installation recht simpel.
Im Grunde kann man einfach die Punkte nacheinander abarbeiten. Das, was nicht benötigt wird, kann ausgelassen werden.

Empfehlen würde ich den SSH-Server. Dadurch reichen dem Pi ein Netzwerkkabel und die Stromversorgung zum Betrieb.

4 Abschluss

Ich kann verstehen, die Euphorie ist groß.
Deshalb: Es fehlt, um per SSH auf den Pi zugreifen zu können, nur noch eine Information: die IP-Adresse des Pi.

Die IP-Adresse wird am einfachsten mittels

Die Ausgabe davon sollte in etwa so aussehen:

Mit der IP-Adresse kann nun mittels SSH auf den Pi zugegriffen werden und das System auf den aktuellsten Stand gebracht werden.
Bekannterweise mit:

und

Der Pi sollte nun den eigenen Ansprüchen angepasst werden. Empfehlenswert ist natürlich noch die Firewall zu konfigurieren!

Categories
Linux Security Server SSH

SSH-Server installieren und sichern

Heute wird ein SSH-Server (Secure Shell) installiert und abgesichert. Dazu wird zählen

  1. SSH-Server installieren
  2. Root-Login verbieten
  3. Listen-Port ändern
  4. Benachrichtigung bei Login (per e-mail)

Hinweis: Ich verwende den Editor nano. Eine Datei wird mittels STRG+O gespeichert und mittels STRG+X geschlossen.

1. SSH-Server installieren

Installieren ist relativ simpel. Ich benutze meistens apt-get.

Bevor allerdings etwas installiert wird, sollte man die Paketliste erneuern und gegebenenfalls das System auf den neusten Stand bringen.

Ist dies geschehen, kann man mit der Installation des SSH-Servers fortfahren.

Es kommt wahrscheinlich eine Anzeige mit mehreren Abhängigkeiten und zusätzlich benötigten Paketen und die Frage, ob man fortfahren wolle – bestätigen.

2. SSH Root-Login verbieten

Den Root-Login zu verbieten dient natürlich der Sicherheit, denn auf jedem Linux gibt es den Benutzer “root” – ein potentieller Angreifer muss nur noch das Passwort herausfinden. Bevor man nun aber den Root-Login verbietet, sollte man natürlich einen anderen Benutzer anlegen – sonst hat man im worst-case keinen Zugriff mehr auf den Server.

In diesem Beispiel können der USERNAME und weitere Angaben individuell angegeben werden.

Nachdem man diesen Befehl ausgeführt hat, wird man zwei Mal nach dem gewünschten Passwort gefragt.
Nachfolgend werden Eingaben von Informationen über den Benutzer abgefragt.
Name und weitere Angaben können einfach übersprungen werden, indem man die Enter-Taste drückt.
Dann sollte eine Frage erscheinen, ob die angegebenen Informationen korrekt sind – bestätigen.

Anschließend sollte man sicherstellen, dass man sich mit dem neuen Benutzer einloggen kann.

Führt man diesen Befehl als “root” aus, wird man nicht nach dem Passwort gefragt, von einem anderen Benutzer allerdings schon.

Ist das gelungen, kann weiter fortgefahren werden.

um wieder auf den eigentlichen Benutzer zurückzukehren und den Root-Login zu verbieten.

Ich benutze hierfür den Editor nano. Es kann natürlich auch der persönlich präferierte Editor genutzt werden.

Nun wird die Konfigurationsdatei für den SSH-Server geöffnet.

Hier sucht man nun nach der Zeile

PermitRootLogin yes

und ändert es in

PermitRootLogin no

um. Standardmäßig ist der Login als root gestattet – mit einem ändern von “yes” auf “no” wird es verboten.
Ist der Wert geändert wird die Datei gespeichert und geschlossen.

3. Listen-Port ändern

WICHTIG! Sollte auf dem System eine Firewall installiert sein, sollten auf jeden Fall Vorbereitungen getroffen werden, dass der Port auch zugelassen sein wird – sonst hat man im worst-case keinen Zugriff mehr auf den Server.

Hierfür öffnen wir wieder die Konfigurationsdatei für den SSH-Server.

Nun sucht man nun nach der Zeile

Port 22

Der Standard-Port für SSH ist 22 – nun einfach die 22 durch den gewünschten Port ersetzen. Hier sollte man aufpassen und keinen anderweitig verwendeten Port verwenden. Beispiele sind

  • 20/21 -> ftp
  • 80 -> http
  • 443 -> https

und viele mehr – nachzulesen hier.

Ist der Port geändert wird die Datei speichert und geschlossen und man führt

aus. Der SSH-Server wird neu gestartet.

Mit dem Befehl

kann man sehen, auf welchem Port der SSH-Server “lauscht”.

4. Benachrichtigung bei Login (per e-mail)

Vorraussetzung: Ein Paket für den Mailversand wie zum Beispiel Postfix ist installiert und konfiguriert, damit die Mail auch verschickt werden kann.

Möchte man bei jedem Login eine e-mail erhalten kann man folgendes Script erstellen und Einstellungen übernehmen.

Mit dem ersten Befehl wird die Datei für das Script erstellt, mit dem zweiten wird sie dann bearbeitet und anschließend soll sie ausführbar sein.

Dann kommt nachfolgendes Script in die gerade geöffnete Datei “shell-login.sh”. Natürlich kann man es noch Wunschspezifisch anpassen.

Die Datei wird wieder gespeichert und geschlossen.

Falls das Paket “finger” noch nicht installiert sein sollte, kann man es mitttels

nachinstallieren.

In der Datei “/etc/profile”

fügt man dann die Zeilen

hinzu (die Werte für “sender@domain.tld” und “receiver@domain.tld” natürlich anpassen) – das war es auch schon.

Ist alles erfolgreich abgelaufen ist der SSH-Server schonmal etwas sicherer – es gibt wie immer keine 100%ige Sicherheit. Man könnte auch noch eine Authentifizierung per Key verlangen, den Timeout einstellen und so weiter.