手把手教你建立FTP服务器(保你一看就会哦)

建立FTP服务器之详解 mysql

FTP(File Transfer Protocol)协议可以使用户不须要了解远程主机操做系统的操做方法,就能够直接完成主机之间可靠的文件传输, linux

FTP工做原理:FTP服务也是基于客户端/服务器(C/S)模式的,客户端经过支持FTP协议的程序链接到主机上的FTP服务器,用户经过客户端程序向服务器程序发出命令,服务器程序执行用户发出的命令,而后将执行结果返回给客户端。 sql

FTP有两个连接:控制链接、数据连接,因此说FTP协议也须要两个端口 数据库

命令连接:21/tcp,用于发送指令给服务器以及等待服务器响应。 vim

数据链接:主动模式:20/tcp,用于创建数据传输通道,实现客户端从 服务器得到文件,以及二者之间相互通讯的过程 安全

                被动模式:端口随机 服务器

          传输模式:二进制、文本如:ftp server --> ftp client 网络

数据还分为三种:一、机构化数据 二、半结构化数据 三、非结构化数据 session

FTP服务器的安装 ssh

一、先下载yum配置文件而且保存在/etc/yum.repos.d/server.repo下

二、安装vsftpd软件包,yum install vsftpd

这样一个简单的服务器就建成了

三、检查一下vsftpd是否安装成功,并重启一下,设定为开机启动

四、编译vsftpd.conf的配置文件

anonymous_enable=YES   //是否开启匿名用户访问

anonymous_enable=YES   //是否开启本地用户既系统用户访问

write_enable=YES             //是否开启本地用户的写权限:上传文件的权限

local_umask=022            //系统用户上传文件时候的umask默认值

anon_upload_enable=YES //是否开启虚拟用户上传文件的权限

anon_mkdir_write_enable=YES //是否开启虚拟用户新建文件件的权限

chown_uploads=YES           //是否开启上传文件的属主修改
chown_username=whoever  //上传文件后所属主

xferlog_file=/var/log/xferlog

xferlog_std_format=YES      //日志记录,须要开启上面两项才能够生效

idle_session_timeout=600   //链接超时时间

data_connection_timeout=120 //数据传输超时时间

ascii_upload_enable=YES
ascii_download_enable=YES   //是否开启ascii码的上传、下载

chroot_list_enable=YES         //是否锁定用户登陆后的目录,配置文件在/etc/vsftpd/chroot_list,表内定义了锁定的用户列表

chroot_list_file=/etc/vsftpd/chroot_list  //用户登陆之后把用户锁在那个目录下的定义

listen=YES                               //设置ftp服务是否为独立进程

pam_service_name=vsftpd       //pam认证服务名称
userlist_enable=YES               // 用户列表限定

用法(定义黑白名单)

定义黑名单:userlist_enable=YES userlist_deny=YES

定义白名单:userlist_enable=YESuserlist_deny=NO
max_clients =                           // 单个IP最多发起几个请求的max_per_ip =                          //最多容许几个IP连接FTP服务器

另外的两个vsftpd的配置文件:

/etc/vsftpd/ftpusers------------内规定的用户都禁止登录ftp服务

/etc/vsftpd/user_list-----------规定了不能登录ftp服务器的用户

五、设置环境,关闭防火墙:iptables -L -n ,关闭seinux:setenforce 0

 

六、咱们已经确保了selinux是关闭的,就能够进行测试了

setenforce 0  关闭

vim /etc/selinux/config  永久关闭 

建立用户hadoop,密码也设为hadoop,进行测试是否能上传成功

咱们在尝试一下匿名能不能成功

从实验来看匿名登陆是不成功的

因此咱们要编译一下vsftpd.conf,打开匿名登陆权限:anon_uoload_enable=YES

编译完以后要重启一下服务器

七、匿名登录以后咱们还要,打开建立目录选项,禁锢家目录

anon_upload_enable=YES //是否开启虚拟用户上传文件的权限

anon_mkdir_write_enable=YES //是否开启虚拟用户新建文件件的权限

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list--这两个配置能够直接被下面一句话所替代:chroot_local_user=YES,这样就能够限制全部的用户登陆之后只能停留在本身的家目录里了

8、因为FTP服务的传输都是明文的,在网络上很是不安全,咱们能够利用openssh来对ftp服务的传输进行加密,既是sftp服务。

、创建CA、自签证书、

先生成CACA的自签证书

