LAMP架构(下)

原文链接: https://my.oschina.net/u/3991860/blog/2980879

一、配置防盗链

二、访问控制 – Directory(目录)

三、访问控制 – FilesMatch(文件)

四、访问控制 – 禁止php解析

五、访问控制 – user_agent

六、PHP相关配置

七、PHP动态扩展模块

 

一、配置防盗链

通过限制referer来实现防盗链的功能

配置文件增加如下内容

  

        SetEnvIfNoCase Referer "http://111.com" local_ref

        SetEnvIfNoCase Referer "http://aaa.com" local_ref

        #SetEnvIfNoCase Referer "^$" local_ref

        

            Order Allow,Deny

            Allow from env=local_ref

        

    

 

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf       //进入虚拟主机配置文件,增加如下内容

LAMP架构(下)_第1张图片

 

重新加载配置文件

8662ce1aad6e90e4c9e14d23b5165d050c7.jpg

使用web访问

LAMP架构(下)_第2张图片

 

 

 

将该网站发到http://ask.apelearn.com,再访问http://111.com/baidu.png

 

LAMP架构(下)_第3张图片

LAMP架构(下)_第4张图片

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf      //进入虚拟主机配置文件,将http://ask.apelearn.com添加到白名单

LAMP架构(下)_第5张图片

 

重新加载配置文件

74526baaa0e035cad2046f5037e32b6e30a.jpg

 

重新访问,显示正常

LAMP架构(下)_第6张图片

 

直接访问http://111.com/baidu.png

LAMP架构(下)_第7张图片

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf      //进入虚拟主机配置文件,更改如下内容

LAMP架构(下)_第8张图片

 

重新加载配置文件

df91254f58ca8c58c12ec1214272e50c945.jpg

 

直接访问http://111.com/baidu.png

LAMP架构(下)_第9张图片

 

 

LAMP架构(下)_第10张图片

 

 

二、访问控制 – Directory(目录)

核心配置文件内容

  

        Order deny,allow

        Deny from all

        Allow from 127.0.0.1

    

 

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf           //进入虚拟主机配置文件,增加如下内容

LAMP架构(下)_第11张图片

 

创建admin目录,再admin目录下创建index.php文件编辑121212

5b530faccf317480f2355cb76a86e181bed.jpg

 

指定源IP访问

LAMP架构(下)_第12张图片

 

查看日志

LAMP架构(下)_第13张图片

 

curl测试状态码为403则被限制访问了

LAMP架构(下)_第14张图片

 

 

 

三、访问控制 – FilesMatch(文件)

核心配置文件内容

    

        Order deny,allow

        Deny from all

        Allow from 127.0.0.1

    

 

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf      //进入虚拟配置文件,修改如下内容

LAMP架构(下)_第15张图片

 

 

重新加载配置文件

f8ca6707cf9d353a818f935fb1192d30670.jpg

 

与配置文件不匹配,访问文件显示404,访问文件显示403表示受到限制

LAMP架构(下)_第16张图片

 

显示404表示可以正常访问,只是目标文件不存在

LAMP架构(下)_第17张图片

 

 

 

四、访问控制 – 禁止php解析

有些目录是存放静态文件的目录,如图片目录,本身不需要允许php的解析。如果允许了php解析,而且又开放了该目录的文件上传权限。很可能被别有用心的人利用上传木马,导致服务器被攻破,获取到服务器的权限,除了开发人员在程序开发过程中要注意安全的设计,也可以通过apache限制某些目录的php解析。

 

 

核心配置文件内容

    

        php_admin_flag engine off

        

        Order deny,allow

        Deny from all

        

    

 

 

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf      //进入虚拟主机编辑如下内容

LAMP架构(下)_第18张图片

 

重新加载配置文件

dc98a77fb1326e68d862292b77e241a5fe3.jpg

 

创建upload目录,并负责123.php文件到upload目录底下

dc98a77fb1326e68d862292b77e241a5fe3.jpg

 

测试,显示403

LAMP架构(下)_第19张图片

 

 

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf      //进入虚拟主机修改如下内容

