Sécurité ssh -Limiter accès -Changer les droits - virtualmin

Bonjour.
J’ai mis volontairement un titre qui pourrait se retouvé sur google, car je n’ai rien trouvé de pertinent

J’ai installé webmin et virtualmin sur mon serveur.
J’y héberge des sites perso, mais aussi d’autres sites, ceux d’amis.

J’utilise virtualmin pour créer les serveur virtuels.

j’ai l’habitude pour modifier et envoyer mes sites, de me connecter en root par sftp.
(celà me permet d’ouvrir un fichier php, de le modifier et d’enregistrer sans avoir à me soucier de le renvoyer par ftp)

Mais en faisant des test, je viens de m’apercevoir, que n’importe quel serveur virtuel (donc chaque site)
pouvait se connecter en ssh… avec des droits root :open_mouth:
Et à donc un accès complet à mon serveur…

Comment bloquer les compte ssh?

PS : pour ceux qui ne connaissent pas virtualmin:
il créé un utilisateur pour chaque profil.
un dossier pour le site dans home/nomdutilisateur
un accès ftp
des fichiers logs pour chaque site pour apache awstat …
et…
un acces ssh par utilisateur.

Merci d’avance.

EDIT : Autant pour moi…
Ce n’est pas un accès root au sens propre du terme, j’ai testé :
les apt-get update sont bloqués donc install impossibles
j’ai un wget d’un image dans la racine, bloqué aussi, mais rien n’empeche d’entrer dans son dossier pour faire ca…
j’ai réussi par le sftp à ouvrir le dossier /etc/apache2
On peut ouvrir les fichiers de config, mais pas les modifier… néanmoins on peut en apprendre un max sur le site en question.
Ca peut aider pour trouver une faille…
le plsu surprenant c’est que je ne peut pas acceder aux dossier des autres utilisateurs
Au fait, un accès ssh peut il etre restreint à un seul dossier?

[quote=“yox”]Bonjour.

Au fait, un accès ssh peut il etre restreint à un seul dossier?[/quote]
soit tu utilises les droits unix pour cela, en créant des groupes dans lesquels tu mettras les users autorisés à se balader partout, et tu enleveras les droits lecture et execution pour les autres sur les dossiers systèmes. Autre solution, tu peux chrooter ssh, ce qui te créera une “fausse” arborescence dans laquelle tes users arriveront. Ils accederont aux repertoire que tu auras défini comme racine, mais pour le reste, ils ne verront que des rep virtuels.

bonjour
dans /etc/ssh/sshd_config

Autorise seulement alexmath à avoir accès a SSH

tu peux en autoriser plusieurs

idem pour les groupes

une fois connecté ça n’empeche pas un su (switch user :wink: )

je ne sais pas si on peut bloquer juste “su” pour un user

[quote=“alexmath”][quote=“yox”]Bonjour.

Au fait, un accès ssh peut il etre restreint à un seul dossier?[/quote]
soit tu utilises les droits unix pour cela, en créant des groupes dans lesquels tu mettras les users autorisés à se balader partout, et tu enleveras les droits lecture et execution pour les autres sur les dossiers systèmes. Autre solution, tu peux chrooter ssh, ce qui te créera une “fausse” arborescence dans laquelle tes users arriveront. Ils accederont aux repertoire que tu auras défini comme racine, mais pour le reste, ils ne verront que des rep virtuels.[/quote]

Cette perspective m’intéresse.

Mais je vais déjà limiter l’accès avec la solution de Sinozis
Histoire d’etre sur que je ne puisse me connecter qu’avec le root, et 2 autres comptes pour tester la solution de sinozis.

Donc, Quel commande dois-je taper?

Par exemple pour le moment, une connection en ssh via console donne en racine le dossier utilisateur.
Si l’utilisateur tape : cd / il tombe dans la racine, ce que je ne veux pas

Si l’utilisateur fait, par exmple sous debian après un clic sur le bureau :
sftp://username@monsite.com et tape son mon de passe, il arrive direct sur la racine et tous les dossiers qui compose le serveur.
Chose que je ne veux pas non plus…

Merci

pour des raisons de sécurités interdire root de se connecter directement avec ssh

dans /etc/ssh/sshd_config

pour faire des trucs en root
1ere metode "sudo"
2eme “su” + MDP_root

[quote=“sinozis”]pour des raisons de sécurités interdire root de se connecter directement avec ssh
dans /etc/ssh/sshd_config

[/quote]

Si je met ça, je rique de ne plus avoir accès à mon serveur en ssh?
pour y installer de nouveaux soft, ou des mises à jour?

Je me suis mis en utilisateur simple.
J’ai fait un “sudo apt-get update”

retour :
-sh: sudo : command not found

tu peux obtenir le même résultat avec

est il installé ?

apt-cache policy sudo

