科技行者

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

知识库

知识库 安全导航

至顶网网络频道Unix高级安全设置第三部分-LINUX系列(4)

Unix高级安全设置第三部分-LINUX系列(4)

  • 扫一扫
    分享文章到微信

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

UNIX 已有数十年的历史,在这期间,它的改变即使没有上亿次,也有数百万次了,有成千上万的个人和公司实现了上千种不同的版本,有上百万系统管理员在从微型嵌入式系统到超级 计算机上都安装过它。无可争论,没有两个实际的UNIX操作系统是完全相同的

作者:论坛整理 来源:zdnet网络安全 2008年1月8日

关键字: 安全设置 系统安全 unix

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

3.2.2.22 “/etc/rc.d/rc.local”文件
在默认情况下,当登录装有Linux系统的计算机时,系统会告诉你Linux发行版的名字、版本号、内核版本和服务器名称。这泄露了太多的系统信息。最好只显示一个“Login:”的提示信息。

第一步
编辑“/ect/rc.d/rc.local”文件,在下面这些行的前面加上“#”:
--
# This will overwrite /etc/issue at every boot. So, make any changes you
# want to make to /etc/issue here or you will lose them when you reboot.
#echo \"\" > /etc/issue
#echo \"$R\" >> /etc/issue
#echo \"Kernel $(uname -r) on $a $(uname -m)\" >> /etc/issue
#
#cp -f /etc/issue /etc/issue.net
#echo >> /etc/issue
--

第二步
删除“/etc”目录下的“issue.net”和“issue”文件:
[root@cnns]# rm -f /etc/issue
[root@cnns]# rm -f /etc/issue.net

注意:“/etc/issue.net”文件是用户从网络登录计算机时(例如:telnet、SSH),看到的登录提示。同样在“/etc”目录下还有一个“issue”文件,是用户从本地登录时看到的提示。

这两个文件都是文本文件,可以根据需要改变。但是,如果想删掉这两个文件,必须向上面介绍的那样把“/etc/rc.d/rc.local”脚本中的那些行注释掉,否则每次重新启动的时候,系统又会重新创建这两个文件。

3.2.2.23 带“s”位的程序
用ls -l命令列出来的文件,如果文件的权限位中出现“s”,则这些文件的SUID(-rwsr-xr-x)或SGID(-r-xr-sr-x)位被设定了。因为这些程序给执行它的用户一些特权,所以如果不需要用到这些特权,最好把这些程序的“s”位移去。可以用下面这个命令“chmod a-s <文件名>”移去相应文件的“s”位。

可以清除“s”位的程序包括但不限于:

1)从来不用的程序
2)不希望非root用户运行的程序
3)偶尔用用,但是不介意先用su命令变为root后再运行。
下面加了星号(*)的程序,我个人认为有必要移去“s”位。注意,系统可能需要一些SUID的程序才能正常运行,所以要千万小心。

用下面的命令查找所有带“s”位的程序:

[root@cnns]#find / -type f \\( -perm -04000 -o -perm -02000 \\) \\-exec
ls -lg {} \\;

*-rwsr-xr-x 1 root root 35168 Sep 22 23:35 /usr/bin/chage
*-rwsr-xr-x 1 root root 36756 Sep 22 23:35 /usr/bin/gpasswd
*-r-xr-sr-x 1 root tty 6788 Sep 6 18:17 /usr/bin/wall
-rwsr-xr-x 1 root root 33152 Aug 16 16:35 /usr/bin/at
-rwxr-sr-x 1 root man 34656 Sep 13 20:26 /usr/bin/man
-r-s--x--x 1 root root 22312 Sep 25 11:52 /usr/bin/passwd
-rws--x--x 2 root root 518140 Aug 30 23:12 /usr/bin/suidperl
-rws--x--x 2 root root 518140 Aug 30 23:12 /usr/bin/sperl5.00503
-rwxr-sr-x 1 root slocate 24744 Sep 20 10:29 /usr/bin/slocate
*-rws--x--x 1 root root 14024 Sep 9 01:01 /usr/bin/chfn
*-rws--x--x 1 root root 13768 Sep 9 01:01 /usr/bin/chsh
*-rws--x--x 1 root root 5576 Sep 9 01:01 /usr/bin/newgrp
*-rwxr-sr-x 1 root tty 8328 Sep 9 01:01 /usr/bin/write
-rwsr-xr-x 1 root root 21816 Sep 10 16:03 /usr/bin/crontab
*-rwsr-xr-x 1 root root 5896 Nov 23 21:59 /usr/sbin/usernetctl
*-rwsr-xr-x 1 root bin 16488 Jul 2 10:21 /usr/sbin/traceroute
-rwxr-sr-x 1 root utmp 6096 Sep 13 20:11 /usr/sbin/utempter
-rwsr-xr-x 1 root root 14124 Aug 17 22:31 /bin/su
*-rwsr-xr-x 1 root root 53620 Sep 13 20:26 /bin/mount
*-rwsr-xr-x 1 root root 26700 Sep 13 20:26 /bin/umount
*-rwsr-xr-x 1 root root 18228 Sep 10 16:04 /bin/ping
*-rwxr-sr-x 1 root root 3860 Nov 23 21:59 /sbin/netreport
-r-sr-xr-x 1 root root 26309 Oct 11 20:48 /sbin/pwdb_chkpwd

用下面的命令禁止上面选出来的SUID的程序:

[root@cnns]# chmod a-s /usr/bin/chage
[root@cnns]# chmod a-s /usr/bin/gpasswd
[root@cnns]# chmod a-s /usr/bin/wall
[root@cnns]# chmod a-s /usr/bin/chfn
[root@cnns]# chmod a-s /usr/bin/chsh
[root@cnns]# chmod a-s /usr/bin/newgrp
[root@cnns]# chmod a-s /usr/bin/write
[root@cnns]# chmod a-s /usr/sbin/usernetctl
[root@cnns]# chmod a-s /usr/sbin/traceroute
[root@cnns]# chmod a-s /bin/mount
[root@cnns]# chmod a-s /bin/umount
[root@cnns]# chmod a-s /bin/ping
[root@cnns]# chmod a-s /sbin/netreport

如果你想知道这些程序到底有什么用,可以用man命令查看帮助。

例如:[root@cnns]# man netreport

3.2.3 高级安全

3.2.3.1 使系统对ping没有反应
防止你的系统对ping请求做出反应,对于网络安全很有好处,因为没人能够ping你的服务器并得到任何反应。TCP/IP协议本身有很多的弱点,黑客可以利用一些技术,把传输正常数据包的通道用来偷偷地传送数据。使你的系统对ping请求没有反应可以把这个危险减到最小。

用下面的命令:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

运行完这个命令后,系统对ping就没有反应了。可以把这一行加到“/etc/rc.d/rc.local”文件中去,这样当系统重新启动的时候,该命令就会自动运行。对ping命令没有反应,至少可以把绝大多数的黑客排除到系统之外,因为黑客不可能知道你的服务器在哪里。重新恢复对ping的响应,可以用下面的命令:

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all\"

3.2.3.2 禁止使用控制台程序
一个最简单而且最常用的保证系统安全的方法就是禁止使用所有的控制台程序,如:shutdown和halt。可以运行下面的命令来实现:

[root@cnns]# rm -f /etc/security/console.apps/servicename

这里servicename是你要禁止的控制台程序名。除非你使用xdm,否则不要把xserver文件删掉,如果这样除了root之外,没有人可以启动X服务器了。(如果使用xdm启动X服务器,这时root是唯一需要启动X服务器的用户,这才有必要把xserver文件删掉)。例如:

[root@cnns]# rm -f /etc/security/console.apps/halt
[root@cnns]# rm -f /etc/security/console.apps/poweroff
[root@cnns]# rm -f /etc/security/console.apps/reboot
[root@cnns]# rm -f /etc/security/console.apps/shutdown
[root@cnns]# rm -f /etc/security/console.apps/xserver (如果删除,只有root可以启动X).

