{"id":28,"date":"2012-09-28T11:10:17","date_gmt":"2012-09-28T09:10:17","guid":{"rendered":"http:\/\/clark.tipistrani.it\/?p=28"},"modified":"2018-04-04T14:00:25","modified_gmt":"2018-04-04T12:00:25","slug":"ftp","status":"publish","type":"post","link":"https:\/\/clark.tipistrani.it\/?p=28","title":{"rendered":"FTP"},"content":{"rendered":"<p><a href=\"http:\/\/it.wikipedia.org\/wiki\/File_Transfer_Protocol\">FTP<\/a> \u00e8 un modo comodo anzi molto comodo per trasferire grosse moli di dati.<br \/>\nLa sua principale caratteristica \u00e8 la stabilit\u00e0 una volta avviata una sessione di ftp a meno di cadute di linea o di interruzioni di servizio (per la serie si spegne il server) arriva sempre a buon fine.<br \/>\nA volte in ditta succede che si debbano trasferire dei filmati di macchine o presentazioni che sono pesantissime la soluzione canonica e&#8217; fare\u00a0 il classico cd\/dvd e spedire con corriere, ma un server FTP\u00a0 pu\u00f2 essere una valida alternativa.<br \/>\nIl grosso contro di un server FTP e&#8217; che tutto passa in chiaro, password messaggi files e questo \u00e8 MALE.<br \/>\nInoltre la macchina non \u00e8 direttamente su internet ma bens\u00ec all&#8217;interno della lan, infatti le chiamate da internet alla porta 21 vengono reindirizzate dal firewall a una macchina specifica e questo aggrava ulteriormente la questione sicurezza.<br \/>\nPer cercare di ovviare alla cosa ho pensato di mettere il servizio ftp in chroot.<br \/>\nPremetto che questa realizzazione \u00e8 volutamente fatta in modo da rendere difficile la vita a chi volesse &#8220;sfondare&#8221; il servizio, infatti oltre al chroot fatto con debootstrap la directory in cui gira il tutto (\/jail) \u00e8 vincolata da ACL posix, non \u00e8 permesso il login anonimo, lo stesso utente che puo&#8217; operare ha limitazioni ed inoltre nella configurazione di proftp \u00e8 stata imposta la condizione di chrooting alla home stessa dell&#8217;utente (~), la sicurezza &#8220;sicura&#8221; non esiste, ma almeno il rendere dura la vita a chi non ha nulla di meglio da fare che far vedere quanto sia bravo si pu\u00f2 fare.<br \/>\nDa questo punto in poi tutto \u00e8 riferito all&#8217;ambiente chrootato.<br \/>\nPer pura comodit\u00e0 ho creato un utente archivio con pw archivio con home \/home\/ftp e per complicare ulteriormente la vita ai probabili malintenzionati ho anche imposto come \/bin\/false la shell dell&#8217;utente, archivio \u00e8 la login che diamo ai clienti ed \u00e8 come vedremo di seguito limitata.<br \/>\nquindi nel file passwd troveremo una riga come questa:<br \/>\narchivio:x:1000:1000:,,,:\/home\/ftp:\/bin\/false<br \/>\n\/bin\/false va aggiunto anche al file shells in \/etc.<br \/>\nMi serviva per\u00f2 una login che non fosse root per poter gestire senza particolari problemi le direcory e ho quindi creato l&#8217;utente manager con password $unabellapasswordlungaecomplicata che pu\u00f2 fare tutto.<br \/>\nHo quindi creato due directory sotto \/home\/ftp\u00a0 upload e download e ho imposto con le acl quanto segue:<br \/>\nsetfacl -R -d -m u:archivio:rx download\/<br \/>\nsetfacl -R -d -m u:manager:rwx download\/<br \/>\nsetfacl -R -d -m u:manager:rwx upload\/<br \/>\nsetfacl -R -d -m u:archivio:wx upload\/<br \/>\nin altre parole l&#8217;utente manager pu\u00f2 tutto in entrambe le directory, l&#8217;utente archivio pu\u00f2 leggere nella directory download ma non scrivere, viceversa pu\u00f2 di contro scrivere ma non leggere nella directory upload.<br \/>\nUna spiegazione mi pare opportuna per i meno smaliziati, la directory download e&#8217; di pubblico dominio per tutti quelli che hanno la login di archivio, quindi \u00e8 nostra cura mettere in quella directory materiale non riservato ne sensibile, di contro la directory upload pu\u00f2 contenere documenti delicati e non \u00e8 pensabile che il cliente B possa leggere quello che ci ha spedito via FTP il cliente A che ha la stessa login.<br \/>\nLa scelta del server FTP \u00e8 caduta su proftpd che non \u00e8 certo il migliore per\u00f2 permette parecchie pi\u00f9 cose di quante a noi servano e ha il non trascurabile vantaggio di essere facile da configurare.<br \/>\nDi seguito il file di configurazione che si trova in \/etc\/proftpd (siamo sempre nella chroot).<br \/>\n#<br \/>\n# \/etc\/proftpd\/proftpd.conf &#8212; This is a basic ProFTPD configuration file.<br \/>\n# To really apply changes reload proftpd after modifications.<br \/>\n#<\/p>\n<p># Includes DSO modules<br \/>\nInclude \/etc\/proftpd\/modules.conf<\/p>\n<p># Set off to disable IPv6 support which is annoying on IPv4 only boxes.<br \/>\nUseIPv6\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 off<br \/>\n# If set on you can experience a longer connection delay in many cases.<br \/>\nIdentLookups\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 off<\/p>\n<p>ServerName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;grecale FTP server&#8221;<br \/>\nServerType\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 standalone<br \/>\nDeferWelcome\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 on<br \/>\nServerAdmin\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 my_address@my_company.com<br \/>\nMultilineRFC2228\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 on<br \/>\nDefaultServer\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 on<br \/>\nShowSymlinks\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 on<\/p>\n<p>TimeoutLogin\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 120<br \/>\nTimeoutNoTransfer\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 120<br \/>\nTimeoutStalled\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 240<br \/>\nTimeoutIdle\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 300<\/p>\n<p>DisplayLogin\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 welcome.msg<br \/>\nDisplayChdir\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 .message true<br \/>\nListOptions\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;-l&#8221;<\/p>\n<p>DenyFilter\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \\*.*\/<\/p>\n<p># Use this to jail all users in their homes<br \/>\nDefaultRoot\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 ~<\/p>\n<p># Port 21 is the standard FTP port.<br \/>\nPort\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 21<\/p>\n<p>MaxInstances\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 30<\/p>\n<p># Set the user and group that the server normally runs at.<br \/>\n#User\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 proftpd<br \/>\nUser\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 nobody<br \/>\nGroup\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 nogroup<\/p>\n<p># Umask 022 is a good standard umask to prevent new files and dirs<br \/>\n# (second parm) from being group and world writable.<br \/>\nUmask\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 022\u00a0 022<br \/>\n# Normally, we want files to be overwriteable.<br \/>\nAllowOverwrite\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 on<br \/>\nTransferLog \/var\/log\/proftpd\/xferlog<br \/>\nSystemLog\u00a0\u00a0 \/var\/log\/proftpd\/proftpd.log<\/p>\n<p>&lt;IfModule mod_quotatab.c&gt;<br \/>\nQuotaEngine off<br \/>\n&lt;\/IfModule&gt;<\/p>\n<p>&lt;IfModule mod_ratio.c&gt;<br \/>\nRatios off<br \/>\n&lt;\/IfMo&lt;IfModule mod_delay.c&gt;<br \/>\nDelayEngine on<br \/>\n&lt;\/IfModule&gt;<\/p>\n<p>&lt;IfModule mod_ctrls.c&gt;<br \/>\nControlsEngine\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 off<br \/>\nControlsMaxClients\u00a0\u00a0\u00a0 2<br \/>\nControlsLog\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/var\/log\/proftpd\/controls.log<br \/>\nControlsInterval\u00a0\u00a0\u00a0\u00a0\u00a0 5<br \/>\nControlsSocket\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \/var\/run\/proftpd\/proftpd.sock<br \/>\n&lt;\/IfModule&gt;<br \/>\n&lt;IfModule mod_ctrls_admin.c&gt;<br \/>\nAdminControlsEngine off<br \/>\n&lt;\/IfModule&gt;<br \/>\n&lt;Directory \/*&gt;<br \/>\nAllowOverwrite\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 on<br \/>\n&lt;\/Directory&gt;<\/p>\n<p>&lt;Anonymous ~archivio&gt;<br \/>\nAccessGrantMsg &#8220;Accesso consentito all&#8217;utente %u.&#8221;<br \/>\nAllowRetrieveRestart on<br \/>\nAllowStoreRestart on<br \/>\nDisplayChdir .primo_cambio<br \/>\nDisplayLogin .welcome.msg<br \/>\nExtendedLog \/var\/log\/ftp.log read,write,auth<br \/>\nAnonRequirePassword yes<br \/>\nMaxClients 10 &#8220;E&#8217; stato raggiunto il limite di utenti ammessi The limit of allowed users has been (%m).&#8221;<br \/>\nMaxClientsPerHost 1 &#8220;E&#8217; gia&#8217; connesso 1 utente dal tuo dominio. 1 user is\u00a0 already connected from your domain&#8221;<br \/>\nRequireValidShell yes<\/p>\n<p>&lt;Directory *&gt;<br \/>\n&lt;Limit WRITE&gt;<br \/>\nDenyAll<br \/>\n&lt;\/Limit&gt;<br \/>\n&lt;Limit READ&gt;<br \/>\nDenyAll<br \/>\n&lt;\/Limit&gt;<br \/>\n&lt;Limit DIRS&gt;<br \/>\nAllowAll<br \/>\n&lt;\/Limit&gt;<br \/>\n&lt;\/Directory&gt;<br \/>\n&lt;Directory \/home\/ftp\/download&gt;<br \/>\n&lt;Limit STOR&gt;<br \/>\nOrder deny,allow<br \/>\nDeny from 192.168.2.239<br \/>\nDeny from 192.168.2.240<br \/>\nDeny from 192.168.2.241<br \/>\nAllow 192.168.2.0\/24<br \/>\nAllowUser manager<br \/>\nDeny from all<br \/>\nDenyAll<br \/>\n&lt;\/Limit&gt;<br \/>\n&lt;\/Directory&gt;<br \/>\n&lt;Directory \/home\/ftp\/upload&gt;<br \/>\nUmask 222<br \/>\n&lt;Limit STOR&gt;<br \/>\nAllowAll<br \/>\n&lt;\/Limit&gt;<\/p>\n<p>&lt;Limit READ&gt;<br \/>\nOrder deny,allow<br \/>\nDeny from 192.168.2.239<br \/>\nDeny from 192.168.2.240<br \/>\nDeny from 192.168.2.241<br \/>\nAllow 192.168.2.0\/24<br \/>\nAllowUser manager<br \/>\nDenyAll<br \/>\n&lt;\/Limit&gt;<br \/>\n&lt;\/Directory&gt;<br \/>\n&lt;\/Anonymous&gt;<\/p>\n<p>Resta solo da far partire il servizio chrootato al boot della macchina a questo provvedono i due script<br \/>\n<a href=\"https:\/\/clark.tipistrani.it\/?p=40\">chroot_start<\/a>\u00a0 che a sua volta chiama il <a href=\"https:\/\/clark.tipistrani.it\/?p=42\">jail.sh<\/a><\/p>\n<p>Abbiamo ottenuto un server ftp funzionante e per quanto questo possa signficare qualcosa informaticamente parlando relativamente sicuro<\/p>\n","protected":false},"excerpt":{"rendered":"<p>FTP \u00e8 un modo comodo anzi molto comodo per trasferire grosse moli di dati. La sua principale caratteristica \u00e8 la stabilit\u00e0 una volta avviata una sessione di ftp a meno di cadute di linea o di interruzioni di servizio (per la serie si spegne il server) arriva sempre a buon fine. A volte in ditta [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,7,6],"tags":[],"class_list":["post-28","post","type-post","status-publish","format-standard","hentry","category-linux","category-sistemi-operativi","category-work"],"_links":{"self":[{"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts\/28","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=28"}],"version-history":[{"count":6,"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts\/28\/revisions"}],"predecessor-version":[{"id":1426,"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=\/wp\/v2\/posts\/28\/revisions\/1426"}],"wp:attachment":[{"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/clark.tipistrani.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}