SSH dynamisch nur für gewisse IPs erlauben dynamische IP-Whitelist

Flattr this
Tweet this: SSH dynamisch nur für gewisse IPs erlauben dynamische IP-Whitelist
Dent this: SSH dynamisch nur für gewisse IPs erlauben dynamische IP-Whitelist
Tags: IP, PHP, SFTP, SMF, ssh, Whitelist
Datum: 16.07.2009 12:00:00

Auf diesem Weg kann man in Kombination mit einem Cronjob und einem weiteren Script (sei es PHP oder eine Sprache) dynamisch verschiedenen IPs erlauben SSH zu nutzen.
Der Cronjob ist auch nötig, weil PHP das unter dem Benutzer des Webservers (Modul) oder einem eigenen Benutzer (suexec) läuft, üblicherweise (und sinnvoller) Weise keinen Schreib-Zugriff auf das /etc/-Verzeichnis hat.

Anmerkung: Das ist hier alles quick and dirty ausgeführt, nur um zu zeigen was für Möglichkeiten man hat.

Mein Problem war es einer Usergruppe (Angemeldeten Benutzern eines Forums) Zugriff auf einen SFTP/SSH-Account zu geben und diesen Usern einen möglichst einfachen Zugriff bei gleichzeitigem Schutz vor den üblichen Bruteforce-Attacken. Dazu habe ich dann folgendes kleines Script benutzt (es ist für das Simple Maschines Forum (SMF) geschrieben, sollte allerdings sehr einfach an ein anderes Forum angepasst werden können.)

<?php
error_reporting(E_ALL);
$res = mysql_connect('host','user','pw') or die(mysql_error());
mysql_select_db('databasename',$res) or die(mysql_error());
$query = mysql_query("SELECT memberIP,memberIP2 from smf_members") 
              or die(mysql_error());
if (mysql_num_rows($query) > 0)
{
    while($data = mysql_fetch_assoc($query))
    {
        $global[] = $data['memberIP'];
        $global[] = $data['memberIP2'];
    }
}
file_put_contents('./hosts.allow','sshd: '.implode("\n".'sshd: ', $new));

Der Cronjob muss jetzt folgendes machen, er muss das PHP-Script aufrufen (entweder über die shell oder über wenn es via URL erreichbarbar ist über wget/lynx/curl) und dann die vom PHP-Script erzeugte Datei an den richtigen Platz kopieren:

wget --output-document=/dev/null  http://www.domain.tld/allowscript/allowscript.php
cp /pfad/zum/allowscript/hosts.allow  /etc/hosts.allow

Dadurch dass der Cronjob nur alle Minute ausgeführt wird, kommt es zwar zu einer kurzen Wartezeit von bis zu einer Minute bis man nach dem einloggen im Forum Zugang zum SFTP/SSH bekommt, aber das sollte akzeptabel sein.

Ein Nachteil der besteht, ist dass man bei einem normalen DSL-Anbieter, üblicherweise alle 24 Stunden einen Disconnect hat raus und muss danach erst wieder aufs Forum, auch wenn man gerade vor fünf Minute auf dem Forum war. Wer ne feste IP hat, hat damit kein Problem, es lässt sich allerdings auch noch erweitern indem man nur die IPs der Leute einträgt die innerhalb der letzen XX Stunden z.b. auf dem Forum waren, einen Post gemacht haben .... ist also auch weiter ausbaufähig.


Trackbacks (0)

Trackbackurl: http://www.robo47.net/trackback/text/10

Es sind keine Trackbacks vorhanden.


Kommentare (0)

Es sind noch keine Kommentare vorhanden.

Die Kommentare zu diesem Beitrag sind gesperrt.

You liked it ? Link it on your homepage or blog: