linux学习笔记6-FTP服务器

 

FTP服务器

FTP服务工作原理

FTP=File Transfer Protocal(RFC959)

门用来上传(Upload)或者下载(Download)文件的协议,保用两个通信通道。

Client <--------message ----->server 21 Port

Client <--------data------------>server 20 Port

FTP客户端工具的使用

FTP服务器的访问

Dos

c:/ftp ftp.chinaitlab.com

windows:

filezilla,IR,mozilla

Linux:

$ftp ftp.chinaitlab.com

gfip(text/X11)



dos :

ftp 202.67.216.119

dir列目录get下载 put 上传 help查看帮助bye 退出

linux也是一样的

配置vsftpd服务器

FTP服务器软件

Wu-ftpd http://www.wu-ftpd.org

Unix系统早期流行的匿名自由ftp服务器软件

Proftpd http://www.proftpd.org

使用类似apache配置文件的格式,在一个独立的配置文件中配置虚拟域以及配置目录的访问权限,也可以使用ftpaccess分别控制各个子目录

Vsftpd http://vsftpd.beasts.org

目前最安全,最高效的ftp服务器

vsftpd

1.下载源代码ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.7.tar.gz

2.编译源代码,可参考帮助文件INSTALL

tar xvzf vsftpd-2.0.7.tar.gz

cd vsftpd-2.0.7

make

make install

3.安装配置文件

cp vsftpd.conf /etc/; cp RedHat/vsftpd.pam /etc/pam.d/ftp

4.编辑配置文件/etc/vsftpd.conf

5.启动服务器 /usr/local/sbin/vsftpd &



wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.7.tar.gz

tar vxzf vsftpd-2.0.7.tar.gz

cd vsftpd-2.0.7

make

make install

which vsftpd查看安装在什么地方

/usr/local/sbin/vsftpd

cp vsftpd.conf /etc

cp RedHat/vsftpd.pam /etc/pam.d/ftp

vi /etc/vsftpd.conf

listen=YES

/usr/local/sbin/vsftpd &

netstat -tnl 查看端口是否有21号端口

ftp localhost 看看anonymous

finger ftp确认ftp用户是否存在

mkdir /var/ftp

chown root.root /var/ftp

chmod og-w /var/ftp

ftp localhost 现在anonymous可登陆了

了让ftp开机运行可以将运行脚本写在

vi /etc/rc.local

/usr/local/sbin/vsftpd &

默认的运行级别里

ls /etc/rc3.d

ls /etc/rc5.d

more /etc/init.d/sshd

more /etc/rc.local

ftp安装好后有两处启动脚本

ls /usr/local/sbin/vsftpd

ls /etc/xinetd.d/vsftpd

们希望ftp独立运行

chkconfig vsftpd –list

vsftpd off我们确认它是关闭的,如果没有关闭用chkconfig vsftpd off

netstat -tnl确认重来没有启动过

ftp进入本身看到的是 ls /var/ftp我们可以用finger ftp来查看ftp账号

使用的匿名账号是ftp或者是anonymous

Vsftpd的配置文件

anonymous_enable=YES #允许匿名登陆

local_enable=YES #允许本地用户登陆

write_enable=YES #客户端写命令

local_umask=022 #本地用户新文件的umask

anon_upload_enable=YES #允许匿名用户上传文件

anon_mkdir_write_enable=YES #允许匿名用户创建目录

dirmessage_enable=YES #允许使用目录消息

ftpd_banner=Welcome to chinaitlab #允许欢迎词

ls_recurse_enable=YES #允许客户端使用ls -R 命令

listen=YES #监听模式

设置让匿名用户可登陆并上传文件

anonymous_enable=YES

local_enable=YES

write_enable=YES

local_umask=022

anon_upload_enable=YES

dirmessage_enable=YES

ftpd_banner=Welcome to chinaitlab.

在我们的ftp服务器是独立运行的需要用killall -9 vsftpd来杀ftp进程

killall -9 vsftpd这种方式是让服务器强制终止

killall -1 vsftpd我们也可以发送信号-1

id redhat查看本地用户是否可以登陆

ftp 192.168.0.101redhat登陆

put /etc/services services上传客户端文件到服务器

权限码可读r 4 可写w 2 可执行 x 1

put /etc/hosts hosts 我们用匿名用户登陆并上传文件,但服务器553 Could not create file.

面我们己打开anon_upload_enable=YES

个原因是匿名用户对/var/ftp没有写权限

ls -ld /var/ftp

drwxr-xr-x 2 root root 4096 2008-11-07 18:02 /var/ftp

chmod g+w /var/ftp允许组来写

chgrp ftp /var/ftp把组属性给ftp因为ftp账号属于ftpid ftp

uid=14(ftp) gid=50(ftp) groups=50(ftp)

在我们用ftp来登陆,还是失败

vsftpd: refusing to run with writable anonymous root Login failed.

Vsftp为了安全性,不让我们在匿名用户的根目录上设置可写权限

