ftpd服务常见配置总结

默认配置文件目录:/etc/vsftpd/vsftpd.conf

命令端口:

listen_port=21

注意:该信息默认没有,使用的话,需要用户自己添加。默认是21。

主动模式端口:

connect_from_port_20=YES 主动模式端口为20(该项配置文件默认已经添加)

ftp_data_port=20 指定主动模式的端口

注意:如果要修改主动模式的链接端口,只需要修改"ftp_data_port"的配置,不需要修改"connect_from_port_20=YES"的配置,有点儿诡异。另外"ftp_data_port"man帮助中并没有说明。

被动模式端口范围:

pasv_min_port=6000 (0为随机分配)

pasv_max_port=6010(这两项定义了可以同时执行下载链接的数量。)

注意:linux客户端默认使用被动模式,windows 客户端默认使用主动模式。

注意:在ftp客户端中执行"passive"来切换数据通道的模式。也可以使用"ftp -A ip"直接使用主动模式。

注意:"ss -nt"显示已建立的链接;

注意:主动模式、被动模式是有客户端来指定的。

注意:有的时候,重启服务的时候,需要杀死正在连接的进程,如果该进程不断,那么就不能重启服务。也就造成重启服务特别慢,尤其是在实际生产中,建议使用reload。

 

使用当地时间:

use_localtime=YES 使用当地时间(默认为NO,使用GMT,建议设置成YES。)

匿名用户:

anonymous_enable=YES:支持匿名用户(默认yes,支持匿名链接)

no_anon_password=YES:匿名用户略过口令检查(默认NO)

注意:匿名用户登录,默认情况下,只可以下载pub下的文件,不允许上传,需要使用上传权限,还需要开启下面的选项。

anon_world_readable_only:只能下载全部读的文件 (默认YES)

anon_upload_enable=YES:允许匿名上传文件;

注意:该项配置中就有,不过被注释掉了。

注意:仅仅开启"anon_upload_enable"项是不够的,因为ftp进程的执行者的身份是服务端中的"ftp"用户,所以,要保证该用户在文件系统中有指定的权限;此项"anon_upload_enable"关闭的话,上传文件的报错是"Permission denied.",打开"anon_upload_enable"后,上传文件,报错是"Could not create file.",这是因为ftp目录在pub目录上,没有"w"权限。建议使用acl。

注意:下载的时候,是使用nobody的身份的,所以要保证nobody用户有该文件的"r"权限。

anon_mkdir_write_enable=YES:允许匿名建立文件夹(默认也被注释了)

anon_other_write_enable=YES:可删除和修改上传的文件;

注意:匿名用户上传文件使用的是匿名ftp用户的身份,但是删除的时候,使用的是nobody用户的权限。所以在ftp客户端上,如果想要删除文件,还要打开该项配置,并且还要保证文件系统上nobody的权限。(注意:删除的权限是ftp的父进程nobody删除的!)

anon_umask=077:指定匿名上传umask(默认没有该行)

注意:如果想要让ftp用户可以上传文件、也可以下载该文件,可以添加"anon_umask=022"。

chown_uploads=YES:(默认NO)指定上传文件的默认的所有者和权限;

chown_username=wang:指定匿名用户上传文件的所属者是"wang"

chown_upload_mode=0644:指定匿名用户上传文件的权限。

注意:不允许ftp用户的"家目录"有写权限。禁止登录并报错"421 Service not available, remote server has closed connection"

注意:删除、下载操作是以nobody用户执行的。

 

 

Linux系统用户:

guest_enable=YES:开启用户身份映射;

guest_username=ftp:映射登录的用户的身份为guest用户,配合上面选项生效;

注意:开启映射功能之后,用户登录的时候。就是以该guest用户的身份运行的。只是在登录的时候,用到了系统用户的用户名和密码。

注意:将系统用户映射成为ftp用户的话,同样不允许ftp用户对他的家目录有"w"权限。

local_enable=YES:是否允许linux用户登录;

write_enable=YES:允许linux用户上传文件(默认已经有了该项);

local_umask=022:指定系统用户上传文件的默认权限;

local_root=/ftproot:非匿名用户登录的时候所在目录,默认是自己的家目录。

注意:此时是不禁锢用户的,用户可以随意切换目录配合"guest_enable、guest_username"两个选项,可以实现将所有非匿名用户禁锢在特定的明目下。

注意:设置的默认登录的目录,要保证该用户对该目录有"x"权限。如果有"w"权限,是禁止用户登录的。

注意:匿名用户上传数据,不仅需要文件系统上对该目录有"w"权限,还需要ftp服务开启允许匿名上传的功能。而系统用户,只要保证对该目录有"w"权限即可上传文件。

禁锢所有系统用户在家目录中:

chroot_local_user=YES:(默认NO,不禁锢)禁锢系统用户

注意:禁锢用户的目录,要保证该用户没有"w"权限。而没有写权限,就没有办法上传文件,所以,可以在禁锢的目录下,新创建一个目录,付给该用户"w"权限,就可以上传文件了。

注意:匿名用户本身就是禁锢的;

禁锢或不禁锢特定的系统用户在家目录中,与上面设置功能相反:

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

当chroot_local_user=YES时,则chroot_list中用户不禁锢

当chroot_local_user=NO时,则chroot_list中用户禁锢

wu-ftp日志:默认启用

