Prob Sftp

OS Debian Sarge 3.1 / Proftp / webmin 1.30 / Réseau local

Bonjour à tous,

second soucis avec Proftp

en mode classique (port 21) je n’ai plus de soucis pour uploader.
De plus les comptes users ne voient que le contenu de leurs comptes et rien d’autre.
En d’autre terme il ne leur est pas permis de remonter la directory !

Par contre via une connexion sftp (port 22) ils peuveut sans soucis remonter la directory et voir tous les rep et fichier de la distribution.

Comment endiguer ce soucis s’il vous plaît ?

Merci par avance de votre réponse.

J’essaierai différentes chose, par exemple :

  • en attendant de savoir le configurer … fermer le port 22 dans iptables.
  • rechercher comment ça se configure, à voir le shell de tes comptes utilisateurs … ils sont bien à /bin/false ?

Bonjour usinagaz

merci pour ces conseils !

Justement mes users ne sont pas en /bin/false mais en /bin/sh

Comment modifier cela ?

@+

2 méthodes pour celà :

1/
editer le fichier /etc/passwd et remplacer /bin/sh par /bin/false pour le sutilisateurs concernés

2/
usermod -s /bin/false
(syntaxe à vérifier : man usermod)

Super je test ça ! :wink:

Bonjour à tous,

alors usermod -s /bin/false à bien fonctionner.
J’ai vérifier avec un VI, les users sont maintenant en /bin/false

Par contre maintenant ils ne peuvent plus se connecter du tout en SFTP et en FTP :confused:

Dans la démarche une connexion sftp est utile de mon point de vue.

Comment faire pour que les users se connecte en sftp mais ne puis pas remonter la directory dans le client ftp ??

@+ et merci de vos futurs conseils ! :wink:

c’est à dire que je ne connais pas le sftp, faudrait que quelqu’un qui l’utilise puisse te donner la marche à suivre … ( mais là, à priori, les users ont besoin d’un shell valide … tu es bien sur qu’ils peuvent plus se connecter au ftp ? tu aurais pas touché plusieurs trucs en même temps ?).
Un user ftp ne doit pas avoir un shell autre que /bin/false ou /bin/null … maintenant, le ssh, c’est un autre problème.

Certains, j’avance à pas de velours, et je me suis cantonnée au commande conseillé.

Apparement Sftp est encore un microcosme :wink:

Mais c’est rageant de voir que les clients users se connecter via SFTP et voir toutes la directory !!.

Au pire je vais bloquer le port 22…
Mais ce n’est pas “la” solution :angry:

Peut-être serait il plus judicieux "d’encapsuler le répertoire de chaque users ?
Un chroot ?
Si oui comment ?

C’est surement ça, un chroot … ben tu les as pas chrooter tes users ? je lis :

