Chinaunix首页 | 论坛 | 博客
  • 博客访问: 899463
  • 博文数量: 436
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -103
  • 用 户 组: 普通用户
  • 注册时间: 2016-08-01 09:48
个人简介

爱生活,爱IT

文章分类

全部博文(436)

文章存档

2015年(1)

2014年(2)

2013年(6)

2011年(39)

2010年(176)

2009年(30)

2008年(28)

2007年(54)

2006年(91)

2005年(9)

分类: LINUX

2007-03-05 09:34:05

前言:如果你已经将一些可能造成侵入的服务关掉之后,下一步要作什么呢?当然就是限制联机进来计算机啰!通常,若你有开启 http 或 mail 的情况下,在 apache 与 sendmail 的设定文件中限制联机的计算机,可能会造成一些网域无法登入,当然,除非你只对内部开放,否则的话,通常是不在该服务下关闭某一网域的计算机的!但是 telnet 这个服务就不是这样啰!基本上,我们并不希望有任何人以 telnet 登入我们的主机,(除非你有架设 BBS)因为如果你开放 telnet 的话,那等于是请所有的人进入你的主机中,窃取你的数据,甚至以你的主机为中继站去攻击别人!因此,最好限制每一台主机可以联机的网域才好。
  • 参考数据:

大部分内容,是参考扶凯的文章<限制连接上您 Linux 主机的计算机网域>
  • 限制联机的范围:
其实,你服务的项目除了 Proxy, WWW ,e-mail,sshd,proftpd 等之外,若要使用 Telnet 或其它的联机软件连上你的主机的话,应该是要经过你的控管的,所以,限制适当的联机网络是有其必要性的。通常,我都只设定我上网工作(Windows 平台)的那部机器,及可能会使用到的外部网络的机器,让他可以登入这部主机,其它的就将之deny(取消)掉!基本上,要设定联机范围的程序与档案有几 个:
    • tcp_wrappers 套件;
    • /etc/hosts.allow;
    • /etc/hosts.deny。
简单的说, hosts.allow 与 hosts.deny 这两个档案就是在限制 /etc/inetd.conf 这个档案中,所允许的服务内容啦!(TCPD先检查hosts.allow ,再检查hosts.deny ,如果前者允许的IP或域名,后者即使有了,也不起作用)
    1. 察看是否具有 tcp_wrappers 套件:

要使联机计算机的设定启动,以使用 /etc/hosts.allow 与 /etc/hosts.deny 档案的话,需要这一套软件『tcp_wrappers』,要察看你的 Linux 主机内是否有这一套软件的话,请使用:
rpm -q tcp_wrappers 或者 rpm -qa | grep tcp

如果有这套软件的话,自然就会显示出来,如果没有的话,请放入你的 Linux 光盘片,将 rpm 档案装上去吧!
 
    1. 设定允许登入的计算机(/etc/hosts.allow):

其实很简单,只要修改 /etc/hosts.allow(如 果没有此档,请自行以 vi 编辑)这这档案即可,例如,我家里的计算机中,我的内部网域(局域网络)是 192.168.1.0/255.255.255.0,这样的网域代表计算机 IP 在于 192.168.1.1 - 192.168.1.255 之间!所以,我就将 /etc/hosts.allow 这个档案的内容设定成为如此:
 
in.telnetd: 192.168.1.0/255.255.255.0, .ncku.edu.tw : Allow

加入 .ncku.edu.tw 的原因是因为我人在成大,所以加入此行的话,可以使我在成大连上我家里的 Linux 主机。 
注:IP的写法不支持/24/32/8等的NetMask的写法,必须把掩码写全.
  如:192.168.148.224/255.255.255.240
你可能写成: sshd: all except .sina.com
    1. 设定不许登入的计算机(/etc/hosts.deny):

由 于正常的情况下, Linux 会先判断 hosts.allow 这个档案,这个档案中的计算机如果设定为可联机的话,则 hosts.deny 就不会被使用,因此,设定好了 hosts.allow 之后,将 /etc/hosts.deny 设定为『所有计算机都不许登入』的情况,如下所示:
 
in.telnetd: ALL : Deny

这样一来,基本的防护措施就有了(不用重新开机就自动执行了!)。同样,你也可能写成: sshd: all except .sina.com

例题:
ssh可以被本地子网访问,但是不能让其他网段的用户访问
 /etc/hosts.deny
sshd :ALL EXCEPT 192.168.0.

\\\\\\\\\小结\\\\\\\\\\
只允许example.com访问
hosts.allow
sshd:ALL EXCEPT .example.com
hosts.deny无
只不允许example.com访问
hosts.deny
sshd:ALL EXCEPT .example.com
hosts.allow无
**以上的理解是错误的,在tcp_wrapper中,拒绝只能用host.deny**
如果只允许example.com访问
hosts.allow  写sshd:.example.com
hosts.deny   写sshd:all
如果只不允许example.com访问
hosts.allow不写
hosts.deny  写sshd:.example.com
所以:
对于sshd:ALL EXCEPT .example.com这一句,表示的是hosts.allow中对sshd 都允许进入但是除了example.com不运用这个规则,但不表示拒绝,只是表示不进入,如果想拒绝还需要在 hosts.deny中加规则。
  • 记录限制登入的主机 IP:

通 常我们会希望如果有人尝试登入我们的系统时,系统不但可以将他摒弃在外,并且可以将他的尝试记录下来!这时,我们可以藉由 /etc/hosts.deny 来达成这个目标!在这个档案中(当然,您的 /etc/hosts.allow 必须已经先完成编辑了!),你可以这样输入:
 
[root @tsai /etc]# vi hosts.deny
in.telnetd: ALL : spawn (echo Security notice from host `/bin/hostname`; \
echo; /usr/sbin/safe_finger @%h ) | \
/bin/mail -s "%d-%h security" root & \
: twist ( /bin/echo -e "\n\nWARNING connection not allowed. Your attempt has been logged. \n\n\n警告您尚未允许登入,您的联机将会被纪录,并且作为以后的参考\n\n ". )
在 上面的例子中,黄色的 root 部分,可以写成你的个人账号或者其它 e-mail ,以免很少以 root 身份登入 Linux 主机时,容易造成不知道的情况,另外,最后几行(颜色怪怪的那一行)为同一行。如此一来,当未经允许的计算机尝试登入你的主机时,他的画面就会显示上面的最后一行,并且将他的 IP 寄到 root (或者是你自己的信箱)那里去!
阅读(1625) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~