|
 |
栏目导栏 |
|
| |
|
|
|
|
 |
资料搜索 |
|
| |
|
|
|
|
 |
热门文章 |
|
| |
|
|
|
|
 |
最新文章 |
|
| |
|
|
|
| |
| |
|
|
|
[ 作者: Linux联盟收集 加入时间:2006-07-19 13:00:51 来自:Linux联盟收集
] | |
|
Solaris安全FAQ II24SLinux联盟 24SLinux联盟 1. Preparation24SLinux联盟 最小限度保证安全的方法是只在主机上运行一个或两个服务。使用一个机器比只使用一个拥有所有权利的机器安全的多,因为这样可以隔离,方便查找问题所在。总之:在你的机器上运行你一些最必要的服务。考虑拆除键盘,屏幕,这样可以避免使用X11和知道命令行所示,在一个隔离的信任的网络段中进行测试。明确你的系统和硬件配置能产生什么样的结果,如在安装SUN的Disksuite时要考虑你是否需要RPC服务,因为DISKSUITE必须使用RPC服务。明确各种应用程序是怎样工作的如:使用什么端口和文件.24SLinux联盟 24SLinux联盟 2,初始化安装操作系统。24SLinux联盟 连接串口控制台,开机,当出现OK提示时发送Stop-A信息(~#,~%b,或者F5,主要取24SLinux联盟 决于你使用tip,cu或者vt100终端),然后开始安装过程-"boot cdrom - install"使用最小安装 end user bundle(除非你要额外的server/developer工具),设置主机名,终端,IP参数,时区等等,不要激活NIS或者NFS及不要激活电源管理。选择手工划分分区:把/usr和/opt和ROOT分离开来以便这些分区可以以只读方式挂(mount)起来。考虑把大的/var文件系统和拥有较多的数据量如(web,ftp)划分为独立的分区。24SLinux联盟 如果硬盘是2GB建议200MB / (+var), 200MB swap, 600MB /usr及 1GB 给 /opt24SLinux联盟 如果硬盘是2GB建议300MB / (+var+opt), 200MB swap, 500MB /usr24SLinux联盟 给ROOT设置一个7到8字符大小写结合等比较强壮的密码,再重启动。接着安全由SUN的安全补丁。一般的在CD上就包含这些安全补丁包。重启动及作为ROOT重启动后,你可以使用showrev -p查看补丁列表。24SLinux联盟 24SLinux联盟 3,配置操作系统24SLinux联盟 磁盘共享(mount):为了减少木马和不授权的修改,在/etc/vfstab,在mount /时请24SLinux联盟 使用"remount,nosuid"选项;在/var上请带上"nosuid"选项;在/tmp后加上"size=100m,nosuid"选项(允许/tmp只能使用100M空间及不允许执行SUID程序);如果软盘不需要的话再把"/dev/fd"行注释掉。(下面的命令假定你使用的是c-shell)24SLinux联盟 使NFS无效:24SLinux联盟 rm /etc/rc2.d/{S73nfs.client,K28nfs.server} /etc/rc3.d/S15nfs.server /etc/dfs/dfstab24SLinux联盟 使Sendmail守护程序无效,虽然sendmail不是作为一个守护程序来运行的,但两进制24SLinux联盟 程序是依然存在的,EMAIL还可以通过它了发送(但不能接受)。设定只要一个主机来接受EMAIL,另必须使用smap或其他等同命令来把sendmail危险程度降低到最底。24SLinux联盟 rm /etc/rc2.d/S88sendmail24SLinux联盟 再在cron行中增加处理邮件队列的命令:24SLinux联盟 0 * * * * /usr/lib/sendmail -q 24SLinux联盟 再关闭一些其他的服务:24SLinux联盟 rm /etc/rc2.d/{S74autofs,S30sysid.net,S71sysid.sys,S72autoinstall}24SLinux联盟 rm /etc/rc2.d/{S93cacheos.finish,S73cachefs.daemon,S80PRESERVE}24SLinux联盟 rm /etc/rc2.d/{S85power,K07dmi}24SLinux联盟 rm /etc/rc3.d/S77dmi24SLinux联盟 If you have server/developer packages:24SLinux联盟 rm /etc/rc2.d/{S47asppp,S89bdconfig,S70uucp}24SLinux联盟 使RPC无效:这一般来说是建议关闭此功能的,但一些程序如DISKSUITE会开启RPC服务,所以一般建议不使用DISKSUITE工具。如果你不想使RPC无效,则一定要使用信息包过滤器。24SLinux联盟 rm /etc/rc2.d/S71rpc24SLinux联盟 使打印服务无效(除非有一个本地打印机存在):24SLinux联盟 rm /etc/rc2.d/{S80lp,S80spc}24SLinux联盟 使naming Services Caching Daemon(名字服务缓冲守护程序)服务无效:24SLinux联盟 mv /etc/rc2.d/S76nscd /etc/rc2.d/.S76nscd24SLinux联盟 使CDE程序无效(除非你坚持要使用图形控制台):24SLinux联盟 rm /etc/rc2.d/S99dtlogin24SLinux联盟 使NTP-NETWORK TIME PROTOCOL无效(NTP会增加带宽和不安全的因素,建议使用rdate到一台使用NTP的机器来获得精确时间):24SLinux联盟 rm /etc/rc2.d/S74xntpd24SLinux联盟 使SNMP无效:24SLinux联盟 rm /etc/rc2.d/K07snmpdx /etc/rc3.d/S76snmpdx24SLinux联盟 在Inetinit中是IP forwarding和sourec routing(源路)由无效(假如有超过一个网络接口的话)。在/etc/init.d/inetinit中增加下面所示设置:24SLinux联盟 ndd -set /dev/ip ip_forward_directed_broadcasts 024SLinux联盟 ndd -set /dev/ip ip_forward_src_routed 024SLinux联盟 ndd -set /dev/ip ip_forwarding 024SLinux联盟 根据RFC1948建议在/etc/default/inetinit中增加如下的生成初始化序列号设置来防止TCP序列号预测攻击(ip欺骗):24SLinux联盟 TCP_STRONG_ISS=224SLinux联盟 在/etc/system中增加如下设置来防止某些缓冲溢出攻击。这些保护是那些需在堆栈中执行的攻击方式。但需要硬件的支持(只在sun4u/sun4d/sun4m系统中有效):24SLinux联盟 set noexec_user_stack=1 24SLinux联盟 set noexec_user_stack_log=124SLinux联盟 使用默认路由:在/etc/defaultrouter中增加IP地址,或使用"route"在24SLinux联盟 /etc/rc2.d/S99static_routes中建立启动文件。为了使动态路由无效:24SLinux联盟 touch /etc/notrouter24SLinux联盟 为了使多路广播(multicasting)无效请在/etc/init.d/inetsvc中注解掉24SLinux联盟 "route add 224.0.0.0"周围的几行。24SLinux联盟 为了记录INETD连接的所有信息,在inetd低端的启动行中增加"-t"参数,即:: /usr/sbin/inetd -s -t 24SLinux联盟 在/etc/hosts中配置一些你想取舍的主机(一些你不想通过DNS解析的)。24SLinux联盟 /etc/inetd.conf:24SLinux联盟 先使所有服务无效;配置你真正需要的服务,但必须使用FWTK netacl或tcp wrappers来允许最小限度的IP地址访问和各种记录24SLinux联盟 24SLinux联盟 4,连接并测试网络24SLinux联盟 系统通过上面的安全剥离和筛选,你必须肯定系统能正常工作,把它连接到一个安全隔离的网络。重起并以ROOT身份登录控制台,检查控制台启动时的错误信息并根据需要进行修改。24SLinux联盟 24SLinux联盟 5,安装系统管理工具软件24SLinux联盟 这部分将安装标准的工具和实用程序。最重要的是SSH,这些工具必须在其他机器24SLinux联盟 上编译和精心测试过的。24SLinux联盟 环境:24SLinux联盟 DNS客户端:在/etc/resolv.conf中增加域名和DNS服务;在/etc/nsswitch.conf中增加DNS入口的主机。24SLinux联盟 EMAIL:如果主机不需要在子网外发送EMAIL,就不需要使用mailhost的别名。否则的话必须编辑/etc/mail/aliases,在/etc/hosts中设置mailhost,在/etc/mail/sendmail.cf取消Dj行的注释并把它设置为Dj$w.YOURDOMAIN.COM.如果DNS没有配置,就在 /etc/hosts中增加这太机器的别名24SLinux联盟 hostname.YOURDOMAIN.COM。24SLinux联盟 现在发送一封测试EMAIL:mailx -v -s test_email root </dev/null .24SLinux联盟 在/.cshrc/.profile中设置别名,变量如:VISUAL, EDITOR和PATH,但不要包含'.'号。24SLinux联盟 24SLinux联盟 为LOGIN登录进程安装SSH。配置SSH守护程序(/etc/sshd_config)以便访问限制在带有known public keys的主机(/etc/ssh_known_hosts)并使rhosts认证无效。如果远程管理确实需要的话,使用.shosts要比.rhosts好的多。检查Inetd中的telnetd/ftpd是否仍然激活,如果是的话请在/etc/inetd.conf中注释掉,在进行SSH测试。24SLinux联盟 24SLinux联盟 安装一些其他的一些必须工具如:gzip;traceroute;top(不带SUID);lsof.24SLinux联盟 24SLinux联盟 安装和建立Perl5到/bin/perl.24SLinux联盟 24SLinux联盟 在/secure中安装安全脚本如:rotate_cron, rotate_log, wtrim.pl, rdistd并改变属性来保护/secure:chmod -R 700 /secure; chown -R root /secure 24SLinux联盟 24SLinux联盟 6,在次配置和筛选系统安全:24SLinux联盟 许多在CD中OS的补丁是不够及时的,因此从sunsolve.sun.ch中获取patchdiag工具来查看安全补丁并下载安装这些补丁。24SLinux联盟 24SLinux联盟 配置登录记录 24SLinux联盟 在/etc/default/su中使SU记录有效。24SLinux联盟 使用以下方法使尝试登录失败记录有效:24SLinux联盟 touch /var/log/loginlog; 24SLinux联盟 chmod 600 /var/log/loginlog; 24SLinux联盟 chgrp sys /var/log/loginlog24SLinux联盟 24SLinux联盟 SYSLOG记录:根据syslog.conf例子来分散LOG分析记录,即把多项服务的记录分散到各个独立的LOG文件,有条件的话在(/etc/hosts)中指定一台机器作为loghost24SLinux联盟 24SLinux联盟 syslog "loghost"24SLinux联盟 需要一个大的磁盘作为LOG记录的存储介质。24SLinux联盟 建立空的LOGS文件并设立相应的权限:24SLinux联盟 24SLinux联盟 cd /var/log; touch daemonlog authlog kernlog userlog maillog lprlog 24SLinux联盟 cronlog newslog locallog alertlog;24SLinux联盟 24SLinux联盟 chmod 600 daemonlog authlog kernlog userlog maillog lprlog cronlog 24SLinux联盟 newslog locallog alertlog;24SLinux联盟 24SLinux联盟 kill -1 `pgrep syslogd`24SLinux联盟 24SLinux联盟 使用rotate_log来修剪和压缩LOGS文件,在root cron中增加如下条目:24SLinux联盟 ## Prune syslog logs weekly, keeping the last 6 months or so:24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 alertlog24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 authlog24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 20 cronlog24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 daemonlog24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 kernlog24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 locallog24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 20 newslog24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 40 userlog24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 10 lprlog24SLinux联盟 55 23 * * 6 /secure/rotate_log -L /var/log -c -m 600 -M 400 -c -s -n 20 maillog24SLinux联盟 # Reset syslog daemon24SLinux联盟 0,15,30 0 * * 0 kill -HUP `cat /etc/syslog.pid`24SLinux联盟 24SLinux联盟 为了你自己使用上面的条目请在root cron中使其他的log修剪(pruning)无效:24SLinux联盟 #10 3 * * 0,4 /etc/cron.d/logchecker 24SLinux联盟 #10 3 * * 0 /usr/lib/newsyslog 24SLinux联盟 #15 3 * * 0 /usr/lib/fs/nfs/nfsfind 24SLinux联盟 #1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c >; /dev/null 2>;&1 24SLinux联盟 #30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean24SLinux联盟 24SLinux联盟 Pruning of login & other logs:24SLinux联盟 24SLinux联盟 ## Empty login/logout records at year end 24SLinux联盟 0 0 31 12 * /secure/wtrim.pl wtmp 24SLinux联盟 0 0 31 12 * /secure/wtrim.pl wtmpx 2024SLinux联盟 # Solaris 2.x logs:24SLinux联盟 0 4 * * 6 /secure/rotate_log -L /var/adm -c -m 640 -M 440 -c -s -n 30 loginlog24SLinux联盟 0 4 * * 6 /secure/rotate_log -L /var/adm -c -m 640 -M 440 -c -s -n 30 sulog24SLinux联盟 0 4 * * 6 /secure/rotate_log -L /var/adm -c -m 640 -M 440 -c -s -n 2 vold.log24SLinux联盟 0 4 * * 6 /secure/rotate_cron 24SLinux联盟 24SLinux联盟 crons24SLinux联盟 24SLinux联盟 删除不需要的crons:rm /var/spool/cron/crontabs/{lp,sys,adm}Root cron 条目:通过可信赖的来源使用rdate设定日期(你或许使用NTP协议,这将使时间精确一些,但正向上面所说的增加带宽和不必要的安全问题):24SLinux联盟 ## Synchronise the time(同步时间):24SLinux联盟 0 * * * * /usr/bin/rdate YOURTIMEHOST >;/dev/null 2>;&124SLinux联盟 24SLinux联盟 文件权限24SLinux联盟 必须限制一些有关ROOT操作的权限或干脆使其无效:24SLinux联盟 chmod 0500 /usr/sbin/snoop /usr/sbin/devinfo 24SLinux联盟 chmod o-r /var/spool/cron/crontabs/* 24SLinux联盟 chmod 000 /bin/rdist 24SLinux联盟 chmod o-rx /etc/security 24SLinux联盟 chmod og-rwx /var/adm/vold.log24SLinux联盟 chmod u-s /usr/lib/sendmail #Except for mailgateways24SLinux联盟 chmod 400 /.shosts /etc/sshd_config /etc/ssh_known_hosts24SLinux联盟 24SLinux联盟 再在登录信息上设置警告用户非授权登录的信息(如果要起诉侵入者你就需要这些信息)。如在Telnet和SSH,在/etc/motd中设置警告语句:24SLinux联盟 ATTENTION: You have logged onto a secured XXXX Corporation server.24SLinux联盟 Access by non YYYY administrators is forbidden.24SLinux联盟 For info contact YYYY@XXX.com24SLinux联盟 24SLinux联盟 重新启动,通过SSH登录,现在使用ps -e来显示进程列表:24SLinux联盟 PID TTY TIME CMD24SLinux联盟 0 ? 0:00 sched24SLinux联盟 1 ? 0:00 init24SLinux联盟 2 ? 0:00 pageout24SLinux联盟 3 ? 0:09 fsflush24SLinux联盟 156 ? 0:00 ttymon24SLinux联盟 152 ? 0:00 sac24SLinux联盟 447 ? 0:06 sshd24SLinux联盟 88 ? 0:00 inetd24SLinux联盟 98 ? 0:00 cron24SLinux联盟 136 ? 0:00 utmpd24SLinux联盟 605 ? 0:00 syslogd24SLinux联盟 175 console 0:00 ttymon24SLinux联盟 469 pts/1 0:00 csh24SLinux联盟 466 ? 0:01 sshd24SLinux联盟 625 pts/1 0:00 ps24SLinux联盟 及使用netstat -a 将显示最小的网络连接(如只有SSH):24SLinux联盟 UDP24SLinux联盟 Local Address Remote Address State24SLinux联盟 -------------------- -------------------- -------24SLinux联盟 *.syslog Idle24SLinux联盟 *.* Unbound24SLinux联盟 24SLinux联盟 TCP24SLinux联盟 Local Address Remote Address Swind Send-Q Rwind Recv-Q State24SLinux联盟 -------------------- -------------------- ----- ------ ----- ------ -------24SLinux联盟 *.* *.* 0 0 0 0 IDLE24SLinux联盟 *.22 *.* 0 0 0 0 LISTEN24SLinux联盟 *.* *.* 0 0 0 0 IDLE24SLinux联盟 24SLinux联盟 7,建立Tripwire映象,备份和测试24SLinux联盟 -测试 SSH和标准工具是否能正常工作?检查LOG条目,检查控制台信息来了解系统是否按照你设想的计划实现。24SLinux联盟 -当所有工作运行的正常时,就freeze(冻结)/usr有可能的话冻结/opt:24SLinux联盟 在/etc/vfstab中增加"ro"选项以只读方式挂上(mount)/usr和/opt分区,这样减少木马程序和非认证的修改。以nosuid方式mount其他分区。24SLinux联盟 重启24SLinux联盟 -如果CD-ROMS不需要的话,是卷管理无效,使用如下命令可以在你需要时重新启用:24SLinux联盟 24SLinux联盟 mv /etc/rc2.d/S92volmgt /etc/rc2.d/.S92volmgt24SLinux联盟 -最后安全TRIPWIRE(或者其他使用hashing算法的文件检查工具),初始化它的数据库和运行常规的检查来检测文件的改变。如果可能的话使TRIPWIRE的数据库安装在另一个机器上或一次性写入介质。如果还需要更安全的措施,那么就拷贝TRIPWIRE和它的数据库并使用SSH远程运行。这将使入侵者很难知道TRIPWIRE在使用。24SLinux联盟 24SLinux联盟 8,安装,测试应用程序24SLinux联盟 应该考虑把应用程序安装在独立的分区或者在/opt分区,如果使用/opt,在安装时必须以读写方式来挂起此分区,在安装和测试后必须再设置回只读方式。根据服务器的功能,选择你所需要的如:ftpd,BIND,proxies等等,在安装应用程序时遵照以下的规则来安装:24SLinux联盟 --在应用程序启动之前umask是否设置好如(如:022)24SLinux联盟 --应用程序是不是能以非ROOT身份运行?是否很好的设置密码若最少8位加标点,字符大小写24SLinux联盟 --注意是否所有文件的权限设置正确,即是不是只能有应用程序用户自己拥有读写权限,有没有全局能读写的文件24SLinux联盟 --当应用程序在写LOG记录时是否安全?有没有可能把密码写到安装LOG中去(不用感到好笑,这很普遍)24SLinux联盟 下面是一些安装常用服务所需要的安全问题24SLinux联盟 1,FTP服务(ftp)24SLinux联盟 -如果你使用Western University wu-ftpd,必须知道它存在一些历史BUG,如(请参看 CERT advisories CA-93:06, CA-94:07, CA-95:16 and Auscert AA-97.03 and AA-1999.02),最起码使用V2.6.0或以后的版本。24SLinux联盟 2,配置/etc/ftpusers的系统帐号使其不能用来FTP,如使以ROOT身份登录FTP无效,把"root"增加到/etc/ftpusers.要想把所有系统帐号加入到你的新系统中去可使用如下方法:24SLinux联盟 awk -F: '{print $1}' /etc/passwd >; /etc/ftpusers 24SLinux联盟 -FTP可以通过/etc/ftpusers选择性的激活每个用户;也可以使用下面的方法:24SLinux联盟 对于那些不能通过FTP访问此机器的,提供他们一些不正规的SHELL(如BASH和TCSH),但不把新的SHELL加入到/etc/shells,这样FTP访问将被拒绝。相反,要把一个非标准的SHELL加入到/etc/shells才能使FTP正常工作。24SLinux联盟 -使LOGGING有效:把"-l"选项增加到/etc/inetd.conf中去,另外"-d"选项将增加debug输出。24SLinux联盟 -FTP可以限制IP地址或基于tcp wrappers的主机名。24SLinux联盟 -如果需要匿名FTP访问,必须非常谨慎,一个chroot的环境是必须的。24SLinux联盟 具体请参看in.ftpd 手册。避免允许上传文件权利。如果需要上传文件的权利,需不允许下载上载了的文件,隐藏上载文件名及不允许他们覆盖方式操作。24SLinux联盟 -使用FTP强烈建议使用chroot.24SLinux联盟 -把FTP数据放在独立的磁盘分区,以nosuid方式mount。24SLinux联盟 2,DNS服务:24SLinux联盟 -使用最新的BIND(Berkeley Internet Name Server)来代替SUN的named,BIND有很多好的特征,若容易DEBUG和当有安全问题发现时很快更新。24SLinux联盟 具体请参看网站:24SLinux联盟 www.isc.org/view.cgi?/products/BIND/index.phtml. 24SLinux联盟 -使用8.1.2或以后的版本24SLinux联盟 -使用测试工具www.uniplus.ch/direct/testtool/dnstest.html来测试DNS。24SLinux联盟 -使用nslookup和dig来检查服务结果。24SLinux联盟 -如果在DNS客户端存在问题检查/etc/nsswitch.conf和/etc/resolv.conf,24SLinux联盟 使用nslookup -d2来获得DEBUG的信息。尝试杀掉nscd守护程序。24SLinux联盟 -如果服务器端有问题使用named -d来读console LOG,一般这LOG在syslog文件中的"daemon"段。24SLinux联盟 -要获得name服务的统计使用24SLinux联盟 kill -ABRT `cat /etc/named.pid` 将会把统计信息记录到/usr/tmp/named.stats.24SLinux联盟 -要查看改变设置后的配置信息使用HUP信号24SLinux联盟 kill -HUP `cat /etc/named.pid` 24SLinux联盟 更多的请参看www.ebsinc.com/solaris/dns.html 24SLinux联盟 3,有关chroot环境请参看如下网站:24SLinux联盟 www.sunworld.com/swol-01-1999/swol-01-security.html 24SLinux联盟 24SLinux联盟 以下准备正式运行系统24SLinux联盟 如果可能请使用多人进行最后测试,以便忘记某些重要的东西。24SLinux联盟 使用网络漏洞扫描器扫描系统,保证只有你想使用的服务在运行。24SLinux联盟 如商用扫描器IIS和免费扫描 器nmap或Satan.24SLinux联盟 检查/opt和/usr分区是否为只读状态。24SLinux联盟 初始化Tripwire(或等同的检查工具)24SLinux联盟 最后测试什么在工作,什么是禁止的,检查console/log条目,24SLinux联盟 开始时经常查看LOG记录。24SLinux联盟 24SLinux联盟 9,系统正式运行24SLinux联盟 详细检查;使用不同的人以不同的观点及在不同的网络点登录测试应用软件。24SLinux联盟 24SLinux联盟 10,常规维护24SLinux联盟 24SLinux联盟 下面是根据你系统的重要程度决定你要每小时,每天,每星期,每个月要做的事情:24SLinux联盟 -检查SUN公司的pathdiag来不断升级系统,特别注意系统内核的补丁。24SLinux联盟 -检查所有错误和不寻常的活动记录:24SLinux联盟 syslog (/var/adm/messages or /var/log/*, depending on syslog.conf), 24SLinux联盟 /var/cron/log, last, /var/adm/sulog, /var/adm/loginlog, 24SLinux联盟 application/server logs. 24SLinux联盟 -运行tripwire24SLinux联盟 -注意一些新的漏洞及安全建议,订阅CERT,CIAC的安全公告和供应商的安全列表24SLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论 |
|
|
|
|
|