http://www.proftpd.org/
ProFTPD est un démon FTP pour Un*x et les systèmes d'exploitation de type Un*x. ProFTPD est développé, publié et distribué sous les termes de la licence GNU GPL, ce qui en fait un logiciel libre. Cela signifie qu'il peut être vendu, licencié et manipulé comme vous le souhaitez tant que la totalité des codes sources accompagne n'importe quels paquets ProFTPD, soit, soit disponibles sur n'importe ou tout les sites qui distribuent des binaires pre-compilés. Ce logiciel peut être modifié par n'importe qui à n'importe quelle moment, tant que tout les travaux dérivés sont aussi licencié sous la licence GNU GPL.
$ lynx ftp://ftp.proftpd.org/distrib/proftpd-1.2.2rc3.tar.gz $ tar xvzf proftpd-1.2.2rc3.tar.gz $ cd proftpd-1.2.2rc3 $ CFLAGS='-O2 -s' ./configure --prefix=/usr/local \ --sysconfdir=/usr/local/etc --mandir=/usr/local/share/man --enable-autoshadow \ --with-modules=mod_linuxprivs:mod_tar:mod_pam:mod_ratio:mod_readme $ make $ make install $ cd .. $ rm -rf proftpd-1.2.2rc3
# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.
ServerName "ProFTPD Default Installation"
ServerType inetd
DefaultServer on
# Port 21 is the standard FTP port.
Port 21
# Set the user and group that the server normally runs at.
User nobody
Group nogroup
# 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 maximum number of seconds a data connection is allowed
# to "stall" before being aborted.
TimeoutStalled 300
# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
DisplayFirstChdir .message
# if you don't want normal users logging in at all, uncomment this
# newt section
#<Limit LOGIN>
# DenyAll
#</Limit>
# 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.
<Directory /*>
AllowOverwrite on
</Directory>
# A basic anonymous configuration, including a single upload directory ("incoming")
<Anonymous ~ftp>
# Allow logins if they are disabled above.
<Limit LOGIN>
AllowAll
</Limit>
User ftp
Group ftp
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# Limit the maximum number of anonymous logins with message
MaxClients 10 "Sorry, max %m users -- try again later"
# Limit WRITE everywhere in the anonymous chroot
<Limit WRITE>
DenyAll
</Limit>
# An upload directory that allows storing files but not retrieving
# or creating directories.
<Directory incoming/*>
<Limit READ>
DenyAll
</Limit>
<Limit STOR>
AllowAll
</Limit>
</Directory>
</Anonymous>
Les administrateurs systèmes utilisent souvent ce protocole pour les comptes d'utilisateurs anonymes qui n'ont pas besoin d'être protégés par mot de passe. FTP permet à la plupart des utilisateurs, y compris les pirates, d'accéder à un système. Une fois à l'intérieur, les pirates peuvent facilement se frayer un chemin à travers le réseau. Pour se protéger des attaques FTP, il faut définir des permissions de lecture seules dans les fichiers appropriés, que ce soit sous NT ou UN*X.
A moins que le service FTP soit prioritaire et de haute importance, faites le tourner depuis tcpd.
Pour cela, rajoutez la ligne suivante dans /etc/inetd.conf :
ftp stream tcp nowait root /usr/sbin/tcpd in.proftpd
Sous Linux : installez le fichier suivant dans /etc/pam.d/ftp
#%PAM-1.0 auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib/security/pam_pwdb.so shadow nullok # This is disabled because anonymous logins will fail otherwise, # unless you give the 'ftp' user a valid shell, or /bin/false and add # /bin/false to /etc/shells. auth required /lib/security/pam_shells.so account required /lib/security/pam_pwdb.so session required /lib/security/pam_pwdb.soVerifiez que l'utilisateur ftp ait comme shell /bin/false et que /bin/false soit déclaré dans le fichier /etc/shells
Ce protocole est une version "relax" de FTP. Normalement les utilisateurs peuvent transférer tout fichiers (même les fichiers systèmes comme le Registres de Windows NT ou /etc/password, son équivalent UN*X) sans mot de passe. À moins d'en avoir absolument besoin, nous recommandons fortement de supprimer le fichier tftpd. Si votre réseau a un service TFTPD, désactivez-le (/etc/inetd.conf).
#!/bin/sh
#
# Startup script for ProFTPd
#
# chkconfig: 345 85 15
# description: ProFTPD is an enhanced FTP server with a focus toward
# simplicity, security, and ease of configuration.
# It features a very Apache-like configuration syntax,
# and a highly customizable server infrastructure,
# including support for multiple 'virtual' FTP servers,
# anonymous FTP, and permission-based directory visibility.
# processname: proftpd
# config: /etc/proftp.conf
#
# By: Osman Elliyasa <osman@Cable.EU.org>
# $Id: proftpd.init.d,v 1.1 1999/10/23 04:07:58 macgyver Exp $
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration
. /etc/sysconfig/network
# Check that networking is up
[ ${NETWORKING} = "no" ] && exit 0
[ -f /etc/proftpd.conf ] || exit 0
FTPSHUT=%{prefix}/sbin/ftpshut
# See how we were called.
case "$1" in
start)
echo -n "Starting proftpd: "
if [ -x ~ftp-master/bin/advert.sh ]; then
echo -n "Adverts "
su - ftp-master -c "bin/advert.sh fifo"
fi
$0 resume
daemon proftpd
echo
touch /var/lock/subsys/proftpd
;;
stop)
echo -n "Shutting down proftpd: "
if [ -x ~ftp-master/bin/advert.sh ]; then
echo -n "Adverts "
su - ftp-master -c "bin/advert.sh kfifo"
fi
$0 suspend
killproc proftpd
echo
rm -f /var/lock/subsys/proftpd
;;
status)
status proftpd
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Re-reading /etc/proftpd.conf config file: "
killproc proftpd -HUP
echo
;;
suspend)
if [ -f $FTPSHUT ]; then
if [ $# -gt 1 ]; then
shift
echo -n "Suspending with '$*' "
$FTPSHUT $*
else
echo -n "Suspending NOW "
$FTPSHUT now "Maintanance in progress"
fi
else
echo -n "No way to suspend "
fi
echo
;;
resume)
if [ -f /etc/shutmsg ]; then
echo -n "Allowing sessions again "
rm -f /etc/shutmsg
else
echo -n "Was not suspended "
fi
echo
;;
*)
echo -n "Usage: $0 {start|stop|status|restart|reload|resume"
if [ "$FTPSHUT" = "" ]; then
echo "}"
else
echo "|suspend}"
echo "suspend accepts additional arguments which are passed to ftpshut(8)"
fi
exit 1
esac
if [ $# -gt 1 ]; then
shift
$0 $*
fi
exit 0
/var/log/xferlog {
missingok
notifempty
postrotate
/usr/bin/killall -HUP in.proftpd
endscript
compress
}
| Christophe Merlet redfox@redfoxcenter.org | ©Tous droits réservés
21 juin 2001 |