作者: STAR 首先声明一点,这里所说的安全设置都是建立在前面的基础上,也就是说这里的安全设置并不是通用的,如我并没有提供NFS服务,所以就不会对/etc/eXPorts进行设置,如果安装了什么其他的服务,请自行解决相关安全问题 再说一下,我的习惯是注释而不删除,因为这样你能在以后知道你更改了什么,这是个好习惯吧 安全权限体制是基于密码的,一个用户的密码过于简单就能使别有用心者侵入你的系统,并不要以为他干不了什么,以xxxx信息港提供个人主页空间这台机为例,如果一个权限很小很小的工作帐号给破译,那就能用这个密码进入系统。就能拿到任何在这台主机上的htdocs目录和UsweDir(假定是按默认public_Html目录)设定目录下的东东 也就是说/home/*/public_html/下的东东可以给别人拿走分析.....如PHP这类的是不给别人看源码的,辛辛苦苦写的东东不想给别人吧,呵呵 因如要通过Apache提供服务,就必须至少把所有放置网页的目录设权限设为701,也就是任何人都有可执行权限,一般的方法甚至设为755,这直接就能读了,根本不用分析URL,一句话说明这个问题,源代码是保护不了的! 对apache的根也是对个人主页存放目录也是,如是CGI,只有用C写的CGI才行 所以 一、我选择限定最小密码长度,当然是越长越好,呵呵,但我都不习惯用十位以上的密码,惯例是设为八位 打开/etc/login.defs 把PASS_MIN_LEN 5这行把5改为8 (还有许多有用的设置,具体看此文件上几行的说明) 二、root密码的重要性自不用提了 我的做法是首先限定root只许本地登录,只许在tty1登录,网上telnet的可以使用su转为root,再限定su转root的用户组,这的安全点就可以多步设卡,我是这样设的,设一个组(我选super组),只有里面的组员可以su root,其余的就是知道root密码也su不了,必须知道两个密码才能取得root权限(当然这是在不考虑缓冲区溢出和其他更改自身UID和GID的攻击法,这个后面有相应对策) 1.打开/etc/securetty,把除tty1外全部注释掉,这样就只有tty1能用root登录 2.打开/etc/pam.d/su,下面是我机上的文件,加入加☆那两行…. ☆可不是文件里的(#%PAM-1.0你不用理,vi时就明白了) #%PAM-1.0 ☆auth sufficient /lib/security/pam_rootok.so debug ☆auth required /lib/security/pam_wheel.so group=super auth required /lib/security/pam_pwdb.so shadow nullok account required /lib/security/pam_pwdb.so passWord required /lib/security/pam_cracklib.so password required /lib/security/pam_pwdb.so shadow use_authtok nullok session required /lib/security/pam_pwdb.so session optional /lib/security/pam_xauth.so 在这我用的是super这个组,你可以改的 我的super 组ID值是33(我故意设在中间的,不想给别人猜出的,呵呵) 然后usrmod –G33 shadow 把我的登录的普通帐号shadow加入super,也只有shadwo才能su root了 (限定tty这个最好留到后面做,因为做服务器过程中,要安很多软件要安,要做很多设置,用普通用户再转root有点累,呵呵,真的,我这样是想写的有条理点,走形式主义了) 三、本地安全 这个非常重要,本想放在最前面说的,衡量了一下,站在全局观来说,这只是一个局部,所以放在这,但确用重要……我能用root进入同学任何一台Linux,很大一部份原因在此 只有root才能改root密码,这是常识也有一个小小的盲区 还有二种方式改root密码,一是init 1 !二是用软盘起动! 到1模式就能更改任何人的密码,所以在这要设卡,起动时进入1默认设置不是需要认证的,如果一个本地普通用户登录后是不能使用init 1 等进入模式1的,所以只有在机器起动时无论起动哪项都要认证权限,通过lilo可以做到 首先在bios里设置不能通过软盘起动,bios也要设密码,再在/etc/lilo.conf里写上一行password=”密码”,这是明文的,所以确保万一 chown 0.0 /etc/lilo.conf 确保是root的 chmod 600 /etc/lilo.conf 除root外谁也不能看 lilo –v chattr +i /etc/lilo.conf 如果没有写错lilo,我想很久不会改这个文件,给它一个不可更改标志 这两个密码某种意义上和root 密码是一样重要的 四、把系统预置的帐号能不要的全删掉 反正大部份都用不到,删吧,如果提供匿名FTP,ftp这个不要删,放心删吧,反正是帐号越少越好 五、/etc/inetd.conf 打开它,把除ftp、telnet以外的全注释掉,其实这也不是最好的方法,但先用着吧 如按这几份贴的过程,你现在是没有提供ftp服务的,不用理安,要不按后面安wu-ftp-2.6.1时,又要来改这了,再telnet后加个-h,telnet时不显示登录系统信息 ls –l /etc/inetd.conf 看看不是root的,如不是chown 0.0 /etc/inetd.conf chmod 600 /etc/inetd.conf 六、尽量不外泄系统信息 除了上面那个telnet –h外,再把/etc/rc.d/rc.local关于写/etc/issue、/etc/issue.net写入信息的语句注释掉,如果你没有向rc.local里写过东东,就把里面的东东全注释掉就行。 再删掉或替换掉/etc/issue.net,删掉了telnet时就只有一个“login:”了,换成欢迎词是个好办法,谁要?我收集了很多有性格的耶 七、/etc/rc.d/init.d/ chown –R 0.0 /etc/rc.d/initd/ chmod –R 700 /etc/rc.d/init.d/* 如果以后再加入新的script,也要确认所有者和700权限 八、更好的挂装文件系统 nosuid就是在这个分区里不能有suid和sgid nodev 不充许有特殊块设备 noexec不充许有任何可执行的二进制文件 关于我的/chroot分区上的natime留到优化那篇说吧 这是我的/etc/fstab /dev/hda11 / ext2 defaults 1 1 /dev/hda4 /back ext2 defaults 1 2 /dev/hda5 /boot ext2 defaults 1 2 /dev/hda8 /apacheroot ext2 defaults,nosuid,noatime 1 2 /dev/hda7 /home ext2 nosuid,nodev,noexec 1 2 /dev/hda10 /tmp ext2 nosuid,nodev,noexec 1 2 /dev/hda6 /usr ext2 defaults 1 2 /dev/hda9 /var ext2 defaults 1 2 none /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 /dev/hda1 swap swap defaults 0 0 九、find是好东东 找“.”开头的”特殊”目录和文件名(如果你想放东东在别人的机上,又不是别人知道,怎么做?) :find / -name .* -print –xdev 找任何人都有写权限的文件和目录: find / -type f \( -perm -2 -o -perm -020 \) -exec ls -lg {} \; find / -type d\( -perm -2 -o -perm -020 \) -exec ls -ldg {} \; 找没有所有者的文件:find / -nouser –o –nogroup 找.rhosts :find /home -name .rhosts 找s位: find / -type f \( -perm -04000 -o -perm -02000 \) \-exec ls -lg {} \; 把找出的一些带S的用chmod a-s去掉S 我去掉的有/usr/bin/下的有chage、gpasswd、wall、chfn、chsh、newgrp、write /usr/sbin/的有usernetctl、traceroute /bin/的有mount、umount和/sbin/netreport 你最好像我一样导出一个记录,不然你都不知改了什么,有些程序是需要s位的,如passwd 要用的话,把上面的拷到一个文件里,然后chmod 755就行了(任意帐号都可执行的),再要求高点,做成cron定时任务吧,如果有空,我贴一个上来,唉,下星期考试... 十、/etc/aliases 这个只看过介绍,接触不多----没地方用嘛----但还是解决掉这个隐患才好 因为文件有点长,所以我不贴上来了,除这几行外全部注释 MAILER-DAEMON: postmaster postmaster: root bin: root daemon: root nobody: root 十一、如果你是多用户系统,有家伙滥用系统资源以这种方式D.o.S,请修改/etc/secrity/limits.conf 因为我的机器能淡的飞出鸟来,硬件也太差了点这步我没有做,我是想到有这种可能所以找到这种方法,呵呵,打开文件 soft core 0 (意为禁止生成core文件) hard rss 10000 (每用户最大可用10M内存) hard nproc 20 (20个进程) 可根据需要修改,如修改了还要修改/etc/pam.d/security/pam_limits.so 把session required /lib/security/pam_limits.so加到文件的末尾 最后一步:再集中检查一次一些文件的所有者和权限,备份数据。
[1] [2] 下一页
(出处:http://www.sheup.com)
上一页 [1] [2]