这些命令就可以禁止所有的控制台程序:halt、poweroff、reboot和shutdown。记住,只有装了Xwindow,删除xerver文件才会有效果。

注意:根据我们前一章的介绍安装服务器,Xwindow是没有安装上的,上面说的那些文件可能不会出现在“/etc/security”目录下的,如果这样就可以不管这一节介绍的方法。

3.2.3.3 禁止控制台的访问
为了禁止所有的控制台访问,包括程序和文件,请在“/etc/pam.d/”目录下的所有文件中,给那些包含pam_console.so的行加上注释。这一步是上一节《禁止使用控制台程序》的延续。下面的脚本可以自动完成这项工作。转成root身份,创建disabling.sh脚本文件(touch disabling.sh),接着加入下面这些行:

# !/bin/sh
cd /etc/pam.d
for i in * ; do
sed \'/[^#].*pam_console.so/s/^/#/\' < $i > foo && mv foo $I
done

用下面的命令使脚本有可执行的权限,并执行它:

[root@cnns]# chmod 700 disabling.sh
[root@cnns]# ./disabling.sh

这样“/etc/pam.d”目录下所有文件中包含“pam_console.so”的行都被加上注释。这个脚本运行完之后,可以把它从系统中删掉。

3.2.3.4 创建所有重要的日志文件的硬拷贝
保证在“/var/log”目录下的不同日志文件的完整性是保证系统安全所要考虑的非常重要的一个方面。如果我们在服务器上已经加上了很多安全措施,黑客还是能够成功入侵,那么日志文件就是我们最后的防范措施。因此,很有必要考虑一下用什么方法才能保证日志文件的完整性。如果服务器上或网络中的其它服务器上已经安装了打印机,就可以把重要的日志文件打印出来。这要求有一个可以连续打印的打印机,并用syslog把所有重要的日志文件传到“/dev/lp0”(打印设备)。黑客可以改变服务器上的文件、程序,等等,但是,把重要的日志文件打印出来之后,他就无能为力了。

例如:记录下服务器上所有的telnet、mail、引导信息和ssh连接,并打印到连接在这台服务器上的打印机。需要在“/etc/syslog.conf”文件中加入一行。

编辑syslog.conf文件(vi /etc/syslog.conf),在文件末尾加入下面这一行:
authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
重新启动syslog daemon使改动生效:
[root@cnns]# /etc/rc.d/init.d/syslog restart

又例如:

记录下服务器上所有的telnet、mail、引导信息和ssh连接,并打印到本地网络中其它服务器上连接的打印机,要在这台接收日志文件的服务器的“/etc/syslog.conf”文件中加入一行。如果本地网中没有打印机,可以把所有的日志文件拷贝到别的服务器上,只要忽略下面第一步,把“/dev/lp0”加到其它服务器的“syslog.conf”文件中,直接跳到在其它服务器上设置“-r”参数那一步。把所有日志文件拷贝到其它计算机上,使你可以在一台计算机上管理多台计算机的日志文件,从而简化管理工作。

编辑接收日志文件的服务器(例如:mail.openarch.com)上的syslog.conf文件(vi /etc/syslog.conf),在文件的末尾加入下面这一行:

authpriv.*;mail.*;local7.*;auth.*;daemon.info/dev/lp0

因为syslog daemon的默认配置是拒绝接收来自网络上的信息,我们必须使它能够接收来自网络上的信息,在syslog daemon的脚本文件(指的是接收日志文件的服务器上的脚本文件)中加入下面的“-r”参数。

编辑syslog脚本文件(vi +24 /etc/rc.d/init.d/syslog),把这一行:
daemon syslogd -m 0
改为:
daemon syslogd -r -m 0
重新启动syslog daemon使改动生效:
[root@mail]# /etc/rc.d/init.d/syslog restart

如果接收日志文件的服务器上有防火墙,你可以检查一下防火墙的脚本文件中有没有下面几行(没有就加上):

ipchains -A input -i $EXTERNAL_INTERFACE -p udp \\
-s $SYSLOG_CLIENT \\
-d $IPADDR 514 -j ACCEPT

