- 浏览: 118995 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
huangjnjavaIt:
请问一下,setDataFormat2JAVA(); 是一个什 ...
java中使用net.sf.json对json进行解析 -
yaolifei:
System.out.println(myFtp.uploa ...
org.apache.commons.net.ftp.FTPClient 例子 -
avajworm:
比较详细, 谢谢~~
org.apache.commons.net.ftp.FTPClient 例子
2. 基于IP的虚拟ftp站点
这一小节我们来讨论在同一服务器上建立多个ftp站点,每个站点相互独立,拥有独立的配置文件。当然服务器必须有两个以上的IP地址。在standalone模式下,我们可以考虑启动多个ftp服务进程;在xinetd模式下,可以让守护进程来管理。下面我们分别讨论这两种情况。为简单起见,我们在服务器上建立两个匿名虚拟站点。下面是这两个站点的信息:
站点1 站点2
ip地址 192.168.0.105
192.168.0.106
主配置文件 /etc/vsftpd/vsftpd.conf
/etc/vsftpd/vsftpd2.conf
匿名用户映射的本地用户名
默认为ftp 新建立ftp2
匿名用户主目录 /var/ftp/
/var/ftp2/
standalone模式下虚拟站点的建立
首先我们修改站点1的配置文件/etc/vsftpd/vsftpd.conf为下面所示:
listen=yes
listen_address=192.168.0.105
anonymous_enable=yes
local_enable=yes
pam_service_name=vsftpd
write_enable=yes
ftpd_banner=This is ftp1 site
站点1就这样配置完毕了。接下来为站点2建立ftp2的用户:
# mkdir /var/ftp2/
# useradd -d /var/ftp2/ ftp2
为了让站点2知道匿名用户的主目录为/var/ftp2,我们需要在配置文件中手动指定站点2使用ftp2用户登录,于是我们要用到下面这条语句:
ftp_username=local_username
建立站点2的配置文件/etc/vsftpd/vsftpd2.conf,内容如下:
listen=yes
listen_address=192.168.0.106
anonymous_enable=yes
local_enable=yes
pam_service_name=vsftpd
write_enable=yes
ftp_username=ftp2
ftpd_banner=This is ftp2 site
接下来我们启动vsftpd服务,就可以看到效果了。需要注意的是这里就不能用service vsftpd start命令来启动服务了,必须用第三节前面介绍的方式启动。
# /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &
[1] 2287
# /usr/local/sbin/vsftpd /etc/vsftpd/vsftpd2.conf &
[1] 2288
# ftp 192.168.0.105
Connected to 192.168.0.105.
220 This is ftp1 site
530 Please login with USER and PASS.
……
# ftp 192.168.0.106
Connected to 192.168.0.106.
220 This is ftp2 site
……
我们在各自的配置文件设置了不同的banner,上面已经看到效果了。
守护进程模式下虚拟站点的建立
在standalone模式下,IP的绑定在配置文件里配置了,配置文件名及其位置在启动服务的命令参数里指定;在xinetd模式下,这两步需要在守护进程配置文件里配置。这样在守护进程里面我们就得用到这两个设置:
bind=绑定的ip
server_args=每个站点的配置文件
那么我们来做守护进程文件,首先来写站点1的守护进程文件:
# vi /etc/xinetd.d/vsftpd
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
nice = 10
bind = 192.168.0.105
}
再建立站点2的守护进程文件,并输入下面的内容
# vi /etc/xinetd.d/vsftpd2
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd2.conf
nice = 10
bind = 192.168.0.106
}
这样两个守护进程文件就写完了,用户也在上个试验已经建立完了。接下来继续修改两个站点的配置文件,均是把listen、listen_address两行删去即可。现在我们可以重新启动xinetd服务,测试结果就不贴出来了。
3. 关于TCP Wrappers
TCP Wrappers的作用,就是通过分析TCP网络数据包,根据其包头的IP地址和端口号,决定是否让这个数据进入到主机之中,因此我们也可以把它当成一个最内层的防火墙。数据包要进入ftp服务器,首先经过netfilter的过滤,通过TCP Wrappers筛选,守护进程
(xinetd模式)限制,最后才能交由vsftpd进程来处理。
我们可以设置TCP Wrappers来限制某些主机能或者不能访问ftp服务器,这需要编辑两个文件:
/etc/hosts.allow
/etc/hosts.deny
当数据包通过TCP Wrappers筛选时,/etc/hosts.allow文件会首先读取,然后再读取/etc/hosts.deny文件,就是说/etc/hosts.allow优先级要高一些。这两个文件设置规则如下:
<service_name>:<IP, domain,hostname,network>:<allow|deny>
<service_name>字段是服务名,也就是/etc/rc.d/init.d/目录下存在的文件名;第二个字段是可以是IP、域名、一台主机或者一个网段;第三个字段表示允许通过或者禁止。具体看下面的例子:
vsftpd:192.168.0.111:allow //允许主机192.168.0.111访问vsftpd服务器
httpd:10.100.1.0/255.255.255.0:deny //禁止10.100.1.0/24这个子网访问www服务
最后一个字段的:allow或:deny可以省略,写在/etc/hosts.allow文件里默认就是allow, /etc/hosts.deny文件里默认是deny。其实我们可以把所有语句都写在hosts.allow文件中,但建议大家把allow和deny的语句分别写到两个文件之中。
TCP Wrappers默认规则是允许所有数据包通过,所以大家在填写允许条目之后,一定还要加一条deny语句来拒绝其它的包。比如:
# vi /etc/hosts.allow
vsftpd:192.168.1.0/255.255.255.0 //允许192.168.1.0/24网段可以访问ftp
# vi /etc/hosts.deny
vsftpd:ALL //拒绝其它所有主机访问ftp
如果vsftpd工作在守护进程模式下,不但可以受到TCP Wrappers的筛选,还可以设置守护进程配置文件来进行同样的过滤,这使用下面两条语句:
only_from = <IP, host, domain, network> //限制可以访问的IP、主机、网络
no_access = <IP, host, domain, network> //限制不能访问的IP、主机、网络
下面我们将only_from语句加入/etc/xinetd.d/vsftpd文件中,实现只有子网192.168.0.128/25才可以登录ftp服务器:
service ftp
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd
server_args = /etc/vsftpd/vsftpd.conf
nice = 10
only_from = 192.168.0.128/25
}
如果vsftpd工作在standalone模式下,必须在编译vsftpd之前修改头文件builddefs.h以支持TCP Wrappers,详情请参加软件安装小节。另外还需要在vsftpd主配置文件中加入tcp_wrappers=yes参数。
4. 结合MySql数据库
将vsftpd与MySql相结合,我们可以把用户和日志信息放到数据库里面去,如果再结合php来管理数据库,则可以使vsftpd管理更加方便。下面我们就来讨论一下基于MySql的虚拟户和日志功能。
使用MySql来实现虚拟用户
前面我们介绍了两类用户,关于匿名用户的语句比较多,权限限制比较灵活;而本地用户的特点是每个用户对应一个密码和主文件夹,登录控制比较灵活。可不可以将两者的优点结合一下呢?答案是肯定的,这就是虚拟用户。关于虚拟用户的启用,需要使用以
下两条语句:
guest_enable=yes/no
guest_username=user_name
上述guest_enable表示是否开启虚拟用户功能,guest_username表示虚拟用户登录后映射的本地用户名。如果开启虚拟用户功能,本地用户登录后将映射到guest_username参数指定的用户,主目录也变成该用户的主目录。
我们修改vsftpd主配置文件,变为下面的样子:
listen=yes
anonymous_enable=yes
local_enable=yes
pam_service_name=vsftpd
write_enable=yes
dirlist_enable=yes
download_enable=yes
anon_upload_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=no
anon_umask=073
guest_enable=yes
guest_username=virftp
再新建一个用户virftp改变一下其主目录的权限:
# useradd -d /var/virftp -s /sbin/nologin virftp
# chmod 704 /var/virftp
这时再以/etc/passwd中的用户登录ftp,通过查看内容,会发现主目录已经切换到/var/virftp/,可以下载和上传文件,但不能改名和删除。这就是说,限制匿名用户的参数也同样适用于本地用户。
如果想让虚拟用户像本地用户那样拥有每个用户独立的主目录、独立的配置文件和权限,又该怎么办呢?还记得user_config_dir参数吧!在每个用户独立的配置文件里设定不同的权限和local_root参数就可以了。
再来看看这个参数:
virtual_use_local_privs=yes/no
从刚才的实验可以看到,虚拟用户登录后,受到匿名用户参数的限制。我们可以通将此参数的值改为yes,则虚拟用户会变得和本地用户一样,拥有和本地用户一样的特权。由于我们平常都是看中了匿名用户限制参数比较细致这个特点才启用虚拟用户的,所以此
参数默认值为no!
下面我们结合MySql,把用户登录信息放到数据库里面去。首先我们需要安装MySql。
到http://dev.mysql.com/downloads/mysql/5.1.html下载MySql,为了简单起见,我们下载在linux下已经编译好的版本。我下载的版本是mysql-5.1.18-beta-linux-i686-glibc23.tar.gz,然后照下面的步骤来安装MySql。
# groupadd mysql
# useradd -g mysql mysql
如果系统中已经有了mysql用户,就可以省掉这步操作。
# cd /usr/local
# tar zxvf mysql-5.1.18-beta-linux-i686-glibc23.tar.gz
# ln -s mysql-5.1.18-beta-linux-i686-glibc23 mysql
如果原来系统中已经安装旧版mysql,最好将它卸载,除非你有足够的把握很好地面对系统中的两个mysql;通常习惯将mysql安装在/usr/local/mysql中,但为了将来版本升级的需要,建议使用链接方式使用mysql。
# cd mysql
# chown -R mysql:mysql .
# scripts/mysql_install_db --user=mysql
初始化mysql数据库,这步之前必须保证mysql用户有权限访问mysql目录。
# chown -R root .
# chown -R mysql data
最好做这两步,至少官方文档是这么建议的。
MySql的命令和man文档并不在PATH和MANPATH中,所以我们要手动加入。打开vi /etc/profile文件,找到export PATH ...那一行,大约在40行左右,在它的前面加上一行:
PATH=”$PATH”:/usr/local/mysql/bin
打开/etc/man.config(有的版本为/etc/man.conf),在它的任何地方加入一行:
MANPATH /usr/local/mysql/man
到这时mysql就已经安装好了,通过这个命令启动mysql:
/usr/local/mysql/bin/mysqld_safe --user=mysql &
为了让mysql支持开机启动,执行下面的命令:
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chkconfig –add mysqld
这样就可以让mysql以服务的方式开机启动,且还可以使用如下命令管理mysql服务:
# service mysqld {start|stop|restart|reload|force-reload|status}
启动mysql服务,检测下是否正常运行:
# netstat -l|grep mysql
tcp 0 0 *:mysql *:* LISTEN
unix 2 [ ACC ] STREAM LISTENING 25534 /tmp/mysql.sock
看到了吧,mysql已经在监听了,但它的socket file在/tmp/下,郁闷!
默认情况下,mysql没有密码,任何人都可以登入。为了加强安全性,我们给mysql加上root帐号密码:
# mysqladmin -u root password 'your_P@ssw0rd'
这样以后登录就需要密码了:
# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.1.18-beta MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
建立数据库ftpdb:
mysql> create database ftpdb;
在数据库ftpdb中建立一个表ftpuser,表中有username和password字段:
mysql> use ftpdb;
Database changed
mysql> create table ftpuser(username char(20) not null, password char(64) not null);
Query OK, 0 rows affected (0.15 sec)
这里要注意密码字段的长度,不同的算法生成的密文长度是不一样的,建议不要少于50位,否则可能导致密文在存储时被截短。
我们插入两条记录作为两个ftp的登录名和密码,使用mysql自带的password函数来加密密码:
mysql> insert into ftpuser values('test1',password('abc'));
Query OK, 1 row affected, 1 warning (0.08 sec)
mysql> insert into ftpuser values('test2',password('123'));
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> select * from ftpuser;
+----------+-------------------------------------------+
| username | password |
+----------+-------------------------------------------+
| test1 | *0D3CED9BEC10A777AEC23CCC353A8C08A633045E |
| test2 | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 |
+----------+-------------------------------------------+
2 rows in set (0.00 sec)
然后我们再建立一个可以让ftp服务登陆数据库的用户:
mysql> grant select on ftpdb.ftpuser to ftpdb_query@localhost identified by 'P@ssw0rd';
这个用户只能浏览 ftpdb 数据库下的 ftpuser 表中内容,我们如果想以后分配一个可以完全管理 ftpdb 数据库的用户,再这样:
mysql> grant all on ftpdb.* to ftpdb_all@localhost identified by 'P@ssw0rd';
到这里MySql的设置就算完了,接下来安装 PAM 基于 mysql 数据库的认证插件,我们可以到http: //sourceforge.net/projects/pam-mysql/下载得到。我下载的文件是pam_mysql- 0.7RC1.tar.gz。
# tar zxvf pam_mysql-0.7RC1.tar.gz
# cd pam_mysql-0.7RC1
# ./configure –with-mysql=/usr/local/mysql
# make
# make install
这里要注意两点,一是我们的mysql是手动安装在/usr/local/mysql下的,因此./configure命令需要指定mysql安装目录;二是安装好之后,pam_mysql.so被安装到了/usr/lib/security. 如果make过程出现错误,不要理会,只要产生 pam_mysql.so文件即可,
我们可以直接将此文件考入/lib/security/目录。
然后来编写PAM认证文件:
# vi /etc/pam.d/ftpdb
auth required /usr/lib/security/pam_mysql.so user=ftpdb_query passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2
account required /usr/lib/security/pam_mysql.so user=ftpdb_query passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2
注意,整个这个文件中只有auth和account两行内容,中途不要加回车换行;文件中不要再有包含其它pam模块的行;如果pam_mysql.so文件没有在/lib/security目录,就需要指定文件路径。文件中其它字段的意思是:
user 访问数据库用户名
passwd 访问数据库用户密码
host 数据库主机
db 数据库名
table 表名
usercolumn 用户列名
passwdcolumn 密码列名
crypt 密码验证机制;0 代表明文,1 代表DES 加密,2 代表Mysql的password()函数加密,3代表md5算法,4代表sha加密。
现在我们修改vsftpd主配置文件/etc/vsftpd/vsftpd.conf,把pam_service_name的值改为ftpdb,也就是我们刚才建立的那个PAM认证文件的名字。再登录服务器测试,可以发现/etc/passwd中的用户已经无法登录到服务器了,而数据库中存储的用户名是可以登
录的。我们还可以按前面所述的方法为每个虚拟用户建立独立的配置文件,指定独立的主目录;还可以结合apache服务建立php页面,然后实现让用户在web界面注册帐号、修改密码,这要比原来的认证方式灵活得多。
在MySql中记录日志
接下来我们看一下如何利用刚才的PAM 模块来结合mysql 数据库记录vsftpd 服务的日志。在介绍之前,我们来看看vsftp中关于日志记录的参数。
xferlog_enable=yes/no //是否启用 xferlog 日志格式
xferlog_std_format=yes/no //是否采用标准格式记录日志
xferlog_file=/path/to/logfile //xferlog 日志文件所在位置,默认为/var/log/xferlog
上面的参数设置记录xferlog日志的格式。这是早期Wu-ftpd服务的日志格式,它会记录上传和下载的动作。vsftpd也有专有的日志格式,用下列参数设置:
dual_log_enable=yes/no //是否采用Vsftpd自己的日志记录方式
log_ftp_protocol=yes/no //是否记录所有的ftp命令日志
vsftpd_log_file=/path/to/logfile //指定vsftpd 日志文件位置,默认为/var/log/vsftpd.log
xferlog_enable的默认值为no(vsftpd提供的配置文件模版将其值改为了yes),dual_log_enable的默认值也为 no,就是说默认情况下vsftpd是不记录日志的。我们也可以将日志信息写入系统日志/var/log/messages中,使用如下参数:
syslog_enable=yes/no
还是建议大家把日志记录为单独的文件,以便浏览和管理。实验比较简单,我们就不做了。
对于使用文件来记录日志的方式来说,我们必须登录到服务器之后,才能查看日志。这样做不方便,不灵活。我们可以把日志放到数据库中,结合www服务建立一个浏览日志的页面,这样就非常舒服的看到web方式的日志了。下面来看看如何将日志写入数据库中
去。
首先必须使用虚拟用户所在的同一个数据库,新建立存储日志的表:
mysql> create table ftplog
-> (log char(100),
-> user char(20),
-> host char(20),
-> time datetime,
-> pid int);
修改 PAM 配置文件,在原来的基础上我们改动一下:
# vi /etc/pam.d/ftpdb
auth required /usr/lib/security/pam_mysql.so user=ftpdb_all passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2 sqllog=yes logtable=ftplog logmsgcolumn=log logusercolumn=user
loghostcolumn=host logtimecolumn=time logpidcolumn=pid
account required /usr/lib/security/pam_mysql.so user=ftpdb_all passwd=P@ssw0rd host=localhost db=ftpdb table=ftpuser usercolumn=username passwdcolumn=password crypt=2 sqllog=yes logtable=ftplog logmsgcolumn=log logusercolumn=user
loghostcolumn=host logtimecolumn=time logpidcolumn=pid
注意在这个文件中依然就是原来的两行,其中加入的内容分别对应如下:
sqllog 表示是否将日志记录到数据库中
logtable 记录日志的表名
logmsgcolumn 记录日志信息的列
logusercolumn 登录用户
loghostcolumn 登录主机
logtimecolumn 登录时间
logpidcolumn 处理该用户连接的进程pid
这次我换了一个登陆数据库用户,使用先前建立的有完全权限的用户ftpdb_all,这个用户才有在数据库中使用insert命令的权限。
5. 结合OpenSSL 实现加密数据传输
FTP一个声名狼藉的问题是它以明文方式发送用户名和口令。任何人只要在网络中合适的位置进行抓包分析就可以看到用户名和口令;FTP发送的数据也是以明文方式传输,通过对ftp连接的监控和数据收集就可以重现ftp的数据传输。很多用户为了方便把相同的
用户名和口令用在不同的应用中,如果黑客收集到FTP口令,他们也可能就得到了你在线帐号或者其他一些机密数据的口令。
下面我们使用linux自带的抓包工具tcpdump抓包分析,来截取ftp登录用户口令:
# tcpdump -i eth0 -A
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
17:44:35.520880 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: S 3417937804:3417937804(0) win 65535 <mss 1460,nop,nop,sackOK>
E..0..@........e...i ...........p...............
17:44:45.681026 IP 192.168.0.105.ftp > 192.168.0.101.vytalvaultpipe: S 2518028758:2518028758(0) ack 3417937805 win 5840 <mss 1460,nop,nop,sackOK>
E..0..@[email].@......i...e[/email].. .........p...............
17:44:35.520954 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: . ack 1 win 65535
E..([email]..@........e...i[/email] ...........P....x........
建立TCP连接的三次握手,接下来登录之前信息,省约……
17:44:36.513224 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: P 32:44(12) ack 97 win 513 <nop,nop,timestamp 13091355 13088964>
E..4..@........e...i ...........P...v...USER test1
用户名:test1
17:44:39.942107 IP 192.168.0.105.ftp > 192.168.0.101.vytalvaultpipe: . ack 13 win 5840
E..(.|@[email].@..5...i...e[/email].. .........P.......
17:44:39.942277 IP 192.168.0.105.ftp > 192.168.0.101.vytalvaultpipe: P 21:55(34) ack 13 win 5840
E..J.}@[email].@......i...e[/email].. .........P....[..331 Please specify the password.
17:44:40.094629 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: . ack 55 win 65481
P....l.........e...i ..........
17:44:40.525157 IP 192.168.0.105.32832 > 192.168.0.1.domain: 31226+ PTR? 105.0.168.192.in-addr.arpa. (44)
E..H..@.@..;[email]...i.....@.5.4..y............105.0.168.192.in-addr.arpa[/email].....
17:44:41.714630 IP 192.168.0.101.vytalvaultpipe > 192.168.0.105.ftp: P 13:23(10) ack 55 win 65481
P.......PASS abc...i ..........
密码:abc
17:44:41.742271 IP 192.168.0.105.ftp > 192.168.0.101.vytalvaultpipe: P 55:78(23) ack 23 win 5840
....P....P..230 Login successful.
登录成功!
怎么样!弄到密码很简单吧!服务器配置的再优秀,数据是明文传输的,所以还是会让别有用心之人有机可乘。
SSL(Secure Socket Layer)工作于传输层和应用程序之间。作为一个中间层,应用程序只要采用SSL提供的一套SSL套接字API来替换标准的Socket套接字,就可以把程序转换为SSL化的安全网络程序,在传输过程中将由SSL协议实现数据机密性和完整性的保证。
SSL取得大规模成功后,IETF将SSL作了标准化,并将其称为TLS(Transport Layer Security)。Ftp结合SSL,将实现传输数据的加密,保证数据不被别人窃取。
要让vsftpd支持SSL,必须在安装之前修改头文件builddefs.h,将#undef VSF_BUILD_SSL行改为#define VSF_BUILD_SSL,在安装小节已经讲过。这里我们用OpenSSL结合vsftpd来实现数据加密传输。首先查看自己的系统有没有安装 OpenSSL,如果没有安装,到
http://www.openssl.org/source/下载安装,安装过程很简单,就不贴出来了。
下面我们为 vsftpd 生成证书:
# cd /etc/vsftpd/
# openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem
Generating a 1024 bit RSA private key
.........................++++++
.............++++++
writing new private key to 'vsftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:cn
State or Province Name (full name) [Berkshire]:ShiChuan
Locality Name (eg, city) [Newbury]:ChenDu
Organization Name (eg, company) [My Company Ltd]:linuxer
Organizational Unit Name (eg, section) []:linuxer
Common Name (eg, your name or your server's hostname) []:www.linuxer.cn
Email Address []:icecard@hotmail.com
填写这些信息后,就产生了/etc/vsftpd/vsftpd.pem证书文件,接下来我们在配置文件中加入下面两行:
ssl_enable=yes
rsa_cert_file=/etc/vsftpd/vsftpd.pem
现在我们登录服务器测试:
# ftp 127.0.0.1
Connected to 127.0.0.1.
220 (vsFTPd 2.0.5)
504 Unknown AUTH type.
504 Unknown AUTH type.
KERBEROS_V4 rejected as an authentication type
Name (127.0.0.1:root): test1
530 Non-anonymous sessions must use encryption.
Login failed.
已经不能登录了,可能是这个ftp客户端不支持ssl的原因吧!在windows下支持ssl的ftp客户端很多(IE是不支持的),比如 FlashFXP,使用比较简单,相信大家都会使用。我们这里介绍Linux下使用lftp来登录服务器。很多Linux发行版中都已经包含了lftp软
件包,如果你的Linux中没有lftp,到http://lftp.yar.ru/get.html下载原码包来安装。
# lftp 127.0.0.1
lftp 127.0.0.1:~> user test1
口令:
lftp test1@127.0.0.1:~> ls
-rw-r--r-- 1 0 0 5 May 17 21:35 virftp.file
drwxrwxrwx 2 500 500 4096 May 17 21:47 woo
同时我们打开tcpdump抓包测试:
# tcpdump -i lo -A
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 96 bytes
省约部分信息……
23:32:15.237079 IP localhost.localdomain.ftp > localhost.localdomain.46605: P 36:47(11) ack 7 win 512 <nop,nop,timestamp 11554103 11554101>
..yI...U.....3.........
..M7..M5 AUTH SSL
启用了SSL
23:32:15.272496 IP localhost.localdomain.46605 > localhost.localdomain.ftp: . ack 47 win 513 <nop,nop,timestamp 11554112 11554102>
.....U..yT....9......
..M@..M6
23:32:15.272570 IP localhost.localdomain.ftp > localhost.localdomain.46605: P 47:137(90) ack 7 win 512 <nop,nop,timestamp 11554112 11554112>
..yT...U...............
..M@..M@ AUTH TLS
EPRT
EPSV
MDTM
23:32:15.272605 IP localhost.localdomain.46605 > localhost.localdomain.ftp: . ack 137 win 513 <nop,nop,timestamp 11554112 11554112>
.....U..y.....9i.....
..M@..M@
23:32:15.273156 IP localhost.localdomain.46605 > localhost.localdomain.ftp: P 7:17(10) ack 137 win 513 <nop,nop,timestamp 11554112 11554112>
.....U..y......2.....
..M@..M@AUTH TLS
使用 TLS 认证方式,这是 Vsftpd 默认的安全认证方式。
我们看到使用tcpdump抓到的包已经使用 TLS 加密了,数据也是加密的,再也不怕第三方听了。
上面的例子只使用了两条配置语句,vsftp还提供了下面的语句来设置ssl:
ssl_enable=yes/no //是否启用 SSL,默认为no
allow_anon_ssl=yes/no //是否允许匿名用户使用SSL,默认为no
rsa_cert_file=/path/to/file //rsa证书的位置
dsa_cert_file=/path/to/file //dsa证书的位置
force_local_logins_ssl=yes/no //非匿名用户登陆时是否加密,默认为yes
force_local_data_ssl=yes/no //非匿名用户传输数据时是否加密,默认为yes
force_anon_logins_ssl=yes/no //匿名用户登录时是否加密,默认为no
force_anon_data_ssl=yes/no //匿名用户数据传输时是否加密,默认为no
ssl_sslv2=yes/no //是否激活sslv2加密,默认no
ssl_sslv3=yes/no //是否激活sslv3加密,默认no
ssl_tlsv1=yes/no //是否激活tls v1加密,默认yes
ssl_ciphers=加密方法 //默认是DES-CBC3-SHA
大家自行加入其它语句来满足自己的需要,如有疑问参考http://vsftpd.beasts.org/、man vsftpd.conf,多多阅读软件源码包中的README文件。
六、FTP展望
FTP是在70年代设计出来的,当时的互联网是一个封闭的网络,与现代网络环境还是有很大的差异,现代网络中不管你使用Port模式还是 Passive模式,都可能产生问题。很多人对FTP协议安全性进行不懈的努力,使用SSL/TLS进行ftp传输过程的验证和加密,基
本解决明文传数据的问题。但还是存在不少缺陷,于是出现了一些FTP替代应用,如SCP、SFTP;如果你使用ftp更新你的网页,还可以考虑WebDAV。
在FTP服务器软件中,vsftpd可以说是最安全的ftp软件,短小精悍,且高性能,是ftp服务器软件中的佼佼者。经过上面的学习,对于搭建安全高效的FTP服务器,再也不会困惑了。
发表评论
-
Netstat命令详解
2012-04-01 10:43 2009Netstat用于显示与IP、TCP ... -
Apache+Tomcat负载平衡设置实例详解
2011-03-15 16:30 988一、简介: 每个Tomca ... -
vsftpd配置详解(一)
2011-03-03 17:01 3362vsftpd配置详解 一、vsftpd 简介 Vs ... -
linux下svn的用法
2011-02-21 10:53 7851、将文件checkout到本地目录 svn ... -
Linux下的Memcache安装
2011-02-10 15:19 836Linux下的Memcache安装 最近在研究怎么让D ... -
ROUTE命令详解
2011-01-31 16:28 935Route 在 ... -
linux访问光驱
2011-01-30 17:51 757linux下的设备是被当作文件来访问的。 ... -
configure: error: Subversion requires SQLite,Linux安装Subversion的各类问题
2011-01-30 17:44 2505httpd下载地址:http://httpd.apache.o ... -
RedHat系统下SVN服务器的搭建过程详解
2011-01-30 17:42 1083RedHat系统下SVN服务器的搭建过程详解 ... -
configure命令详解
2011-01-30 15:40 919configure命令详解 –ca ... -
sed用法
2011-01-30 14:29 859sed 用法 1. ... -
Linux下安装配置Memcached
2011-01-27 16:10 1278Linux下安装配置Memcached ... -
CentOS卸载apache php mysql
2011-01-26 11:19 1215卸载步骤如下 ... -
Squid是什么?
2010-12-01 17:21 7691.Squid是什么? S ... -
10 个最酷的 Linux 单行命令
2010-10-29 11:34 787sudo !! 以 root 帐户执行上一条命 ... -
linux sed命令详解
2010-10-22 15:40 6551. Sed简介sed 是一种在线 ... -
Linux下端口被占用解决
2010-10-21 12:29 1038文章分类:Java编程 有时候关闭软件后,后台进程死掉, ... -
Vi命令详解
2010-10-21 11:08 796vi编辑器是所有Unix及Linux系统下标准 ... -
Linux下安装配置 Jdk1.6+Tomcat6+Apache2.2.x+jk_mod1.2 详解
2010-10-20 16:25 1119Linux下安装配置 Jdk1.6+Tomcat6+Apach ... -
linux 开放 端口 命令
2010-10-20 14:43 3229开发不连续端口(包括单个): iptables -A I ...
相关推荐
### vsftpd配置文件详解 #### 一、概述 VSFTPD (Very Secure FTP Daemon) 是一款免费开源的FTP服务程序,在Linux系统中广泛使用。它不仅提供了强大的安全性,还支持多种认证方式以及灵活的配置选项。对于Ubuntu...
vssftp配置文件详解,包含vsftpd所有配置文件路径和用途说明。
VSFTPD 配置详解 VSFTPD 是一种功能强大且安全的 FTP 服务器软件,它提供了许多配置选项来满足不同的需求。本文将详细介绍 VSFTPD 的配置文件和参数,帮助读者更好地理解和使用 VSFTPD。 一、安装和配置 VSFTPD ...
VSFTPD配置详解 VSFTPD是一个功能强大且安全的FTP服务器,它可以在Linux系统中安装和配置,本文将详细介绍VSFTPD的安装、配置和使用。 一、安装VSFTPD 在Ubuntu系统中,可以使用以下命令安装VSFTPD: $sudo apt-...
vsftpd 配置详解 vsftpd 是一个基于 GPL 发布的类 UNIX 系统的 FTP 服务器软件,其全称是 Very Secure FTP Deamon,在安全性、速度和稳定性方面都有着不俗的表现。在安全性方面,vsftpd 针对程式的权限来设计,以...
### vsftpd虚拟用户的配置详解 #### 一、虚拟用户概念 在介绍具体的配置步骤之前,我们先来了解一下什么是虚拟用户。虚拟用户是指在FTP服务器上使用的非真实系统账户,通常用于提高安全性以及方便管理和控制。 **...
标题与描述均聚焦于“CentOS vsftpd配置解析及实例”,这暗示着文章将深入探讨如何在CentOS操作系统上配置vsftpd(Very Secure FTP Daemon),以搭建一个功能全面的FTP服务器。以下是对该主题的详细分析: ### 1. ...
### vsftpd详细配置解读 #### 一、概述 VSFTPD (Very Secure FTP ...以上配置仅为VSFTPD配置文件的一部分,实际应用中还需根据具体需求调整其他选项。通过这些详细的配置,VSFTPD 能够为用户提供安全可靠的FTP服务。
以上是对vsftpd配置文件中关键设置的详细解析,通过对这些选项的理解和应用,可以达到对FTP服务器行为的精确控制,保证了服务器的安全运行。在实际使用中,还需要根据具体需求对这些设置进行相应的调整和配置。
下面介绍了vsftpd的配置文件列表,而所有的配置都是基于vsftpd.conf这个配置文件的。本文将提供完整的vsftpd.conf的中文说明。学习本文的内容将有助于你初步了解vsftpd的配置文件,但针对具体情况还需要制定具体的...
最详细的vsftpd配置文件,分享给大家。 注意: 使用匿名登入时,所登入的目录。默认值为/var/ftp。注意ftp目录不能是777的权限属性,即匿名用户的家目录不能有777的权限。 对于用户的访问控制可以通过/etc/vsftpd...
本文将详细解析其基本配置文件 `/etc/vsftpd/vsftpd.conf`,以帮助用户理解如何设置和管理FTP服务。 1. **匿名服务器连接配置**: - `Anonymous_enable=yes`: 允许匿名用户登录FTP服务器。 - `Dirmessage_enable=...
Linux vsftpd 配置详解 Vsftpd 是一个非常安全的 FTP 守护进程,可以在 Linux 操作系统中使用。本文将详细介绍如何配置 vsftpd,以便实现 root 用户和普通用户的 FTP 登录。 一、Root 用户的 FTP 配置 1. 打开 /...
vsftpd 服务器配置详解 一、FTP 工作原理 FTP 传输使用可靠的 TCP 协议,使用了两个连接,分别是命令通道和数据流通道。一般来说,FTP 服务占用两个端口:20 和 21 端口。其中 21 端口用来建立命令通道,20 端口...
五、vsftpd 配置文件详解 vsftpd 的配置文件为 /etc/vsftpd/vsftpd.conf,该文件中包含了多个配置选项,以下是常见的配置选项: * local_enable=YES:允许本地用户登录 ftp 服务 * anonymous_enable=NO:不允许...
### 配置vsftpd本地用户登录详解 在Linux系统中,vsftpd(Very Secure FTP Daemon)是一款非常流行的FTP服务器软件,它以其强大的安全性和稳定性而被广泛使用。本文将详细介绍如何配置vsftpd来支持本地用户的登录,...
### CentOS 7.2 下 VSFTPD 安装与虚拟用户访问配置详解 #### 一、概述 在 CentOS 7.2 系统中安装与配置 VSFTPD 服务,并实现虚拟用户登录功能,可以有效地增强 FTP 服务的安全性和灵活性。虚拟用户登录允许管理员...
### vsftpd网络配置详解 #### 一、项目背景与目标 随着企业的不断发展和技术进步,很多企业选择构建自己的FTP服务器来满足内部文件管理和外部资源分享的需求。本篇内容旨在介绍如何利用vsftpd(Very Secure FTP ...
接下来,我们需要配置vsftpd的主要配置文件`/etc/vsftpd/vsftpd.conf`。这个文件控制着vsftpd的各种行为。例如,你可以使用`nano`编辑器打开并修改配置: ```bash nano -w /etc/vsftpd/vsftpd.conf ``` 在配置文件中...