LAMP架构(下)_第20张图片

 

curl测试时直接返回了php源代码,并未解析

LAMP架构(下)_第21张图片

 

使用web访问,直接显示下载

LAMP架构(下)_第22张图片

 

 

 

 

五、访问控制 – user_agent

user_agent可以理解为浏览器标识

有时候网站可能会遭受CC攻击,可以通过限制user—agent来减小攻击压力

 

核心配置文件内容

   

        RewriteEngine on

        RewriteCond %{HTTP_USER_AGENT}  .*curl.* [NC,OR]

        RewriteCond %{HTTP_USER_AGENT}  .*baidu.com.* [NC]

        RewriteRule  .*  -  [F]

    

 

 

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf      //进入虚拟主机,编辑如下内容

LAMP架构(下)_第23张图片

 

重新加载配置文件

92f3628ff11ff2b4aae73424109798b2e27.jpg

 

测试,显示403

LAMP架构(下)_第24张图片

 

查看日志

LAMP架构(下)_第25张图片

 

自定义USER_AGENT

curl -A "123123" 指定user_agent

curl -A "abc abc" -x127.0.0.1:80 'http://111.com/123.php' -I             //-A参数指定USER_AGENT

LAMP架构(下)_第26张图片

 

查看日志

LAMP架构(下)_第27张图片

 

总结curl的参数用法:

-A指定USER_AGENT

-e指定referer

-x省略添加hosts

-I只查看状态码

 

六、PHP相关配置

再/data/wwwroot/111.com目录下创建index.php文件,编辑如下内容

f07c55772bc2e3f4fd05bfcb26c0f499ff1.jpg

 

用web访问http://111.com/index.php,显示php的详细信息

LAMP架构(下)_第28张图片

 

 

复制配置文件

cd /usr/local/src/php-7.1.6   //进入源码包所在的位置

cp php.ini-development /usr/local/php7/etc/php.ini        //拷贝文件

/usr/local/apache2.4/bin/apachectl graceful            //重新加载配置文件

5bce6ae8fcb55a46020b05ae646959f49eb.jpg

再次访问

LAMP架构(下)_第29张图片

 

 

 

disable_functions    安全函数

eval,assert,popen,passthru,escapeshellarg,escapeshellcmd,passthru,exec,system,chroot,scandir,chgrp,chown,escapeshellcmd,escapeshellarg,shell_exec,proc_get_status,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,leak,popepassthru,stream_socket_server,popen,proc_open,proc_close,phpinfo

 

vim /usr/local/php7/etc/php.ini         //进入php配置文件,搜索disable_functions,增加以下内容

LAMP架构(下)_第30张图片

 

加载配置文件

100a5415c0a51062a5b8cacbdf413321cfd.jpg

重新刷新页面

 

LAMP架构(下)_第31张图片

 

 

date.timezone   定义时区,如果没定义有时会出现告警信息

vim /usr/local/php7/etc/php.ini         //进入php配置文件,搜索date.timezone,修改以下内容

LAMP架构(下)_第32张图片

 

搜索display_errors,修改以下内容

24f8c4731b08d2a32eac31a98db05666418.jpg

 

重新加载配置文件,刷新页面,无任何显示

LAMP架构(下)_第33张图片

curl访问也是无任何输出,无法判断输出是否正常

090a2b243d2c48fd10e100df18f0e1ee487.jpg

 

 

需要配置错误日志

vim /usr/local/php7/etc/php.ini      //进入php配置文件,搜索log_errors,看错误日志是否开启

863eae9321d9559bcadb7af442317768a39.jpg

 

定义错误日志路径,搜索error_log

LAMP架构(下)_第34张图片

 

定义错误日志的级别,级别高的,只记录比较严峻的错误

LAMP架构(下)_第35张图片

 

重新加载配置文件

4d6dd7d19fcd619138abb71c55c5744421b.jpg

 

 

重新访问,查看/tmp/目录下生成php_errors.log日志文件

344dc25729600fff92032fda227b0e3533d.jpg

 

