一、当在一台PC机上安装了Linux系统,你就拥有了一个强大的、高级的、多任务的网络操作系统。但时候该系统功能有些过于强大了些。某些发布版本缺省启动很多服务(如:rlogind,inetd,httpd,innd,fingerd,timed,rhsd,等等)。作为系统管理员需要熟悉了解这些服务。若机器连接了Internet,就更需要关自己系统的安全。 (注:对于redhat发布,可以巩固运行chkconfig命令或linuxconfig命令来管理是否启动某项服务,如: chkconfig --level 345 sendmail on 来实现系统在345运行级别下自动启动sendmail) 对于诸如named等其他服务,也是通过将同一个目录下相应启动配置文件中相应的启动命令注释掉,从而当你重新启动机器时,相应的服务将不会启动。而对于高版本的redhat linux,提供了一个linuxconfig命令,可以通过它在图形界面下交互式地设置是否在启动时,运行相关服务。但是对于telnet、ftp等服务,如果将其一同关闭,那么对于管理员需要远程管理时,将非常不方便。
大多数攻击者并不是一个革新者,他们往往利用最新的公布的系统工具技术等突破一个所周知的或一个新的刚刚发现的安全漏洞。但作为一个管理者,通过访问你使用的Linux发布的官方站点如www.redhat.com、www.calderasystems.com等可以获知最新的安全漏洞及相应的补丁程序。也可以通过定期访问www.securityfocus.com、www.cert.org等安全漏洞通告站点。
控制访问服务器的最方便的方法是通过一个叫TCPwrapper的程序。在大多数发布版本中该程序往往是缺省地被安装。利用TCPwrapper你可以限制访问前面提到的某些服务。而且TCPwrapper的记录文件记录了所有的企图访问你的系统的行为。通过last命令查看该程序的log,管理员可以获知谁企图连接你的系统。
在Linux的/etc目录下,有一个如下所示inetd.conf文件,该文件是TCP wrapper的配置文件,定义了TCPwrapper可以控制启动哪些服务。比如要将finger服务去除,就将finger服务的那一行注释掉(在前面 加上"# "即可);
但是对于诸如sendmail,named等服务,由于它们不象finger,telnet等服务,在请求到来时由inet守护进程启动相应的进程提供服务,而是在系统启动时,单独作为守护进程运行的。在slackware版本的Linux,可以通过修改/etc/rc.d目录下的启动配置文件rc.M文件,将启动sendmail的命令行注释掉:
# rc。M This file is executed by init(8) when the system is being
# initialized for one of the "multi user" run levels (i.E.
# levels 1 through 6). It usually does mounting of file
# systems et al.
# Start the sendmail daemon:
# if [ -x /usr/sbin/sendmail ]; then
# echo "Starting sendmail daemon (/usr/sbin/sendmail -bd -q 15m)… "
# /usr/sbin/sendmail -bd -q 15m
# fi
............
Linux提供另外一种更为灵活有效的方法来实现对服务请求用户的限制,从而可以在保证安全性的基础上, 使可信任用户使用各种服务。
在/etc目录下,有两个文件:hosts.denyhosts.allow通过配置这两个文件,你可以指定哪些机器可以使用这些服务,哪些不可以使用这些服务。配置这两个文件是通过一种简单的访问控制语言来实现的,访问控制语句的基本格式为:程序名列表,主机名/IP地址列表。
程序名列表指定一个或者多个提供相应服务的程序的名字,名字之间用逗号或者空格分隔,可以在inetd.conf文件里查看提供相应服务的程序名:如上面的文件示例中,telent所在行的最后一项就是所 需的程序名:in.telnetd 主机名/IP地址列表指定允许或者禁止使用该服务的一个或者多个主机的标识,主机名之间用逗号或空格分隔。程序名和主机地址都可以使用通配符,实现方便的指定多项服务和多个主机。当服务请求到达服务器时,访问控制软件就按照下列顺序查询这两个文件,直到遇到一个匹配为止:
1.当在/etc/hosts.allow里面有一项与请求服务的主机地址项匹配,那么就允许该主机获取该服务
2.否则,如果在/etc/hosts.deny里面有一项与请求服务的主机地址项匹配,就禁止该主机使用该项服务
3.否则允许使用该服务如果相应的配置文件不存在,访问控制软件就认为是一个空文件,所以可以通过删除或者移走配置文 件实现对所有主机关闭所有服务。 在文件中,空白行或者以#开头的行被忽略,你可以通过在行前加 # 实 现注释功能。Linux提供了下面灵活的方式指定进程或者主机列表:
1.一个以"."起始的域名串,如.amms.ac.cn那么www.amms.ac.cn就和这一项匹配成功
2. 以'.'结尾的IP串如 202.37.152. 那么IP地址包括202.37.152. 的主机都与这一项匹配
3.格式为n.n.n.n/m.m.m.m表示网络/掩码,如果请求服务的主机的IP地址与掩码的位与的结果等于n.n.n.n 那么该主机与该项匹配。
4. ALL表示匹配所有可能性
5. EXPECT表示除去后面所定义的主机。如:list_1 EXCEPT list_2 表示list_1主机列表中除去List_2所列 出的主机
6. LOCAL表示匹配所有主机名中不包含'.'的主机 上面的几种方式只是Linux提供的方式中的几种,但是对于我们的一般应用来说是足够了。
我们通过举几 个例子来说明这个问题:
例一:我们只希望允许同一个局域网的机器使用服务器的ftp功能,而禁止副广域网上面的ftp服务请求, 本地局域网由 202.39.154. 、202.39.153. 和202.39.152. 三个网段组成。在hosts.deny文件中, 我们定义禁止所有机器请求所有服务: ALL:ALL 在hosts.allow文件中,我们定义只允许局域网访问ftp功能: in.ftpd -l -a: 202.39.154 202.39.153. 202.39.152. 这样,当非局域网的机器请求ftp服务时,就会被拒绝。而局域网的机器可以使用ftp服务。 ALL:ALL 然后重新启动你的 inetd进程: /etc/rc.d/init.d/inet restart但是hosts.deny文件只能控制/etc/inetd.conf文件中包含的服务的访问这些服务有/usr/bin/tcpd管理。TCPwrapper监听接入的网络请求,然后与在hosts.allow和hosts.deny的中的服务比较,然后做出允许或拒绝的决定。但是对于wrapper没有包含的服务你就需要采用其他方法了。
二、保护你的系统最简单有效的的方法是TCPwrapper.Linux系统在跟踪对你的机器的访问记录方面作了大量的工作。wrapper拒绝对你的系统的某些访问的同时,系统在一些LOG文件中增加了一些信息内容。在/var/log目录下,一般可以看到如下文件:
可以看到某些LOG文件有1,2等扩展名。这是由于系统运行cron.daily引起的。实际上,cron.daily是在/etc下面的子目录,包含了很多系统自动运行的管理script文件。不需要你参与,这些script实现一些任务的自动化:如轮转log文件使其不会变的过分大。作为管理员你应该熟悉如何通过修改这些script来定时运行程序。当然,现在有很多功能完善的文本模式或图形模式的log文件分析器,自动发现危险的攻击
迹象,然后象管理者发送信件。在http://www.freshmeat.net/ tucows等可以找到很多这样的工具。
从攻击者的观点而言,他们对你的你服务器上的安全文件最感兴趣。若你关闭外部网络对你的服务器 的访问。你可能会遇到这样的情况:
正如你看到的那样,攻击者已经试图连接服务器上的若干个端口。但是由于服务器关闭了inetd启动的
所有服务,所以LOG系统记录下了这些访问拒绝。若在你的机器中没有发现这样的服务拒绝并不能说明你的机
器没有被攻击。maillog文件将保存那些通过服务器被转发的email信息。xferlog保存ftp的log信息等等。
若你希望查看wtmp,你可以使用last命令
# last | more fishduck ttyp6 nexus Tue Sep 28 16:03 still logged in birdrat ttyp5 speedy Tue Sep 28 15:57 still logged in root tty1 Tue Sep 28 12:54 still logged in 将显示谁什么时候登陆进来,登陆了多长时间等信息。通过查看你可以发现非法登陆者信息。你也可以查看以前的wtmp文件如wtmp.1, 你可以用命令: # last -f /var/log/wtmp.1 | more 但是你还需要注意你的log文件的状态信息,如果它特别小 或者大小为0 则说明可能有攻击者进入系统,并且修改了这个文件。为了防止任何用户修改某些文件,如对log文件只允许添加,而不允许删除操作等等: 可以通过使用Linux Intrusion Detection System可以防止攻击者修改LOG文件password 文件等。该工具可以在启动lilo时来决定是否允许对某些特定文件的修改。该工具的详细信息可以通过访问 www.soaring-bird.com.cn/oss_proj/lids/index.html获得。系统的所有进程的祖父进程被成称为"init",其进程ID号是1。你可以通过下面的命令,看到init进程信息。 # ps ax | grep init 1 ? S 6:03 init 系统在启动时的init进程将会启动"inetd"进程,正如前面提到的该进程实现监听网络请求,监听是通过网 络端口号来实现的。例如你telnet到你的linux服务器上时,实际上你上请求inetd进程启动进程in.telnetd进程在23端口来处理你的访问请求实现通信。随后,in.telnetd进程启动一个询问你的用户名和密码的进程, 然后你就登陆到机器了。inetd同时监听很多端口来等待访问请求,然后激活完成相关服务的程序。你可以通过查看文件/etc/services来看哪个服务使用哪个端口。从节省资源角度来说,利用一个进程而不是每 种服务对应一个进程是有意义的。当一个攻击者第一次访问你的站点时,他们往往使用成为端口扫描仪的工具,通过该工具攻击者来查看你开放了那些系统服务。LInux上比较出名的一个端口扫描仪是nmap. 可以从http://www.insecure.org/nmap/index.html下载得到该软件,最新的版本甚至有一个图形化界面nmapfe。下面我们就运行nmap看可以得到什么结果: 选项'-sS',指使用TCP SYN, 也就是半连接half-pen扫描, '-O',只同时探测被扫描系统的操作系统o。(利用OS指纹的技术,可以参见http://www.isbase.com/book/showQueryL.asp?libID=271)攻击者知道了 对方使用的何种操作系统就可以有针对性的寻找该操作系统的常见漏洞
这些打开的端口就是攻击者入侵点。当你修改过inetd.conf文件以关闭某些服务,从新启动inetd后,你再用nmap扫描就可以发现被注释掉的服务扫描不到了。
当然,管理员还可以使用一些其他的安全扫描工具如:satan或 Nessus等 来检测自己的系统的安全可靠性,在攻击者发现其以前更早的发现自己的系统的漏洞,并加以弥补。
|
|||
| · OSPF路由协议专栏 · 思科路由器产品 · 华为路由器产品 · 路由器模拟器 · AIX操作系统管理应用(.. · 思科路由器配置 · 路由器组网解决方案 · 路由器密码恢复 |
· 无线路由器故障处理 · 路由故障处理手册 · 路由器访问控制列表(AC.. · 路由器的安全配置与安.. · 无线路由器配置 · 路由器技巧 · 华为路由器配置 · 路由器配置基础 |
||
|
|||
| · Java基础教程 · VPN技术 · SQL Server 2005全解 · ARP攻击防范与解决方案 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · 三层交换技术专题 |
· SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 · Windows操作系统安装 |
||
|
|||
| · VPN技术 · ARP攻击防范与解决方案 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 · Windows操作系统安装 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| · 职场冲浪(之八):让感.. ·职场冲浪(之七):潜心.. |
·人生如鞋 ·职场冲浪(之六):从离梦最.. |
| ·将职业教育职业化 - 各IT.. ·思科交换机上实现MAC地址.. |
·关于51CTO合作出书中的职.. ·OSPF动态路由协议入门简介 |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· 平凡黑客讲述精彩人生(.. · 平凡黑客讲述精彩人生(.. · 平凡黑客讲述精彩人生(.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · Ubuntu 中文开源频道 · Solaris基础知识入门 · 微软正式发布英文版Wind.. |
· 服务器基础知识入门 · Rambus第二?看全缓冲内.. · 服务器节能对比测试:AM.. |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |