apache/php/mysql安全配置

Mysql基本安全设置
1.设置或修改Mysql root密码:

默认安装后空密码,以mysqladmin命令设置密码:

mysqladmin -uroot password "password"

Mysql命令设置密码:

mysql> set password for [email protected]=password(‘password);

更改密码:

update mysql.user set password=password(‘password‘) where user=‘root‘;flush privileges;

2.删除默认的数据库和用户

drop database test;use mysql;delete from db;delete from user where not(host="localhost" and user="root");flush privileges;

3. 更改默认root账号名称:

update mysql.user set user="admin" where user="root";flush privileges;

4. 本地文件安全:

set-variable=local-infile=0

5. 禁止远程连接mysql,远程管理可通过phpmyadmin,编辑my.cnf在[mysqld]添加:

skip-networking

6.最小权限用户:

create database db1;grant select,insert,update,delete,create,drop privileges on database.* to [email protected] identified by ‘passwd‘;

7. 限制普通用户浏览其它数据库,编辑my.cnf在[mysqld]添加:

--skip-show-database

8.快速修复MySQL数据库
   修复数据库

mysqlcheck -A -o -r -p

修复指定的数据库

mysqlcheck -o -r database -p

9.跟据内存的大小选择MySQL的配置文件:

my-small.cnf # > my-medium.cnf # 32M - 64Mmy-large.cnf # memory = 512Mmy-huge.cnf # 1G-2G 
my-innodb-heavy-4G.cnf # 4GB 
----------------------------------------------------------------------------
 更改Apache默认网站目录

创建目录

在根目录下

1 mkdir data

2 cd data

3 mkdir website

操作步骤:

1、vi /etc/httpd/conf/httpd.conf

找到 DocumentRoot “/var/www/html” 这一段 #apache的根目录

把/var/www/html 这个目录改为/data/website

再找到 #定义apache /var/www/html这个区域

把 /var/www/html改成/data/website

这样我们就把apahce的默认路径改掉了

1 service httpd restart #重启Apache服务器

2、访问localhost的时候,会发现访问拒绝,这是为什么呢?

主要是因为你的/home/wwwroot/web1/htdocs的权限是750,apache这个用户没有权限访问,你需要更改掉权限,可以这样改

1 chmod -R 755 /data/website

然后去访问 发现正常运行了(apache的用户:apache 运行apache的组:apache)

至此,Apache默认网站目录更改成功。

然后把你的项目移到配置好的目录下即可。
---------------------------------------------------------------------------------------------------------
 Apache安全配置

1. 隐藏banner信息

ServerTokens OS  修改为:ServerTokens Prod (在出现错误页的时候不显示服务器操作系统的名称)

ServerSignature On 修改为:ServerSignature Off(不回显apache版本信息)

2. 删除默认网站及页面

删除默认的页面,防止泄露服务器信息

3. 可修改banner信息

4. 配置httpd.conf禁止目录浏览

将Options Indexes FollowSymLinks改为Options -Indexes FollowSymLinks

5. 配置httpd.conf设置默认文档

DirectoryIndex index.html

6. 合理配置apache的运行账户

为apache单独建立一个运行账户及账户组,并在httpd.conf配置

User apacheGroup apache

9. 合理控制apache运行账户对磁盘的写入,执行权限

取消apache运行账户对网站目录的写入权限,上传目录除外,其他非网站目录尽量不给权限

10. 合理控制apache运行账户对sh等的执行权限

取消掉了运行账户对sh等的执行权限后能够防止webshell通过默认的sh执行命令

11. 配置httpd.conf取消对上传目录的php执行权限

<Directory "/var/www/html/aaa">         <FilesMatch ".(php|php5)$">             Deny from all         </FilesMatch> </Directory>

12. 配置httpd.conf限制禁止访问的文件夹,例如后台目录

<Directory "/var/www/html/aaa">             Deny from all     </Directory>

13. 配置httpd.conf限制一些特殊目录的特定ip访问,如内部接口等。

<Directory "/var/www/html/aaa">         Order Deny,Allow    Deny from all    Allow from 192.168.1.111    </Directory>

14. 配置httpd.conf限制一些文件类型的访问,如txt的日志

