Twitter Facebook RSS

Accueil > Tags

20
décembre

Autoriser le SSH en root depuis une seule IP

Une directive intéressante de SSH est "Match", qui permet de faire des sortes de conditions... Dans mon cas, j'avais besoin d'autoriser la connexion en root uniquement depuis une IP... Allons jouer avec la configuration d'OpenSSH...

Éditez /etc/ssh/sshd_config :

À la fin, ajoutez ce bloc :

Match Address 192.168.2.45
	PermitRootLogin yes

Match Address *
	PermitRootLogin no

Que fait ce bloc : si on notre connexion SSH vient de l'IP 192.168.2.45, on pourra se connecter en root (à condition d'avoir le mot de passe, ou d'y avoir paramétré sa clé SSH). Par contre, si on vient de toute autre adresse, pas de connexion en tant que root...

Hop, restart d'OpenSSH, et on teste :

/etc/init.d/ssh restart
[192.168.0.1] jeoffrey@arch ~ $ ssh root@mail
root@srvdev1.mind-lab.eu's password: 
Permission denied, please try again.

[192.168.2.45] jeoffrey@ubu ~ $ ssh root@mail
root@mail's password: 
Last login: Thu Dec 20 09:46:51 2012 from ubu
root@mail ~ # logout

19
novembre

[Debian] Authentification SSH via LDAP

Voici un rapide article pour vous expliquer comment s'authentifier sur vos machines Linux à travers votre serveurs LDAP...

Pour cet article, j'ai utilisé le paquet "slapd" de Squeeze, à savoir la version 2.4.23-7.2 qui est actuellement dans les dépôts. Pour ma part, j'ai installé cet environnement en local seulement, ne soyez donc pas étonnés de retrouver une adresse en .lan...

Commençons par installer le paquet suivant :

apt-get install libpam-ldapd

Voici ce qu'il faut répondre aux questions (à adapter en fonction de votre serveur bien sûr) :

URI du serveur LDAP : ldap://infra.dom.lan

Base de recherche du serveur LDAP : dc=dom, dc=lan

Services de nom à configurer : Pour ma part, j'ai coché group, hosts, et shadown pour synchroniser les utilisateurs, leurs mots de passe et les groupes. Si vous voulez reconfigurer cette partie plus part, éditez le fichier /etc/nsswitch.conf

Normalement c'est bon, vous devriez pouvoir vous authentifier avec votre utilisateur LDAP ;).

Si vous voulez que le home paramétré dans votre LDAP soit créé lors de la 1ère connexion de votre utilisateur, ajoutez cette ligne au fichier /etc/pam.d/common-session :

session required	pam_mkhomedir.so skel=/etc/skel umask=0022

Pour autoriser la connexion seulement si l'utilisateur appartient à un certain groupe, dans le fichier /etc/pam.d/common-auth, décommentez la ligne suivante :

auth	required			pam_access.so

Et ajoutez cette ligne au fichier /etc/security/access.conf :

-:ALL EXCEPT root usersallowed:ALL EXCEPT LOCAL

usersallowed est le groupe LDAP que vous souhaitez autoriser uniquement ;).

Pour relancer le cache LDAP sur le client, relancez le démon nscd : /etc/init.d/nscd restart.

12
avril

Accéder à l'interface de sa Freebox V6 via SSH

Lorsque vous êtes en déplacement, et que vous avez besoin d'accéder à l'interface de votre Freebox Revolution, voici comment faire :

Prérequis :

Et on utilise cette commande :

ssh mondomaine.no-ip.biz -L 8080:localhost:80 -L 8081:mafreebox.freebox.fr:80

Ouvrez votre navigateur à l'adresse http://localhost:8081, vous devriez accéder à l'interface de votre Freebox !

03
février

Faire du SSH via PHP

Dans le cadre d'un développement Web, vous avez besoin de vous connecter et de réaliser certaines actions sur un autre serveur. L'ennui, c'est que ce serveur est accessible uniquement en SSH.

Pas de problème, on peut faire du SSH en PHP ! Avec la librairie PHP "SSH2", on va se connecter à un serveur, envoyer des commandes SSH, et même afficher ce qu'il nous renvoie ! Installez 3 paquets, et relancez le serveur Apache :

apt-get install libssh2-1 libssh2-1-dev libssh2-php
/etc/init.d/apache2 reload

Pour tester que SSH2 est bien installé, faites un php -m |grep ssh2. Si la console vous affiche bien "SSH2", c'est que la librairie est bien installée !

Le code PHP :

Voici une fonction PHP vous permettant d'envoyer une commande SSH :

function ssh($host, $login, $mdp, $command)
{
    if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
    if(!($con = ssh2_connect($host, 22))){
        echo "échec connexion\n";
    } else {
        if(!ssh2_auth_password($con, $login, $mdp)) {
            echo "échec authentification\n";
        } else {
            // execute a command
            if (!($stream = ssh2_exec($con, $command ))) {
                echo "échec de l'exécution de la commande\n";
            } else {
                // collect returning data from command
                stream_set_blocking($stream, true);
                $data = "";
                while ($buf = fread($stream,4096)) {
                    $data .= $buf;
                }
                fclose($stream);
                return $data;
            }
        }
    }
}

Elle s'utilise comme cela :

$command = 'ls -alh /tmp';
$ret = ssh('monserveur', 'utilisateur', 'monmotdepassesecurise', $command);
echo '<pre>' . $ret . '</pre>';

Utilisez la variable $ret pour afficher ce que renvoie la commande SSH :) .

Si vous souhaitez passer plusieurs commandes dans la même instance SSH, utilisez le ";" comme séparateur. Les commandes seront alors exécutées à la suite :

ls -alh /tmp/; touch /tmp/truc

21
décembre

ZimbraLdapContext : service FAILURE

Si vous avez changé le port de SSH et que lors de l'administration de Zimbra vous avez cette erreur :

Mail : system failure: ZimbraLdapContext Code d'erreur : service.FAILURE Method: SearchDirectoryRequest Détails :soap:Receiver

Vérifiez dans la configuration de Zimbra que le nouveau port est bien pris en compte :

zmprov gs server.domain.com zimbraRemoteManagementPort

Si la valeur est toujours à 22, redéfinissez cette variable :

zmprov ms server.domain.com zimbraRemoteManagementPort 8022

^ Retourner en haut