Linux系统安全谈

Author: 许忠英 李红 Date: 2001年 25期

?牐犗衷谕缭嚼丛椒⒋铮苌枇艘桓龇衿髦螅秃孟袷强桓龃翱诨队腿私础3绦蚧蛳低骋龅酵耆挥新┒词遣豢赡艿模荒芫×考跎俾┒础M缟铣3S行┚有牟涣嫉娜私示∧灾贸绦虻穆┒椿蚬芾砣嗽钡氖韬觯欠ㄈ肭郑∽咧匾淖柿匣蚱苹迪低场R虼耍魑桓鱿低彻芾碓保艘峒苌韪髦址衿魍猓挂心芰δ芊蓝赂髦趾诳偷娜肭帧6杂谝桓鲇兄居诔晌低彻芾碓钡娜死此担旅嬉恍┗痉婪都家帐潜匦胍莆盏摹4送猓诳兔堑娜肭质址ㄔ嚼丛礁呙鳎砦桓鱿低彻芾碓币ü欢系难?习和积累经验才能增强自身防黑的能力。
  #1    一、密码安全
  ?牐犚话愣裕颐俏低成柚玫拿苈氩闶蕉啵低潮环欠ㄈ肭值目赡苄跃驮叫 ?
  #2?牐犐柚肂IOS密码
  ?牐犜诨姑黄舳疞inux之前,主板的BIOS程序就提供了最基本的密码进入功能。我们最好在BIOS设置中取消用软盘引导功能,避免有人将黑客程序放入硬盘。然后,我们再对BIOS设置进入密码。这样,系统有了第一层保护屏障。
  #2?牐犐柚胷oot账户密码
  ?牐犙≡衩苈胧保挥Ω糜贸S米肿槌傻淖址⑽窗只蛱厥庾址拇0踩拿苈胍话悴捎米值渖厦挥械淖执剩ū热缍叹渲忻扛龃实牡谝桓鲎帜福?,然后加入特殊字符组成或数字组成。例如短句“我出生在65年”,取每个字的拼音第一个字母然后加入特殊字符“!”,组成密码wcsz65n!。这个密码因为在字典中没有,所以就比你的姓名/生日要安全多了。
  ?牐犆苈氲难∪∽詈媚茏裱铝性颍褐辽僖?6个字符以上,最好能同时包含数字、英文字母和符号;密码最好每隔一段时间换一次。系统在几次密码输入错误之后就强迫断线,可避免有人使用软件程序猜密码。
  #2?牐犘薷挠泄孛苈肷瓒ǖ奈募?
  ?牐犖艘竺恳晃皇褂谜叩拿苈氩豢缮儆?6个字,可以修改/etc/login.def文件,找到PASS_MIN_LEN那一行,若没有则自己加上。将这一行改为PASS_MIN_LEN 6。另外,还有其它3个设定参数可以使用:
  ?牐燩ASS_MAX_DAYS:密码最大使用时间设定,超过这个时间密码就停止使用。
  ?牐燩ASS_MIN_DAYS:改过密码之后几天内不得修改密码。
  ?牐燩ASS_WARN_AGE:设定在密码到期日的前几天警告使用者密码快到期了。
  #1    二、LILO的设定
  ?牐犚话惆沧巴闘inux之后,在开机出现LILO时,并不会问你密码,这时若有人想要取走计算机中的资料,可能会采取免密码进入Linux的方法。
  ?牐犛Χ园旆ǎ?
  ?牐犜贚ILO后输入 linux init=/bin/sh,假设lilo.conf内容如下:
  ?牐燽oot=/dev/hda
  ?牐爉ap=/boot/map
  ?牐爄nstall=/boot/boot.b
  ?牐爌rompt
  ?牐爐imeout=10
  ?牐爈ba32
  ?牐燿efault=linux
  ?牐爎estricted password=<xxxxx>
  ?牐爄mage=/boot/vmlinuz-2.2.14-6.0lp
  ?牐爈abel=linux
  ?牐爎ead-only
  ?牐爎oot=/dev/hda1
  ?牐爋ther=/dev/hda2
  ?牐爈abel=dos
  ?牐犖颐切薷牡闹氐闶莟imeout、passwrod和restricted这三个选项。
  ?牐爐imeout用于设定LILO提示符号等待的时间,单位为10分之1秒,所以此例等待时间为1秒,你还可以再设小一点,让人根本来不及输入任何参数;
  ?牐爌assword后面显示的是在LILO处需要输入的密码。但由于此处密码是明文显示,所以修改完之后必须修改lilo.conf权限,让其他人不可读取,执行#chmod 640 /etc/lilo.conf restricted则告诉LILO,即使是使用单人模式,也必须要输入密码。
  ?牐犚陨闲薷耐瓯虾螅葱?#lilo -v将设定重新执行,重新开机进入,就会看到以下内容:
  ?牐燣ILO boot:
  ?牐燩assword:
  #1    三、设定自动logout(退出登录)的时间
  ?牐犛行┦褂谜呗痪模肟蓖薼ogout,系统管理员可以在/etc/profile文件里加入一行TMOUT=120,时间单位为秒,故此表示使用者若2分钟没有动作,就自动帮他logout。
  #1    四、避免远程执行控制台程序
  ?牐牨苊庥腥舜釉冻讨葱衧hutdown或halt的指令,可至/etc/security/console.apps下,执行下列指令:
  ?牐?#rm -f halt
  ?牐?#rm -f poweroff
  ?牐?#rm -f reboot
  ?牐?#rm -f shutdown
  ?牐犝庋纯杀苊庥腥嗽冻蘴elnet进来去执行这些只能由控制台执行的指令将系统关闭。
  #1    五、不显示操作系统信息
  ?牐犖瞬蝗迷冻蘴elnet进来的人知道你采用什么操作系统,可在/etc/inetd.conf内进行如下修改??
  ?牐爐elnet stream tcp nowait root /usr/sbin/tcpd in.telnetd -h
  ?牐犜谧詈竺婕痈? -h 选项,让 telnet 进来的人只看到 “login:”这一显示,而无法判断是何操作系统。
  #1    六、停止不需要的服务
  ?牐犘矶郘inux安装后,将HTTP、FTP、SMB、Sendmail和其他一些服务作为缺省服务,这些服务就有可能被黑客利用,造成系统安全漏洞。建议你键入??
  ?牐爌s aux | grep发现正在运行的进程或服务,在启动脚本中注释掉那些不用的服务和程序,这样系统启动后,就不会启动这些服务,留下安全隐患。
  ?牐犛行┓窭鐆eb server也许你就不需要,该服务既消耗系统资源,又是一个潜在的安全漏洞,可以键入:kill -9来终止它。
  ?牐犜偃缦低撤馻nonymous FTP,如果配置错误也会产生漏洞。因为如果系统中/ftp目录可写的话,利用该服务可以偷取密码文件。
  ?牐犚伦∫陨下┒矗扇〉亩圆呤牵?
  ?牐犛涝恫蝗媚柯?/ftp对用户anonymous 有可写的权限;另外建立anonymous FTP server时,还要注意以下规则:
  ?牐犞辉市?/incoming目录可写,只允许用户root和ftp有写的权限;Anonymous FTP用户对/pub和/incoming目录只有执行和读的权限;FTP用户不能具有/ftp目录写的权限,如果设置了写的权限,那么就可能发生上述的入侵行为。
  ?牐犠詈笠⒁獗苊馐褂谩埃畆hosts”文件,该文件包含了所有用户的ID。当用户Telnet到主机时,主机会检查“.rhosts”文件中是否有当前用户的ID,如果存在,将让他进入系统,而不再检查用户密码。
  #1    七、调整kernel上的模块
  ?牐犚韵陆允切薷?/etc/sysctl.conf文件中关于kernel模块的设定:
  ?牐牐?1)忽略ping的响应以避免有人利用ping来攻击。加入或修改这一行:
  ?牐爊et.ipv4.icmp_echo_ignore_all = 1
  ?牐牐?2)忽略广播响应,有人会利用这种方法来使用Denial of Service攻击。加入或修改这一行:
  ?牐爊et.ipv4.icmp_echo_ignore_broadcast = 1
  ?牐牐?3)关闭IP source routing,避免有人传送 source routed 封包到你的网络来,欺骗你的服务器使它以为是跟一台信任的主机沟通。加入或修改这一行:
  ?牐爊et.ipv4.conf.all.accept_source_route = 0
  ?牐牐?4)激活 TCP SYN cookie 防护。加入或修改这一行:
  ?牐爊et.ipv4.tcp_syncookies = 1
  ?牐牐?5)取消 ICMP Redirect Acceptance 避免封包流入你不想去的地方。加入或修改这一行:net.ipv4.tcp_syncookies = 0
  ?牐牐?6)打开 always-defrag 防护,假如你的 Linux 服务器是当作IP masquerade的通讯闸的话,加入或修改这一行 :
  ?牐爊et.ipv4.ip_always_defrag = 0
  ?牐牐?7)在打开网络出现错误的警告中,加入或修改这一行:
  ?牐爊et.ipv4.icmp_ignore_bogus_error_resp
  ?牐爋nses = 1
  ?牐牐?8)打开伪装的IP防护。黑客进行攻击时,通常都会隐藏自己的IP,即造一个假的IP。你可以启用防止造假的IP联机,加入或修改这一行:
  ?牐爊et.ipv4.conf.all.rp_fillter = 1
  ?牐牐?9)记录 spoofed 封包、source routed 封包、redirect 封包。这样会把这些封包记录在系统记录文件内。加入或修改这一行:
  ?牐爊et.ipv4.conf.all.log_martians = 1
  ?牐牭蹦阈薷牧四阆胍哪?橹螅恍柚匦缕舳骰耐缂纯桑葱校?
  ?牐?#/etc/rc.d/init.d/network restart
  #1    八、注意系统记录
  ?牐犎绻忝挥锌醇锹嘉募南肮叩幕埃赡芎诳驼诶媚愕募扑慊龌凳履愣济挥芯醪臁O低臣锹嫉纳瓒ㄎ募蟛糠侄际欠旁?/var/log下,这些系统的记录主要是由一个叫syslogd的程序执行,而syslogd执行的参考设定是/etc/syslog.conf文件。系统管理员要确定系统记录是否正常运行,首先执行#ps-aux|grep syslogd ,执行完后应确定能看到syslogd,否则表示可能有重大危机发生。接下来执行less /etc/syslog.conf检查此文件是否有被修改过的痕迹,最后你才能继续检查你所有的记录文件。黑客修改系统记录大概就是利用这一步骤。