服务器搭建手册标准版之服务器安全手册

服务器搭建手册标准版之服务器安全手册

 

提纲

  • 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…

发表评论