动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   服务器 → 阅读文章
  

 要 ftp 不要 telnet 如何设?

作者来源: 
阅读 数 466 人次 , 2006-4-4 3:02:00 

※ 引述《demonhuang.bbs@csie.nctu.edu.tw (小黄)》之铭言:
: ==> 在 haha.bbs@bsd.hs.ntnu.edu.tw (haha) 的文章中提到:
: : 我想让使用者只用ftp 进来主机
: : 但不让这些使用者用telnet 进来主机
: : (but有些使用者还是可以让它进来)
: : 对於这些特别的使用者如何设定呢???
: 把那些使用者的 shell 改掉 .like /noexistence ..
刚好最近也在处理类似的 ftp/login 机制,除了传统做法 -- 改 login shell 外,
还可配合其它机制的辅助让 login access control 更有弹性。

/nonexistent
/sbin/nologin
是典型的 no login shells,若要让 ftp account 能正常使用得在 /etc/shells
有对应的 entries。

ftp://freebsd.ntu.edu.tw/freebsd/woju/source/telnetd.tgz
有更新,修改了 safe_exit() 让 deny try 的「代价」少一点:

safe_exit(int n)
{
struct rtprio rp;

rp.prio = RTP_PRIO_MAX;
rp.type = RTP_PRIO_REALTIME;
rtprio(RTP_SET, 0, &rp);
rp.type = RTP_PRIO_NORMAL;
rtprio(RTP_SET, 0, &rp);
rp.type = RTP_PRIO_IDLE;
rtprio(RTP_SET, 0, &rp);
setgid(65534);
initgroups("nobody", 65534);
chroot("/usr/local/srclocal/telnetd");
chdir("/");
setuid(65534);
setpriority(PRIO_PROCESS, 0, 20);
setpriority(PRIO_PGRP, 0, 20);
setpriority(PRIO_USER, 0, 20);
execl("/telnets", 0);
sleep(60);
exit(n);
}

setgid/chroot/setuid 将程式切换到较安全的状态。

rtprio/setpriority 将 prio/nice 调到最大,也就是让这个 process 吃量
少的系统(cpu)资源。

execl 将 telnetd 换成 telnets,节省记忆体(vsz/rss)的使用,telnets 非常小,
主要的任务是「拖时间 & 省资源」。

telnet://bbs.ee.ntu.edu.tw BSD 板精华区
http://bbs.ee.ntu.edu.tw/cgi-bin/bbs2html_cgi?boards/BSD/
-> 3. ◆ FreeBSD 快速入门 (由网路安装FreeBSD)
-> 7. ◇ [fromzero] telnetd
有相关的资料。

接下来谈的和原问题有较直接的关 -- /etc/login.access
较保守的设定例如下:
+:woju:.ee.ntu.edu.tw
-:wheel:ALL EXCEPT local freebsd.ee.ntu.edu.tw
-:ALL:ALL EXCEPT LOCAL

login.access 的特性是 "first match",从第一行开始比对,如果 match 就直接
return result,所以我们应将「特例」量往前放,是「通用性的规则」该
放後头。

login.access 的格式为
perm(+|-):users:origins
以上面的例子来说,第一行 woju 可以从 *.ee.ntu.edu.tw login,第二行 wheel
group 只能从 local 或 freebsd.ee.ntu.edu.tw login,第三行拒绝所有 remote
login。

man login.access 有更详细的说明。

要特别说明的是 origins 会先使用 domain name,若查不到 domain name *才* 会
使用 ip,也就是我们 *不能* 使用 ip 来代表有 domain name 的主机,举例说:
-:wheel:ALL EXCEPT local 140.112.19.123
将 *无法* 让 wheel group 的人从 140.112.19.123 (freebsd.ee.ntu.edu.tw)
login。

此外请记得将 /etc/inetd.conf rlogin 相关的 entries 全关掉,rlogind 不
认得 /etc/login.access。
--------------------------------------------------------------------------------吴 庆 鸿,woju@freebsd.ee.ntu.edu.tw | 台大电机,http://bbs.ee.ntu.edu.tw
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:如何作package ?
· 下一篇:怎麽样设定 telnet prompt ?
· Gateway全线服务器导购
· Windows XP优化设置之网络篇
· AIX中如何解决不能释放光驱的问题
· Linux菜鸟入门学习系列之桌面FAQ
· Solaris 杀连接已经超时的进程脚本


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077