错误日志是由httpd这个进程所产生的

c879311801d7d8598b95b5f4afeee7c8e18.jpg

LAMP架构(下)_第36张图片

 

查看错误日志

e886d656d1b4745e9d300ca79e857edc9ad.jpg

 

vim /data/wwwroot/111.com/2.php      //创建2.php文件,编辑如下测试

LAMP架构(下)_第37张图片

 

重新加载配置文件,访问该目录

LAMP架构(下)_第38张图片

 

cat /tmp/php_errors.log        //查看日志

LAMP架构(下)_第39张图片

 

 

open_basedir隔离虚拟主机目录

vim /usr/local/php7/etc/php.ini         //进入php配置文件,搜索opn_basedir,修改如下内容

02d5d6dcfcef3c7aaa84cf8777391b6e841.jpg

更正2.php的内容

LAMP架构(下)_第40张图片

重新加载配置文件,访问该目录,显示正常

LAMP架构(下)_第41张图片

 

vim /usr/local/php7/etc/php.ini        //进入php配置文件,将目录路径改成1111.com

LAMP架构(下)_第42张图片

重新加载配置文件,访问该目录,显示500

LAMP架构(下)_第43张图片

 

查看日志,显示500,是因为2.php并没有在允许的目录下

LAMP架构(下)_第44张图片

 

 

如果服务器有n个站点,修改php配置文件,无法做限制,php.ini是针对所有站点的。可以在虚拟主机配置文件里面做限制

 

 

vim /usr/local/php7/etc/php.ini        //进入php配置文件,删除定义的路径

LAMP架构(下)_第45张图片

 

针对不同的虚拟主机限制不同的open_basedir

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf    //修改如下内容

LAMP架构(下)_第46张图片    

重新加载配置文件,用crtl测试正常

622fed1aa5ef6391ec221c5f95f1f8d189d.jpg

 

 

七、PHP动态扩展模块

/usr/local/php/bin/php -m //查看模块

 

下面安装一个redis的模块

cd /usr/local/src/            进入下载目录

wget https://codeload.github.com/phpredis/phpredis/zip/develop  //下载源码包

mv develop phpredis-develop.zip      //重命名

提示找不到unzip命令,用 yum install -y unzip安装

2ebb3fc71fa463197e804a2d432e4e23786.jpg

unzip phpredis-develop.zip     //解压

 

cd phpredis-develop         //进入解压安装包目录

/usr/local/php7/bin/phpize //生成configure文件

LAMP架构(下)_第47张图片

 

yum install -y autoconf           //安装依赖包

 

重新执行命令/usr/local/php7/bin/phpize,生成configure文件

LAMP架构(下)_第48张图片

 

./configure --with-php-config=/usr/local/php/bin/php-config     //编译

make

make install

LAMP架构(下)_第49张图片

 

/usr/local/php7/bin/php -m |grep redis        //查询php是否加载了redis模块

5efb5a8ae73b962aa66021dd5f657b25de1.jpg

 

/usr/local/php7/bin/php -i |grep extension_dir //查看扩展模块存放目录,我们可以在php.ini中去自定义该路径

LAMP架构(下)_第50张图片

 

vim /usr/local/php7/etc/php.ini  //增加一行配置(可以放到文件最后一行)

LAMP架构(下)_第51张图片

 

重新查询已加载redis模块

8fe2c98bdc5f89d666fe254dfa56474dab2.jpg

 

cd /usr/local/src/php-7.1.6          //进入php的安装目录

LAMP架构(下)_第52张图片

 

php没有加载zip模块,现在需要编译zip模块

d5a87f0d60fb491c3eb88759fe4a47d01f9.jpg

 

cd zip      //进入zip目录

/usr/local/php7/bin/phpiz         //生成configure文件

LAMP架构(下)_第53张图片

 

./configure --with-php-config=/usr/local/php7/bin/php-config     //编译

make

make install

LAMP架构(下)_第54张图片

 

 

 

 

转载于:https://my.oschina.net/u/3991860/blog/2980879

你可能感兴趣的:(LAMP架构(下))