Setup Linux Ubuntu FTP Server

Requirements

  1. Router capable of port forwarding
  2. Static IP
  3. DSL/Cable or the like (fast connection)
  4. Command line experience
  5. Nano/Pico or VIM

Get Ubuntu

First, download an ISO of Ubuntu Desktop 6.06.x or greater… Download Ubuntu

Burn the ISO to a CD.

Install Ubuntu

Insert the Ubuntu CD into the computer and then boot up the computer. Make sure you computer is set to start from CD player if a bootable CD is present.

Follow the prompts. They are pretty straight forward and it should only take about 15 minutes to be ready to go.

Install VSFTPD

Download the latest version VSFTPD

I used 2.0.5

Or you can use Ubuntu's apt-get install to do the same.

Open Terminal:

su
[enter root user pasword]

cd /tmp

apt-get install vsftpd
# OR
wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.5.tar.gz

tar -zxvf vsftpd-2.0.5.tar.gz
cd vsftpd-2.0.5

mkdir /var/run/vsftpd

./configure
make
make install

Set Network

Set Server to a Static IP in Network

Back up /etc/network/interfaces

cp /etc/network/interfaces /etc/network/interfaces.bak

make sure you are root then… Open in VIM or Nano/Pico

nano /etc/network/interfaces 

# Change eth0 to match according to your router setup

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.0.100
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

# save and Quit then restart network
/etc/init.d/networking restart

Open the FTP Port using iptables

iptables -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

Configure Router

Forward ports 20-22 and select a port for passive mode and forward that too

For passive mode choose a very high port number like 35005 and forward that as well

Configure VSFTPD

Back up Config file

/etc/vsftpd.conf /etc/vsftpd.conf.bak

Then Edit /etc/vsftpd.conf:

Ours looks something like this:

# Run standalone?  vsftpd can run either from an inetd or as a standalone
# daemon started from an initscript.
listen=YES
#background=YES
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# 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)
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.
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# You may change the default value for timing out a data connection.
data_connection_timeout=240
#
# You may fully customise the login banner string:
ftpd_banner=Welcome to Little Linux FTP service.
#
# You may restrict local users to their home directories.  See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
ls_recurse_enable=YES
#
# This option should be the name of a directory which is empty.  Also, the
# directory should not be writable by the ftp user. This directory is used
# as a secure chroot() jail at times vsftpd does not require filesystem
# access.
secure_chroot_dir=/var/run/vsftpd
#
# This string is the name of the PAM service vsftpd will use.
pam_service_name=vsftpd
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#
# This option specifies the location of the RSA key to use for SSL
# encrypted connections.
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
#
#
#pasv_addr_resolve=YES
pasv_enable=YES
#pasv_address=192.168.x.xxx
pasv_min_port=35005
pasv_max_port=35005
#tcp_wrappers=YES
dirlist_enable=YES
use_localtime=YES
log_ftp_protocol=YES
#port_enable=YES
 
linux_administration/linux_ubuntu_ftp_server.txt · Last modified: 2007/09/18 20:17 by vincenzobar
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki