读书笔记: 鸟哥的私房菜

Telnet服务器:

1、服务器的安装:
需要安装两个包:telnet,telnet-server。

2、启动方式:
使用xinetd来代理侦听。
如果你发现没有xinetd的服务,那么请安装xinetd这个软件包;然后启动服务就好了。

在实际的测试中,即使没有telnet-server这个包,我们也可以从远程登录。但是有一点就是xinetd.d目录下telnet文件我们需要自己建。
安装了telnet-server这个包的好处就是它自己会帮你建立一个telnet包文件,你只需要将xinetd的服务重新启动就行了。
另外:root 用户不允许登录telnet,所以我们要先建立一个用户然后再测试。

现在我们来看一个在没有安装telnet-server包的案例,自己改改文件就行了。

service telnet
{
        flags           = REUSE
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = root
        server          = /usr/kerberos/sbin/telnetd
        log_on_failure  += USERID
        disable         = no
}

# useradd telnet
# passwd telnet
Changing password for user telnet.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

# telnet 10.1.1.29
Trying 10.1.1.29...
Connected to 10.1.1.29 (10.1.1.29).
Escape character is '^]'.

    server (Linux release 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009) (0)

login: telnet
Password:
[telnet@server ~]$


telnet协议属于不安全的协议,使用明文密码在网上传递,如果在同一网段有用户使用 抓包工具就极有可以抓到相关的密码信息。



==================================================================
关于系统服务的安全,我个人觉得可以从以下几个方面来做:
1、服务本身的安全防范
2、xinetd的安全防范(当然,这个就是非关键性服务。作为服务本身的安全防范的一个补充)
3、tcpwrapper (防范很简单,但也很实用)
4、iptables (利用本机的防火墙)
5、安全设备,它通常只能对恶意行为,大批量的包、大量的并发连接有防范作用。

服务本身--->xinetd--->tcpwrapper--->iptables--->防火墙
以该为目标: 详解telnet服务

1、服务本身没有安全性设置
2、xinetd(假设我们的telnet服务已经被xinetd给托管了。)
      可以限制同时的连接数
      连接的时间
      服务的实例数
3、tcpwrapper (有两个文件hosts.allow,hosts.deny)
      系统读文件先是配置hosts.allow,然后再hosts.deny.如果两个都不匹配,放行!

4、iptables (设置允许进入的IP范围规则)
5、防火墙

如何来实施保护telnet服务器?
1、使用iptables (目前还不会使用iptables)
2、使用tcpwrappers
3、xinetd自身的防范措施
4、设定iptables规则(现在还不会,会了再更新,打个mark)

以例子来说明吧!
a、在局域网里,只允许10.1.1.1来登录服务器,针对外网IP,只允许61.1.0.0/16来登录服务器。其他的IP都不能登录进来,所有成功登录、失败登录都会记录在日志文件里。
    具体记录的信息有:客户端的IP地址、主机名称

实现的方法1:
telnetd: ALL EXCEPT 10.1.1.1, 61.1.0.0/255.255.0.0 : spawn ( echo `date +%Y/%m/%D@%H:%M` %c %s >> /var/log/telnet_fail.log)

实现方法2:
[root@www ~]# cat /etc/hosts.allow
telnetd: 10.1.1.1, 61.1.0.0/255.255.0.0

[root@www ~]# cat /etc/hosts.deny
telnetd: ALL: spawn ( echo `date +%Y/%m/%D@%H:%M` %c %s >> /var/log/telnet_fail.log)

实现方法3:
service telnet
{
        socket_type = stream
        protocol = tcp
        wait = no
        user = root
        server = /usr/kerberos/sbin/telnetd
        disable = no
        only_from = 10.1.1.1   #只允许来自10.1.1.1的telnet数据包
        bind = 10.1.1.129     #添加绑定的接口
        instances = 5       #允许的实例数
        per_source = 2      #同一个IP地址只允许2个连接
        cps = 2    10      #允许同时两个同时并发连接,如果同一时间没有登陆上的IP,将会停止10秒种以减少太多的并发数量带来的压力
        flags = ipv4
        log_type = FILE /var/log/telnet.log
        log_on_failure += USERID ATTEMPT
        log_on_success = HOST USERID
}