Installer un serveur FTP et le mettre en service nt

publicité
Installer un serveur FTP et le mettre en service NT
Pré-requis :
Télécharger les logiciels suivants
Apache Server FTP
le serveur FTP de la communauté Apache
JavaService-2.0.10
Utilitaire permettant d’installer un programme Java en service
NT
FileZilla
client FTPgratuit
Editer ce script install-service-nt.bat (voir FAQ de la doc sur ftp-server)
@echo off
SET
SET
SET
SET
FTPSERVER_HOME= C:\D\Java\ftpserver-dev
FTPSERVER_LIB=%FTPSERVER_HOME%\common\lib
FTPSERVER_CLASSES=%FTPSERVER_HOME%\common\classes
JAVA_HOME= C:\D\Java\j2sdk1.4.2_12
SET
SET
SET
SET
SET
SET
SERVER_CLASSPATH=%JAVA_HOME%\lib\tools.jar
SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_CLASSES%
SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_LIB%\commons-logging-1.0.3.jar
SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_LIB%\log4j-1.2.12.jar
SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_LIB%\ftpserver-dev.jar
SERVER_CLASSPATH=%SERVER_CLASSPATH%;%FTPSERVER_HOME%\target\classes
SET
SET
SET
SET
SET
MAIN_CLASS=org.apache.ftpserver.commandline.CommandLine
JVM_DLL=%JAVA_HOME%\jre\bin\server\jvm.dll
CONF_XML=%FTPSERVER_HOME%/res/conf/ftpd.xml
STDOUT_LOG=%FTPSERVER_HOME%\stdout.log
STDERR_LOG=%FTPSERVER_HOME%\stderr.log
JavaService.exe -uninstall ApacheFtpServer
JavaService.exe -install ApacheFtpServer %JVM_DLL% -Djava.class.path=%SERVER_CLASSPATH% -start
%MAIN_CLASS% -params -xml %CONF_XML% -out %STDOUT_LOG% -err %STDERR_LOG% -current
%FTPSERVER_HOME%
En n’oubliant de configurer les variables JAVA_HOME et FTPSERVER_HOME
Dézipper l’api JavaService-2.0.10 et copier JavaService.exe dans le répertoire
%FTPSERVER_HOME%
Exécuter le install-service-nt.bat
Aller dans Gestion de l’ordinateur > Services, la ligne du service ApacheFtpServer a été
ajouté si tout a bien été exécuté. Démarrer le service.
Le fichier de configuration utilisé par défaut par ftp-server est res/conf/ftpd.xml
Pour configurer le serveur, éditer le fichier ftpd.xml
Voici un exemple de configuration :
<?xml version="1.0"?>
<!-- XML file based configuration -->
<config>
<!-- Standard socket factory. If you want to support explicit
secure connection, please specify the ssl block
<socket-factory>
<class>org.apache.ftpserver.socketfactory.FtpSocketFactory</class>
<address>localhost</address>
<port>21</port>
<ssl>
<keystore-file>./res/.keystore</keystore-file>
<keystore-password>password</keystore-password>
<keystore-type>JKS</keystore-type>
<keystore-algorithm>SunX509</keystore-algorithm>
<ssl-protocol>TLS</ssl-protocol>
<client-authentication>false</client-authentication>
<key-password>password</key-password>
</ssl>
</socket-factory>
-->
<!-- Secure server socket factory. In this case you have to
specify the ssl block
<socket-factory>
<class>org.apache.ftpserver.socketfactory.SSLFtpSocketFactory</class>
<address>localhost</address>
<port>21</port>
<ssl>
<keystore-file>./res/.keystore</keystore-file>
<keystore-password>password</keystore-password>
<keystore-type>JKS</keystore-type>
<keystore-algorithm>SunX509</keystore-algorithm>
<ssl-protocol>TLS</ssl-protocol>
<client-authentication>false</client-authentication>
<key-password>password</key-password>
</ssl>
</socket-factory>
-->
<!-- Data connection configuration. If you want to support secure
data connection, please specify the ssl block.
<data-connection>
<idle-time>10</idle-time>
<active>
<enable>true</enable>
<local-address>localhost<local-address>
<local-port>20</local-port>
<ip-check>false<ip-check>
</active>
<passive>
<address>localhost</address>
<ports>0</ports>
</passive>
<ssl>
<keystore-file>./res/.keystore</keystore-file>
<keystore-password>password</keystore-password>
<keystore-type>JKS</keystore-type>
<keystore-algorithm>SunX509</keystore-algorithm>
<ssl-protocol>TLS</ssl-protocol>
<client-authentication>false</client-authentication>
<key-password>password</key-password>
</ssl>
</data-connection>
-->
<!-- Standard users admin and anonymous will be created by default. -->
<create-default-user>false</create-default-user>
<!-- Ftp message configuration block
<message>
<class>org.apache.ftpserver.message.MessageResourceImpl</class>
<custom-message-dir>./res</custom-message-file>
<languages>en,zh-tw</languages>
</message>
-->
<!-- Connection manager configuration block
<connection-manager>
<max-connection>20</max-connection>
<max-login>10</max-login>
<anonymous-login-enabled>true</anonymous-login-enabled>
<max-anonymous-login>10</max-anonymous-login>
<default-idle-time>60</default-idle-time>
<timeout-poll-inverval>60</timeout-poll-inverval>
</connection-manager>
-->
<!-- Command factory configuration block
<command-factory>
<command>
<command-name>fully-qualified-command-class-name</command-name>
</command>
</command-factory>
-->
<!-- IP restrictor configuration block
<ip-restrictor>
<class>org.apache.ftpserver.iprestrictor.FileIpRestrictor</class>
<file>./res/ip.gen</file>
</ip-restrictor>
-->
<!-- Default properties file based user manager configuration block -->
<user-manager>
<class>org.apache.ftpserver.usermanager.PropertiesUserManager</class>
<admin>admin</admin>
<prop-file>./res/user.gen</prop-file>
<prop-password-encrypt>false</prop-password-encrypt>
</user-manager>
<!-- Database based user manager configuration
<user-manager>
<class>org.apache.ftpserver.usermanager.DbUserManager</class>
<admin>admin</admin>
<jdbc-driver>org.gjt.mm.mysql.Driver</jdbc-driver>
<jdbc-url>jdbc:mysql://localhost:3306/data</jdbc-url>
<jdbc-user>user</jdbc-user>
<jdbc-password>password</jdbc-password>
<sql-user-insert>INSERT INTO FTP_USER (uid, userpassword, homedirectory, enableflag,
writepermission, idletime, uploadrate, downloadrate) VALUES ('{uid}', '{userpassword}',
'{homedirectory}', '{enableflag}', '{writepermission}', {idletime}, {uploadrate},
{downloadrate})</sql-user-insert>
<sql-user-update>UPDATE FTP_USER SET
userpassword='{userpassword}',homedirectory='{homedirectory}',enableflag='{enableflag}',writep
ermission='{writepermission}',idletime={idletime},uploadrate={uploadrate},downloadrate={downlo
adrate} WHERE uid='{uid}'</sql-user-update>
<sql-user-delete>DELETE FROM FTP_USER WHERE uid = '{uid}'</sql-user-delete>
<sql-user-select>SELECT uid, userpassword, homedirectory, enableflag, writepermission,
idletime, uploadrate, downloadrate FROM FTP_USER WHERE uid = '{uid}'</sql-user-select>
<sql-user-select-all>SELECT uid FROM FTP_USER ORDER BY uid</sql-user-select-all>
<sql-user-authenticate>SELECT uid from FTP_USER WHERE uid='{uid}' AND
userpassword='{userpassword}'</sql-user-authenticate>
<sql-user-admin>SELECT uid FROM FTP_USER WHERE uid='{uid}' AND uid='admin'</sql-useradmin>
</user-manager>
-->
<!-- LDAP based user manager
<user-manager>
<class>org.apache.ftpserver.usermanager.LdapUserManager</class>
<admin>admin</admin>
<ldap-url>ldap://localhost:389</ldap-url>
<ldap-admin-dn>cn=Manager,dc=apache,dc=org</ldap-admin-dn>
<ldap-admin-password>secret</ldap-admin-password>
<ldap-authentication>simple</ldap-authentication>
<ldap-user-base-dn>dc=apache,dc=org</ldap-user-base-dn>
</user-manager>
-->
<!-- file system manager configuration block
<file-system-manager>
<class>org.apache.ftpserver.filesystem.NativeFileSystemManager</class>
<create-home>false</create-home>
</file-system-manager>
-->
<!-- All ftplets
<ftplets>f1,f2</ftplets>
-->
<!-- Ftplet configuration
<ftplet>
<f1>
<class>org.apache.ftpserver.ftplet.Ftplet1</class>
<param>value1</param>
</f1>
<f2>
<class>org.apache.ftpserver.ftplet.Ftplet2</class>
<param>value2</param>
</f2>
</ftplet>
-->
</config>
Comme on peut le constater on peut configurer le serveur pour faire du ssl, du cryptage de
password, gérer les utilisateurs ayant accès au FTP par base de données, ou LDAP, faire de la
restriction d’IP.
Ajout des utilisateurs se fait grâce à ftp_ui.bat ou éditer user.gen
Le répertoire home du serveur FTP est res/home. Déposer les fichiers que vous voulez mettre
à disposition
Redémarrer le serveur
Tester le serveur FTP avec FileZilla en renseignant le hostname votre login et mot de passe
que vous avez choisi lors de la gestion des utilisateurs.
Et voilà.
Téléchargement