Lamp下安全配置随笔

时间:2022-04-18 19:02:29

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。防止没有权限的用户创建新用户。