一,系统安装
1,软件包选择:全不选,安装最小化的系统,不安装图形界面
2,root密码:必须超过8位,并且有符号和字母数字。
3,精简服务:关掉以下服务项:kudzu cpuspeed isdn portmap nfslock rpcidmapd rpcgssd bluetooth netfs pcscd apmd hidd autofs hplip cups gpm xfs avahi-daemon yum-updatesd firstboot haldaemon
4,数据分区/home或/data应使用nodev,nosetuid,nosetgid 挂载
5,所有服务的启动脚本应为root权限,并且为755属性
6,web服务器只开放80与22端口
7,数据库服务器只开放3306与22端口
8,除80,443和22,udp161(snmp),5666(nrpe)外,不允许其他服务LISTEN外网IP,161和5666端口必须限制IP
9,如无必要,禁止开启FTP服务,FTP密码传输为明文,容易被监听。
10,禁止使用root权限运行任何服务
11,设置内核参数net.ipv4.tcp_syncookies = 1 打开syncookie支持,防止普通级别的synflood
12,设置内核参数net.ipv4.conf.all.log_martians = 1 开启arp地址变更的记录功能,以便发现arp spoof攻击
二,PHP环境配置
1,必须设置的 php.ini 参数
disable_functions= passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status
,ini_alter,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen
register_globals = Off
cgi.fix_pathinfo=0
magic_quotes_gpc = On
allow_url_include = Off
expose_php = Off
2,MYSQL禁止绑定外网地址,单机只允许绑定127.0.0.1,多台服务器绑定内网IP
3,php-fpm方式工作时,必须为每个站点设置一个独立的池,用不同的用户来运行
4,每个服务用独立的用户执行,比如:
WEB服务运行帐户为www
MySQL服务运行帐户为mysql
Memcached用户为memcache
Redis运行帐户为redis
三,站点安全
1,禁止长期放置phpinfo等探针,phpmyadmin等管理程序,需要的时候放置,用完后移走到非站点目录。
2,禁止在在运行的站点内放置测试程序,备份目录如bak,old文件夹一律移走到非站点目录。
3,禁止放置install文件夹,以及upgrade xconvert 相关升级和转换文件。
4,禁止目录下出现编辑器编辑后自动生成的备份文件,比如使用vim后留下的.swp ,Editplus留下的.bak文件。
5,打包站点得来的zip,tar.gz,tar文件,一律不能放到站点目录下。
6,除了以下目录外,其他目录设置成root权限,禁止其他用户组修改。目录是:config/、data/、uc_client/data/、uc_server/data/
7,设置禁止访问config/、data/、uc_client/data/、uc_server/data/下的php文件。 |