Aller au contenu

Problème de configuration serveur FTP ?


Messages recommandés

Bonjour,

j'ai depuis peu un magnifique Raspberry Pi tournant sous Raspbian avec pour but d'apprendre l'administration système et serveur (et à terme d'en faire un serveur pour streamer de la musique à distance et pourquoi pas un serveur mail)

Un des premiers trucs que j'ai tenté, c'est de monter un serveur FTP utilisant TLS pour la sécurité via ProFTPd.

La connexion au serveur se fait sans problèmes (depuis FileZilla) sauf que... le LIST effectué en fin de connexion n'aboutit pas que je tente de me connecter en local (via l'ip de mon PI) ou en externe (depuis le boulot par exemple) :

Statut :	Connexion à 192.168.0.4:4687...Statut :	Connexion établie, attente du message d'accueil...Réponse :	220 Welcome to Shaft's FTP stranger !Commande :	AUTH TLSRéponse :	234 AUTH TLS successfulStatut :	Initialisation de TLS...Statut :	Vérification du certificat...Commande :	USER ShaftStatut :	Connexion TLS/SSL établie.Réponse :	331 Password required for ShaftCommande :	PASS **********************Réponse :	230 We don't like stangers 'round hereCommande :	SYSTRéponse :	215 UNIX Type: L8Commande :	FEATRéponse :	211-Features:Réponse :	 MDTMRéponse :	 AUTH TLSRéponse :	 UTF8Réponse :	 PBSZRéponse :	 PROTRéponse :	 SITE MKDIRRéponse :	 SITE RMDIRRéponse :	 SITE UTIMERéponse :	 LANG fr-FR.UTF-8;fr-FRRéponse :	 SITE SYMLINKRéponse :	 REST STREAMRéponse :	 SITE COPYRéponse :	 SIZERéponse :	211 EndCommande :	OPTS UTF8 ONRéponse :	200 UTF8 set to onCommande :	PBSZ 0Réponse :	200 PBSZ 0 successfulCommande :	PROT PRéponse :	200 Protection set to PrivateStatut :	ConnectéStatut :	Récupération du contenu du dossier...Commande :	PWDRéponse :	257 "/" is the current directoryCommande :	TYPE IRéponse :	200 Type set to ICommande :	PORT 192,168,0,1,213,238Réponse :	200 PORT command successfulCommande :	LISTErreur :	Délai d'attente expiréErreur :	Impossible de récupérer le contenu du dossier

Voici mon fichier /etc/proftpd/proftpd.conf