在这个例子中防火墙的脚本文件中定义了EXTERNAL_INTERFACE=\"eth0\"。

IPADDR=\"208.164.186.2\";
SYSLOG_CLIENT=”208.164.168.0/24\"

重新启动接收日志文件的服务器上的防火墙,使改动生效:

[root@mail]# /etc/rc.d/init.d/firewall restart

这个防火墙规则允许接收日志文件的服务器接收来自端口514(syslog的端口)的UDP包。最后,编辑一下发送日志文件的服务器上的“syslog.conf”文件(vi /etc/syslog.conf),在末尾加上这一行:

authpriv.*;mail.*;local7.*;auth.*;daemon.info @mail

“mail”是接收日志文件的计算机主机名。如果有人试图黑你的计算机并且威胁把所有重要的系统日志文件都删掉,你就不用怕了,因为你已经打印出来或者在别的地方还有一个拷贝。这样就可以根据这些日志文件分析出黑客在什么地方,然后出理这次入侵事件。

重新启动syslog daemon,使改变生效:
[root@cnns]# /etc/rc.d/init.d/syslog restart

同样也要看看发送日志文件的服务器的防火墙的脚本文件中有没有这几行(没有加上)。

ipchains -A output -i $EXTERNAL_INTERFACE -p udp \\
-s $IPADDR 514 \\
-d $SYSLOG_SERVER 514 -j ACCEPT

这里防火墙的脚本文件中定义了:

EXTERNAL_INTERFACE=\"eth0\"
IPADDR=\"208.164.186.1\"
SYSLOG_SERVER=\"mail.openarch.com\"

重新启动防火墙,使改变生效:
[root@cnns]# /etc/rc.d/init.d/firewall restart

这个防火墙的规则允许发送日志文件的服务器通过端口514(syslog端口)发送UDP包。

注意:千万不要用网关服务器来收集和管理所有的系统日志信息。有关syslogd程序的其它一些参数和策略,可以用man命令查看帮助:syslogd(8)、syslog(2)和syslog.conf(5)。

3.2.4 系统补丁
http://www.redhat.com网站提供了最新的内核和应用程序的升级或补丁包。可以把.rpm包下载到服务器的/var/tmp里面然后用命令 rpm -ivh soft.pkg.rpm来升级软件包,或者用rpm ?CUvh soft.pkg.rpm 来修补系统里面带有漏洞的软件。

3.2.5 附录 Linux上面各种常用软件的下载网址
1)FTP:
ftp://ftp.wu-ftpd.org/pub/wu-ftpd/
2)SSH:
ftp://ftp.ssh.com/pub/ssh/
3)DNS:
ftp://ftp.isc.org/isc/bind/
4)dhcp:
ftp://ftp.isc.org/isc/dhcp/dhcp-3.0b2pl18-solaris-2.6.tar.gz
5)SMTP:
ftp://ftp.sendmail.org/pub/sendmail/
6)SSL:
ftp://ftp.openssl.org/source/
7)IMAP/POP:
ftp://ftp.cac.washington.edu/imap/
8)inn:
ftp://ftp.isc.org/isc/inn/inn-2.3.1.tar.gz
9)Linux MM:
http://www.engelschall.com/sw/mm/
10)pine:
ftp://ftp.cac.washington.edu/pine/
11)samba:
http://us1.samba.org/samba/download.html
12)openLDAP:
http://www.openldap.org/software/download/
13)PostgreSQL Db:
ftp://ftp.postgresql.org/pub/
14)Squid Proxy:
http://www.squid-cache.org/Versions/
15)Apache:
http://httpd.apache.org/dist/
16)Mod_ssl:
http://www.modssl.org/source/
17)Perl:
http://perl.apache.org/dist/
18)PHP:
http://www.php.net/downloads.php
19)MySQL
http://www.mysql.com/Downloads/M ... nux-gnu-i686.tar.gz
20)SXID
ftp://marcus.seva.net/pub/sxid/
21)tripwire:
http://www.tripwiresecurity.com/downloads/index.cfml?dl=asr&
22)GUN PG
http://www.gnupg.org/download.html 

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

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

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