|  | 
 
| 转: 
 1,最小化安全系统,删除不必要的软件,关闭不必要的服务.
 # ntsysv
 以下仅列出需要启动的服务,未列出的服务一律推荐关闭,必要运行的服务再逐个打开.
 atd
 crond
 irqbalance
 microcode_ctl
 network
 sshd
 syslog
 2,删除finger程序,具体方法如下
 #rpm –e finger
 3,BOIS安全设置
 4,帐号安全设置
 修改/etc/login.def文件
 PASS_MAX_DAYS   120 设置密码过期日期
 PASS_MIN_DAYS   0   设置密码最少更改日期
 PASS_MIN_LEN    10    设置密码最小长度
 PASS_WARN_AGE   7  设置过期提前警告天数
 确保/etc/shadow为root只读
 确保/etc/passwd为root读写
 定期用密码工具检测用户密码强度
 5, /etc/exports
 如果通过NFS把文件共享出来,那么一定要配置”/etc/exports”文件,使得访问限制尽可能的严格.这就是说,不要使用通配符,不允许对根目录有写权限,而且尽可能的只给读权限.在/etc/exports文件加入:
 /dir/to/export host1.mydomain.com(ro,root_squash)
 /dir/to/export host2.mydomain.com(ro,root_squash)
 建议最好不要使用NFS.
 6,inetd.conf或xinetd.conf
 如果是inetd.conf建议注释掉所有的r开头的程序,exec等
 7,TCP_Wrappers
 在/etc/hosts.allow中加入允许的服务,在/etc/hosts.deny里加入这么一行ALL:ALL
 8,/etc/aliases文件
 Aliases文件如果管理错误或管理粗心就会造成安全隐患.把定义”decode”这个别名的行从aliases文件中删除.
 编辑aliases,删除或注释下面这些行:
 #games: root
 #ingres: root
 #system: root
 #toor: root
 #uucp: root
 #manager: root
 #dumper: root
 #operator: root
 #decode: root
 运行/usr/bin/nesaliases重新加载.
 9,防止sendmail被没有授权的用户滥用
 编辑sendmail.cf
 把PrivacyOptions=authwarnings
 改为PrivacyOptions=authwarnings,noexpn,novrfy
 10,不响应ping
 echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
 11,使TCP SYN Cookie保护生效
 Echo 1 > /proc/sys/net/ipv4/tcp_syncookies
 12,删除不必要的用户和组用户
 删除的用户,如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher等
 删除的组,如adm,lp,news,uucp,games,dip,pppusers,popusers,slipusers等
 可以设置不可更改位
 chattr +i /etc/passwd
 chattr +i /etc/shadow
 chattr +i /etc/group
 chattr +i /etc/gshadow
 13,防止任何人都可以用su命令成为root
 编辑su文件(vi /etc/pam.d/su),加入如下两行
 auth sufficient /lib/security/pam_rootok.so debug
 auth required /lib/security/pam_wheel.so group=wheel
 把能su为root的用户加入wheel组
 usermod  -G10 username
 14,使Control+Alt+Delete关机键无效
 编辑inittab文件,注释掉
 Ca:ctrlaltdel:/sbin/shutdown –t3 –r now
 运行/sbin/init q 使设置生效
 15,创建所有重要的日志文件的硬拷贝
 如果服务器比较重要,可以考虑把ssh,mail,引导信息等打印出来.在/etc/syslog.conf文件中加入一行.:
 Authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0
 执行/etc/rc.d/init.d/syslog restart
 或者把日志发送到其它服务器保存
 如
 authpriv.*                 /var/log/secure
 要把它发送到192.168.0.2,就可以这样修改
 authpriv.* @192.168.0.2                /var/log/secure
 16,改变/etc/rc.d/init.d目录下的脚本文件的访问许可
 chmod –R 700 /etc/rc.d/init.d/*
 注意:慎重修改此安全设置
 17,/etc/rc.d/rc.local
 把此文件中无关的信息全部注释,不让任何人看到任何有关主机的信息.
 删除/etc下的issue和issue.net
 18,带S位的程序
 可以清除s位的程序包括但不限于:
         从来不用的程序;
         不希望非root用户运行的程序;
         偶尔用用,但是不介意先用su命令变为root后再运行.
 find / -type f \( -perm 04000 –o –perm -02000 \)  -print
 chmod a-s 程序名
 19,查看系统隐藏文件
 find / -name “.*” –print
 20,查找任何人都有写权限的文件和目录
 find / -type f  \( -perm -2  -o perm -20 \) ls
 find / -type f  \( -perm -2 –o –perm -20 \) ls
 21,查找系统中没有主人的文件
 find / -nouser –o –nogroup
 22,查找.rhosts文件
 find /home -name “.rhosts”
 如果有,请删除它.
 23,收回系统编译器的权限或删除
 如: chmod 700 /usr/bin/gcc
 24,用防火墙禁止(或丢弃) icmp 包
 iptables -A INPUT -p icmp -j DROP
 25,更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降
 vi /etc/ssh/sshd_config
 将PORT改为1000以上端口
 同时,创建一个普通登录用户,并取消直接root登录
 useradd  ‘username’
 passwd ‘username’
 vi /etc/ssh/sshd_config
 在最后添加如下一句:
 PermitRootLogin no         #取消root直接远程登录
 26, chmod 600 /etc/xinetd.conf
 二.PHP 安全篇1、开启安全模式(做为商业应用的服务器不建议开启)
 #vi /usr/local/Zend/etc/php.ini (没装ZO时php.ini文件位置为:/etc/php.ini)
 safe_mode = On
 2、锁定PHP程序应用目录
 #vi /etc/httpd/conf.d/virtualhost.conf
 加入
 php_admin_value open_basedir /home/*** (***为站点目录)
 3、千万不要给不必要的目录给写权限,也就是777权限,根目录保持为711权限,如果不能运行PHP请改为755
 4、屏蔽PHP不安全的参数(webshell)
 #vi /usr/local/Zend/etc/php.ini (没装ZO时php.ini文件位置为:/etc/php.ini)
 disable_functions = system,exec,shell_exec,passthru,popen
 以下为我的服务器屏蔽参数:
 disable_functions = passthru,exec,shell_exec,system,set_time_limit,ini_alter,dl,
 pfsockopen,openlog,syslog,readlink,symlink,link,leak,fsockopen,popen,escapeshell
 cmd,error_log
 | 
 |