1、Ubuntu16.04 安装Apache服务
首先更新源,如果更新过了就不用更新了
$ sudo apt-get update
下载Apache服务
$ sudo apt-get install apache2
查看Apache服务状态
$ sudo service apache2 status
开启Apache服务:
$ sudo /etc/init.d/apache2 start
停止Apache服务
$ sudo /etc/init.d/apache2 stop
Apache服务的默认根路径在:/var/www
html页面存放在:/var/www/html
路径下
1.1 修改PHP与Apache配置文件来显示报错信息
Apache服务安装完后,默认是不会在页面上显示报错信息的
需要修改PHP和Apache的配置文件
PHP的配置文件分别是:php.ini、httpd.conf
(1)修改PHP配置文件
配置文件位于 /etc/php/7.0/apache2/php.ini 或者是 /etc/php5/apache2/php.ini ,修改内容如下
#然后这个是新加上去的
error_reporting = E_ALL | E_STRICT
#把默认的OFF改成On
display_errors = On
我这个display_errors是出现在462行,具体还是使用“/ str”来搜索
(2)修改Apache配置文件
修改 /etc/apache2/httpd.conf 文件,默认是这个文件是空的,如果没有就创建,添加内容如下
php_flag display_errors on
php_value error_reporting 2039
1.2 Apache 安装插件记录POST请求数据
我们都知道,Apache默认情况下日志只能记录GET参数,无法记录POST参数,那么我们就需要通过一些操作来记录请求体和响应体
可以通过ModSecurity
来查看POST数据
在Ubuntu上安装
sudo apt install libapache2-mod-security2
使用推荐的配置文件
#修改文件名称
sudo mv /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
然后修改 modsecurity.conf 配置文件
修改以下两行对应的值为On
SecRuleEngine On
SecAuditEngine On
重新加载,重新启动
sudo service apache2 reload
sudo service apache2 restart
然后我们就能在/var/log/apache2/modsec_audit.log
下看到请求文本和响应文本了。
参考博客:http://www.la0t0ng.top/archives/418
1.3 排查Apache日志信息是否存在SQL注入
排查GET、POST请求数据包是否存在SQL注入请求,命令如下,可以对关键字select进行修改:
#排查GET请求数据,是否存在SQL注入请求
cat /var/log/apache2/access.log |grep -a -i select
awk '{print $0}' /var/log/apache2/access.log |grep -a -i select
#排查POST请求数据,是否存在SQL注入请求
cat /var/log/apache2/modsec_audit.log |grep -a -i select
效果如下,可以看到很多带有SQL注入的数据:
2、Ubuntu安装Mysql服务
下载Mysql服务:
sudo apt-get install mysql-server
安装完后,使用root用户登录,发现使用空密码、root密码都登录不进去了,
所以这里我使用默认的debian账号、密码登录进去,然后对重置root密码(这个Debian账号、密码是Mysql安装完后自带的)
sudo cat debian.cnf
登进mysql后,使用下面的SQL语句,对mysql的root用户进行修改
use mysql
update user set authentication_string=password('akshansh') where USER='root';
FLUSH PRIVILEGES;
exit;
退出后,使用普通用户登录进去后,如果显示没有权限的话,可以在前面加个sudo
即可登录进去,
比如显示:[ERROR 1698 (28000): Access denied for user 'root'@'localhost']
如果也想普通用户也能登录进去的话,需要再次进入mysql,然后输入下面的sql语句,对配置进行修改,
修改完后退出,重启mysql服务,之后使用普通用户登进去即可
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ sudo service mysql restart
如果还不行,就使用第二种方式:
mysql> USE mysql;
mysql> CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
mysql> UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
mysql> FLUSH PRIVILEGES;
mysql> exit;
$ sudo service mysql restart
普通用户也可以使用mysql的root用户登录了
参考博客:https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost
3、PHP安装并配置Apache
安装php,安装php依赖
#安装php
sudo apt-get install php
#安装php依赖,用于Apache解析php
sudo apt-get install libapache2-mod-php php
#安装php连接Mysql插件
sudo apt-get install php-mysql
dpkg-reconfigure php5-mysql
sudo /etc/init.d/mysql restart
sudo /etc/init.d/apache2 restart
以上两条命令执行完后,就会自动安装比较新的php版本,并且配置会自动在Apache配置好php解析环境
查看了一下,/etc/apache2/apache2.conf
Apache的配置文件,看到了如下配置信息,顿时明白了
只要是/etc/apache2/mods-available
下所有带有load、conf为后缀的文件都会被加载到配置文件中去
所以只有该文件夹下存在php的配置文件即可不用做任何改动,如下所示:
参考博客连接:https://blog.csdn.net/pang040328/article/details/12143095 ,http://blog.sina.com.cn/s/blog_6b8bea470100qrdw.html