我们把/var/ftp权限改回去

chgrp root /var/ftp

chmod g-w /var/ftp

ls -ld /var/ftp

mkdir in然后我们在/var/ftp下建一个目录用来用于匿名用户上传,并把可读写权限给ftp

chgrp ftp in

chmod g+w in

ls -l

ftp 192.168.0.101ftp登陆

cd in进入可上传目录

put /etc/hosts hosts

ls检查

是我们用匿名账号上传,别人也可以看到为了让别的用户不能看到

chmod g-r in/ 这是让组没有可读权限这样客户机就只能上传不能看,并且用户访问的只能是/var/ftp目录及子目录,不能访问其它目录,这体现了vsftp的安全性

ls -ld in

Chroot环境

/etc/vsftpd.conf

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

/etc/vsftpd.chroot_list

redhat

chinaitlab



vi /etc/vsftpd.conf

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

vi /etc/vsftpd.chroot_list

tail /etc/vsftpd.chroot_list

redhat

chinaitlab

killall -HUP vsftpd然后重启vsftp

man vsftpd.conf可以查看帮助

户控制

/etc/ftpusers

tom

jack

...

认拒绝这里的用户登陆,但可以通过修改/etc/pam.d/ftp中的sence的值为allow,就表示只允许登陆的用户。

more /etc/pam.d/ftp 实际上它是通这个文件进行控制的,它里面有/lib/security/pam_listfile.so这个模块,它会检查登陆名是否列在file=/etc/ftpusers

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

echo "redhat">>/etc/ftpusersredhat用户加进这个文件

时我们用redhat来登陆ftp就不成功了

们可以用这个方法,把所有敏感的用户加进这个文件

redhat企业版里,一般都会帮我们自动建这个文件,所有vi /etc/passwd UID<500的人加进这个用户

然我们可以更改more /etc/pam.d/ftp sense=deny改成allow,这里只有里面的用户才能登陆

时我们redhat就可以登陆了

认的ftp账号以明文传输的,如果被人窃取就很危险,我们希望ftp支持虚拟账户



拟账号

1.建虚拟账号users.txt

tom

123

jack

123

#db_load -T -t hash -f users.txt /etc/vsftpd_login.db

#chmod 600 /etc/vsftpd_login.db

2.修改/etc/pam.d/ftp,增加

auth required pam_userdb.so db=/etc/vsftpd_login

account required pam_userdb.so db=/etc/vsftpd_login



tail users.txt

tom

123

jack

123

[root@server in]# id tom

[root@server in]# id jack确认系统没有这两个用户

[root@server in]# rpm -q db4-utils

package db4-utils is not installed

[root@server in]# yum install db4-utils

db_load -T -t hash -f users.txt /etc/vsftpd_login.db

chmod 600 /etc/vsftpd_login.db



tail /etc/pam.d/ftp

#auth required /lib/security/pam_listfile.so item=user sense=allow file=/etc/ftpusers onerr=succeed

#auth required /lib/security/pam_unix.so shadow nullok

#auth required /lib/security/pam_shells.so

#account required /lib/security/pam_unix.so

#session required /lib/security/pam_unix.so

auth required pam_userdb.so db=/etc/vsftpd_login

account required pam_userdb.so db=/etc/vsftpd_login

好的tom,jack两个虚拟用户总是要映射成某个用户,所以我们需要给他增加一个虑拟用户的账号目录以及他们的映射身份

拟账号

3.建虚拟账号目录

useradd vuser

4.编辑/etc/vsftpd.conf,禁止匿名用户

anonymous_enable=NO

local_enable=YES

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

guest_enable=YES

guest_username=vuser

killall -HUP vsftpd重启ftp

ftp 192.168.0.101用虚拟账号登陆jack ,tom

get .bashrc可以下载

是不能让我们看目录

cd /root

cp install.log /home/vuser

ls -ld /home/vuser

drwx------ 2 vuser vuser 4096 2008-11-07 20:37 /home/vuser

我们看不到,是因为没有vuser权限

了让其它人看到这个目录时在内容chmod o+r /home/vuser

时我们再次用虚拟账号来登陆,就可以看到目录列表了

man vsftpd.conf

其它常用ftp服务器介绍

Proftpd

proftpd – http://www.proftpd.org/

tar xvjf proftpd-XXX.tar.bz2

cd proftpd-XXX

./configure

make

make install

/usr/local/sbin/proftpd

配置文件 /usr/local/etc/proftpd.conf



wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.1.tar.bz2

tar xvjf proftpd-1.3.1.tar.bz2

cd proftpd-1.3.1

./configure 这是一般的服务器从源代码编译的过程,./configure进行配置,这个脚本会自动检查脚本中默认的环境。

make

make install

killall -9 vsftpd

netstat -tnl |grep 21

/usr/local/sbin/proftpd

netstat -tnlp |grep 21

ls /usr/lcoal/etc/proftpd.conf


wu-ftpd

wu-ftpd – http://www.wu-ftpd.org/

议不要使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值