Librería SSH para PHP

Para aquellos que quieran desarrollar una aplicación que tenga acceso mediante SSH, le vendrá bien esta librería, aunque con la limitación de que sólo admite SSH1. Esto puede ser un impedimento, pero la librería que hay para SSH2 es PECL, lo cual también puede ser un impedimento a la hora de instalar.

require_once ('ssh_in_php.php');

$host = "127.0.0.1";
$port = 22;
$user = "user";
$password = "pass";

try {
    $ssh = new SSH_in_PHP($host,$port);
    $ssh->connect($user,$password);

    $cycle = true;
    while ($cycle) {
        $data = $ssh->read();
        echo $data;
        if (ereg('\$',$data)) {
            $cycle = false;
        }
    }
    $ssh->write("ls -al\n");
    $cycle = true;
    while ($cycle) {
        $data = $ssh->read();
        echo $data;
        if (ereg('\$',$data)) {
            $cycle = false;
        }
    }

    $ssh->disconnect();

} catch (SSHException $e) {
    echo "An Exception Occured: {$e->getMessage()} ({$e->getCode()})\n";
    echo "Trace: \n";
    echo print_r($e->getTrace());
    echo "\n";
} 

SSH in PHP

Consejos para configuraciones SSH

Aunque yo, la verdad, he tratado las conexiones SSH de resfilón, nunca está mal conocer algunos trucos para cuando tengamos que configurar nuestras conexiones SSH.

  • Cambia el puerto: por defecto el puerto de escucha es el 22, cámbialo para que dificultar los ataques, sobre todo si es mayor a 1024, ya que la mayoría de los scanners no admite valores tan altos.
  • Admite solo el protocolo 2: SSH admite dos protocolos, permite tan solo el 2 ya que es más seguro.
  • Permite solo usuarios específicos: no admitas al usuario root ya que es aumentar los riegos de ataque.
  • Especifica tu propio aviso: si quieres que cualquier usuario pueda ver un aviso de acceso denegado crea tu propio fichero de texto que muestre el mensaje. Este punto no lo comprendo muy bien, está claro que me tengo que meter más a fondo con el SSH.
  • Usa clave pública DSA: puedes usar para la autenticación claves públicas DSA en vez de usuario y contraseña.
  • Usa TCP wrappers: permitiendo así conectarse solo a ciertos hosts.
  • Usa iptables para permitir acceso a hosts: como alternativa a los TCP wrappers.
  • Limita el acceso a periodos de tiempo

Advanced SSH security tips and tricks

Vía / dzone