use sftp
This commit is contained in:
parent
23e6d54867
commit
bd7346b842
10
Dockerfile
10
Dockerfile
@ -7,13 +7,13 @@ RUN adduser -h /var/lib/proftp -u 2222 -D -G proftp proftp
|
|||||||
|
|
||||||
ADD /rootfs /
|
ADD /rootfs /
|
||||||
|
|
||||||
RUN apk add --no-cache libressl openldap tar gcc make g++ openldap-dev file
|
RUN apk add --no-cache libressl openssh-client openldap tar gcc make g++ openldap-dev zlib zlib-dev file
|
||||||
|
|
||||||
RUN mkdir /tmp/proftpd
|
RUN mkdir /tmp/proftpd
|
||||||
RUN wget -qO- https://github.com/proftpd/proftpd/archive/$PROFTP_VERSION.tar.gz | tar -xz -C /tmp/proftpd --strip 1
|
RUN wget -qO- https://github.com/proftpd/proftpd/archive/$PROFTP_VERSION.tar.gz | tar -xz -C /tmp/proftpd --strip 1
|
||||||
|
|
||||||
WORKDIR /tmp/proftpd
|
WORKDIR /tmp/proftpd
|
||||||
RUN ./configure --with-modules=mod_ldap:mod_tls
|
RUN ./configure --with-modules=mod_ldap:mod_sftp
|
||||||
RUN patch -p1 -i /musl_mempcpy.patch
|
RUN patch -p1 -i /musl_mempcpy.patch
|
||||||
RUN make && make install
|
RUN make && make install
|
||||||
|
|
||||||
@ -21,6 +21,8 @@ RUN rm -r /tmp/proftpd
|
|||||||
RUN rm /musl_mempcpy.patch
|
RUN rm /musl_mempcpy.patch
|
||||||
WORKDIR /
|
WORKDIR /
|
||||||
|
|
||||||
RUN apk del tar gcc make g++ openldap-dev file
|
RUN apk del tar gcc make g++ openldap-dev zlib-dev file
|
||||||
|
|
||||||
EXPOSE 21
|
VOLUME /var/lib/proftp/keys /var/lib/proftp/data
|
||||||
|
|
||||||
|
EXPOSE 22
|
||||||
|
32
README.md
32
README.md
@ -1,39 +1,13 @@
|
|||||||
File access with [ProFTPD](http://www.proftpd.org/) and ldap authentication.
|
File access with [ProFTPD](http://www.proftpd.org/) over sftp and ldap authentication.
|
||||||
|
|
||||||
# Volumes
|
# Volumes
|
||||||
- `/var/lib/proftp/data`: root directory for files
|
- `/var/lib/proftp/data`: root directory for files
|
||||||
- `/etc/ssl/proftp:ro`: certificates have to be here
|
- `/var/lib/proftp/keys`: ssh key files
|
||||||
|
|
||||||
# Environment Variables
|
# Environment Variables
|
||||||
## SERVER_NAME
|
## SERVER_NAME
|
||||||
Name displayed to connecting users.
|
Name displayed to connecting users.
|
||||||
|
|
||||||
## PASSIVE_LOWER_BOUND
|
|
||||||
Lower bound for the passive port range.
|
|
||||||
|
|
||||||
## PASSIVE_UPPER_BOUND
|
|
||||||
Upper bound for the passive port range.
|
|
||||||
|
|
||||||
## TLS_PROTOCOL
|
|
||||||
- default: TLSv1.2
|
|
||||||
|
|
||||||
SSL/TLS protocol version to use.
|
|
||||||
|
|
||||||
## TLS_CIPHERS
|
|
||||||
- default: AES128+EECDH:AES128+EDH
|
|
||||||
|
|
||||||
Cipher list to use.
|
|
||||||
|
|
||||||
## CERT_NAME
|
|
||||||
- default: fullchain.pem
|
|
||||||
|
|
||||||
Name of the certificate file.
|
|
||||||
|
|
||||||
## KEY_NAME
|
|
||||||
- default: privkey.pem
|
|
||||||
|
|
||||||
Name of the key file.
|
|
||||||
|
|
||||||
## LDAP_URI
|
## LDAP_URI
|
||||||
Full ldap uri with search qualifier.
|
Full ldap uri with search qualifier.
|
||||||
|
|
||||||
@ -64,7 +38,7 @@ Whether to use tls when connecting to the ldap host.
|
|||||||
Whether to use auth bind with ldap.
|
Whether to use auth bind with ldap.
|
||||||
|
|
||||||
# Ports
|
# Ports
|
||||||
- 21
|
- 22
|
||||||
- All ports in the defined bounds
|
- All ports in the defined bounds
|
||||||
|
|
||||||
## Capabilities
|
## Capabilities
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
ServerName "{{getenv "SERVER_NAME"}}"
|
ServerName "{{getenv "SERVER_NAME"}}"
|
||||||
ServerType standalone
|
ServerType standalone
|
||||||
DefaultServer on
|
DefaultServer on
|
||||||
Port 21
|
Port 22
|
||||||
UseIPv6 off
|
UseIPv6 off
|
||||||
Umask 006 007
|
Umask 006 007
|
||||||
MaxInstances 30
|
MaxInstances 30
|
||||||
@ -12,24 +12,15 @@ DefaultChdir /var/lib/proftp/data
|
|||||||
AllowOverwrite on
|
AllowOverwrite on
|
||||||
RequireValidShell off
|
RequireValidShell off
|
||||||
|
|
||||||
PassivePorts {{getenv "PASSIVE_LOWER_BOUND"}} {{getenv "PASSIVE_UPPER_BOUND"}}
|
|
||||||
|
|
||||||
<Limit SITE_CHMOD>
|
<Limit SITE_CHMOD>
|
||||||
DenyAll
|
DenyAll
|
||||||
</Limit>
|
</Limit>
|
||||||
|
|
||||||
<IfModule mod_tls.c>
|
<IfModule mod_sftp.c>
|
||||||
TLSEngine on
|
SFTPEngine on
|
||||||
TLSProtocol {{getenv "TLS_PROTOCOL" "TLSv1.2"}}
|
SFTPAuthMethods password
|
||||||
TLSRequired on
|
SFTPDHParamFile /var/lib/proftp/keys/dhparams.pem
|
||||||
|
SFTPHostKey /var/lib/proftp/keys/ssh_rsa_key
|
||||||
TLSRSACertificateFile /etc/ssl/proftp/{{getenv "CERT_NAME" "fullchain.pem"}}
|
|
||||||
TLSRSACertificateKeyFile /etc/ssl/proftp/{{getenv "KEY_NAME" "privkey.pem"}}
|
|
||||||
|
|
||||||
TLSVerifyClient off
|
|
||||||
TLSServerCipherPreference on
|
|
||||||
TLSSessionCache internal: 1800
|
|
||||||
TLSCipherSuite {{getenv "TLS_CIPHERS" "AES128+EECDH:AES128+EDH"}}
|
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|
||||||
<IfModule mod_ldap.c>
|
<IfModule mod_ldap.c>
|
||||||
|
5
rootfs/etc/cont-init.d/02-dhparam
Normal file
5
rootfs/etc/cont-init.d/02-dhparam
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/with-contenv sh
|
||||||
|
|
||||||
|
if [ ! -f /var/lib/proftp/keys/dhparams.pem ]; then
|
||||||
|
openssl dhparam -outform PEM -5 nbits >> /var/lib/proftp/keys/dhparams.pem
|
||||||
|
fi
|
5
rootfs/etc/cont-init.d/03-ssh-keys
Normal file
5
rootfs/etc/cont-init.d/03-ssh-keys
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/with-contenv sh
|
||||||
|
|
||||||
|
if [ ! -f /var/lib/proftp/keys/ssh_rsa_key ]; then
|
||||||
|
ssh-keygen -b 2048 -t rsa -f /var/lib/proftp/keys/ssh_rsa_key -q -N ""
|
||||||
|
fi
|
@ -1,6 +1,8 @@
|
|||||||
|
diff --git a/lib/pr_fnmatch.c b/lib/pr_fnmatch.c
|
||||||
|
index a1cb101..03956c1 100644
|
||||||
--- a/lib/pr_fnmatch.c
|
--- a/lib/pr_fnmatch.c
|
||||||
+++ b/lib/pr_fnmatch.c
|
+++ b/lib/pr_fnmatch.c
|
||||||
@@ -250,7 +250,7 @@
|
@@ -250,7 +250,7 @@ __wcschrnul (const wchar_t *s, wint_t c)
|
||||||
# endif
|
# endif
|
||||||
# define STRLEN(S) strlen (S)
|
# define STRLEN(S) strlen (S)
|
||||||
# define STRCAT(D, S) strcat (D, S)
|
# define STRCAT(D, S) strcat (D, S)
|
||||||
|
Loading…
Reference in New Issue
Block a user