Apache方面:
1、apache有两个指令可以输出服务器的细节,即ServerSignature和ServerTokens。
当这两个指令一起使用时,会输出apache的版本号,php的版本号,ip,端口等信息。很明显这样是很不安全的。
此时有两种解决办法,一:禁用ServerSignature。二:如果不能禁用,则可以将指令设置为“Prod”(这样只会显示最少的信息)。
2、在httpd.conf文件中,其DocumentRoot指令所对应的目录为公共目录,用户很容易就可访问到,这里面最好不要放重要的文件。
3、httpd.conf文件中有大量的注释语句,这些注释语句有时候回带来负面的效果,建议删除。
4、在not found错误页面一般会显示你的apache版本号,服务器操作系统名称等信息。解决办法是:
用vim编辑器打开配置文件,查找“ServerSignature”,默认情况下它是打开状态。我们需要关闭服务器签名。ServerTokens Prod告诉Apache只在每一个请求网页的服务器响应的头部,仅返回Apache产品名称。
# vim /etc/httpd/conf/httpd.conf (RHEL/CentOS/Fedora)
# vim /etc/apache/apache2.conf (Debian/Ubuntu)
ServerSignature Off
ServerTokens Prod
# service httpd restart (RHEL/CentOS/Fedora)
# service apache2 restart (Debian/Ubuntu)
5、默认情况下,输入url后apache会自动查找目标目录里面的index.php文件,如果没找到,在页面上会显示路径目录里的所有内容,这样是很不安全的。解决办法是:
修改Apache配置文件httpd.conf;找到下面这一句删除掉Indexes即可。把Options Indexes FollowSymLinks改成Options FollowSymLinks即可。
PHP方面:
与安全有关的配置参数
1、disable_functions = string,默认值:null,可以设定你希望禁用的函数,如:disable_functions = fopen,popen,file
2、disable_classes = string,默认值:null,可以禁用类
3、display_errors = On|Off,默认值:on,正常情况下在开发过程中如果有什么错误会被报错到网页上,但当网站运营时,如果继续将报错显示在网页上明显不合适,所以要将该参数设置为off
4、max_execution_time = integer,默认值:30,此参数可以指定脚本的执行秒数,可以防止用户占用过多的cpu时间(如果设置为0,则没有时间限制)
5、memory_limit = integerM,默认值:128M,此指令可以指定脚本使用的内存(此指令只有在配置PHP时启用--enable-memory-limit)
6、open_basedir = string,默认值:null,这个指令可以建立一个基目录,所有的文件操作都只能在这个目录下进行,(与apache的documentroot指令类似)。
7、user_dir = string,默认值:null,辞职岭可以设定一个目录名,php脚本必须放在这里才能执行。(例如:如果设置为demo,则用户Jon希望执行demo.php,则应该在Jon的用户目录下简历demo目录,之后再将demo.php放在该文件夹里面)。
MySql方面:
1、禁用所有不需要使用的系统服务(如你不需要用web服务器发送电子邮件,则可以禁用该服务)。
2、关闭未使用的端口。
3、mysql守护进程的一些安全选项:
--skip-networking。若启用此选项,则你的mysql数据库不接受任何远程连接(这样虽然安全,但也意味着你自己也不能远程调试你的数据库)
--skip-name-resolve。防止用户用主机名连接,只允许使用ip地址和localhost
--skip-show-database。防止没有SHOW DATABASES权限的用户使用此命令查看数据列表。
--safe-user-create。防止没有权限的用户创建新用户。