用Linux架设FTP服务器(下)发布时间:2007-11-09 13:14:02 来源: 作者: 点击:352message message <path> <when> <path>表示需要显示的文件的完整路径名,<when>和“readme”中的<when>意思一样。 还需要注意的是消息文件的路径名也是相对于匿名ftp目录的。 例如: message /home/ftp/.welcome.msg LOGIN compress、tar、chmod、delete、overwrite、rename 如果这些都不设置,那么就使用默认值,也就是对所有人都是“yes”。下面例子中的设置的意思是给guest组chmod、delete、overwrite和rename文件的权力,所有人都可以使用compress和tar。 例如: compress yes all log commands 因为安全上的原因需要记录用户使用的每一个命令。“log commands”的格式是: log commands <typelist> <typelist>是用逗号隔开的字串,表示哪些用户的命令需要记录下来,字串的取值可以是:anonymous、guest或real。 例如:要记录real和guest用户的每一个命令,可以这么表示: log commands real,guest 这些记录都保存在“/var/log/message”文件中。 log transfers 因为安全文件需要把文件的传输都记录下来。“log transfers”的格式是: log transfers <typelist> <directions> <typelist>是用逗号隔开的字串,表示哪些用户的命令需要记录下来,字串的取值可以是:anonymous、guest或real。<direction>也是用逗号隔开的字串,设置需要记录的文件传输的方向,可以选择的两个传输方向是“inbound”(向内)和“outbound”(向外)。 [page] 例如,用下面表示记录所有real和guest用户的“inbound”和“outbound”方向的文件传输: log transfers real,guest inbound,outbound 这些记录保存在“/var/log/xferlog”文件中。 guestgroup 这个命令用来设置guest组,每一行只能有一个成员。 例如: guestgroup ftpadmin log security 用来设置记录real、guest或anonymous用户违反安全规则的行为。 log security <typelist> <typelist>是用逗号隔开的字串,字串的取值可以是:anonymous、guest或real。“real”表示真正在ftp服务器上有账号的用户,“anonymous”表示匿名用户,“guest”表示guest用户。 例如: log security real,guest restricted-uid、restricted-gid、guest-root 这些用来设置是否允许real和guest用户访问家目录之外的目录。格式为: guest-root <root-dir> 例如: guest-root /home/ftp ftpadmin webmaster <root-dir>设置chroot环境的用户路径。在一行里可以有多个uid地范围。如果为用户设置了guest-root,那么该用户的家目录就在“<root-dir>/etc/passwd”文件中设定,而“/etc/passwd”文件中的设定是无效的。当“ftpadmin”和“webmaster”被改变了根目录(chrooted)到“/home/ftp”目录下,他们就被限制在各自的家目录下而不能访问别人的文件。 greeting 设置用户登录时候的欢迎信息。格式为: greeting full|brief|terse “greeting full”是默认的设置显示主机名和ftp daemon地版本,“greeting brief”显示主机名,“greeting terse”简单地显示“FTP server ready”。 例如: greeting terse keepalive <yes|no> 设置socket的TCP SO_KEEPALIVE参数。这样在必要的时候可以断开网络连接。“yes”有效,“no”无效。最好设成“yes”: Keepalive yes [page] 配置“/etc/ftphosts”文件 创建“ftphosts”文件(touch /etc/ftphosts),加入下面这几行: # Example host access file 把文件的权限改为600: [root@deep]# chmod 600 /etc/ftphosts 每一行可能是: allow <username> <addrglob> 或 deny <username> <addrglob> “allow”允许用户用<username>用户名,从<addrglob>地址访问ftp服务器。<addrglob>可以包含多个地址。 “deny”禁止用户名为<username>的用户,从<addrglob>地址访问ftp服务器。<addrglob>可以包含多个地址。 配置“/etc/ftpusers”文件 创建“ftpusers”文件(touch /etc/ftpusers),加入下面这几行: root 把文件的权限设成600: [root@deep]# chmod 600 /etc/ftpusers 配置“/etc/ftpconversions”文件 创建“ftpconversions”文件(touch /etc/ftpconversions),在文件中加入: :.Z: : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS 把文件的属性改为600: [root@deep]# chmod 600 /etc/ftpconversions 配置“/etc/pam.d/ftp”文件 [page] 创建“ftp”文件(touch /etc/pam.d/ftp)并加入: #%PAM-1.0 配置“/etc/logrotate.d/ftpd”文件 创建“ftpd”文件(touch /etc/logrorate.d/ftpd)并加入: /var/log/xferlog { 配置ftp使其使用inetd超级服务器(用于实现tcp-wrappers) 编辑inetd.conf文件(vi /etc/inetd.conf),加入并验证是否存在下面这一行: ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a 注意:更新完“inetd.conf”文件之后要发给inetd一个SIGNUP信号,运行下面的命令: [root@deep /root]# killall -HUP inetd 编辑“hosts.allow”文件(vi /etc/hosts.allow)加入这一行: in.ftpd: 1Array2.168.1.4 win.openarch.com 这表示IP地址为“1Array2.168.1.4”并且主机名为“win.openarch.com”的计算机允许访问ftp服务器。 FTP管理工具 <pid> <time> <tty> <connection details> 其中<pid>表示ftp daemon用来处理这次文件传输的进程号,<time>表示用户什么时候连接到ftp服务器上,<tty>总是用问号(?)表示因为是通过ftp而不是telnet连接,<connection details>告诉连接是来自哪里、用户是谁以及用户现在在干什么。 下面是ftpwho输出的一个例子: [root@deep]# ftpwho Service class openarch: [page] 可以看到现在有一个用户登录(最多可以有20个用户同时登录),这个用户的用户名是admin来自win.openarch.com。 ftpcount [root@deep]# ftpcount Service class openarch - 1 users ( 20 maximum) 保证ftp服务器的安全 如果想禁止匿名ftp服务,把ftp用户从password文件中移去,再用下面的命令确定在系统中没有安装anonftp-version.i386.rpm软件包: [root@deep]# rpm -q anonftp. upload命令 upload /home/ftp/* / no noretrieve命令 noretrieve /home/ftp/etc “.notar”文件 [root@deep]# touch /home/ftp/.notar [page] 这些长度为0的“.notar”文件会使一些浏览器和ftp代理(proxy)出现混乱,要解决这个问题必须把它们标识为禁止下载。在“/etc/ftpaccess”文件中加入这一行: noretrieve .notar 安装到系统中的文件 |
|