服务器搭建手册标准版之服务器安全手册
提纲
- UNIX内核安全。……………………………………………………………………………
- UNIX 系统安全。…………………………………………………………………………..
- WEBMIN服务器安全。…………………………………………………………………….
- APACHE服务器安全。………………………………………………………………………
- PHP开发语言安全。…………………………………………………………………………
- MYSQL服务器安全。……………………………………………………………………….
- PHPMYADMIN安全。……………………………………………………………………….
- PURE-FTP服务器安全。…………………………………………………………………….
- PUREFTP MANAGER安全。…………………………………………………………………
- MAIL服务器安全。…………………………………………………………………………..
- DNS服务器安全。……………………………………………………………………….
- LOG日志服务器安全。………………………………………………………………….
- SQUID缓存服务器安全。……………………………………………………………….
- CVS服务器安全。………………………………………………………………………..
- UNIX内核安全
- 定制内核
- 编译内核。
- UNIX系统安全
- 启用IPFW防火墙.
- 编辑防火墙规则.
三WEBMIN服务器安全.
- 启用ssl登陆
四、APACHE服务器安全.
1、 修改httpd.conf 文件,作如下修改。
#禁止浏览目录及文件
Options -Indexes FollowSymLinks
2、#禁止返回APACHE版本及模块信息。
ServerTokens Prod
#显示apache版本信息、主机名称、端口、支持的cgi等信息
ServerSignature Email
3、禁止某个IP段的用户访问APACHE服务器,例如:202.202.202.xx
在<Directory “/usr/local/www/apache22/data”>
</Directory>之间加入下面信息:
order deny,allow
deny from 202.202.202.0/24
4、使得apache对客户端进行域名验证
可以在httpd.conf里面设置:
HostnameLookups on|off|double
如果出于安全,可以设成
HostnameLookups double
如果出于访问速度,可以设成
HostnameLookups off
5、安装openssl
6、给某些目录增加目录安全验证
在某些目录下面编辑与增加.htpasswd验证文件.
7、增加错误页跳转文件
ErrorDocument 404 /error.php
Error.php的内容如下:
<?php
$url=”http://www.ding9.com”;
header(“Location:$url”);
?>
8、通过.htaccess 来防止网站盗链。
#在网站根目录下vi .htaccess 内容如下:
SetEnvIfNoCase Referer ” “^http://www\.ding9\.com/ ” local_ref=1
<FilesMatch “\.(jpg|zip|rar|gif|bmp|torrent|mp3|mpg|rm|ra|mov)”>
Order Allow,Deny
Allow from env=local_ref
Allow from 127.0.0.1
</FilesMatch>
9、调节TCP发送和接受空间(TCP send and receive spaces)
sysctl -w net.inet.tcp.sendspace=32768
sysctl -w net.inet.tcp.recvspace=32768
10、调整套接口序列防止SYN攻击
sysctl -w kern.ipc.somaxconn=1024
11、调整Redirects参数
sysctl -w net.inet.icmp.drop_redirect=1
sysctl -w net.inet.icmp.log_redirect=1
sysctl -w net.inet.ip.redirect=0
sysctl -w net.inet6.ip6.redirect=0
12、调整ARP清理设置
sysctl -w net.link.ether.inet.max_age=1200
13、调整源路由的设置
sysctl -w net.inet.ip.sourceroute=0
sysctl -w net.inet.ip.accept_sourceroute=0
14、调整广播ECHO响应
sysctl -w net.inet.icmp.bmcastecho=0
15、针对其他广播探测的调整
sysctl -w net.inet.icmp.maskrepl=0
16、指定运行Apache服务的用户和组
17、控制PHP脚本只能访问指定目录
在httpd.conf添加如下内容:
php_admin_value open_basedir /usr/www
后面的路径是你需要PHP脚本能够访问的目录,如果PHP脚本想要访问其他目录将出项错误提示。
五、PHP开发语言安全
1、安装最新最新版本的PHP或者安装安全的正式版本。
2、针对php.ini 作修改
file_uploads=Off
register_globals = Off
safe_mode = On
magic_quotes_gpc = On
safe_mode_gid = off
allow_url_open = off
3、失效一些有安全隐患的函数
disable_functions = passthru, exec, system, phpinfo, \
popen, chroot ,scandir ,chgrp , chown ,escapeshellcmd, escapeshellarg, \
shell_exec ,proc_open,proc_get_status
4、PHP的所有警告及错误信息记录到一个日志文件
error_reporting = E_ALL
display_errors = Off
log_errors = On
error_log = /usr/local/apache/logs/php_error.log
5、失效一些有安全隐患的类
disable_classes =
6、PHP脚本用phpencode进行加密,避免由于copy操作泄漏源码。
7、严格配置文件和目录的权限,只允许上传的目录能够让nobody用户可写。
对于上传目录去掉PHP解释功能,可以通过修改httpd.conf实现:
php_flag engine off
#如果是php3换成php3_engine off
重启apache,upload目录的php文件就不能被apache解释,即使上传php文件也没有问题,只能直接显示源码。
8、用open_basedir对脚本操作路径进行限制.
open_basedir =
六、MYSQL数据库安全
1、给所有数据库账户设置复杂密码。
2、对账户的权限划分清楚。
3、不要作为Unix的root用户运行MySQL守护进程.
4、更加不要以mysql的ROOT用户来运行mysql守护进程。
5、确保运行mysqld的Unix用户是唯一的在数据库目录下有读/写权限的用户。
6、不要把process权限给所有用户。
7、不要把file权限给所有的用户。
8、授主机访问权限时,尽量授于IP,并且非常小心地使用包含通配符的主机名。
9、严格管理MySQL授权表, 确保访问服务器管理的数据库内容,必需是有效的用户名和口令。
10、保证数据目录访问的安全. 设置所有在数据目录下的文件属主为由用于运行服务器的账号拥有(你必须以root执行这步)
11、mysql绑定内网IP,只允许本地连接MySQL,启动MySQL时网络连接被禁止掉.
12、MySQL运行在一个独立的(Chroot)环境下
13、删除test数据库。
14、关闭远程连接。
编辑/etc/my.cnf文件中的[mysqld]部分,去掉#skip-networking前面的“#”即可。
15、禁止MySQL导入本地文件。
编辑/etc/my.cnf文件的[mysqld]部分加入下面语句:
set-variable=local-infile=0
16、删除历史命令记录
这些历史文件包括~/.bash_history、~/.mysql_history等。因为这些文件有一些明文的密码在里面。
#cat /dev/null > ~/.bash_history
#cat /dev/null > ~/.mysql_history
17、安全模式下执行程序主目录
safe_mode_exec_dir = /usr/www
18、关闭PHP版本信息在http头中的泄漏。
expose_php = Off
19、数据库文件安全
#chown -R mysql.mysql /usr/local/mysql/var
# chmod -R go-rwx /usr/local/mysql/var
七、PHPMYADMIN安全
1、给phpmyadmin 目录改名,改为dbadmin
2、给phpmyadmin目录增加目录访问验证。
在PHPMYAMDIN目录下编辑.httpaccess 验证文件。
3、基于主机的访问是通过验证用户机器IP来实现的,即只有符合条件的IP才可以反问该目录,否则拒绝访问。
修改 .htaccess 文件如下:
AuthName “用户验证”
AuthType Basic
AuthUserFile //usr/local/www/apach22/data/dbadmin/.htpasswd
require user ding9
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx可为数据库存管理员IP,这样就只允许数据管理员访问dbadmin目录啦。
八、PURE-FTP服务器安全
- 禁止匿名用户访问。
- 允许本地用户登陆
- 只允许系统中的ftp用户或者某些指定的用户访问ftp,因为系统中帐户众多,不可能让谁都访问。
- 把本地用户锁定在自己的主目录。
- 隐藏文件真实的所有用户和组信息,防止黑客拿下ftp后查看更多系统用户信息:
- 取消ls -R命令,节省资源,因为使用该命令,在文件列表很多的时候将浪费大量系统资源
- 上传文件的默认权限,设置为022:
- ftp的banner信息,为了防止黑客获取更多服务器的信息,设置该项。
- 打开日志记录功能,方便监控用户上传与下载过程。
10、将ftp绑定内网IP,只允许内网IP用户访问。但对外公布的FTP不适用。
九、PUREFTP MANAGER安全。
- 将PUREFTPMANAGER改名,改名为ftpamdin
- 给PUREFTPMANAGER目录增加安全验证。
十、MAIL服务器安全
- 给邮件系统增加反垃圾邮件功能。
- 给邮件系统增加防病毒邮件功能。
- 禁止邮服的邮件转向功能。
- 使用postfix本身规则拒收垃圾邮件:
- 使用头信息过滤邮件。
- 通过阻止IP地址或主机名方式访问邮件服务器来拒收邮件。
- 管理好RELAY控制。
- 隐藏邮件服务器IP地址。
- 防范DDOS攻击。
十一、DNS服务器安全。
1,首先应该隔离BIND服务器,不应该在DNS服务器上跑其他服务,尤其是允许普通用户
登陆。减少其它的服务可以缩小被攻击的可能性,比如混合攻击。
2,双DNS服务器,第二个(secondary DNS)应该安装在另外一个网络连接上,(不走同
一个ISP等)。如果你的DNS服务器因为某种原因断线,至少还有一个缓冲。这样一来比如EMAIL等都不会丢失。一般可以维持四天。
3,使用最新版本的BIND!(比如 8.2.3 或者 9.1.2)
4,权限管理(Access Control),限制 zone transfer 的范围,不给攻击者得到局
域网的信息。可以使用传递签名(transaction signatures)等。
5,用最低的权限执行BIND,即非root用户和严格的umask设置
6,使用chroot对执行BIND时添加更多的隔离,这样BIND对系统和其他服务带来修改和
破坏会更困难。
7,虽然有些人不相信隐蔽BIND的序列号对安全有什么特别的好处,可以有效的阻止大
多数script kiddie的扫描。对于专业的骇客是另外一回事。
8,BIND的纪录应该常常分析,对于不寻常的记录可以使用内设的checker。
9,对BIND(还有其它应用服务)进行安全增强配置的基础上,安全管理
员仍然需要密切关注最新的安全公告、安全补丁和安全技术,经常与专业的计算机安全
专家交流知识和经验。
十二、LOG日志服务器安全
- 给后台日志分析查看页增加访问认证。
- 网络访问日志只允许特定的用户与用户组访问。
- 日志分析软件只允许许特定的用户与用户组运行。
十三、squid缓存服务器安全
1、加载ACL禁用no-cache指令。
十四、CVS服务器安全.
略。
以下文章点击率最高
Loading…