您的位置:首页 > 编程语言 > PHP开发

ftp 配置ubuntu8.04 的一些问题解决(网上收集)

2012-03-31 10:16 519 查看
在Redhat AS4里按照默认方式安装好vsftpd后,按照以下步骤配置:

gedit /etc/vsftpd/vsftpd.conf

在文件中限制匿名用户,做如下设置:

anonymous_enable=NO

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/vsftpd.user_list

这样只有在user_list 里面的用户才可以访问ftp。

但是在service vsftpd restart 后,

用ftp localhost 测试,输入正确的用户名和密码之后,

却一直显示

:530 Login incorrect

Login Failed

后来发现在etc下面有个pam.d文件夹

进去打开vsftpd这个文件, 发现里面对之前的用户进行了限制,

将里面对应的限制注释掉,问题解决。

问:为什么用telnet/ftp登录时特别慢,而登录进去后又正常呢?

答:这是因为telnetd/ftpd是用tcpd来启动的,而tcpd要进行安全性检查,而它使用反向名字解析。

你可以把客户机的IP地址/名字加到/etc/hosts中或加到DNS里。

另一种办法是取消tcpd(不推荐),修改/etc/inetd.conf

将原来的:

ftp  stream  tcp  nowait root  /usr/sbin/tcpd   in.ftpd -l -a

改为:

ftp  stream  tcp  nowait  root  /usr/sbin/in.ftpd  in.ftpd -l -a

原来的:

telnet stream  tcp  nowait  root  /usr/sbin/tcpd    in.telnetd

改为: telnet stream  tcp  nowait  root  /usr/sbin/in.telnetd in.telnetd

改完之后用killall -HUP inetd即可生效。

问:如何禁止某个用户的telnet功能,同时它有ftp功能?

答:假设你想把用户ftponly的telnet关掉,

1)写一个shell script /bin/ftponly:

#!/bin/sh

/bin/cat << XX

You can only use FTP on this computer,

but you may not use this account to login.

Connection will be closed in 10 seconds.

XX

/usr/bin/sleep 10

网管论坛bbs_bitsCN_com

#end of ftponly

这里的XX是个标志,当ftponly试图telnet的时候,屏幕上将显示两个XX之间的内容,

然后10秒以后切断connect。注:还应该用trap来屏蔽键盘中断吧!否则人家用Ctrl-Z......

2)把用户ftponly的shell设置成/bin/ftponly:到passwd文件,找到对应于ftponly的那行:

ftponly:......:/home/ftponly:/bin/bash

把最后的/bin/bash改为/bin/ftponly.

3)把 /bin/ftponly 加入到 /etc/shells

/bin/bash

/bin/tcsh

/bin/csh

/bin/ash

/bin/zsh

/bin/ftponly

就行了。

问:如何允许root用户远程登录?

答:编辑/etc/securetty,加上ttyp2,ttyp3等。

注意,有严重的安全性问题!

最好是用ssh(安全的shell)加su/sudo,而且用xterm的Secure Keyboard来做远程管理。

问:怎么样做到限时登录?

答:自己写三个shell程序,调用at和系统维护功能:

1. 在指定的时间执行该shell,在/etc下生成一名为nologin的文件,如:

vi /sbin/login.denied

echo " Login Denied " > /etc/nologin

chmod 700 login.denied

2. 在指定的时间执行该shell,删除/etc/下的nologin文件,如: 网管bitscn_com

vi /sbin/login.allowed

if [ -f /etc/nologin ]; then

rm /etc/nologin

fi

chmod 700 login.allowed

3. 编写一个限制时间的shell,如:

vi /sbin/security

if [ -f /sbin/login.denied ]; then

at -f /sbin/login.denid 22:00

fi

if [ -f /sbin/login.allowed ]; then

at -f /sbin/login.allowed 8:00

if

此种设置的功能是:从晚上10:00到第二天早上8:00静止非root拥护登录,显示为系统维护状态。

另外,还需对root用户的登路终端进行限制,最好设置在console。在RedHat 5.0下

在 /etc/security/access.conf中配置:

-:root:ALL EXCEPT console就可以了。

注:还要参考/etc/securetty里的设置吧!

发生在:

vsftpd 2.0.6

ubuntu server 8.04 i386

所有操作都直接使用root账户.

安装使用 apt-get install vsftpd

问题1:我使用apt-get remove 和 autoremove 后全新 apt-get install 后发现不能自动生成 /etc/vsftpd.conf,此文件已在我 remove 后手动删除.

于是手动建立配置 /etc/vsftpd.conf :

# Networking

listen=YES

# Account Controls

pam_service_name=/etc/pam.d/vsftpd

anonymous_enable=NO

local_enable=YES

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/vsftpd/users

chroot_local_user=NO

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot.users

# Access Controls

check_shell=NO

chmod_enable=NO

# banner

ftpd_banner=Welcome to FTP Service

dirmessage_enable=YES

问题2:

登录 vsftpd 出现如下消息:

USER XXX

331 Please specify the password.

PASS XXX

530 Login incorrect.

配 置中的check_shell没有发挥作用,据vsftpd.org上的信息可知是PAM在检查shell的时候nologin不在 shells表中,在我把nologin加入到shells表中后故障消失(紧接着引发了问题3),但是否会引发其它的安全问题?如何让vsftpd不使 用pam呢?

问题3:

登录 vsftpd 出现如下消息:

USER XXX

331 Please specify the password.

PASS XXX

500 OOPS: could not open chroot() list file:/etc/vsftpd/chroot.users

在我更改配置成:

#chroot_list_file=/etc/vsftpd/chroot.users

后并mv chroot.users /etc/vsftpd.chroot_list

使用默认的文件位置,故障消失!

何解?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: