LAMP架构(下)

一、配置防盗链

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

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

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

五、访问控制 – user_agent

六、PHP相关配置

七、PHP动态扩展模块

 

一、配置防盗链

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

配置文件增加如下内容

  <Directory /data/wwwroot/111.com>

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

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

        #SetEnvIfNoCase Referer "^$" local_ref

        <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif|png)">

            Order Allow,Deny

            Allow from env=local_ref

        </filesmatch>

    </Directory>

 

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

e3830d295993e1df7e6e24e3b445f4e95b3.jpg

 

重新加载配置文件

8662ce1aad6e90e4c9e14d23b5165d050c7.jpg

使用web访问

0c1bf9da56aa06e46534c1c1e6d84010716.jpg

 

 

 

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

 

8d4de6e61868a239be7972136cde4f97e0f.jpg

cdaa60b2659b1102c4ad2a21cdad52fba8c.jpg

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

4ec8ba1f725524494447d723ad8f47447bc.jpg

 

重新加载配置文件

74526baaa0e035cad2046f5037e32b6e30a.jpg

 

重新访问,显示正常

de18950446bcbebb444b84b019a13ac9c94.jpg

 

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

0c406144077faeefb8f5409aeffe7ae5f8e.jpg

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

109f0cba7c0342e9cccae4847c2cd55f964.jpg

 

重新加载配置文件

df91254f58ca8c58c12ec1214272e50c945.jpg

 

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

957534f8befc9025f0dd2821493fcce9b8f.jpg

 

 

d5607293967bca608cd5bbd2efc136589c0.jpg

 

 

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

核心配置文件内容

  <Directory /data/wwwroot/111.com/admin/>

        Order deny,allow

        Deny from all

        Allow from 127.0.0.1

    </Directory>

 

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

6fea18e3229a8d1ba2aa1a6065781f41c24.jpg

 

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

5b530faccf317480f2355cb76a86e181bed.jpg

 

指定源IP访问

30ab6d6674b5c2e1f94870cd6980fef0395.jpg

 

查看日志

77a419b2312bced21abdf9c116ca20b7bc5.jpg

 

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

d5daca16fa2ea59e079a3cfb806d67dcb53.jpg

 

 

 

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

核心配置文件内容

<Directory /data/wwwroot/www.123.com>

    <FilesMatch  "admin.php(.*)">

        Order deny,allow

        Deny from all

        Allow from 127.0.0.1

    </FilesMatch>

</Directory>

 

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

039160cba4a57841ee2608d627d4d34a44e.jpg

 

 

重新加载配置文件

f8ca6707cf9d353a818f935fb1192d30670.jpg

 

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

1eb8f71ffc3e51eaa7346dae2a7eecc4373.jpg

 

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

4ba3ee2ccf4922624023068b5e38cb4e105.jpg

 

 

 

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

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

 

 

核心配置文件内容

    <Directory /data/wwwroot/www.123.com/upload>

        php_admin_flag engine off

        <FilesMatch (.*)\.php(.*)>

        Order deny,allow

        Deny from all

        </FilesMatch>

    </Directory>

 

 

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

616d000110277641c1d5eeca42e96d36b52.jpg

 

重新加载配置文件

dc98a77fb1326e68d862292b77e241a5fe3.jpg

 

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

dc98a77fb1326e68d862292b77e241a5fe3.jpg

 

测试,显示403

723a683b9c04e94589b58ec09c004a15e12.jpg

 

 

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

02ad0158801b199b2e8a4bc67560a235662.jpg

 

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

609cb7d694bda3f9a1a7b28d7b8b3c7aecc.jpg

 

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

43638d94145c1c90f3954419d65b097b549.jpg

 

 

 

 

五、访问控制 – user_agent

user_agent可以理解为浏览器标识

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

 

核心配置文件内容

   <IfModule mod_rewrite.c>

        RewriteEngine on

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

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

        RewriteRule  .*  -  [F]

    </IfModule>

 

 

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

93d560c4a3e73e8e7d3825ef775b39e4f8c.jpg

 