<Files ~ ".txt$">     Order allow,deny     Deny from all </Files>

15.配置httpd.conf修改修改监听端口来防止一些内部系统被扫描

这样可以防止一些直接扫描80端口的黑客

Listen 12345

16. 关闭对.htaccess的支持

AllowOverride All改为AllowOverride None
------------------------------------------------------------------------------------------------------------------------
 php.ini的安全优化

(1) 打开php的安全模式

  php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,比如system(),

  同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件,比如/etc/passwd,

  但是默认的php.ini是没有打开安全模式的,我们把它打开:

  safe_mode = on

(2) 用户组安全

  当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同

  组的用户也能够对文件进行访问。

  建议设置为:

  safe_mode_gid = off

  如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要

  对文件进行操作的时候。

(3) 安全模式下执行程序主目录

  如果安全模式打开了,但是却是要执行某些程序的时候,可以指定要执行程序的主目录:

  safe_mode_exec_dir = D:/usr/bin

  一般情况下是不需要执行什么程序的,所以推荐不要执行系统程序目录,可以指向一个目录,

  然后把需要执行的程序拷贝过去,比如:

  safe_mode_exec_dir = D:/tmp/cmd

  但是,我更推荐不要执行任何程序,那么就可以指向我们网页目录:

  safe_mode_exec_dir = D:/usr/www

(4) 安全模式下包含文件

  如果要在安全模式下包含某些公共文件,那么就修改一下选项:

  safe_mode_include_dir = D:/usr/www/include/

  其实一般php脚本中包含文件都是在程序自己已经写好了,这个可以根据具体需要设置。

(5) 控制php脚本能访问的目录

  使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问

  不应该访问的文件,一定程度上限制了phpshell的危害,我们一般可以设置为只能访问网站目录:

  open_basedir = D:/usr/www

(6) 关闭危险函数

  如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,

  我们觉得不希望执行包括system()等在那的能够执行命令的php函数,或者能够查看php信息的

  phpinfo()等函数,那么我们就可以禁止它们:

  disable_functions = system,passthru,exec,shell_exec,popen,phpinfo

  如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作

  disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir,   rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown

  以上只是列了部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合,

  就能够抵制大部分的phpshell了。

(7) 关闭PHP版本信息在http头中的泄漏

  我们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头中:

  expose_php = Off

  比如黑客在 telnet www.12345.com 80 的时候,那么将无法看到PHP的信息。

(8) 关闭注册全局变量

  在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,

  这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭:

  register_globals = Off

  当然,如果这样设置了,那么获取对应变量的时候就要采用合理方式,比如获取GET提交的变量var,

  那么就要用$_GET[‘var’]来进行获取,这个php程序员要注意。

(9) 打开magic_quotes_gpc来防止SQL注入

  SQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷,

  所以一定要小心。php.ini中有一个设置:

  magic_quotes_gpc = Off

  这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,

  比如把 ‘ 转为 \’等,这对防止sql注射有重大作用。所以我们推荐设置为:

  magic_quotes_gpc = On

(10) 错误信息控制

  一般php在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含php脚本当

  前的路径信息或者查询的SQL语句等信息,这类信息提供给黑客后,是不安全的,所以一般服务器建议禁止错误提示:

  display_errors = Off

  如果你却是是要显示错误信息,一定要设置显示错误的级别,比如只显示警告以上的信息:

  error_reporting = E_WARNING & E_ERROR当然,我还是建议关闭错误提示。 
 详细:http://www.centoscn.com/CentOS/Intermediate/2013/1126/2147.html
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Mysql

1、连接本机MySQL

例1:连接到本机上的MYSQL。

首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符 是:mysql>。

2、连接远程MySQL

例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123

(注:u与root可以不用加空格,其它也一样)

3、修改登录密码  

MySQL默认没有密码,安装完毕增加密码的重要性是不言而喻的。

格式:mysqladmin -u用户名 -p旧密码 password 新密码  

4、启动  
 MySQL安装完成后启动文件mysql在/etc/init.d目录下,在需要启动时运行下面命令即可。  

[[email protected] init.d]# /etc/init.d/mysql start   

5、停止  

/usr/bin/mysqladmin -u root -p shutdown   

