Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57968
  • 博文数量: 25
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 330
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-26 22:41
文章分类
文章存档

2009年(2)

2008年(23)

我的朋友
最近访客

分类: LINUX

2008-10-23 14:08:59

在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
使用默认的文件位置,故障消失!
何解?
阅读(869) | 评论(0) | 转发(0) |
0

上一篇:JQ方法大全

下一篇:fedora 的问题

给主人留下些什么吧!~~