[quote=“http://www.brandonhutchinson.com/chroot_ssh.html”]To support chrooted sftp-only, use /usr/local/libexec/sftp-server as the chroot user’s shell.
ex. $ grep hutch /etc/passwd
hutchib:x:1000:1:Brandon Hutchinson:/chroot/./home/hutch:/bin/sh
[/quote]Ils ont quel repertoire dans /etc/passwd ?
ça se passe en ligne de commande le chroot comme le shell, tu as fais ça ?
Essaies de modifier dans le fichier le home de l’user peut-être …
Mais tu vas surement trouver, regarde par là : google.fr/search?hl=fr&q=chr … ogle&meta=
le 4 ième liens apparemment …

proftpd doit etre en /bin/false pour que personne ne puisse se connecter avec cet user (le serveur proftpd tourne en proftp puis donne les droits de l’user)
Par contre si les utilisateurs ont /bin/false, ils n’ont plus de shells donc plus aucune connexion interactive possible.

Pour ftp t’as probablement configuré ton serveur ftp pour bloquer la sécurité. Pour ssh et le sous-système sftp , pareil. Si ce n’est pas possible (ce qui a l’air d’etre le cas) il vaut mieux se tourner vers un chroot oui. Tu sera à l’abri des erreurs de manips.

Moi j’avais patché ssh (tout petit patch):

howtoforge.com/chrooted_ssh_howto_debian
frlinux.net/?section=securite&article=145
hsc.fr/ressources/breves/chr … sh.html.fr

Je ne sais pas si ca fonctionne pour sftp mais pour ssh oui. Normalement ca devrait.

Voila une autre méthode:
ymettier.free.fr/articles_lmag/l … 01s04.html
Là il lance sshd directement dans un chroot donc tous les utilisateurs hériteront du chroot.

scponly permet de ne pas autoriser le login ssh, seulement le sftp/scp
C’est disjoint mais interessant. On voit dans le commentaire que la personne joue avec scponly apres avoir patché openssh (visible par l’utilisation de /./ dans /etc/passd)

Super les infos !

Vous y allez en force les gars :wink:
Je ne vais pas m’en plaindre !!

Je potasse tous ça, je teste et vous tiens au courant…

@+

Dans /usr/share/doc/rssh/examples
j’ai trouvé un script nommé mkchroot.sh
Je ne sais pas s’il est utile ou s’il fonctionne car je n’y connait pas grand chose en script.
Apparement c pour créer un chroot avec sftp et scp mais je n’en sais pas plus.
Je le post quand même, ça peut être intéressant de savoir si quelqu’un là déjà testé.

[code]#!/bin/sh

#####################################################################
#####################################################################

mkchroot.sh - set up a chroot jail.

This script is written to work for Red Hat 8/9 systems, but may work on

other systems. Or, it may not… In fact, it may not work at all. Use at

your own risk. :slight_smile:

fail() {

echo "`basename $0`: fatal error" >&2
echo "$1" >&2
exit $2

}

#####################################################################

Initialize - handle command-line args, and set up variables and such.

$1 is the directory to make the root of the chroot jail (required)

$2, if given, is the user who should own the jail (optional)

$3, if given, is the permissions on the directory (optional)

if [ -z “$1” ]; then
echo “basename $0: error parsing command line” >&2
echo " You must specify a directory to use as the chroot jail." >&2
exit 1
fi

jail_dir="$1"

if [ -n “$2” ]; then
owner="$2"
fi

if [ -n “$3” ]; then
perms="$3"
fi

#####################################################################

build the jail

now make the directory

if [ ! -d “$jail_dir” ]; then
echo "Creating root jail directory."
mkdir -p “$jail_dir”

if [ $? -ne 0 ]; then
	echo "  `basename $0`: error creating jail directory." >&2
	echo "Check permissions on parent directory." >&2
	exit 2
fi

fi

if [ -n “$owner” -a whoami = “root” ]; then
echo "Setting owner of jail."
chown “$owner” “$jail_dir"
if [ $? -ne 0 ]; then
echo " basename $0: error changing owner of jail directory.” >&2
exit 3
fi
else
echo -e "NOT changing owner of root jail. \c"
if [ whoami != “root” ]; then
echo "You are not root."
else
echo
fi
fi

if [ -n “$owner” -a whoami = “root” ]; then
echo "Setting permissions of jail."
chmod “$perms” “$jail_dir"
if [ $? -ne 0 ]; then
echo " basename $0: error changing perms of jail directory.” >&2
exit 3
fi
else
echo -e "NOT changing perms of root jail. \c"
if [ whoami != “root” ]; then
echo "You are not root."
else
echo
fi
fi

copy SSH files

scp_path="/usr/bin/scp"
sftp_server_path="/usr/lib/openssh/sftp-server"
rssh_path="/usr/bin/rssh"
chroot_helper_path="/usr/lib/rssh/rssh_chroot_helper"

for jail_path in dirname "$jail_dir$scp_path" dirname "$jail_dir$sftp_server_path" dirname "$jail_dir$chroot_helper_path"; do

echo "setting up $jail_path"

if [ ! -d "$jail_path" ]; then
	mkdir -p "$jail_path" || \
		fail "Error creating $jail_path. Exiting." 4
fi

done

cp “$scp_path” “$jail_dir$scp_path” ||
fail “Error copying $scp_path. Exiting.” 5
cp “$sftp_server_path” “$jail_dir$sftp_server_path” ||
fail “Error copying $sftp_server_path. Exiting.” 5
cp “$rssh_path” “$jail_dir$rssh_path” ||
fail “Error copying $rssh_path. Exiting.” 5
cp “$chroot_helper_path” “$jail_dir$chroot_helper_path” ||
fail “Error copying $chroot_helper_path. Exiting.” 5

#####################################################################

identify and copy libraries needed in the jail

for prog in $scp_path $sftp_server_path $rssh_path $chroot_helper_path; do
echo "Copying libraries for $prog."
libs=ldd $prog | tr -s ' ' | cut -d' ' -f3
for lib in $libs; do
mkdir -p "$jail_dir$(dirname $lib)"
echo -e "\t$lib"
cp “$lib” "$jail_dir$lib"
done
done

echo "copying name service resolution libraries…"
tar -cf - /lib/libnss_compat* /lib/libnss_files* | tar -C “$jail_dir” -xvf - |sed ‘s/^/\t/’

#####################################################################

copy config files for the dynamic linker, nsswitch.conf, and the passwd file

echo "Setting up /etc in the chroot jail"
mkdir -p "$jail_dir/etc"
cp /etc/nsswitch.conf "$jail_dir/etc/"
cp /etc/passwd "$jail_dir/etc/"
cp /etc/ld.* “$jail_dir/etc/”

echo -e "Chroot jail configuration completed."
echo -e "\nNOTE: if you are not using the passwd file for authentication,"
echo -e “you may need to copy some of the /lib/libnss_* files into the jail.\n”

#####################################################################

set up /dev/log

mkdir -p “$jail_dir/dev”

echo -e "NOTE: you must MANUALLY edit your syslog rc script to start syslogd"
echo -e "with appropriate options to log to $jail_dir/dev/log. In most cases,"
echo -e “you will need to start syslog as:\n"
echo -e " /sbin/syslogd -a $jail_dir/dev/log\n”

echo -e "NOTE: we make no guarantee that ANY of this will work for you… \c"
echo -e “if it\ndoesn’t, you’re on your own. Sorry!\n”[/code]

Merci dexmon

[quote=“Fritz_smh”]2 méthodes pour celà :

1/
editer le fichier /etc/passwd et remplacer /bin/sh par /bin/false pour le sutilisateurs concernés

2/
usermod -s /bin/false
(syntaxe à vérifier : man usermod)[/quote]et fritz: man chsh devrait t’interresser.

Bonjour,

une idée me vient à l’esprit…

Hormis le chroot qui est une très bonne protection, serait il possible de sécuriser les répertoires principaux de mes users par un .htpasswd :question:

L’objectif étant toujours que via sftp (sur exemple filezilla) ils ne puissent pas remonter la directory…

Qu’en pensez-vous :question:

Mais ça ne protège pas uniquement pour le web, ça ?

Exact !!! :imp:
C’est pour sécuriser l’accès à certains répertoire mais via HTTP…

Alors ça risque de fonctionner :wink:

:wink:

Mais mon souhait est de bloquer la directory en sftp… pas en http :frowning: