John Shaft Posté(e) le 3 mai 2013 Partager Posté(e) le 3 mai 2013 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 - iptables est vierge de toutes règles (en attendant que ça marche) - que je suis un gros n00b en la matière Mon fichier conf est-il correct ? Faut-il quand même dire à iptables comment faire le boulot ? Obiwan Kenobi ? Merci d'avance ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
dudul88 Posté(e) le 3 mai 2013 Partager Posté(e) le 3 mai 2013 Si tu mets "DefaultRoot" à "/" ça marche pas ? Je ne connait pas proftpd mais là pour moi tu lock l'utilisateur dans son /home mais tu ne lui donne pas le droit de le voir. Edit : peut-être une autre piste : http://www.proftpd.org/docs/howto/Authentication.html#homedir Lien vers le commentaire Partager sur d’autres sites More sharing options...
coyotedef Posté(e) le 3 mai 2013 Partager Posté(e) le 3 mai 2013 De passage en speed mais : FTP = ports 20 ET 21 de base. Vraissemblablement tu ne route qu'un seul port (il te manque le port DATA) . Peut etre une piste Lien vers le commentaire Partager sur d’autres sites More sharing options...
John Shaft Posté(e) le 3 mai 2013 Auteur Partager Posté(e) le 3 mai 2013 @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 / @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 More sharing options...
seboss666 Posté(e) le 3 mai 2013 Partager Posté(e) le 3 mai 2013 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 More sharing options...
RaphAstronome Posté(e) le 3 mai 2013 Partager Posté(e) le 3 mai 2013 Je ne suis pas un expert en FTP mais "AllowUser shaftftp", "USER Shaft" : c'est pas le meme login, c'est voulu ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
John Shaft Posté(e) le 3 mai 2013 Auteur Partager Posté(e) le 3 mai 2013 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 ) , c'est réglé par "UserAlias Shaft shaftftp" dans la conf. 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
seboss666 Posté(e) le 4 mai 2013 Partager Posté(e) le 4 mai 2013 Avec les ports pour le mode passif (laisse tomber le masqueradeAddress, je pense que ça chie avec le NAT), et le mode passif activé dans ton client (oui, ça m'est arrivé une paire de fois d'oublier), il se passe quoi ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
coyotedef Posté(e) le 4 mai 2013 Partager Posté(e) le 4 mai 2013 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 More sharing options...
John Shaft Posté(e) le 4 mai 2013 Auteur Partager Posté(e) le 4 mai 2013 @seboss666 : marche en local et pas en externe dans ce cas Mais en mettant le Pi dans la DMZ (obligé de le faire comme d'hab en telnet sur le routeur en mousse filé par OVH ), ça marche ! (avec ou sans MasqueradeAdress) Merci à tous! Lien vers le commentaire Partager sur d’autres sites More sharing options...
seboss666 Posté(e) le 4 mai 2013 Partager Posté(e) le 4 mai 2013 Si ça colle en DMZ, faut blinder tout de suite iptables pour éviter les journées portes ouvertes Lien vers le commentaire Partager sur d’autres sites More sharing options...
John Shaft Posté(e) le 5 mai 2013 Auteur Partager Posté(e) le 5 mai 2013 Oui, je l'ai stoppé en attendant de maitriser iptables (c'est pas pour tout de suite ). A noter que je suis pas fou, j'ai aussi fail2ban qui tourne. Selon ce que j'ai lu, il marche très bien "out of the box", mais je suis sûr qu'il y a moyen d'affiner Lien vers le commentaire Partager sur d’autres sites More sharing options...
RaphAstronome Posté(e) le 5 mai 2013 Partager Posté(e) le 5 mai 2013 fail2ban : ça marche bien contre les brute-force de pass par SSH mais je ne crois pas que cela filtre d'autres chose par défaut. Lien vers le commentaire Partager sur d’autres sites More sharing options...
John Shaft Posté(e) le 5 mai 2013 Auteur Partager Posté(e) le 5 mai 2013 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 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: ) ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
seboss666 Posté(e) le 6 mai 2013 Partager Posté(e) le 6 mai 2013 J'ai relu deux fois, ça passe normalement (tant que les ports du script sont ceux des services, ce que j'ai du dépanner y'a quelques temps sur un serveur mal géré par un "client"). Lien vers le commentaire Partager sur d’autres sites More sharing options...
John Shaft Posté(e) le 6 mai 2013 Auteur Partager Posté(e) le 6 mai 2013 Oki merci Pour le coup, j'ai rajouté deux règles pour logger les connexions bloquées (15 entrées max / min) -> j'en suis à presque 10 Mo de logs en 1 journée Lien vers le commentaire Partager sur d’autres sites More sharing options...
seboss666 Posté(e) le 6 mai 2013 Partager Posté(e) le 6 mai 2013 Et après un pote me demande pourquoi je mets pas mon serveur en DMZ mine de rien, le NAT comme sécurité du pauvre, ça fait son office Lien vers le commentaire Partager sur d’autres sites More sharing options...
John Shaft Posté(e) le 7 mai 2013 Auteur Partager Posté(e) le 7 mai 2013 Pas faux. Faudrait que je fasse un backup de la config de mon routeur pourrie et que j’épluche le .ini qu'il me crache pour voir un peu comment bien configurer ça Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.