服务器安全配置参考
来源:互联网 发布:长铗归来乎 食无鱼 编辑:程序博客网 时间:2024/06/09 01:17
2.1) Apache Tomcat
- 删除Tomcat的Manager控制台软件
删除{Tomcat安装目录}\webapps\manager文件夹
如无法做到删除,参考以下步骤检查弱口令:
操作目的检查Tomcat弱口令
检查方法
打开Tomcat_home\conf\tomcat-users.xml,查看设置的用户密码及角色,例如:
<role rolename="manager"/>
<user username="tomcat" password="复杂的密码" roles="manager"/>
加固方法
在tomcat-users.xml中为用户设置复杂的密码
- 设置SHUTDOWN字符串
操作目的
防止恶意用户telnet到8005端口后,发送SHUTDOWN命令停止Tomcat服务
检查方法
打开Tomcat_home\conf\server.xml,查看是否设置了复杂的字符串
<Server port="8005" shutdown="复杂的字符串">
加固方法
设置复杂的字符串,防止恶意用户猜测到
- 设置Tomcat运行身份
操作目的
以Tomcat用户运行服务,增强安全性
检查方法
查看Tomcat的启动脚本或服务,是否以Tomcat身份运行
加固方法
Unix系统:
(1) 创建apache组:groupadd tomcat
(2) 创建apache用户并加入apache组:useradd tomcat –g tomcat
(3) 以tomcat身份启动服务
- 禁止目录遍历
操作目的
防止直接访问目录时由于找不到默认主页而列出目录下文件
检查方法
打开Tomcat_home\conf\web.xml,查看listings是否设置为false
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
加固方法
将listings的值修改为false
- 限制IP或主机名访问
操作目的
对敏感目录的访问IP或主机名进行限制
检查方法
打开Tomcat_home\conf\Catalina\localhost\manager.xml
查看是否设置有IP或主机名限制
加固方法
修改Tomcat_home\conf\Catalina\localhost\manager.xml,在Context标签中加入
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192.168.1.*" />
或者
<Valve className="org.apache.catalina.valves.RemoteHostValve"
allow="*.localdomain.com" />
- 开启访问日志
操作目的
检查Tomcat是否记录了错误信息和访问信息
检查方法
Tomcat的日志信息默认存放在Tomcat_home\logs中,访问日志默认未开启
加固方法
如果Tomcat独立运行(未与Apache整合),可以选择开启访问日志,修改Tomcat_home\conf\server.xml,取消注释:
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
启用access_log后,重启tomcat,在Tomcat_home\logs中可以看到访问日志
注:这里记录的时间转换为北京时间需要+8小时
- 自定义错误信息
操作目的
自定义Tomcat返回的错误信息
检查方法
查看Tomcat_home\webapps\APP_NAME\WEB-INF\web.xml中<error-page> </error-page> 部分的设置
加固方法
修改Tomcat_home\webapps\APP_NAME\WEB-INF\web.xml
在最后</web-app>一行之前加入以下内容
(1)表示出现404未找到网页的错误时显示notfound.html页面
<error-page>
<error-code>404</error-code>
<location>/nofound.html</location>
</error-page>
(2)表示出现java.lang.NullPointerException错误时显示error.jsp页面
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/ error.jsp</location>
</error-page>
2.2) Apache Http Server
- 端口配置
对外服务http使用80端口,SSL使用443端口;且只允许80运行http访问,其他服务严禁运行在80端口;使用其他端口需要提出申请,经过本部门和安全管理部门同意后方可使用。 - 目录禁止配置为可浏览,关闭服务器端SSI包含
Options -Indexes -Includes - 配置覆盖控制
将AllowOverride设置为None
防止通过.htaccess覆盖原有安全配置 - 控制对root目录的访问
<Directory />
Options None
AllowOverride None
deny from all
</Directory>
开放指定目录:
<Directory "/var/www/html/">
Order allow,deny
allow from all
</Directory>
2.3)MySql Server
- 移除Anonymous帐号
Delete from mysql.user where user = ''; mysql缺省有一个空用户。
2.4)PHP
检查php.ini中与安全有关的配置项,并按下述建议进行配置。
1) safe_mode
启用安全模式safe_mode = On (默认Off)
2) safe_mode_gid
默认情况下,安全模式在打开文件时会做 UID 比较检查。如果想将其放宽到 GID 比较,则打开 safe_mode_gid,建议:safe_mode_gid = Off (默认Off)
3) safe_mode_include_dir
当从此目录及其子目录(目录必须在 include_path 中或者用完整路径来包含)包含文件时越过UID/GID 检查。
默认未包含任何目录。不建议对本项进行设置,如果确有需要使用或者执行shell的时候,在此设置目录,并把对应目录权限设置为不可写不可读只可执行。
4) safe_mode_exec_dir
如果 PHP 使用了安全模式,system() 和其它执行系统程序的函数将拒绝启动不在本项配置目录中的程序。
5) open_basedir
将 PHP 所能打开的文件限制在指定的目录树,包括文件本身。本配置不受安全模式打开或者关闭的影响。 当一个脚本试图用例如 fopen() 或者 gzopen() 打开一个文件时,该文件的位置将被检查——如果文件在指定的目录树之外时 PHP 将拒绝打开它。所有的符号连接都会被解析,所以不可能通过符号连接来避开此限制。
默认是允许打开所有文件,建议根据实际情况设置。
特殊值 . 指定了存放该脚本的目录将被当做基准目录。
在 Windows 中,用分号分隔目录。在任何其它系统中用冒号分隔目录。作为 Apache 模块时,父目录中的 open_basedir 路径自动被继承。
用 open_basedir 指定的限制实际上是前缀,不是目录名。即: "open_basedir = /dir/incl" 也会允许访问 "/dir/include" 和 "/dir/incls"。
如果要将访问限制在仅为指定的目录,用斜线结束路径名,例如:"open_basedir = /dir/incl/"。
6) disable_functions
强烈建议禁用的函数:exec,passthru,popen,proc_open,shell_exec,system,phpinfo,assert,get_loaded_extensions
推荐禁用的函数:chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown,readfile,file_put_contents
7) cookie只允许http方式
session.cookie_httponly = 1,使程序(js、applet)无法讲取到Cookie。
8) https secure 开启
session.cookie_secure = 1,仅适用于https,如果是http,不要设置这个选项。
2.5)Jboss Application Server
Jboss的管理界面有admin-console、web-console、jmx-console、jbossws和root-console,在缺省配置中,它们分别是使用默认密码或者不使用安全验证即可进入。
安全配置建议:为admin-console设置安全的密码;为web-console、jmx-console设置安全的密码或者将其删除;删除root-console。
具体方法如下:
1)修改密码
- 修改admin-console密码:修改%JBOSS_HOME%/server/xxx/conf/props里jmx-console-users.properties和jmx-console-roles.properties。
- 修改jmx-console密码:修改%JBOSS_HOME%/server/deploy/jmx-console.war/WEB-INF/web.xml,去掉对<security_constraint>这段的注释;jboss-web.xml,去掉对<security-domain>的注释;%JBOSS_HOME%/server/default/conf/props目录下,jmx-console-users.properties 修改admin=admin,设置用户名=设置密码;jmx-console-role.properties修改admin为上一步设置的用户名。
- 修改web-console密码: %JBOSS_HOME%/server/deploy/management/console-mgr.sar/web-console.war/WEB-INF/下,修改web.xml,去掉对<security_constraint>这段的注释;修改jboss-web.xml,取消对<security-domain>的注释;在%JBOSS_HOME%/server/deploy/management/console-mgr.sar/web-console.war/class下,修改 web-console-users.properties,admin=admin,设置用户名=设置密码;web-console-role.properties修改admin为上一步设置的用户名。
- 修改jbossws密码:在%JBOSS_HOME%/server/all/deploy/jmx-console.war/WEB-INF下修改web.xml和jboss-web.xml,去掉安全注释;修改server/xxx/conf/props里的jbossws-users.properties和jbossws-roles.properties,配置用户名、密码和角色。
2)删除不必要的管理界面
- 删除jmx-console:删除%JBOSS_HOME%/deploy/mx-console.war
- 删除web-console:删除 %JBOSS_HOME%/deploy/management/console-mgr.sar/web-console.war
- 删除jbossws-context:删除%JBOSS_HOME%/deploy/jbossws.sar/jbossws-context.war
- 删除root-console: 删除%JBOSS_HOME%/deploy/jboss-web.deployer/ROOT.war和%JBOSS_HOME%/deploy/jboss-web.deployer/context.xml
- 服务器安全配置参考
- 服务器安全配置参考
- Centos安全配置参考
- jboss安全配置参考
- WebSphere安全配置参考
- Nginx安全配置参考
- tomcat安全配置参考
- apache安全配置参考
- resin安全配置参考
- Nginx安全配置参考
- Tomcat服务器配置参考
- Tomcat服务器配置参考
- Tomcat服务器配置参考
- Tomcat服务器配置参考
- Tomcat服务器配置参考
- Tomcat服务器配置参考
- Tomcat服务器配置参考
- Tomcat服务器配置参考
- 运营商号段
- java.lang.NoClassDefFoundError: org.mortbay.ijetty.log.AndroidLog报错
- 求出用1,2,5这三个数不同个数组合的和为1000的组合个数
- HLS 测试用流地址
- Vert.x-Web的讲解和使用(一)
- 服务器安全配置参考
- 一个成熟的开发团队或开发者必备的工具系列之 Log 库
- iOS正则表达式
- flash 时钟
- 遍历Map集合的集中方法(最后一句话亮亮的)
- JS取出字符串的12种方法
- IOS中判断设备型号的宏定义
- 打开vim教程
- SPOJ QTREE7 lct