Bien qu'il puisse être intéressant de pouvoir ssh dans votre système à partir d'emplacements arbitraires sur Internet, il existe des systèmes automatisés d'attaque de mots de passe qui se verrouillent sur un port ssh ouvert et appliquent diverses attaques de comptes joe et de dictionnaires sur votre système. Cela peut être compliqué à lire dans votre résumé journal quotidien et constitue une perte de votre bande passante.
Si vous avez un serveur Web sur le même système, vous pouvez utiliser les wrappers php et tcp pour limiter le trafic entrant ssh aux systèmes connus, et vous donner une clé de porte arrière pour vous permettre d'accéder à partir de systèmes arbitraires sur Internet.
Voici comment vous le faites:
refuser toutes les connexions ssh dans /etc/hosts.deny:
# /etc/hosts.deny fragment
sshd: all
Autorisez les systèmes connus par IP dans /etc/hosts.allow, plus ajoutez un fichier pour un accès temporaire:
# /etc/hosts.allow fragment
sshd: 10.0.10.2 # some system
sshd: 172.99.99.99 # some other system
sshd: /etc/hosts.allow.temporary-sshd-access
Créez un fichier php sur votre serveur web et donnez-lui un nom non évident comme my-sshd-access.php:
<?php
function get_ip()
{
return getenv("REMOTE_ADDR");
}
?>
<?php
$out='/etc/hosts.allow.temporary-sshd-access';
$log='/var/log/sshd-access-addition-log';
print "Was:";
readfile($out);
print "<br>";
$ip=get_ip();
$fp=fopen($out,"w");
fputs($fp,$ip);
fclose($fp);
$lfp=fopen($log,"a");
fputs($lfp,$ip);
fputs($lfp,"n");
fclose($lfp);
print "Wrote: ";
readfile($out);
?>
Pardonnez le code php - je l'ai glissé d'un autre endroit, afin qu'il puisse probablement être nettoyé un tas. Il ne fait qu'ajouter l'adresse IP du système qui y accède au fichier /etc/hosts.allow.temporary-sshd-access, qui est lu par sshd (du fait de son inclusion par /etc/hosts.allow) au moment de la connexion. .
Maintenant, lorsque vous êtes sur un système Web arbitraire et que vous voulez utiliser SSH sur ce système, utilisez d’abord un navigateur Web et cliquez sur ce fichier (ou utilisez wget ou équivalent):
$ wget http://your.system.name/my-sshd-access.php
Vous devriez maintenant pouvoir vous connecter à votre système. Si c'est quelque part où vous ferez souvent des ssh'ing, il serait trivial de lire le contenu du fichier /etc/hosts.allow.temporary-sshd-access et d'ajouter définitivement l'adresse IP à / etc / hosts. Autoriser.