Add TLS Support

This commit is contained in:
Amin Vakil 2020-02-06 00:46:40 +03:30
parent d7d630b527
commit d805748b9f
No known key found for this signature in database
GPG key ID: 1EFC1864E9D9E56B
5 changed files with 90 additions and 27 deletions

View file

@ -1,12 +1,13 @@
FROM alpine:3.13 FROM alpine:3.13
LABEL maintainer="Amin Vakil <info@aminvakil.com>"
RUN apk --no-cache add vsftpd RUN apk --no-cache add vsftpd
COPY start_vsftpd.sh /bin/start_vsftpd.sh COPY vsftpd.pem /etc/ssl/certs/vsftpd.pem
COPY start_vsftpd.sh /usr/local/bin/start_vsftpd.sh
COPY vsftpd.conf /etc/vsftpd/vsftpd.conf COPY vsftpd.conf /etc/vsftpd/vsftpd.conf
EXPOSE 21 21000-21010
VOLUME /ftp/ftp
STOPSIGNAL SIGKILL STOPSIGNAL SIGKILL
ENTRYPOINT ["/bin/start_vsftpd.sh"] ENTRYPOINT ["/usr/local/bin/start_vsftpd.sh"]

View file

@ -1,5 +1,4 @@
# docker-alpine-ftp-server # docker-alpine-ftp-server
[![Docker Stars](https://img.shields.io/docker/stars/delfer/alpine-ftp-server.svg)](https://hub.docker.com/r/delfer/alpine-ftp-server/) [![Docker Pulls](https://img.shields.io/docker/pulls/delfer/alpine-ftp-server.svg)](https://hub.docker.com/r/delfer/alpine-ftp-server/) [![Docker Automated build](https://img.shields.io/docker/automated/delfer/alpine-ftp-server.svg)](https://hub.docker.com/r/delfer/alpine-ftp-server/) [![Docker Build Status](https://img.shields.io/docker/build/delfer/alpine-ftp-server.svg)](https://hub.docker.com/r/delfer/alpine-ftp-server/) [![MicroBadger Layers](https://img.shields.io/microbadger/layers/delfer/alpine-ftp-server.svg)](https://hub.docker.com/r/delfer/alpine-ftp-server/) [![MicroBadger Size](https://img.shields.io/microbadger/image-size/delfer/alpine-ftp-server.svg)](https://hub.docker.com/r/delfer/alpine-ftp-server/)
Small and flexible docker image with vsftpd server Small and flexible docker image with vsftpd server
## Usage ## Usage
@ -26,3 +25,6 @@ Environment variables:
- `user|password foo|bar|/home/foo` - `user|password foo|bar|/home/foo`
- `user|password|/home/user/dir|10000` - `user|password|/home/user/dir|10000`
- `user|password||10000` - `user|password||10000`
=======
# docker-alpine-ftp-server-tls
Small and flexible docker image with vsftpd server with tls

View file

@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
set +x
#Remove all ftp users #Remove all ftp users
grep '/ftp/' /etc/passwd | cut -d':' -f1 | xargs -n1 deluser #grep '/ftp/' /etc/passwd | cut -d':' -f1 | xargs -n1 deluser
#Create users #Create users
#USERS='name1|password1|[folder1][|uid1] name2|password2|[folder2][|uid2]' #USERS='name1|password1|[folder1][|uid1] name2|password2|[folder2][|uid2]'
@ -15,7 +15,7 @@ grep '/ftp/' /etc/passwd | cut -d':' -f1 | xargs -n1 deluser
#Default user 'ftp' with password 'alpineftp' #Default user 'ftp' with password 'alpineftp'
if [ -z "$USERS" ]; then if [ -z "$USERS" ]; then
USERS="ftp|alpineftp" USERS="amin|alpineftp"
fi fi
for i in $USERS ; do for i in $USERS ; do
@ -55,6 +55,5 @@ fi
if [ ! -z "$1" ]; then if [ ! -z "$1" ]; then
exec "$@" exec "$@"
else else
exec /usr/sbin/vsftpd -opasv_min_port=$MIN_PORT -opasv_max_port=$MAX_PORT $ADDR_OPT /etc/vsftpd/vsftpd.conf exec /usr/sbin/vsftpd -opasv_min_port=$MIN_PORT -opasv_max_port=$MAX_PORT $ADDR_OPT /etc/vsftpd/vsftpd.conf & sleep infinity
fi fi

View file

@ -1,5 +1,5 @@
# Allow anonymous FTP? (Beware - allowed by default if you comment this out). # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO anonymous_enable=YES
# #
# Uncomment this to allow local users to log in. # Uncomment this to allow local users to log in.
local_enable=YES local_enable=YES
@ -9,11 +9,7 @@ write_enable=YES
# #
# Default umask for local users is 077. You may wish to change this to 022, # Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's) # if your users expect that (022 is used by most other ftpd's)
local_umask=022 #local_umask=022
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
# #
# Activate logging of uploads/downloads. # Activate logging of uploads/downloads.
xferlog_enable=YES xferlog_enable=YES
@ -21,15 +17,9 @@ xferlog_enable=YES
# Make sure PORT transfer connections originate from port 20 (ftp-data). # Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES connect_from_port_20=YES
# #
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown # You may override where the log file goes if you like. The default is shown
# below. # below.
#xferlog_file=/dev/stdout #xferlog_file=/var/log/vsftpd.log
vsftpd_log_file=/proc/1/fd/1 vsftpd_log_file=/proc/1/fd/1
# #
# If you want, you can have your log file in standard ftpd xferlog format. # If you want, you can have your log file in standard ftpd xferlog format.
@ -42,6 +32,10 @@ vsftpd_log_file=/proc/1/fd/1
# You may change the default value for timing out a data connection. # You may change the default value for timing out a data connection.
#data_connection_timeout=120 #data_connection_timeout=120
# #
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not # Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it, # recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients. # however, may confuse older FTP clients.
@ -60,7 +54,7 @@ vsftpd_log_file=/proc/1/fd/1
#ascii_download_enable=YES #ascii_download_enable=YES
# #
# You may fully customise the login banner string: # You may fully customise the login banner string:
ftpd_banner=Welcome Alpine ftp server https://hub.docker.com/r/delfer/alpine-ftp-server/ ftpd_banner=Welcome Alpine ftp server tls https://quay.io/aminvakil/alpine-ftp-server-tls
# #
# You may specify an explicit list of local users to chroot() to their home # You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of # directory. If chroot_local_user is YES, then this list becomes a list of
@ -79,17 +73,34 @@ ftpd_banner=Welcome Alpine ftp server https://hub.docker.com/r/delfer/alpine-ftp
# the presence of the "-R" option, so there is a strong case for enabling it. # the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES #ls_recurse_enable=YES
# #
# When "listen" directive is enabled, vsftpd runs in standalone mode and # When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction # listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive. # with the listen_ipv6 directive.
listen=YES listen=YES
# #
## Enable passive mode # Enable passive mode
pasv_enable=YES pasv_enable=YES
pasv_addr_resolve=YES pasv_addr_resolve=YES
# #
## Disable seccomp filter sanboxing # Disable seccomp filter sanboxing
seccomp_sandbox=NO seccomp_sandbox=NO
#
# Run in background # Run in background
background=NO background=NO
ssl_enable=YES
# by default all non anonymous logins and forced to use SSL to send and receive password and data, set to NO to allow non secure connections
force_local_logins_ssl=YES
force_local_data_ssl=YES
# provide the path of your certificate and of your private key
# note that both can be contained in the same file or in different files
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/certs/vsftpd.pem
# this setting is set to YES by default and requires all data connections exhibit session reuse which proves they know the secret of the control channel.
# this is more secure but is not supported by many FTP clients, set to NO for better compatibility
require_ssl_reuse=YES
ssl_ciphers=HIGH

50
vsftpd.pem Normal file
View file

@ -0,0 +1,50 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD1i+ypsZD+Hb/Z
5AwabbZhzjLUCDbL1kNCFBvo0dGCHNpcVBzu8VWNSjiirXdB9u1D/8fCppBPVjx5
fx8yuEwfdQm7twDOMoaj5lhnP9DUIqo23iCXzY+gLQy+gwf66J5Ydk5mVh41EHSs
NtWDkoFlFOU1jmYKtDx1BngTickJfqerI9ztt5G8nrRRTnM6dR+1THqqa2we4TO4
PxtBO+BKm+BeaTN20+2dBh0k9CrGiPiSW/maKpHvJhqY7Ofa6EwwzzMOadXKKDP9
5DHtYaEqaWvWQ+D4X2c/zJaOUADcmiS4fmiU2qNfCAyOQYVRB1+SoH71knk00Ei9
8F97ntsJAgMBAAECggEATd0XKSCDp/FrGv8zz1WnFhC7EX2hUrYZEeUqjIOseiQI
ImsR2btxs6Irn3p+bM6OopeDkvganu3rs2NaU00Z5ofIlFwNx1VCWMr8kZEs+Xgc
ndWGZFztBJAEkI0ghLIrNEYfylfYsF8NgGbLAjP9ED62CGuldBN/cGSiwx9YPsfq
BHTmKBhXzoUMW3/J+1TmZ4bLpJ88PuFKmJB2jdQwQFSztuxMsGt5Gc/3NOqXF4jg
KWhGxSpqiyTGGPefqdGsccwJEB2JfvuTNg18gm9AzYI+O5ZJ5Nr6f3kOHwkOuyNG
Dj3tpIHl8tVZSNqf6bFUNVyIZ3vJLJPfsxTgX75tYQKBgQD7xU2Q5/Zr8cvFo3O2
19nUsfgated8VwcYkJvptbHX9f82tbo18p0/kw4tSlGDSqxuCPvsfq72Ltle2bcg
NGTojQVOzy8NUlV/3WHrJPWABIR28uvuurQc7mgXBn2V3+Q2V3i7ukVoTsSbqeWd
CO5L3xp1USCNQdF1KjHBDrwm9QKBgQD5q9sLVsD58/TrkXJOqgR+uF61NI9bfa0z
JxtoKTrGeF9qUpP+RXY/mfT3zQOGkVIJj1tE/YKPPbvOFG6PSdzd0dp2JMl70R4w
JxpaGVtcfQvP1igPE43hzbC0WbyeCDD6EBDvg/D44V0it56wIXPKX7ma7MBbWhZN
RUtTZiAPRQKBgDQfpO9bFqlCZe2E6W/xQCfIsJTXFBWp7s4nIiBAfZE4XJ33AZYp
pGSFDWpS+I016HzfX0iW8aIGEPqSGFeSgVGj4HVwb01SvmC6dIs6G5llVgdKQ44p
GSDkOqiJr3ZX4+dcNKKo7bWqmQmhIuhf8PXEOrYPFa4o8jRPh/1wD4QBAoGBALiP
n8bMBK9A9aZFyFf6OoRqSihtiCO7zZLor8vZ3obkaLQyAxCNzJHLf1jHBnotZpWG
kZN4S1ET84atd+UYVtrqzDFVlFOhDE3QOhysber6zQaAavBqJhHreVp4k4PGzl2s
Drjfsfxoq+6EChxtPik1hgDOTou5Fo9cUAiAj+Z5AoGBALhapyGnrRzztyVQimA9
vGQ7mCp+/U0H6sZ+RZMhQpDDiGR4RGBKqDgxXtPUbDu1Y0hUEsLiv62dfXBDGCdy
Xs8IE9gNAdzwY56VUj4a7eV+rgp9pOtl7bXbMqMPM2SZWyCC06paeKHyAjhBU/Lk
c3gVuktFJSOIwZSYJRNfnUvx
-----END PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDpTCCAo2gAwIBAgIJAPy3jyzhtm/GMA0GCSqGSIb3DQEBCwUAMGkxCzAJBgNV
BAYTAklSMQ8wDQYDVQQIDAZUZWhyYW4xDzANBgNVBAcMBlRlaHJhbjEVMBMGA1UE
CgwMU2FtaW4gU2VydmVyMSEwHwYJKoZIhvcNAQkBFhJpbmZvQGFtaW52YWtpbC5j
b20wHhcNMjAwMjA1MDkzMTQ4WhcNNDAwMTMxMDkzMTQ4WjBpMQswCQYDVQQGEwJJ
UjEPMA0GA1UECAwGVGVocmFuMQ8wDQYDVQQHDAZUZWhyYW4xFTATBgNVBAoMDFNh
bWluIFNlcnZlcjEhMB8GCSqGSIb3DQEJARYSaW5mb0BhbWludmFraWwuY29tMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9YvsqbGQ/h2/2eQMGm22Yc4y
1Ag2y9ZDQhQb6NHRghzaXFQc7vFVjUo4oq13QfbtQ//HwqaQT1Y8eX8fMrhMH3UJ
u7cAzjKGo+ZYZz/Q1CKqNt4gl82PoC0MvoMH+uieWHZOZlYeNRB0rDbVg5KBZRTl
NY5mCrQ8dQZ4E4nJCX6nqyPc7beRvJ60UU5zOnUftUx6qmtsHuEzuD8bQTvgSpvg
XmkzdtPtnQYdJPQqxoj4klv5miqR7yYamOzn2uhMMM8zDmnVyigz/eQx7WGhKmlr
1kPg+F9nP8yWjlAA3JokuH5olNqjXwgMjkGFUQdfkqB+9ZJ5NNBIvfBfe57bCQID
AQABo1AwTjAdBgNVHQ4EFgQUY4WFvh5w3tD8yWEqjjsZ0mwgbLQwHwYDVR0jBBgw
FoAUY4WFvh5w3tD8yWEqjjsZ0mwgbLQwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B
AQsFAAOCAQEAQV9riXqeKPEbntqJQ073qY4zmd7gceDLLsMfdSRvR0784uEZYLUo
b/1WRxlZBKIZyCdcF1SOODUfs4u0r+n3482IiNCmGsZB1yYXnyjko6H7GUgTjGTn
AR6nCv6bS7KvIU0ikuT/ptaDBV4PBm5B3BE0dFdZsiqy5eGwFloNI19u31d1DcKd
hZbuRrW8I/Q9lScT+EjL5AYIdNKsTbHAo8IT7TsQ2qS87r3pgFNXIdkEGMTXDurE
Z61gdw5P6A3dklSIF7LCVaZdGRbDo8EGsT+U3BnsGiF/LbbR9ibsTB6xgjw9k3sV
dUvJCiNnTbd3E2wa3bpGQJGX23l/2pFVfQ==
-----END CERTIFICATE-----