您的位置:首页 > 运维架构 > 网站架构

LAMP架构(下)

2020-02-02 22:55 801 查看

一、配置防盗链

二、访问控制 – 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       //进入虚拟主机配置文件,增加如下内容

 

重新加载配置文件

使用web访问

 

 

 

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

 

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

 

重新加载配置文件

 

重新访问,显示正常

 

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

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

 

重新加载配置文件

 

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

 

 

 

 

二、访问控制 – 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           //进入虚拟主机配置文件,增加如下内容

 

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

 

指定源IP访问

 

查看日志

 

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

 

 

 

三、访问控制 – 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      //进入虚拟配置文件,修改如下内容

 

 

重新加载配置文件

 

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

 

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

 

 

 

四、访问控制 – 禁止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      //进入虚拟主机编辑如下内容

 

重新加载配置文件

 

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

 

测试,显示403

 

 

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

 

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

 

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

 

 

 

 

五、访问控制 – 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      //进入虚拟主机,编辑如下内容

 

重新加载配置文件

 

测试,显示403

 

查看日志

 

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

 

查看日志

 

总结curl的参数用法:

-A指定USER_AGENT

-e指定referer

-x省略添加hosts

-I只查看状态码

 

六、PHP相关配置

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

 

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

 

 

复制配置文件

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

再次访问

 

 

 

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

 

加载配置文件

重新刷新页面

 

 

 

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

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

 

搜索display_errors,修改以下内容

 

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

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

 

 

需要配置错误日志

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

 

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

 

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

 

重新加载配置文件

 

 

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

 

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

 

查看错误日志

 

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

 

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

 

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

 

 

open_basedir隔离虚拟主机目录

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

更正2.php的内容

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

 

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

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

 

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

 

 

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

 

 

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

 

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

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

    

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

 

 

七、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安装

unzip phpredis-develop.zip     //解压

 

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

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

 

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

 

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

 

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

make

make install

 

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

 

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

 

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

 

重新查询已加载redis模块

 

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

 

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

 

cd zip      //进入zip目录

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

 

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

make

make install

 

 

 

 

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

  • 点赞
  • 收藏
  • 分享
  • 文章举报
chiluo7579 发布了0 篇原创文章 · 获赞 0 · 访问量 313 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: