找回密码
 立即注册
搜索
查看: 938|回复: 2

[其它] PHP站点日常防护:系统、nginx、PHP、mysql

  [复制链接]
发表于 2023-3-8 16:17 | 显示全部楼层 |阅读模式

PHP安全加固:

1、防跨目录设置:
     在网站根目录建立 .user.ini文件:open_basedir=/www/wwwroot/ip110.net/:/tmp/

2、网站目录权限去掉写权限,可以设置为555

3、必选:
   利用nginx对站点非运行php目录进行屏蔽,防止访问上传的木马文件。
location ~* ^/(data|images|config|static|template)/.*\.php$
{
    return 444; #444 断开连接的状态码,deny all;#403依然占用带宽
}

防止以.为开头的文件的访问
location ~* ^\..*?$
{
    return 444; #444 断开连接的状态码,deny all;#403依然占用带宽
}

4、禁用PHP高危函数,以aaPanel为准。

 楼主| 发表于 2024-3-9 20:25 | 显示全部楼层

nginx防攻击

1、限制请求率:
只能发出一个请求。允许单个客户端IP地址每2秒尝试登录(相当于每分钟30个请求):
limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;#此句要写在http段不能写在server段内
server {

# ...
 location /login.html {
  limit_req zone=one;
 }
}
该 limit_req_zone 指令配置一个名为“one”的共享内存区域,用于存储指定密钥的请求状态,在本例中为客户机IP地址($binary_remote_addr)

2、限制连接数:

limit_conn_zone $binary_remote_addr zone=addr:10m;#此句要写在http段不能写在server段内
server {
# ...
 location /store/ {
  limit_conn addr 10;
# ... 
 }
}

3、关闭慢连接:

server {
 client_body_timeout 5s;
 client_header_timeout 5s;
# ...
}


4、列入IP黑名单:
location / {
    deny 123.123.123.5;
}
注:个人感觉不如加入hosts.deny或者系统防火墙
 

5、禁用所有不需要的 HTTP 方法

禁用所有不需要的 HTTP 方法,下面设置意思是只允许 GET、HEAD、POST 方法,过滤掉 DELETE 和 TRACE 等方法。

location / {
    limit_except GET HEAD POST { deny all; }
}

另一种方法是在 server 块 设置,不过这样是全局设置的,要注意评估影响

if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 444; 
}


6、 防止Host头攻击

添加一个默认server,当host头被修改匹配不到server时会跳到该默认server,该默认server直接返回403错误。

server {
       listen 80 default;
       server_name _;
       location / {
            return 403;
       }
}


7、防止图片盗链

图片或HTML盗链的意思是有人直接用你网站的图片地址来显示在他的网站上。最终的结果,你需要支付额外的宽带费用。这通常是在论坛和博客。我强烈建议您封锁,并阻止盗链行为。

location /images/ {
  valid_referers none blocked www.example.com example.com;
   if ($invalid_referer) {
     return   403;
   }
}

例如:重定向并显示指定图片。

valid_referers blocked www.example.com example.com;
if ($invalid_referer) {
    rewrite ^/images/uploads.*.(gif|jpg|jpeg|png)$ http://www.examples.com/banned.jpg last
}

 

8、配置合理响应头

为了进一步加强 Nginx web 的性能,可以添加几个不同的响应头 X-Frame-Options 可以使用 X-Frame-Options HTTP 响应头指示是否应允许浏览器在 <frame> 或 <iframe> 中呈现页面。 这样可以防止点击劫持攻击。 配置文件中添加:

add_header X-Frame-Options "SAMEORIGIN";

Strict-Transport-Security HTTP Strict Transport Security,简称为 HSTS。它允许一个 HTTPS 网站,要求浏览器总是通过 HTTPS 来访问它,同时会拒绝来自 HTTP 的请求,操作如下:

add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";

CSP Content Security Policy (CSP) 保护你的网站避免被使用如 XSS,SQL注入等手段进行攻击,操作如下:

add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always;

服务用户提供的内容时, 包含 X-Content-Type-Options: nosniff 头选项,配合 Content-Type: 头选项, 来禁用某些浏览器的 content-type 探测.

add_header X-Content-Type-Options nosniff;

X-XSS-Protection: 表示启用XSS过滤(禁用过滤为X-XSS-Protection: 0),mode=block表示若检查到XSS攻击则停止渲染页面

add_header X-XSS-Protection "1; mode=block";
 楼主| 发表于 2024-3-9 20:38 | 显示全部楼层
系统加固:
1、linux安装fail2ban、DDOS Deflate







Mysql加固:
1、必选:mysql用户名对应的host必须为localhost或者127.0.0.1;并且mysql最好设置bind=127.0.0.1防止站外连接操作mysql数据库。
2、必选:使用系统防火墙禁用掉mysql、redis、mongodb等不必要的端口,只保留一些必要的对外端口如:80, 443等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|学习笔记

GMT+8, 2024-12-21 20:34 , Processed in 0.021467 second(s), 13 queries , APCu On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表