## /etc/proftpd/proftpd.conf -- This is a basic ProFTPD configuration file.# To really apply changes, reload proftpd after modifications, if# it runs in daemon mode. It is not required in inetd/xinetd mode.# Include /etc/proftpd/modules.conf# To really apply changes reload proftpd after modifications.AllowOverwrite onAuthAliasOnly on# Masquerade for PASV modeMasqueradeAddress	adresse_ip_de_ma_ligneUseReverseDNS	offIdentLookups	off# Aliases accepted go hereUserAlias Shaft shaftftpServerName			"Shaft FTP"ServerType 			standaloneDeferWelcome			onMultilineRFC2228 onDefaultServer			onShowSymlinks			offTimeoutNoTransfer 600TimeoutStalled 100TimeoutIdle 2200DisplayChdir                    .messageListOptions                	"-l"RequireValidShell 		offTimeoutLogin 20RootLogin 			off# LogsExtendedLog 			/var/log/ftp.logTransferLog 			/var/log/xferlogSystemLog			/var/log/syslog.log#DenyFilter			\*.*/# Allow /etc/ftpusers file (set inside the users you want to ban) or notUseFtpUsers off# Allow to restart a downloadAllowStoreRestart		on# Port 21 is the standard FTP portPort				4687# Passive Ports for remote accessPassivePorts			60000 60100# 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 8# Set the user and group that the server normally runs at.User                  nobodyGroup                 nogroup# Umask 022 is a good standard umask to prevent new files and dirs# (second parm) from being group and world writable.Umask				022	022PersistentPasswd		offMaxClients 8MaxClientsPerHost 8MaxClientsPerUser 8MaxHostsPerUser 8# Display a message after a successful loginAccessGrantMsg "We don't like stangers 'round here"# This message is displayed for each access good or notServerIdent                  on      "Welcome to Shaft's FTP stranger !"# Lock all the users in home directoryDefaultRoot ~MaxLoginAttempts    5#VALID LOGINS<Limit LOGIN>AllowUser shaftftpDenyALL</Limit><Directory /mnt/FTP_USB/FTP>Umask 022 022AllowOverwrite off	<Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD>	DenyAll	</Limit></Directory><Directory /mnt/FTP_USB/FTP/download/*>Umask 022 022AllowOverwrite off	<Limit MKD STOR DELE XMKD RNEF RNTO RMD XRMD>	DenyAll	</Limit></Directory><Directory /mnt/FTP_USB/FTP/upload/>Umask 022 022AllowOverwrite on	<Limit READ RMD DELE>      	AllowUser shaftftp	DenyAll    	</Limit>    	<Limit STOR CWD MKD>      	AllowAll    	</Limit></Directory><IfModule mod_tls.c>    TLSEngine on    TLSLog /var/ftpd/tls.log    TLSProtocol TLSv1    # Are clients required to use FTP over TLS when talking to this server?    TLSRequired on    TLSOptions NoSessionReuseRequired    # Server's certificate    TLSRSACertificateFile /etc/ftpcert/server.crt    TLSRSACertificateKeyFile /etc/ftpcert/server.key    # CA the server trusts    TLSCACertificateFile /etc/ftpcert/ca.crt    # Authenticate clients that want to use FTP over TLS?    TLSVerifyClient off</IfModule><IfModule mod_facts.c>   FactsAdvertise off</IfModule>

A noter que :

- mon routeur est bien configuré (forward du port 4687 vers 4687 en TCP)

- si je désactive PassivePorts et la masquerade, la connexion passe bien en local, ce qui est bien mais c'est pas trop le but de la chose :D

- iptables est vierge de toutes règles (en attendant que ça marche)

- que je suis un gros n00b en la matière :transpi:

Mon fichier conf est-il correct ? Faut-il quand même dire à iptables comment faire le boulot ? Obiwan Kenobi ?

Merci d'avance ! :chinois:

Lien vers le commentaire
Partager sur d’autres sites

@dudul88 : Cette commande sert à empêcher les clients d'aller fourrer leur nez ailleurs que dans /mnt/FTP_USB/FTP. Si je venais à mettre DefaultRoot /, le répertoire racine du serveur serait / :chinois:

@coyotedef : Nope, le problème est le même si je passe par le port 21 :|

Lien vers le commentaire
Partager sur d’autres sites

Quand je vois ça :

AllowOverwrite on	<Limit READ RMD DELE>      	AllowUser shaftftp	DenyAll    	</Limit>

Et ça :

Commande :	AUTH TLSRéponse :	234 AUTH TLS successfulStatut :	Initialisation de TLS...Statut :	Vérification du certificat...Commande :	USER ShaftStatut :	Connexion TLS/SSL établie.Réponse :	331 Password required for ShaftCommande :	PASS **********************Réponse :	230 We don't like stangers 'round here

Je me dis qu'il y a un bug sur la définition des droits pour l'utilisateur, mais comme j'ai jamais autant restreints les utilisateurs sur un Proftpd, je me trompe peut-être. (Shaft dans le log, shaftftp dans la config, du coup probablement n'active-t-il pas les bonnes règles)

Lien vers le commentaire
Partager sur d’autres sites

Pour cette histoire Shaft vs shaftftp, oui c'est voulu. Shaft est l'alias de l'utilisateur (histoire que, même avec du TLS, le nom de l'utilisateur de la machine ne se ballade pas sur le réseau - quand bien même cet utilisateur a peau d'zob niveau droits :D) , c'est réglé par "UserAlias Shaft shaftftp" dans la conf. :chinois:

Le serveur marche très bien en local si je désactive "MasqueradeAddress adresse_ip_de_ma_ligne" et les ports pour le mode passif. (C'est pour ça que je m'interroge aussi sur mon routeur et iptables) Sauf qu'en local, j'ai déjà samba ou le sftp du SSH pour échanger des fichiers entre mes machines :D

