科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道Linux下防范缓冲区溢出攻击的系统安全策略

Linux下防范缓冲区溢出攻击的系统安全策略

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

通过研究,我们总结了在Linux平台下防范缓冲区溢出的安全策略,这些安全策略可以应用于一般企业内部服务器,包括web服务器、mail服务器、samba服务器、ftp服务器以及proxy服务器等。

作者:51cto 2007年10月16日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

4. 处理"inetd.conf"文件
inetd也叫作"超级服务器",其作用是根据网络请求装入网络程序。"/etc/inetd.conf"文件告诉inetd监听哪些网络端口,为每个端口启动哪个服务。把Linux系统放在任何网络环境中,第一件要做的事就是了解一下服务器到底要提供哪些服务。不需要的那些服务应该被禁止掉,最好卸载掉,这样黑客就少了一些攻击系统的机会。查看"/etc/inetd.conf"文件,了解一下inetd提供哪些服务。用加上注释的方法(在一行的开头加上#号)禁止任何不需要的服务,再给inetd进程发一个SIGHUP信号。具体操作步骤如下:
(1)把文件"/etc/inetd.conf"的许可权限改成600,只允许root来读写该文件。
[root@snow]# chmod 600 /etc/inetd.conf

(2)确定"/etc/inetd.conf"文件所有者为root。
[root@snow]# chmod 600 /etc/inetd.conf

这个命令显示出来的信息应该是:
File: "/etc/inetd.conf"
Size: 2869 Filetype: Regular File
Mode: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Device: 8,6 Inode: 18219 Links: 1
Access: Fri Apr 12 14:28:11 2002(00000.00:10:44)
Modify: Wed Apr 10 11:20:22 2002(00002.06:12:16)
Change: Wed Apr 10 11:20:22 2002(00002.06:12:16)

(3)编辑 /etc/inetd.conf文件(vi /etc/inetd.conf),禁止所有不需要的服务,如:ftp、telnet、 shell、login、exec、talk、ntalk、imap、pop-2、pop-3、finger、auth等。把不需要的服务关闭可以使系统的危险性降低很多。
(4)改变了"inetd.conf"文件之后,要给inetd进程发送一个SIGHUP信号(killall -HUP inetd)。
[root@snow]# chattr -i /etc/inetd.conf

(5)为了保证"inetd.conf"文件的安全,可以用chattr命令把它设成不可改变的。如下:
[root@snow]# chattr +i /etc/inetd.conf

这样可以防止对"inetd.conf"文件的任何修改。一个有"i"属性的文件是不能被改动的(不能删除或重命名,不能创建这个文件的链接,不能向这个文件里写数据)。唯一可以取消这个属性的人只有root。如果要修改"inetd.conf"文件,首先要取消不可修改的属性,如下:
[root@snow]# chattr -i /etc/inetd.conf

再改变了"inetd.conf"文件后,需要再把它的属性改为不可改变的。
5. 启动系统的"rc"脚本
/etc/rc.d目录下"rc"开头的文件是用来启动系统的初始化文件的。rc系列文件与Ms- Dos系统下的autoexec.bat很类似。rc的意思是"runtime commands"。它们决定了init进程要启动哪些服务。redhat系统下,这些脚本在/etc/rc.d/rc3.d(如果系统以x为默认启动的话,就是/etc/rc.d/rc5.d)。要在启动时禁止某个服务,只需要把大写的S替换为小写的s,同时,redhat也提供一个工具来帮助你关闭服务,输入/usr/sbin/setup,然后选择"system services",就可以定制系统启动时运行哪些服务。另外一个选择是chkconfig命令,很多linux版本的系统都自带这个工具。脚本名字中的数字是启动的顺序,以大写的K开头的是用来杀死进程的。 如将S50snmpd(SNMP简单网络管理协议,远程用户能从中获得许多系统信息)改为s50snmpd,则系统启动时将不会启动这项服务。
用下列命令察看在关闭启动脚本之前有多少服务在运行:
suneagle# ps -eaf|wc -l

有两个非常有用的工具:ps -xau(输出大量的有关系统运行的信息)和netstat -vat(列出所有和网络相关的信息)。运行他们就可以知道系统在提供、运行哪些服务。
6. 处理"services"文件
端口号和标准服务之间的对应关系在RFC1700"Assigned Numbers"中有详细的定义。"/etc/services"文件使得服务器和客户端的程序能够把服务的名字转成端口号,这张表在每一台主机上都存在,其文件名是"/etc/services"。只有"root"用户才有权限修改这个文件,而且在通常情况下这个文件是没有必要修改的,因为这个文件中已经包含了常用的服务所对应的端口号。为了提高安全性,我们可以给这个文件加上保护以避免没有经过授权的删除和改变。为了保护这个文件可以用下面的命令:
[root@snow]# chattr +i /etc/services

7. 改变"/etc/rc.d/init.d/"目录下脚本文件的访问许可
通过以下方式改变启动和停止daemon的脚本文件的权限。
[root@snow]# chmod -R 700 /etc/rc.d/init.d/*

这样只有root可以读、写和执行这一脚本,因为一般用户不需要知道脚本文件的内容。
8. 使系统对ping没有反应
防止系统对ping请求做出反应,对于网络安全是很有好处的,因为没人能够ping你的服务器并得到任何反应。TCP/IP协议本身有很多的弱点,黑客可以利用一些技术,把传输正常数据包的通道用来偷偷地传送数据。使你的系统对ping请求没有反应,可以把这个危险减到最小。使用下面的命令:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

运行完这个命令后,系统对ping就没有反应了。可以把这一行加到"/etc/rc.d/rc.local"文件中去,这样当系统重新启动时,该命令就会自动运行。对ping命令没有反应,
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章