当前位置:操作系统 > Unix/Linux >>

红帽linux6.2server安装----安全设置

作者: 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加到文件的末尾

  最后一步:
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,