第一步、安装
1. 从https://security.appspot.com/vsftpd.html下载vsftpd.tar.gz;
2. 执行以下命令:
tar -zxvf vsftpd-xx.tar.gz
cd vsftpd-xx
3. 编辑Makefile文件,编辑结果如下所示:
# Makefile for systems with GNU tools
CC = gcc
INSTALL = install
IFLAGS = -idirafter dummyinc
#CFLAGS = -g
CFLAGS = -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 \
-Wall -W -Wshadow -Werror -Wformat-security \
-D_FORTIFY_SOURCE=2 \
#-pedantic -Wconversion
LIBS = `./vsf_findlibs.sh`
LINK = -Wl,-s
LDFLAGS = -fPIE -pie -Wl,-z,relro -Wl,-z,now
OBJS = main.o utility.o prelogin.o ftpcmdio.o postlogin.o privsock.o \
tunables.o ftpdataio.o secbuf.o ls.o \
postprivparent.o logging.o str.o netstr.o sysstr.o strlist.o \
banner.o filestr.o parseconf.o secutil.o \
ascii.o oneprocess.o twoprocess.o privops.o standalone.o hash.o \
tcpwrap.o ipaddrparse.o access.o features.o readwrite.o opts.o \
ssl.o sslslave.o ptracesandbox.o ftppolicy.o sysutil.o sysdeputil.o \
seccompsandbox.o
.c.o:
$(CC) -c $*.c $(CFLAGS) $(IFLAGS)
vsftpd: $(OBJS)
$(CC) -o vsftpd $(OBJS) $(LINK) $(LDFLAGS) $(LIBS)
install:
if [ -x /usr/local/sbin ]; then \
$(INSTALL) -m 755 vsftpd /usr/local/sbin/vsftpd; \
else \
$(INSTALL) -m 755 vsftpd /usr/sbin/vsftpd; fi
if [ -x /usr/share/man ]; then \
$(INSTALL) -m 644 vsftpd.8 /usr/share/man/man8/vsftpd.8; \
$(INSTALL) -m 644 vsftpd.conf.5 /usr/share/man/man5/vsftpd.conf.5; \
elif [ -x /usr/local/man ]; then \
$(INSTALL) -m 644 vsftpd.8 /usr/local/man/man8/vsftpd.8; \
$(INSTALL) -m 644 vsftpd.conf.5 /usr/local/man/man5/vsftpd.conf.5; \
else \
$(INSTALL) -m 644 vsftpd.8 /usr/man/man8/vsftpd.8; \
$(INSTALL) -m 644 vsftpd.conf.5 /usr/man/man5/vsftpd.conf.5; fi
if [ -x /etc/xinetd.d ]; then \
$(INSTALL) -m 644 xinetd.d/vsftpd /etc/xinetd.d/vsftpd; fi
clean:
rm -f *.o *.swp vsftpd
4. 执行以下命令:
make
ls -l vsftpd
useradd nobody
mkdir /usr/share/empty
mkdir /var/ftp
useradd -d /var/ftp ftp
chown root.root /var/ftp
chmod og-w /var/ftp
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8
cp vsftpd /usr/local/sbin/vsftpd
make install
cp vsftpd.conf /etc
5. 启动服务,测试登录
启动服务:
/usr/local/sbin/vsftpd
测试登录
ftp localhost
用户名为ftp,密码为空
第二步:修改端口
1. 修改/etc/vsftpd.conf,在末尾添加:
listen_port=801
表示将端口号修改为801。
2. 编辑/etc/services文件,将“ftp 21/tcp”改为“ftp 801/tcp”。
3. 重启FTP服务。
第三步:设置密码登录
1. 修改vsftpd.conf,把anonymouns=yes改成anonymouns=no
2. useradd -d /var/ftp test
3. passwd test
4. 重启vsftpd即可
第四步:有防火墙的外网访问
FTP访问包括请求接口和数据库连接接口,对FTP的访问包括PASV和PORT两种方式,我们通常会用PASV方式,所以除暴露FTP的访问端口(即listen_port的值)外,还需要暴露PASV指定的端口,在vsftpd.conf中添加以下配置:
listen_port=30
pasv_enable=YES
pasv_min_port=55443
pasv_max_port=55443
表赤FTP端口是30,数据访问端口是55443,对外只需要暴露这两个端口即可用外网访问FTP。