xferlog_enable=YES:(默认)启用记录上传下载日志

xferlog_std_format=YES:(默认)使用wu-ftp日志格式

xferlog_file=/var/log/xferlog:(默认)文件可自动生成

vsftpd日志:默认不启用

dual_log_enable=YES:使用vsftpd日志格式,默认不启用

vsftpd_log_file=/var/log/vsftpd.log:(默认)文件可自动生成

登录提示信息:

ftpd_banner="welcome to mage ftp server"

banner_file=/etc/vsftpd/ftpbanner.txt:优先上面项生效

注意:"cat test.txt"时显示颜色的方法,就是"echo -e "33[31mwarning!!!33[0m" > test.txt"

注意:建议不要写"welcome",免得引起法律纠纷。

访问目录的提示信息:

dirmessage_enable=YES:(默认)

message_file=.message:(默认)信息存放在指定目录下.message

使用pam(Pluggable Authentication Modules)完成用户认证

pam_service_name=vsftpd:该配置默认就有

/etc/vsftpd/ftpusers:默认文件中用户拒绝登录

pam配置文件:/etc/pam.d/vsftpd

是否启用控制用户登录的列表文件:

userlist_enable=YES:默认有此设置

userlist_deny=YES:(默认值)黑名单,不提示口令,NO为白名单

userlist_file=/etc/vsftpd/users_list:此为默认值

连接限制:

max_clients=0:最大并发连接数

max_per_ip=0:每个IP同时发起的最大连接数

vsftpd服务指定用户身份运行:

nopriv_user=nobody

传输速率:字节/秒

anon_max_rate=0:匿名用户的最大传输速率

local_max_rate=0:本地用户的最大传输速率

注意:建议设置一下限速。

注意:可以使用wget --ftp-user=wang --ftp-password=centos ftp://ip/f1测试

连接时间:秒为单位

connect_timeout=60:主动模式数据连接超时时长

accept_timeout=60:被动模式数据连接超时时长

data_connection_timeout=300:数据连接无数据输超时时长

idle_session_timeout=60:无命令操作超时时长

优先以文本方式传输:(不建议使用)

ascii_upload_enable=YES

ascii_download_enable=YES

注意:ftp中下载有两种方式,binary模式(二进制模式、默认),ascII模式(asc码模式)。

注意:不同的操作系统的编码机制是不同的,所以,在windows中编写的脚本,拿到linux中运行是执行失败的。可以使用"cat -A 文件名"查看。如果使用ascII模式上传/下载,就会自动做一下转换。

centos6中配置FTP服务以非独立服务方运行:

首先修改配置文件/etc/vsftpd/vsftpd.conf,添加一条

listen=NO

默认是"yes",以独立服务运行;

然后安装xined服务(yum install telnet-server),并创建一个vsftpd的配置文件:

#cat /etc/xinetd.d/vsftpd

service ftp

{

flags = REUSE

socket_type = stream

wait = no

user = root

server = /usr/sbin/vsftpd

log_on_failure += USERID

disable = no

}

实现基于SSL的FTPS:

ftp服务,默认是不加密的,基于安全考虑,可以使用类似于https的方式tls(http),使用ftps=tls(ftp)。

查看是否支持SSL:

ldd `which vsftpd`:查看到libssl.so

创建自签名证书:

cd /etc/pki/tls/certs/

make vsftpd.pem

注意:生成的私钥文件和证书文件混在一起。

openssl x509 -in vsftpd.pem -noout –text

建议将vsftpd.pem证书文件,拷到执行目录下"/etc/vsftpd/"目录下。

配置vsftpd服务支持SSL:/etc/vsftpd/vsftpd.conf

ssl_enable=YES:启用SSL

allow_anon_ssl=NO:匿名不支持SSL

force_local_logins_ssl=YES:本地用户登录加密

force_local_data_ssl=YES:本地用户数据传输加密

在配置文件中添加这一行:

rsa_cert_file=/etc/vsftpd/vsftpd.pem

用filezilla等工具测试(注意:客户端的ftp工具是无法使用加密的。)。

vsftpd虚拟用户:

虚拟用户:

所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号的家目录;

各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定;

虚拟用户帐号的存储方式:

文件:编辑文本文件,此文件需要被编码为hash格式,文件的格式为奇数行为虚拟用户的用户名,偶数行为密码。

运行命令:db_load -T -t hash -f vusers.txt vusers.db

注意:"*.db"格式的数据库是伯克利大学开发的数据库格式。我们需要创建一个文本文件,里面记录着用户名和密码,然后使用"db_load -T -t hash -f vusers.txt vusers.db"命令,将文本文件生成为数据库文件。

注意:建议将文件权限设置成600;

注意:如果是要添加虚拟用户的话,只能更改文本文件中的记录,然后再创建成vusers.db文件。使用该方法不是很便利,所以建议使用mysl数据库的方式存储虚拟用户的用户名。

关系型数据库中的表中:

实时查询数据库完成用户认证;

mysql库:pam要依赖于pam-mysql

/lib64/security/pam_mysql.so

/usr/share/doc/pam_mysql-0.7/README

注意:虚拟用户默认是会禁锢的,所以,映射的用户所登录得目录是不可以有写权限的。
————————————————
版权声明:本文为CSDN博主「sigmoidhan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/han156/article/details/78386406

原文地址:https://www.cnblogs.com/tudachui/p/14890323.html