cd /etc/pki/CA

mkdir certs newcerts crl

touch index.txt

echo 01 > serial

建立CA的私钥

umask 007;openssl genrsa out priviate/cakey.pem 2048);

生成自签证书

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

、为vsftp服务进行CA认证

mkdir /etc/vsftpd/ssl

cd /etc/vsftpd/ssl

生成私钥和认证的公钥

(umask 077;openssl genrsa -out vsftpd.key 2048);

openssl req -new -key vsftpd.key -out vsftpd.csr

修改CA目录,修改的话必须在特定的目录下才能签署证书

vim /etc/pki/tls/openssl.cnf

签署证书

openssl ca -in vsftpd.csr -out vsftpd.crt

、而后配置使用加密的认证方式

vim /etc/vsftpd/vsftpd.conf

ssl_enable=YES        //开启ssl功能

ssl_tlsv1=YES          //开启支持tlsv1

ssl_sslv2=YES

ssl_sslv3=YES

allow_anon_ssl=NO    //是否开启匿名用户利用ssl

force_local_data_ssl=YES      //开启系统用户数据传输利用ssl

force_local_logins_ssl=YES   //开启系统用户登陆利用ssl

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.crt   //指定证书位置

rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key //指定私钥位置

重启服务、验证

用软件进行链接测试

 

咱们的ftp服务器就建成功了。

9vsftpd+pam+mysql,实现虚拟用户

环境必须安装相应的开发环境和开发库:Development LibrariesDevelopment Tools

下面用到的软件安装方式采用yum安装,能够自动解决软件的依赖关系,因为实验是在在虚拟机上,因此采用DVD盘做为yum池,配置为下

mount /dev/cdrom /media

/etc/yum.repos.d/server.repo配置以下

# repos on instructor for cla***oom use

# Main rhel5 server
[base]
name=Instructor Server Repository
baseurl=file:///media/Server
gpgcheck=0

# This one is needed for xen packages
[VT]
name=Instructor VT Repository
baseurl=file:///media/VT
gpgcheck=0

# This one is needed for clustering packages
[Cluster]
name=Instructor Cluster Repository
baseurl=file:///media/Cluster
gpgcheck=0

# This one is needed for cluster storage (GFS, iSCSI target, etc...) packages
[ClusterStorage]
name=Instructor ClusterStorage Repository
baseurl=file:///media/ClusterStorage
gpgcheck=0

、安装数据库和开发环境

检查开发库和开发工具是否安装

yum -y install mysql-server mysql-devel  //安装数据库服务器软件和develdevel包是为了后面编译pam的时候必须的软件包。不安装的话就没法实现其功能了。

启动mysql服务器,而后测试,保证mysql服务器运行正常,service mysqld startmysql链接进入查看,以下图

、手动编译、安装mysql基于pam的认证的驱动文件pam_mysql-0.7RC1.tar.gz

tar xf pam_mysql-0.7RC1.tar.gz

cd pam_mysql-0.7RC1

./configure --with-mysql=/usr  //with-mysql=指定mysql库所在的位置

make

make install

、进入数据库准备所需的数据库和表等

mysql    //进入数据库

mysql> create database vsftpd;
mysql>  use vsftpd;
mysql> create table users(
    -> id int AUTO_INCREMENT NOT NULL,
    -> name char(20) binary NOT NULL,
    -> password char(48) binary NOT NULL,
    -> primary key(id)
    -> );

、配置vsftpd

创建pam认证所需的文件

vi /etc/pam.d/vsftpd.mysql--这个文件默认是不存在的,须要新建

添加以下两行

auth required /lib/security/pam_mysql.so user=vsftpd passwd=work host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=work host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

 

创建虚拟用户映射的系统用户及对应的目录

#useradd -s /sbin/nologin -d /var/ftproot vuser  //新建虚拟用户
#chmod go+rx /var/ftproot   //为其余用户增长读和执行权限。

请确保/etc/vsftpd.conf中已经启用了如下选项

anonymous_enable=YES
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES

然后添加如下选项
guest_enable=YES      //是否容许来宾帐户访问
guest_username=vuser  //来宾帐户访问映射为那个用户

并确保pam_service_name选项的值以下所示
pam_service_name=vsftpd.mysql

而后配置完后重启服务器

service vsftpd restart

测试登陆

这样虚拟主机虚拟用户就实现成功了

相关文章
相关标签/搜索