6、自动启动  

察看mysql是否在自动启动列表中  

[[email protected] local]# /sbin/chkconfig –list   

把MySQL添加到你系统的启动服务组里面去  

[[email protected] local]# /sbin/chkconfig – add mysql   

把MySQL从启动服务组里面删除。  

[[email protected] local]# /sbin/chkconfig – del mysql

7、更改MySQL目录  

MySQL默认的数据文件存储目录为/var/lib/mysql。

假如要把目录移到/home/data下需要进行下面几步:  

7.1、home目录下建立data目录  

cd /home   mkdir data   

7.2、把MySQL服务进程停掉:   

mysqladmin -u root -p shutdown   

7.3、把/var/lib/mysql整个目录移到/home/data   

mv /var/lib/mysql /home/data/   

这样就把MySQL的数据文件移动到了/home/data/mysql下  

7.4、找到my.cnf配置文件  

如果/etc/目录下没有my.cnf配置文件,请到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf)中。

命令如下:  

[[email protected] mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf   

7.5、编辑MySQL的配置文件/etc/my.cnf   

为保证MySQL能够正常工作,需要指明mysql.sock文件的产生位置。

修改socket=/var/lib/mysql/mysql.sock一行中等号右边的值为:/home/mysql/mysql.sock 。

操作如下:  

vi  my.cnf   

(用vi工具编辑my.cnf文件,找到下列数据修改之)   

# The MySQL server     [mysqld]    

port   = 3306    

#socket  = /var/lib/mysql/mysql.sock(原内容,为了更稳妥用“#”注释此行)   

socket  = /home/data/mysql/mysql.sock   (加上此行)  

7.6、修改MySQL启动脚本/etc/rc.d/init.d/mysql   

最后,需要修改MySQL启动脚本/etc/rc.d/init.d/mysql,把其中datadir=/var/lib/mysql一行中,等号右边的路径改成你现在的实际存放路径:home/data/mysql。  

[[email protected] etc]# vi /etc/rc.d/init.d/mysql   

#datadir=/var/lib/mysql    (注释此行)  

datadir=/home/data/mysql   (加上此行)  

7.7、重新启动MySQL服务  

/etc/rc.d/init.d/mysql start   

或用reboot命令重启Linux   

如果工作正常移动就成功了,否则对照前面的7步再检查一下。  

八、MySQL的常用操作  

注意:MySQL中每个命令后都要以分号;结尾。 

8.1、MySQL常用操作命令 

8.1.1、显示数据库列表:

show databases;

刚开始时才两个数据库:mysql和test。MySQL库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。

8.1.2、显示库中的数据表:

use mysql; //打开库,学过FOXBASE的一定不会陌生吧

show tables;

8.1.3、显示数据表的结构:

describe 表名;

8.1.4、建库:

create database 库名;

8.1.5、建表:

use 库名;

create table 表名 (字段设定列表);

8.1.6、删库和删表:

drop database 库名;

drop table 表名;

8.1.7、将表中记录清空:

delete from 表名;

8.1.8、显示表中的记录:

select * from 表名;

8.1.9、增加记录  

例如:增加几条相关纪录。  

mysql> insert into name values(‘‘,‘张三‘,‘男‘,‘1971-10-01‘);   

mysql> insert into name values(‘‘,‘白云‘,‘女‘,‘1972-05-20‘);   

可用select命令来验证结果。  

mysql> select * from name;   

8.1.10、修改纪录  

例如:将张三的出生年月改为1971-01-10   

mysql> update name set csny=‘1971-01-10‘ where xm=‘张三‘;   

8.1.11、删除纪录  

例如:删除张三的纪录。  

mysql> delete from name where xm=‘张三‘;   

8.2、一个建库和建表以及插入数据的实例

drop database if exists school; //如果存在SCHOOL则删除

create database school; //建立库SCHOOL

use school; //打开库SCHOOL

create table teacher //建立表TEACHER

(

id int(3) auto_increment not null primary key,

name char(10) not null,

address varchar(50) default ’深圳’,

year date

); //建表结束

//以下为插入字段

insert into teacher values(’’,’glchengang’,’深圳一中’,’1976-10-10’);

insert into teacher values(’’,’jack’,’深圳一中’,’1975-12-23’);

九 、修改数据库结构

9.1、字段操作

9.1.1、增加字段

alter table dbname add column <字段名><字段选项>

9.1.2、修改字段

alter table dbname change <旧字段名> <新字段名><选项>

9.1.3、删除字段

alter table dbname drop column <字段名>

时间: 2024-08-07 04:14:52

apache/php/mysql安全配置的相关文章

apache+php+mysql的配置

windows: 安装apache,php,mysql 遇到的各种问题: 1. test.php运行不起,发现是httpd.conf中忘加AddType application/x-httpd-php .php了: 2. 设置好配置文件,发现会报一个date函数的关于时区的警告,把php中的date.timezone加上date.timezone = Asia/Shanghai: 3. 老是报Call to undefined function openssl_get_publickey,把ph

Apache+PHP+Mysql中文配置

一.安装Apache2 1.输入sudo apt-get install apache2下载安装apache2 2.输入Y回车确认 3.安装成功 Apache安装完成后,默认的网站根目录是"/var/www/html",在终端窗口中输入"ls /var/www/html"-->回车-->在网站根目录下有一个"index.html"文件,在浏览器中输入"127.0.0.1"-->回车,就可以打开该页面. ---

Apache+php+mysql环境配置

Apache+PHP+MySQL环境搭建 标题格式 正文格式 阶段性完成格式 正文中强调格式 ————————————————————————————— 前语:本文是从我写过的doc文档迁移过来的,由于文档是好久之前写的,当时配置的时候参考过一些网上的教程,所以文档中可能会有些不必要的步骤(比如并不需要vhost的配置) .但是按照步骤来是可以成功的.文档中的所有图片都是我实际操作截的图.用的apache版本是2.2.25,php版本是5.4.25. 后话:若要对已经配置好的环境进行备份. 对于

Mac apache和MySQL的配置

快速开发的话,你可以下载XAMPP,里面有Apache和MySQL,安装好点击start就可以开始了. 下载地址:https://www.apachefriends.org/zh_cn/download.html apache的位置 如果不想使用集成工具自己尝试安装和配置的话, mac下是自带Apache的,系统默认是隐藏的,你可以打开terminal输入 open /etc/ 就找到apache2了,里面有关于apache的配置文件如httpd.conf 查找项目存放路径 打开apache2文

Linux Apache php MySQL 安装配置(Centos 6.4 yum安装)

一.yum准备 1.Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器. 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载.安装. 2.在安装软件时报’Couldn't resolve host 'mirrorlist.centos.org‘ 解决:打开文件/etc/resolv.conf在其中添加: (添

windows下apache+php+mysql 环境配置方法

一 准备 1 下载apache http://httpd.apache.org/download.cgi#apache24 httpd-2.2.22-win32-x86-openssl-0.9.8t.msi openssl表示带有openssl模块,利用openssl可给Apache配置SSL安全链接 2 下载php http://windows.php.net/downloads/releases/archives/ php-5.3.5-Win32-VC6-x86.zip 下载vc6版本 VC

os mac apache+php+mysql环境配置

1.启用系统自带的apache 服务 打开终端(terminal) #sudo apachectl start #sudo vi /etc/apache2/httpd.conf 修改 LoadModule php5_module libexec/apache2/libphp5.so //开启php /*****如果访问403****/ <Directory /> AllowOverride none Order allow,deny Allow from all #   Require all

LINUX下Apache PHP MySQL的配置与使用

安装环境: Deepin:2014.3桌面版 使用LAMP集成包安装,安装命令:sudo apt-get install lamp^ 安装包安装的是apache2+PHP5+MySQL5 如需安装phpMyAdmin,使用命令 sudo apt-get install phpmyadmin 1.关于apache的安装目录 参考连接:http://blog.csdn.net/yusiguyuan/article/details/9566437 2.关于apache的配置问题 2.1:修改监听端口

关于window7下的apache+php+mysql的配置

首先进入apache官网http://httpd.apache.org/download.cgi 选择要下载的版本点击Other files点击binaries/选择win32/ 就可以下载到msi的文件了,openssl表示可以使用https协议,no表示不可以