Lien vers le commentaire
Partager sur d’autres sites

Le masquerade address te perd dans ton flux a cause de ton Nat.

Tu peux a la rigueur creer un virtualhost avec si reellement tu en as besoin mais ton serveur FTP ne porte pas ton adresse externe. Cela fonctionnerai si tu le mettait en DMZ, devant ton routeur.

Lien vers le commentaire
Partager sur d’autres sites

Oui, j'ai du activer 2-3 trucs dans le jail.conf de fail2ban, mais c'est pas la mort en termes de paramètrage :chinois:

Bon sinon après avoir éplucher quelque tutos, j'ai fait un script pour iptables qui se lance au démarrage :

#!/bin/sh# Vider les tables actuellesiptables -t filter -F# Vider les règles personnellesiptables -t filter -X# Interdire toute connexion entrante et sortanteiptables -t filter -P INPUT DROPiptables -t filter -P FORWARD DROPiptables -t filter -P OUTPUT DROP# ---# Ne pas casser les connexions etabliesiptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT# Autoriser loopbackiptables -t filter -A INPUT -i lo -j ACCEPTiptables -t filter -A OUTPUT -o lo -j ACCEPT# ICMP (Ping)iptables -t filter -A INPUT -p icmp -j ACCEPTiptables -t filter -A OUTPUT -p icmp -j ACCEPT# ---# SSH Iniptables -t filter -A INPUT -p tcp --dport 2222 -j ACCEPT# SSH Outiptables -t filter -A OUTPUT -p tcp --dport 2222 -j ACCEPT# DNS In/Out - On active que le TCP pour l'intantiptables -t filter -A OUTPUT -p tcp --dport 53 -j ACCEPTiptables -t filter -A OUTPUT -p udp --dport 53 -j ACCEPTiptables -t filter -A INPUT -p tcp --dport 53 -j ACCEPTiptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT# NTP Outiptables -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT# FTP Outiptables -t filter -A OUTPUT -p tcp --dport 4687 -j ACCEPT# FTP Inmodprobe ip_conntrack_ftpiptables -t filter -A INPUT -p tcp --dport 4687 -j ACCEPTiptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTiptables -t filter -A INPUT -m state --state NEW -p tcp --dport 60000:60100 -j ACCEPT#Samba Iniptables -t filter -A INPUT -p tcp -s 192.168.0.0/24 --dport 139 -j ACCEPTiptables -t filter -A INPUT -p tcp -s 192.168.0.0/24 --dport 445 -j ACCEPTiptables -t filter -A INPUT -p udp -s 192.168.0.0/24 --dport 137 -j ACCEPTiptables -t filter -A INPUT -p udp -s 192.168.0.0/24 --dport 138 -j ACCEPTiptables -t filter -A INPUT -p udp -s 192.168.0.0/24 --dport 445 -j ACCEPT# Samba Outiptables -t filter -A OUTPUT -p tcp --dport 139 -j ACCEPTiptables -t filter -A OUTPUT -p tcp --dport 445 -j ACCEPTiptables -t filter -A OUTPUT -p udp --dport 137 -j ACCEPTiptables -t filter -A OUTPUT -p udp --dport 138 -j ACCEPTiptables -t filter -A OUTPUT -p udp --dport 445 -j ACCEPT# Mail a activer le jour où ça tournera# Mail SMTP:25# iptables -t filter -A INPUT -p tcp --dport 25 -j ACCEPT# iptables -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT# Mail POP3:110# iptables -t filter -A INPUT -p tcp --dport 110 -j ACCEPT# iptables -t filter -A OUTPUT -p tcp --dport 110 -j ACCEPT# Mail IMAP:143# iptables -t filter -A INPUT -p tcp --dport 143 -j ACCEPT# iptables -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT# Mail POP3S:995# iptables -t filter -A INPUT -p tcp --dport 995 -j ACCEPT# iptables -t filter -A OUTPUT -p tcp --dport 995 -j ACCEPT



Ça semble correct en termes de sécurité (oui, j'ai modifié le port pour ssh :parano: :D) ?

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...