Bonjour à tous,
Je cherche une solution pour démarrer SSH à la demande et ainsi sécuriser cet accès.
J'ai vu les solutions de Knocking mais cela ne me convient pas(j'ai souvent des restrictions de ports chez mes clients).
Avez-vous déjà mis en place une solution de SSH à la demande via une page CGI?
J'ai commencé à écrire quelque chose mais je souhaite éviter de réinventer la "roue"…
Merci,
Antoine
# port 443
Posté par steph1978 . Évalué à 5. Dernière modification le 24 octobre 2016 à 17:02.
sshd doit tourner en root (sauf reconfiguration et grosses limitations).
un CGI qui lance un truc en root, je trouve pas ça top.
Tu pourrais faire utiliser le port 443, rarement filtré, pour faire tourner SSH.
Si tu as aussi un serveur HTTPS (sûrement puisque tu cherchais un CGI), tu peux tester sslh pour multiplexer HTTPS et SSH sur un même port.
Pour ma part j'utilise une VPN openvpn sur le 443 puis me connecte en mosh à ma machine au travers de la VPN.
[^] # Re: port 443
Posté par Tonio (site web personnel) . Évalué à 1.
J'avais vu SSlH mais le SSH est toujours ouvert, ce que je ne souhaite pas.
Pour MOSH, je vais regarder cela, cela a l'air intéressant dans certaines circonstances.
Je sais que ce n'est pas super de lancer un script SUID pour lancer le SSH.
Mais le script CGI intègre des valeurs clés(sécurité) à mettre pour lancer le script.
[^] # Re: port 443
Posté par totof2000 . Évalué à 3.
personnellement j'utilise haproxy pour multiplexer https et ssh (enfin, il n'est pas actif poour le moment pour cause de plantage de Xen Host). Mais ça marche.
[^] # Re: port 443
Posté par totof2000 . Évalué à 1. Dernière modification le 24 octobre 2016 à 17:42.
Un cron qui tourne toutes les mn et qui va voir une table en bdd (ou ailleurs) pour activer ssh pourrait le faire. Et plutôt que de jouer avec l'arrêt/relance du daemon, on peut peut-âtre jouer avec une règle de firewall qui refuserait l'accès à tout sauf certaines IP pour se connecter quoi qu'il arrive en dépannage (via LAN par exemple). Et tu mets à jour ta table ou ton ichier via CGI.
Mais bon, à ce stade le VPN est peut-être la meilleure solution
# Knocking
Posté par Sytoka Modon (site web personnel) . Évalué à 3.
Tu pourrais envoyer depuis ton serveur https le knock qui va bien en CGI qui ouvre le port SSH. Du coup, cela sépare bien les choses ;-)
[^] # Re: Knocking
Posté par Tonio (site web personnel) . Évalué à 1.
C'est pas mal comme idée…
Avec la page CGI, je fais la séquence d'ouverture de ports qui va bien puis je me connecte en SSH ou mosh.
Je vais regarder cela demain pour faire le "knocking".
J'avais quasiment fini mon script, c'est dommage!
Avec en paramètre, un 'sleep' pour savoir combien de temps, je devais garder le SSH ouvert.
[^] # Re: Knocking
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 7.
Wouaw, tu nous donnera l'adressse de ton serveur web histoire qu'on rentre sur ta machine grâçe a tes CGI shell ultra pas sécurisés du tout ?
Je suis un peu méchant, mais franchement tu devrait éviter ça, SSH est safe, bien plus safe que ce genre de choses.
Tu désactive les accès par password, tu limite les login autorisés à ouvrir une session (PermitRootLogin / AllowUser / DenyUser / AllowGRoup / DenyGroup) et tu tiens a jour le demon SSH pour les quelques failles existantes et franchement tu ne risque pas grand chose.
Par contre a laisser ouvert un serveur web, avec du php et des cgi shell, la …
[^] # Re: Knocking
Posté par Tonio (site web personnel) . Évalué à 1.
Je suis d'accord avec ta remarque sur l'ouverture d'un serveur web et de scripts cgi.
Rien que pour cela, c'est vraiment moyen comme solution de contournement.
Suite aux différentes remarques, je pense juste faire un script avec création de fichier et un cron qui vérifie la présence ou non du fichier.
Mon serveur SSH tourne depuis longtemps sans souci mais je fais des mises à jour 3, 4 fois par an. Donc je souhaite éviter de trop l'exposer.
[^] # Re: Knocking
Posté par NeoX . Évalué à 2.
c'est ce qu'on vient de te dire,
ton serveur web sera donc exposer en permanence, pas forcement plus durci que ton serveur SSH (mis à jour 3/4 fois par an aussi)
et en plus c'est ton code qui va devoir gerer la securité
alors que ssh et le portknocking, c'est quand meme fait pour…
[^] # Re: Knocking
Posté par totof2000 . Évalué à 2.
D'après ce que j'ai compris, le serveur web existe déjà, donc est déjà exposé.
[^] # Re: Knocking
Posté par LaBienPensanceMaTuer . Évalué à 2.
Le port knocking (si c'est bien ce dont on parle) fonctionne pour une IP source.
Si c'est le serveur HTTPS (aka localhost) qui knock, ça n'ouvrira pas le port pour son client remote…
# fichier drapeau
Posté par Lol Zimmerli (site web personnel, Mastodon) . Évalué à 2.
Par FTP ou via un petit frontal web, créer ou faire créer un fichier, par ex /home/ssh_on_demand/on
Un cronjob regarde chaque minute si le ficheir existe et si c'est le cas, il lance ssh et efface le fichier.
La gelée de coings est une chose à ne pas avaler de travers.
# Jamais tu fais un script qui lance SSH
Posté par Flyounet (site web personnel) . Évalué à 4.
Si tu veux vraiment utiliser ton serveur web (partons sur un Httpd Apache, mais fonctionne avec Hiawatha, nginx, …) :
utilise inotify sur ton access.log pour lancer un script qui :
N.B. : Si inotify c'est overkill pour toi, tu as la crontab toutes les minutes…
Aucun script lancé par le Web server. A la limite y a même pas besoin qu'une page existe derrière.
[^] # Re: Jamais tu fais un script qui lance SSH
Posté par NeoX . Évalué à 2.
joli,
j'aime bien l'aspect technique proposé
# Résultat pour commentaire ou pas
Posté par Tonio (site web personnel) . Évalué à 2. Dernière modification le 25 octobre 2016 à 16:46.
Voici le résultat concernant mon besoin:
La page web en php pour créer le fichier drapeau:
J'ai ajouté un .htaccess dans le répertoire, pour restreindre l'accès.
Le script crontab:
L'entrée dans /etc/crontab
Sur mon apache, j'ai plusieurs sites web derrière ainsi que du reverse proxy. Donc je n'ai pas pu reprendre l'idée du serveur web spécifique.
[^] # Re: Résultat pour commentaire ou pas
Posté par NeoX . Évalué à 2.
ben tu fais justement un virtualhost,
ou un reverse proxy dédié
# Tor
Posté par EauFroide . Évalué à 1. Dernière modification le 26 octobre 2016 à 13:20.
Tu peux aussi restreindre l'accès a SSH uniquement sur 127.0.0.1, tu fais pointer un Tor Hidden Service dessus et via une WEBUI, un script ou ton interface tu lances "sudo service tor stop|start". Avec sudoers tu peux régler les problèmes de droit root en permettant à l'user qui gère ton interface de pouvoir stop|start le service.
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.