25个Ngxinx实用技巧(二)

本文介绍了如何通过Nginx配置实现IP白名单控制、访问权限管理、安全防护措施(如XSS过滤、CSP)、负载均衡、防火墙限制及内容安全策略,强调灵活配置和持续监控的重要性。

实用技巧一
13. IP 白名单

如果您的网站或应用只允许从一个或多个特定的客户端IP地址集或范围进行访问,您可以同时使用allowdeny指令,只允许这些地址访问站点或应用:

location / {
    allow 111.111.111.4;
    deny all;
}

您可以将访问限制仅限于特定本地网络上的地址。在这里,deny all指令会阻止不在allow指令指定范围内的所有客户端IP地址。

14. 阻止访问文件或位置

您可以使用Nginx完全阻止对文件或位置的访问。例如,如果您注意到register.php文件是攻击的目标,您可以完全阻止对该文件的访问:

location /register {
    deny all;
    return 444;
}

这将阻止所有试图访问此文件的请求。代码444会在不返回响应的情况下关闭连接。

15. 启用基于sysctl的保护

启用基于sysctl的保护。我们可以调整服务器上的内核和系统变量。编辑/etc/sysctl.conf文件,并将这两行设置为1,如下所示:

net.ipv4.conf.all.rp_filter = 1
net.ipv4.tcp_syncookies = 1

第一个设置启用了IP地址欺骗保护,第二个设置启用了TCP SYN cookie保护。

16. 将Nginx用作负载均衡器

当Nginx用作负载均衡器时,可以配置设置来限制每个服务器的连接数:

upstream domain {
    server 111.111.111.4:80 max_conns=100;
    server 111.111.111.5:80 max_conns=100;
    queue 20 timeout=10s;
}

在这里,max_conns指令指定Nginx可以打开到服务器的连接数。queue指令限制了在该组中的所有服务器达到连接限制时排队的请求数。最后,timeout指令指定请求在队列中可以保持多长时间。

17. 阻止特定用户代理

您可以轻松阻止用户代理,即爬虫、机器人和滥发者,这些可能在滥用您的服务器:

## 阻止下载代理 ##
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
    return 403;
}
## 阻止一些机器人 ##
if ($http_user_agent ~* msnbot|scrapbot|PxBroker) {
    return 403;
}

18. 阻止引荐垃圾信息

引荐垃圾信息是危险的。通过网络日志(如果已发布),可以通过引荐字段链接到他们的垃圾站点来损害您的SEO排名。使用以下行,您可以阻止对引荐垃圾信息的访问:

if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) )
{
    return 403;
}

19. 阻止图像盗链

图像盗链或HTML意味着有人在他们的站点上链接到您的图像,但在他们的站点上显示它。

您最终将支付带宽费用,并使内容看起来像站点的一部分。这通常在论坛和博客上完成。我强烈建议您在服务器的同一级别上阻止和停止图像盗链:

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

20. 在防火墙级别限制每个IP地址的连接数

Web服务器必须监控连接并限制每秒连接数。这为101提供了服务。无论在访问Nginx服务器之前,pf和iptables都可以阻止最终用户。

Linux Iptables:每秒节流Nginx连接。

在以下示例中,如果IP在60秒内在端口80上进行了超过15次的连接尝试,则传入连接将被丢弃:

/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set && \
/sbin/iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 15 -j DROP && \
service iptables save

21. 在某些浏览器中禁用内容类型嗅探

如果响应指定了错误的内容类型,浏览器可能会以意外的方式处理响应。

如果内容类型被确定为可呈现的基于文本的格式,则浏览器通常会尝试将响应解释为该格式,而不考虑实际响应内容。

此外,由

于特定浏览器的怪癖,某些其他指定的内容类型有时可能会被解释为HTML。这可能会导致"安全"内容(如图像)被呈现为HTML,从而在某些条件下启用了跨站脚本攻击。添加以下内容到您的配置:

add_header X-Content-Type-Options nosniff;

22. 启用跨站脚本(XSS)过滤器

将以下内容添加到您的配置文件中,以在您的Nginx Web服务器上启用X-XSS-Protection头。完成后,请保存更改并重新加载Nginx:

add_header X-XSS-Protection "1; mode=block";

23. 配置HTTP/2支持

HTTP/2是HTTP 1.x网络协议的继任者。HTTP/2广泛用于降低延迟,减少协议开销,添加请求优先级支持以及加快Web应用程序加载速度。

因此,与性能优化技术和策略保持最新状态是至关重要的。HTTP/2的主要重点是减少网页的总加载时间,从而优化性能。它还关注于使用网络和服务器资源,以及提高安全性,因为在使用HTTP/2时,SSL/TLS加密是强制性的。

作为前提条件,确保Nginx版本为1.9.5或更高,因为它是内置的。否则,您将不得不手动添加它,服务器必须启用SSL/TLS。您的HTTPS服务器块现在应该如下所示:

server {
    listen 443 ssl http2;

    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
}

24. 添加内容安全策略(CSP)

CSP是一种额外的安全层,有助于检测和缓解特定类型的攻击,包括跨站脚本(XSS)和数据注入攻击。这些攻击用于数据窃取、网站损坏和恶意软件分发:

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

25. 监控Nginx

必须始终监控服务器的状态。您可以定期向服务器发送请求来查看服务器返回的内容,例如通过第三方付费服务。或者您可以对一切进行微调,有许多方法可以实现这一点,更多详细信息可以在Nginx博客中找到。

总结

对于每种情况,都需要灵活发展配置是至关重要的。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值