Dans un premier temps, le deamon inetd sera utilisé (et non pas sa version améliorée xinetd) avec telnetd, tcpd et proftpd. Je vérifie que tout est bien installé :
vanvincq@CP2L ~ $ dpkg --get-selections openbsd-inetd tcpd proftpd telnetd openbsd-inetd install tcpd install Aucun paquet ne correspond à proftpd. Aucun paquet ne correspond à telnetd.
Effectivement, il me manque deux paquets. Pour proftpd, j'ai choisi le lancement à partir de inetd/xinetd.
vanvincq@CP2L ~ $ sudo apt-get install telnetd proftpd vanvincq@CP2L ~ $ dpkg --get-selections openbsd-inetd tcpd proftpd-basic telnetd openbsd-inetd install tcpd install proftpd-basic install telnetd install
Une fois les paquets installés :
Ouvrez le fichier /etc/inetd.conf, vérifiez que la ligne qui active le service telnet est décommenté.
vanvincq@CP2L ~ $ cat /etc/inetd.conf # /etc/inetd.conf: see inetd(8) for further informations. # # Internet superserver configuration database # # # Lines starting with "#:LABEL:" or "#<off>#" should not # be changed unless you know what you are doing! # # If you want to disable an entry so it isn't touched during # package updates just comment it out with a single '#' character. # # Packages should modify this file by using update-inetd(8) # # <service_name> <sock_type> <proto> <flags> <user> <server_path> <args> # #:INTERNAL: Internal services #discard stream tcp nowait root internal #discard dgram udp wait root internal #daytime stream tcp nowait root internal #time stream tcp nowait root internal #:STANDARD: These are standard services. ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/proftpd telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd #:BSD: Shell, login, exec and talk are BSD protocols. #:MAIL: Mail, news and uucp services. #:INFO: Info services #:BOOT: TFTP service is provided primarily for booting. Most sites # run this only on machines acting as "boot servers." #:RPC: RPC based services #:HAM-RADIO: amateur-radio services #:OTHER: Other services
Vérifier qu'il n'y a aucune règle active dans les fichiers /etc/hosts.allow et /etc/hosts.deny (mettez les règles éventuelles en commentaire).
vanvincq@CP2L ~ $ cat /etc/hosts.allow /etc/hosts.deny # /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: LOCAL @some_netgroup # ALL: .foobar.edu EXCEPT terminalserver.foobar.edu # # If you're going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8) # for further information. # # /etc/hosts.deny: list of hosts that are _not_ allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: some.host.name, .some.domain # ALL EXCEPT in.fingerd: other.host.name, .other.domain # # If you're going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8) # for further information. # # The PARANOID wildcard matches any host whose name does not match its # address. # # You may wish to enable this to ensure any programs that don't # validate looked up hostnames still leave understandable logs. In past # versions of Debian this has been the default. # ALL: PARANOID
Pour activer inetd et donc le service telnetd manuellement utilisez la commande :
/etc/init.d/openbsd-inetd [start|stop]
Pour activer proftpd en mode autonome, utilisez la commande :
/etc/init.d/proftpd [start|stop]
proftpd peut fonctionner en mode autonome ou par inetd. Le changement de configuration peut être réalisé à la main, ou sinon avec un sudo dpkg-reconfigure proftpd. Si vous avez beaucoup d'utilisateur, mieux vaut le lancer proftpd en serveur autonome. Dans le cas contraire, inetd est préférable.
Premier test du service telnet :
vanvincq@CP2L ~ $ telnet 127.0.0.1 Trying 127.0.0.1... telnet: Unable to connect to remote host: Connection refused
Il semble y avoir un problème. En lançant le deamon nécessaire, cela ira certainement mieux.
vanvincq@CP2L ~ $ sudo /etc/init.d/openbsd-inetd start Starting internet superserver: inetd.
vanvincq@CP2L ~ $ telnet 127.0.0.1 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. Debian GNU/Linux 6.0 CP2L login: vanvincq Password: Last login: Sat Feb 4 13:07:41 CET 2012 on tty1 Linux CP2L 2.6.32-5-amd64 #1 SMP Mon Jan 16 16:22:28 UTC 2012 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law.
Maintenant, réessayons mais en ajoutant cette fois quelques règles dans le fichier /etc/hosts.deny.
vanvincq@CP2L ~ $ cat /etc/hosts.deny # /etc/hosts.deny: list of hosts that are _not_ allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: some.host.name, .some.domain # ALL EXCEPT in.fingerd: other.host.name, .other.domain # # If you're going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8) # for further information. # # The PARANOID wildcard matches any host whose name does not match its # address. # # You may wish to enable this to ensure any programs that don't # validate looked up hostnames still leave understandable logs. In past # versions of Debian this has been the default. # ALL: PARANOID in.telnetd: ALL
vanvincq@CP2L ~ $ telnet 127.0.0.1 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. Connection closed by foreign host.
En regardant ce qu'il se passe dans les logs (/var/log/syslog), on peut remarquer que la connection est refusée pour telnetd. Ce qui est normal car on a interdit l'accès pour tous.
... Feb 19 10:53:53 CP2L in.telnetd[4672]: refused connect from 127.0.0.1 (127.0.0.1) Feb 19 10:57:05 CP2L in.telnetd[4695]: refused connect from 127.0.0.1 (127.0.0.1) Feb 19 10:59:01 CP2L in.telnetd[4700]: refused connect from 127.0.0.1 (127.0.0.1)
Rajoutons maintenant une autorisation pour l'hôte CP2L (i.e moi).
vanvincq@CP2L ~ $ cat /etc/hosts.allow # /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: LOCAL @some_netgroup # ALL: .foobar.edu EXCEPT terminalserver.foobar.edu # # If you're going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8) # for further information. # in.telnetd: CP2L
vanvincq@CP2L ~ $ telnet 127.0.0.1 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. Debian GNU/Linux 6.0 CP2L login: ^CConnection closed by foreign host.
Dans /var/log/syslog et /var/log/auth.log:
Feb 19 11:53:15 CP2L in.telnetd[5678]: connect from CP2L (127.0.0.1)
Feb 19 11:53:20 CP2L login[5680]: pam_unix(login:session): session opened for user vanvincq by (uid=0)
Relevez le port utilisé par telnet dans le fichier /etc/services et notez le.
vanvincq@CP2L ~ $ cat /etc/services | grep ^telnet telnet 23/tcp telnets 992/tcp # Telnet over SSL telnets 992/udp
Le port utilisé par telnet est le port 23.
Décommentez la ligne qui concerne telnet dans /etc/inetd.conf et relancez le service.
Vérification si la ligne est décommentée pour le service telnet.
vanvincq@CP2L ~ $ cat /etc/inetd.conf | grep telnet telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd
Redémarrage du service :
vanvincq@CP2L ~ $ sudo /etc/init.d/openbsd-inetd restart [sudo] password for vanvincq: Restarting internet superserver: inetd.
Vérifiez que le port est bien ouvert avec la commande netstat.
vanvincq@CP2L ~ $ netstat -l | grep telnet tcp 0 0 *:telnet *:* LISTEN
Ou encore :
vanvincq@CP2L ~ $ sudo netstat -atup | grep LISTEN [sudo] password for vanvincq: tcp 0 0 *:sunrpc *:* LISTEN 1105/portmap tcp 0 0 *:ftp *:* LISTEN 5277/inetd tcp 0 0 *:ssh *:* LISTEN 2126/sshd tcp 0 0 *:telnet *:* LISTEN 5277/inetd tcp 0 0 CP2L:ipp *:* LISTEN 1634/cupsd tcp 0 0 CP2L:smtp *:* LISTEN 1991/exim4 tcp 0 0 *:57882 *:* LISTEN 1117/rpc.statd tcp6 0 0 [::]:ssh [::]:* LISTEN 2126/sshd tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN 1634/cupsd tcp6 0 0 ip6-localhost:smtp [::]:* LISTEN 1991/exim4
Vérification que le processus est bien lancé (ici inetd) :
vanvincq@CP2L ~ $ ps aux | grep [i]netd root 5277 0.0 0.0 10216 680 ? Ss 11:23 0:00 /usr/sbin/inetd
Vérifiez que rien dans tcpwrapper n'interdit l'accès au service telnet.
vanvincq@CP2L ~ $ cat /etc/hosts.allow # /etc/hosts.allow: list of hosts that are allowed to access the system. # See the manual pages hosts_access(5) and hosts_options(5). # # Example: ALL: LOCAL @some_netgroup # ALL: .foobar.edu EXCEPT terminalserver.foobar.edu # # If you're going to protect the portmapper use the name "portmap" for the # daemon name. Remember that you can only use the keyword "ALL" and IP # addresses (NOT host or domain names) for the portmapper, as well as for # rpc.mountd (the NFS mount daemon). See portmap(8) and rpc.mountd(8) # for further information. # in.telnetd: CP2L
Tester l'accès à Telnet et vérifier la connection avec netstat.
vanvincq@CP2L ~ $ telnet 127.0.0.1 Trying 127.0.0.1... Connected to 127.0.0.1. ...
vanvincq@CP2L ~ $ sudo netstat -natupw | grep ESTABLISHED tcp 0 0 127.0.0.1:48829 127.0.0.1:23 ESTABLISHED 5677/telnet tcp 0 0 192.168.1.13:58624 130.239.18.172:6667 ESTABLISHED 2519/xchat tcp 0 0 192.168.1.13:49652 212.24.104.237:6667 ESTABLISHED 2519/xchat tcp 0 0 127.0.0.1:23 127.0.0.1:48829 ESTABLISHED 5678/in.telnetd: CP
La configuration de tcpwrapper se fait à travers les fichiers /etc/hosts.allow et /etc/host.deny (cf. 25.2. Procédure de tests pour plus d'informations).
Relevez les ports utilisés par FTP dans /etc/services.
vanvincq@CP2L ~ $ cat /etc/services | grep ftp ftp-data 20/tcp ftp 21/tcp tftp 69/udp sftp 115/tcp ftps-data 989/tcp # FTP over SSL (data) ftps 990/tcp venus-se 2431/udp # udp sftp side effect codasrv-se 2433/udp # udp sftp side effect gsiftp 2811/tcp gsiftp 2811/udp frox 2121/tcp # frox: caching ftp proxy zope-ftp 8021/tcp # zope management by ftp
Le service FTP utilise le port 21 dans sa version classique.
Lancez le service en mode autonome.
Comme lors de l'installation, j'ai choisi de lier proftpd avec le deamon inetd j'effectue une reconfiguration :
vanvincq@CP2L ~ $ sudo dpkg-reconfigure proftpd-basic ProFTPd is started from inetd/xinetd. ProFTPd warning: cannot start neither in standalone nor in inetd/xinetd mode. Check your configuration.
Pour ne pas à avoir à modifier les scripts de contrôle qui ne permet pas le lancement indépendant de proftpd (même si inetd est à l'arrêt), je décide de laisser la gestion du service FTP par inetd.
Vérifiez que le port est bien ouvert avec la commande netstat :
vanvincq@CP2L ~ $ sudo netstat -atup | grep -E "ftp.*LISTEN" tcp 0 0 *:ftp *:* LISTEN 4035/inetd
Le port 21 (ftp) est en écoute. Néanmoins dans notre cas c'est inetd qui se charge de l'écoute et non pas le deamon proftpd.
Faites un test en utilisant un compte système existant. Utilisez ftp si lftp n’est pas installé.
vanvincq@CP2L ~ $ ftp ftp> open 127.0.0.1 Connected to 127.0.0.1. 220 ProFTPD 1.3.3a Server (Debian) [127.0.0.1] Name (127.0.0.1:vanvincq): vanvincq 331 Mot de passe requis pour vanvincq Password: 230 Utilisateur vanvincq authentifié Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 Commande PORT exécutée avec succès 150 Ouverture d'une connexion de données en mode ASCII pour file list drwxr-xr-x 2 vanvincq vanvincq 4096 Feb 18 12:29 Bureau drwxr-xr-x 5 vanvincq vanvincq 4096 Feb 17 08:36 Documents drwxr-xr-x 2 vanvincq vanvincq 4096 Jan 25 07:46 Images drwxr-xr-x 2 vanvincq vanvincq 4096 Jan 24 20:20 Mod??les drwxr-xr-x 2 vanvincq vanvincq 4096 Jan 24 20:20 Musique drwxr-xr-x 6 vanvincq vanvincq 4096 Feb 13 20:28 pt drwxr-xr-x 2 vanvincq vanvincq 4096 Jan 24 20:20 Public drwxr-xr-x 4 vanvincq vanvincq 4096 Feb 17 09:15 T??l??chargements drwxr-xr-x 2 vanvincq vanvincq 4096 Jan 24 20:20 Vid??os 226 Téléchargement terminé ftp> bye 221 Au revoir.
Extrait du cours : La mise en place d'un service ftp anonyme demande plus de manipulations car elle nécessite de prendre des précautions. En effet, il faut créer un dépôt accessible par tout le monde (public), on ne peut donc pas prendre de risques. On crée ce qu’on appelle en jargon un environnement chrooté, c’est à dire une prison afin qu'un utilisateur anonyme qui se connecterait ne puisse pas se promener sur tout le disque. Comme cet utilisateur n’aura pas accès au reste du disque (/etc, /lib. . .) et que les programmes en ont besoin, on va créer un environnement minimaliste mais suffisant pour les programmes dont on aura besoin.
Vous allez mettre le dépôt et tout l’environnement dans /home/ftp.
Vérifiez que le fichier /etc/passwd dispose bien d'un compte ftp.
vanvincq@CP2L ~ $ grep ftp /etc/passwd proftpd:x:112:65534::/var/run/proftpd:/bin/false ftp:x:113:65534::/home/ftp:/bin/false
Affectation d'un UID et GID arbitraires à 1010.
vanvincq@CP2L ~ $ grep ftp /etc/passwd proftpd:x:112:65534::/var/run/proftpd:/bin/false ftp:x:1010:1010::/home/ftp:/bin/true
Créez un compte de groupe dans le fichier /etc/group :
vanvincq@CP2L ~ $ sudo groupadd -g 1010 ftp vanvincq@CP2L ~ $ grep ftp /etc/group ftp:x:1010:
Utilisez la commande pwconv pour mettre à jour le fichier shadow.
vanvincq@CP2L ~ $ sudo pwconv
Sous le compte root vous allez créer l’environnement pour le service ftp :
vanvincq@CP2L /home $ sudo mkdir -p ftp/lib ftp/bin ftp/pub ftp/incoming ftp/etc
On copie le programme ls dans ftp/bin. Vous pouvez en mettre d’autres, mais soyez prudent.
vanvincq@CP2L /home $ sudo cp /bin/ls ./ftp/bin/
Il reste à créer les comptes dans un fichier local passwd etgroup. On y met juste les comptes nécessaires pour l'utilisation des programmes mis dans ftp/bin. On rappelle que ceci est nécessaire car ftp ne peut pas aller consulter /etc/passwd lors d’une tentative d'accés anonyme.
root@CP2L:/home# grep ftp /etc/group > ./ftp/etc/group root@CP2L:/home# grep root /etc/passwd > ./ftp/etc/passwd root@CP2L:/home# grep ftp /etc/passwd >> ./ftp/etc/passwd
Vérifiez que vous avez bien les informations dans les fichiers ftp/passwd et ftp/group. On change les permissions.
root@CP2L:/home# chmod -R 111 ftp/bin/ root@CP2L:/home# chmod 111 ftp/etc/ root@CP2L:/home# chmod 444 ftp/etc/* root@CP2L:/home# chmod 555 ftp/pub/ root@CP2L:/home# chmod 1733 ftp/incoming/
root@CP2L:/home# ls -Rl ./ftp/ ./ftp/: total 24 d--x--x--x 2 root root 4096 20 févr. 09:54 bin d--x--x--x 2 root root 4096 20 févr. 10:00 etc drwx-wx-wt 2 root root 4096 20 févr. 09:52 incoming drwxr-xr-x 2 root root 4096 20 févr. 09:52 lib dr-xr-xr-x 2 root root 4096 20 févr. 09:52 pub -rw-r--r-- 1 root root 170 13 nov. 23:41 welcome.msg ./ftp/bin: total 112 ---x--x--x 1 root root 108008 20 févr. 09:54 ls ./ftp/etc: total 8 -r--r--r-- 1 root root 12 20 févr. 09:59 group -r--r--r-- 1 root root 145 20 févr. 10:01 passwd ./ftp/incoming: total 0 ./ftp/lib: total 0 ./ftp/pub: total 0
On rajoute dans ftp/lib les librairies utilisées par les programmes mis dans ftp/bin. Les librairies utilisées par les programmes sont visibles avec la commande ldd. Si vous ajoutez d’autres programmes, il faudra y mettre également les bonnes librairies.
root@CP2L:/home# ldd /bin/ls linux-vdso.so.1 => (0x00007fffba09a000) libselinux.so.1 => /lib/libselinux.so.1 (0x00007fd3c2e74000) librt.so.1 => /lib/librt.so.1 (0x00007fd3c2c6c000) libacl.so.1 => /lib/libacl.so.1 (0x00007fd3c2a64000) libc.so.6 => /lib/libc.so.6 (0x00007fd3c2702000) libdl.so.2 => /lib/libdl.so.2 (0x00007fd3c24fe000) /lib64/ld-linux-x86-64.so.2 (0x00007fd3c30ae000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007fd3c22e1000) libattr.so.1 => /lib/libattr.so.1 (0x00007fd3c20dd000)
On copie les librairies nécessaires.
root@CP2L:/home# cp /lib/libselinux.so.1 ~ftp/lib root@CP2L:/home# cp /lib/librt.so.1 ~ftp/lib root@CP2L:/home# cp /lib/libacl.so.1 ~ftp/lib root@CP2L:/home# cp /lib/libc.so.6 ~ftp/lib root@CP2L:/home# cp /lib/libdl.so.2 ~ftp/lib root@CP2L:/home# cp /lib64/ld-linux-x86-64.so.2 ~ftp/lib64 root@CP2L:/home# cp /lib/libpthread.so.0 ~ftp/lib root@CP2L:/home# cp /lib/libattr.so.1 ~ftp/lib
Voici ce qu'on obtient à la fin :
root@CP2L:/home# cd /home && ls -alR ftp ftp: total 36 drwxr-xr-x 8 113 nogroup 4096 20 févr. 10:13 . drwxr-xr-x 4 root root 4096 19 févr. 10:06 .. d--x--x--x 2 root root 4096 20 févr. 09:54 bin d--x--x--x 2 root root 4096 20 févr. 10:00 etc drwx-wx-wt 2 root root 4096 20 févr. 09:52 incoming drwxr-xr-x 2 root root 4096 20 févr. 10:13 lib drwxr-xr-x 2 root root 4096 20 févr. 10:13 lib64 dr-xr-xr-x 2 root root 4096 20 févr. 09:52 pub -rw-r--r-- 1 root root 170 13 nov. 23:41 welcome.msg ftp/bin: total 120 d--x--x--x 2 root root 4096 20 févr. 09:54 . drwxr-xr-x 8 113 nogroup 4096 20 févr. 10:13 .. ---x--x--x 1 root root 108008 20 févr. 09:54 ls ftp/etc: total 16 d--x--x--x 2 root root 4096 20 févr. 10:00 . drwxr-xr-x 8 113 nogroup 4096 20 févr. 10:13 .. -r--r--r-- 1 root root 12 20 févr. 09:59 group -r--r--r-- 1 root root 145 20 févr. 10:01 passwd ftp/incoming: total 8 drwx-wx-wt 2 root root 4096 20 févr. 09:52 . drwxr-xr-x 8 113 nogroup 4096 20 févr. 10:13 .. ftp/lib: total 1772 drwxr-xr-x 2 root root 4096 20 févr. 10:13 . drwxr-xr-x 8 113 nogroup 4096 20 févr. 10:13 .. -rw-r--r-- 1 root root 30408 20 févr. 10:13 libacl.so.1 -rw-r--r-- 1 root root 17608 20 févr. 10:13 libattr.so.1 -rwxr-xr-x 1 root root 1437064 20 févr. 10:13 libc.so.6 -rw-r--r-- 1 root root 14696 20 févr. 10:13 libdl.so.2 -rwxr-xr-x 1 root root 131258 20 févr. 10:13 libpthread.so.0 -rw-r--r-- 1 root root 31744 20 févr. 10:13 librt.so.1 -rw-r--r-- 1 root root 117848 20 févr. 10:13 libselinux.so.1 ftp/lib64: total 140 drwxr-xr-x 2 root root 4096 20 févr. 10:13 . drwxr-xr-x 8 113 nogroup 4096 20 févr. 10:13 .. -rwxr-xr-x 1 root root 128744 20 févr. 10:13 ld-linux-x86-64.so.2 ftp/pub: total 8 dr-xr-xr-x 2 root root 4096 20 févr. 09:52 . drwxr-xr-x 8 113 nogroup 4096 20 févr. 10:13 ..
Vérifiez que le port ftp est bien ouvert.
vanvincq@CP2L /home $ sudo netstat -atup | grep -E "ftp.*LISTEN" tcp 0 0 *:ftp *:* LISTEN 2593/inetd
Commentez dans le fichier /etc/ftpusers les lignes comme indiqué ci-dessous pour autoriser l’accès anonyme pour les comptes anonymous et et ftp :
vanvincq@CP2L ~/Bureau/CPLL/JournalDeBord $ cat /etc/ftpusers # /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5). root daemon bin sys sync games man lp mail news uucp nobody
Rien à commenter, tout est en ordre.
Testez et vérifiez le bon fonctionnement de l'accès ftp anonyme (en utilisant le compte ftp ou anonymous) avec la commande : lftp localhost -u ftp
vanvincq@CP2L /home $ lftp 127.0.0.1 -u ftp Mot de passe : lftp ftp@127.0.0.1:~>
Tout semble en ordre. Essayons la commande ls.
lftp ftp@127.0.0.1:~> ls ls: L'authentification a échoué.: 530 Login incorrect.
Ce problème a déjà été rencontré par l'un de mes collègues de la CP2L. La source de l'erreur se trouverait dans le fichier /etc/proftpd/proftpd.conf. Avant d'aller y jeter un oeil, regardons ce qu'on nous dit plus loin :
"Si la connexion ne se fait pas, vérifier les ports ouverts, la table des processus, les messages dans les journaux. Vérifier enfin le fichier de configuration /etc/proftpd.conf. Vous devriez, au minimum, avoir ces valeurs :"
ServerType standalone <Anonymous ~ftp> User ftp Group nogroup UserAlias anonymous ftp RequireValidShell off </Anonymous>
Regardons maintenant le contenu du fichier /etc/proftpd/proftpd.conf :
vanvincq@CP2L ~/Bureau/CPLL/JournalDeBord $ cat /etc/proftpd/proftpd.conf # # /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file. # To really apply changes reload proftpd after modifications. # # Includes DSO modules Include /etc/proftpd/modules.conf # Set off to disable IPv6 support which is annoying on IPv4 only boxes. UseIPv6 on # If set on you can experience a longer connection delay in many cases. IdentLookups off ServerName "Debian" ServerType inetd DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayChdir .message true ListOptions "-l" DenyFilter \*.*/ # Use this to jail all users in their homes # DefaultRoot ~ # Users require a valid shell listed in /etc/shells to login. # Use this directive to release that constrain. # RequireValidShell off # Port 21 is the standard FTP port. Port 21 # In some cases you have to specify passive ports range to by-pass # firewall limitations. Ephemeral ports can be used for that, but # feel free to use a more narrow range. # PassivePorts 49152 65534 # If your host was NATted, this option is useful in order to # allow passive tranfers to work. You have to use your public # address and opening the passive ports used on your firewall as well. # MasqueradeAddress 1.2.3.4 # This is useful for masquerading address with dynamic IPs: # refresh any configured MasqueradeAddress directives every 8 hours <IfModule mod_dynmasq.c> # DynMasqRefresh 28800 </IfModule> # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd) MaxInstances 30 # Set the user and group that the server normally runs at. User proftpd Group nogroup # Umask 022 is a good standard umask to prevent new files and dirs # (second parm) from being group and world writable. Umask 022 022 # Normally, we want files to be overwriteable. AllowOverwrite on # Uncomment this if you are using NIS or LDAP via NSS to retrieve passwords: # PersistentPasswd off # This is required to use both PAM-based authentication and local passwords # AuthOrder mod_auth_pam.c* mod_auth_unix.c # Be warned: use of this directive impacts CPU average load! # Uncomment this if you like to see progress and transfer rate with ftpwho # in downloads. That is not needed for uploads rates. # # UseSendFile off TransferLog /var/log/proftpd/xferlog SystemLog /var/log/proftpd/proftpd.log <IfModule mod_quotatab.c> QuotaEngine off </IfModule> <IfModule mod_ratio.c> Ratios off </IfModule> # Delay engine reduces impact of the so-called Timing Attack described in # http://security.lss.hr/index.php?page=details&ID=LSS-2004-10-02 # It is on by default. <IfModule mod_delay.c> DelayEngine on </IfModule> <IfModule mod_ctrls.c> ControlsEngine off ControlsMaxClients 2 ControlsLog /var/log/proftpd/controls.log ControlsInterval 5 ControlsSocket /var/run/proftpd/proftpd.sock </IfModule> <IfModule mod_ctrls_admin.c> AdminControlsEngine off </IfModule> # # Alternative authentication frameworks # #Include /etc/proftpd/ldap.conf #Include /etc/proftpd/sql.conf # # This is used for FTPS connections # #Include /etc/proftpd/tls.conf # # Useful to keep VirtualHost/VirtualRoot directives separated # #Include /etc/proftpd/virtuals.con # A basic anonymous configuration, no upload directories. # <Anonymous ~ftp> # User ftp # Group nogroup # # We want clients to be able to login with "anonymous" as well as "ftp" # UserAlias anonymous ftp # # Cosmetic changes, all files belongs to ftp user # DirFakeUser on ftp # DirFakeGroup on ftp # # RequireValidShell off # # # Limit the maximum number of anonymous logins # MaxClients 10 # # # We want 'welcome.msg' displayed at login, and '.message' displayed # # in each newly chdired directory. # DisplayLogin welcome.msg # DisplayChdir .message # # # Limit WRITE everywhere in the anonymous chroot # <Directory *> # <Limit WRITE> # DenyAll # </Limit> # </Directory> # # # Uncomment this if you're brave. # # <Directory incoming> # # # Umask 022 is a good standard umask to prevent new files and dirs # # # (second parm) from being group and world writable. # # Umask 022 022 # # <Limit READ WRITE> # # DenyAll # # </Limit> # # <Limit STOR> # # AllowAll # # </Limit> # # </Directory> # # </Anonymous>
Le problème vient bien de là. Le compte anonyme est désactivé par défaut. Réessayons après avoir décommenté et modifié les lignes nécessaires.
Version lftp :
vanvincq@CP2L /home $ lftp 127.0.0.1 -u ftp Mot de passe : lftp ftp@127.0.0.1:~> ls d--x--x--x 2 ftp ftp 4096 Feb 20 08:54 bin d--x--x--x 2 ftp ftp 4096 Feb 20 09:00 etc drwx-wx-wt 2 ftp ftp 4096 Feb 20 08:52 incoming drwxr-xr-x 2 ftp ftp 4096 Feb 20 09:13 lib drwxr-xr-x 2 ftp ftp 4096 Feb 20 09:13 lib64 dr-xr-xr-x 2 ftp ftp 4096 Feb 20 08:52 pub -rw-r--r-- 1 ftp ftp 170 Nov 13 22:41 welcome.msg
Version ftp :
vanvincq@CP2L /home $ ftp 127.0.0.1 Connected to 127.0.0.1. 220 ProFTPD 1.3.3a Server (Debian) [127.0.0.1] Name (127.0.0.1:vanvincq): ftp 331 Anonymous login ok, send your complete email address as your password Password: 230-Welcome, archive user ftp@CP2L ! 230- 230-The local time is: Mon Feb 20 10:57:34 2012 230- 230-This is an experimental FTP server. If you have any unusual problems, 230-please report them via e-mail to <root@CP2L>. 230- 230 Anonymous access granted, restrictions apply Remote system type is UNIX. Using binary mode to transfer files. ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list d--x--x--x 2 ftp ftp 4096 Feb 20 08:54 bin d--x--x--x 2 ftp ftp 4096 Feb 20 09:00 etc drwx-wx-wt 2 ftp ftp 4096 Feb 20 08:52 incoming drwxr-xr-x 2 ftp ftp 4096 Feb 20 09:13 lib drwxr-xr-x 2 ftp ftp 4096 Feb 20 09:13 lib64 dr-xr-xr-x 2 ftp ftp 4096 Feb 20 08:52 pub -rw-r--r-- 1 ftp ftp 170 Nov 13 22:41 welcome.msg 226 Transfer complete
Décommentez la ligne anonymous dans le fichier /etc/ftpusers et refaites un essai de connexion. Il doit être refusé.
vanvincq@CP2L /home $ cat /etc/ftpusers # /etc/ftpusers: list of users disallowed FTP access. See ftpusers(5). root ftp anonymous daemon bin sys sync games man lp mail news uucp nobody
vanvincq@CP2L /home $ lftp 127.0.0.1 -u ftp Mot de passe : lftp ftp@127.0.0.1:~> ls ls: L'authentification a échoué.: 530 Login incorrect.
vanvincq@CP2L /home $ ftp 127.0.0.1 Connected to 127.0.0.1. 220 ProFTPD 1.3.3a Server (Debian) [127.0.0.1] Name (127.0.0.1:vanvincq): ftp 331 Anonymous login ok, send your complete email address as your password Password: 530 Login incorrect. Login failed. Remote system type is UNIX. Using binary mode to transfer files.
La connection est bien refusée.