apache/php/mysql安全配置
1.设置或修改Mysql root密码:
默认安装后空密码,以mysqladmin命令设置密码:
mysqladmin -uroot password "password"
Mysql命令设置密码:
mysql> set password for root@localhost=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 user@localhost 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默认网站目录
然后把你的项目移到配置好的目录下即可。
---------------------------------------------------------------------------------------------------------
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的安全优化
详细: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目录下,在需要启动时运行下面命令即可。
[root@test1 init.d]# /etc/init.d/mysql start
5、停止
/usr/bin/mysqladmin -u root -p shutdown
6、自动启动
察看mysql是否在自动启动列表中
[root@test1 local]# /sbin/chkconfig –list
把MySQL添加到你系统的启动服务组里面去
[root@test1 local]# /sbin/chkconfig – add mysql
把MySQL从启动服务组里面删除。
[root@test1 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)中。
命令如下:
[root@test1 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。
[root@test1 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 <字段名>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。