重新加载配置文件

92f3628ff11ff2b4aae73424109798b2e27.jpg

 

测试,显示403

76887a55e14971e72c3383ac256d1566303.jpg

 

查看日志

475a870286f3791b997d2d0e14bbba0b66c.jpg

 

自定义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

2ce081b1e01758f6c2cc539cd0eb6d90e82.jpg

 

查看日志

02d050de5ac17e18591ef4a058cee0578e7.jpg

 

总结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的详细信息

c257b5893f9602836d41461d3b555c784ef.jpg

 

 

复制配置文件

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

再次访问

599279a2f0ece7924f4890390b6b5ed066a.jpg

 

 

 

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,增加以下内容

9840206c9c2919d6f8d467e4c445c4fdb8f.jpg

 

加载配置文件

100a5415c0a51062a5b8cacbdf413321cfd.jpg

重新刷新页面

 

c3287eb23fc765617c9e93276b5a956693d.jpg

 

 

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

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

1a710e1cf25f20e77530206cf75cd410efe.jpg

 

搜索display_errors,修改以下内容

24f8c4731b08d2a32eac31a98db05666418.jpg

 

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

17249e7082fbd0dd0cea5f0d76c372e9493.jpg

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

090a2b243d2c48fd10e100df18f0e1ee487.jpg

 

 

需要配置错误日志

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

863eae9321d9559bcadb7af442317768a39.jpg

 

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

d602969de20e533d73821a262c2d3f4d0f0.jpg

 

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

b3b875c782ea5eb3daca81eba6eb3d3d18b.jpg

 

重新加载配置文件

4d6dd7d19fcd619138abb71c55c5744421b.jpg

 

 

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

344dc25729600fff92032fda227b0e3533d.jpg

 

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

c879311801d7d8598b95b5f4afeee7c8e18.jpg

ca0d67cc9c35957ab1a98f6ac12c646b3d6.jpg

 

查看错误日志

e886d656d1b4745e9d300ca79e857edc9ad.jpg

 

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

34f185e4bd3933a7288dadbf6595c1dee51.jpg

 

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

850a3475e014dc8e5985a0f2db6165136d8.jpg

 

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

18416f00e2e05f5389f61ffd2a0902797f5.jpg

 

 

open_basedir隔离虚拟主机目录

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

02d5d6dcfcef3c7aaa84cf8777391b6e841.jpg

更正2.php的内容

163e796422f9f189645a840eff6c0884c4d.jpg

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

2c8538cacd9bbcda9b2d0ff43f4b8089f28.jpg

 

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

91fbbfc9aae896c70bb4a7038ac6a0d3a97.jpg

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

cd3d3ff8d8e375b3bebdd5c7005d5e2cc53.jpg

 

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

330c70c241d75b641d90c920d41c07f278a.jpg

 

 

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

 

 

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

33aff5aa8023eb7c7ebf51ad8ed4ce11777.jpg

 

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

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

6122ec37d5cac46c166e2ee60c8bf6ca212.jpg    

重新加载配置文件,用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文件

65a0a7d72890c58eacc4fd659801d69fc9b.jpg

 

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

 

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

87ba6937868be735f1444bc8280c8331404.jpg

 

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

make

make install

ddade37947dcff34313933d2af4de09848f.jpg

 

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

5efb5a8ae73b962aa66021dd5f657b25de1.jpg

 

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

e568e85b872b36239dea4147c7558a6b3c3.jpg

 

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

d9fef808ba637311e042a0f0b88c73d49af.jpg

 

重新查询已加载redis模块

8fe2c98bdc5f89d666fe254dfa56474dab2.jpg

 

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

d2dde2d99b81eae2f61267610ee6f701ec0.jpg

 

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

d5a87f0d60fb491c3eb88759fe4a47d01f9.jpg

 

cd zip      //进入zip目录

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

0bb59148c1f0de9de0ac7f619df1c8c186f.jpg

 

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

make

make install

ff7f4b9979bb498e396cbcbf83128a3c53d.jpg

 

 

 

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值