si il n’est pas installé

su -c 'aptitude install sudo'

J’ai modifier /etc/ssh/sshd_config

en mettant : PermitRootLogin no

Eh bien… plus du tout de connection ssh…

Heureusement, il me resdte la console série 1and1 pour réparer tout ça.

De quoi viens le problème?

EDIT :
Grosse frayeur en ne pouvant pas executer un sudo nano ! (meme un su ne passait plus)
Finalement, j’ai réussi grâce à la console série… merci 1and1 :smiley:
Mais le problemes persiste, car j’ai remis l’accès root ssh

tu as redémarré ssh ?

tu peux répondre au question

[quote=“sinozis”]est il installé ?

Code:
apt-cache policy sudo

si il n’est pas installé
Code:
su -c ‘aptitude install sudo’[/quote]

tu as peut être fait un faute de frape ?

quand tu te connecte avec ssh tu fais

?
ou l’user qui a dans "AllowUsers Ton_user"
la faute de frape est impardonnable dans /etc/ssh/sshd_config

pour éviter ce genre de problème je crois qu’il faut éditer les fichiers conf avec la commande

et le système contrôle la syntaxe pour éviter de casser la conf

j’ai oublié de le précisé.

J’ai fait un apt-get install sudo

/etc/init.d/ssh restart aussi.
Mais bizarement rien n’a changé, donc j’ai rebooté tout simplement…

Le mot de passe a été retapé 3 fois, mais rien.

je dirai bien post ton sshd_config mais il faut faire attention il faut que tu caches les infos “confidentiel”

Ouais, j’ai peur de laisser filtrer quelque chose quand meme là…

c’est vraiment dommage que j’ai une ip dynamique…

Sinon, j’avais fait un script php un jour

il vérifiait l’ip d’un nom de domaines mon-nom.dyndns.org
il regardait mon ip visiteur
si les 2 etait identiques, il affichait la page

Il n’y a pas moyen de faire quelque chose avec ssh?

Aparement, j’ai lu quelque part que ssh pouvait limimter l’accès à une ip client…

ListenAddress "ton_ip"
mais je ne suis plus très sur , a confirmer
EDIT :
c’est pas bon ListenAddress, c’est pour une adresse locale

delafond.org/traducmanfr/man … fig.5.html

[quote]ListenAddress
Spécifie l’adresse locale d’écoute sur laquelle le démon sshd doit attendre les connexions. On peut utiliser les formes suivantes :[/quote]

As-tu fait ou moins un backup de ton sshd_config avant de le modifier ?
je suis au boulot je ne peux pas te donner le mien pour l’instant si une âme généreuse peut le faire a ma place ……

voila un sshd_config d’origine

# Package generated configuration file
# See the sshd(8) manpage for details

# What ports, IPs and protocols we listen for
Port 22
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
# HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
#Privilege Separation is turned on for security
UsePrivilegeSeparation yes

# Lifetime and size of ephemeral version 1 server key
KeyRegenerationInterval 3600
ServerKeyBits 768

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

RSAAuthentication yes
PubkeyAuthentication yes
#AuthorizedKeysFile     %h/.ssh/authorized_keys

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes
# For this to work you will also need host keys in /etc/ssh_known_hosts
RhostsRSAAuthentication no
# similar for protocol version 2
HostbasedAuthentication no
# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication
#IgnoreUserKnownHosts yes

# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
ChallengeResponseAuthentication no

# Change to no to disable tunnelled clear text passwords
#PasswordAuthentication yes

# Kerberos options
#KerberosAuthentication no
#KerberosGetAFSToken no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes

# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes

X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
#UseLogin no

#MaxStartups 10:30:60
Banner /etc/issue.net

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

Subsystem sftp /usr/lib/openssh/sftp-server

UsePAM yes

un truc sympa tu peux personnaliser un message de connexion ssh en éditant ce fichier

Banner /etc/issue.net[/code]

allé..........  le mien pour le délire 

[code]        a88888b.    ____               ____
       8P"YP"Y88   / ___| _ _   _  ___/ ___|  ___  _ __     _
       8|o||o|88   \___ \| | \ | |/ _ \___ \/ __ \| '__|\  / /
       8'    .88   ____) | |  \  | (_| `__) |  __/| |  \ \/ /
       8`._.' Y8. ______/|_|_| \_|\___/____/\____\|_|   \__/
      d/      `8b.
     dP   .    Y8b.
    d8:'  "  `::88b
   d8"         'Y88b
   8a.   :     _a88P
  _/"Yaa_:   .| 88P|
 \    YP"    `| 8P  `.
 /     \.___.d|    .'
 `--..__)8888P`._.'                 Debian GNU/Linux 5.0

Je vais potasser ça dès demain, j’ai du boulo cet aprèm.

Merci en tout cas :wink: