>  기사  >  운영 및 유지보수  >  Nginx 웹 보안 공격 및 방어 실습

Nginx 웹 보안 공격 및 방어 실습

王林
王林원래의
2023-06-10 12:11:29851검색

Nginx는 인터넷 및 기업용 애플리케이션에서 널리 사용되는 고성능 웹 서버입니다. 뛰어난 성능과 안정성을 제공하는 것 외에도 Nginx에는 몇 가지 강력한 보안 기능도 있습니다. 이번 글에서는 Nginx의 실용적인 웹 보안 공격과 방어에 대해 알아보고, 다양한 공격으로부터 웹 애플리케이션을 보호하는 방법을 소개하겠습니다.

  1. SSL/TLS 구성

SSL/TLS는 웹 애플리케이션을 보호하는 데 필수적인 암호화된 통신 프로토콜입니다. SSL/TLS를 사용하면 모든 웹 통신을 암호화하여 해커의 도난 및 변조로부터 중요한 데이터를 보호할 수 있습니다. Nginx에서 SSL/TLS를 활성화하려면 신뢰할 수 있는 인증 기관(CA)의 서명이 필요한 SSL/TLS 인증서를 설치해야 합니다. 다음은 SSL/TLS를 활성화하는 간단한 Nginx 구성입니다.

server {
    listen 443 ssl;
    server_name mywebsite.com;

    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;

    location / {
        # Your web application logic...
    }
}

위 구성에서 listen 443 ssl; 지시어는 Nginx에게 표준 443 포트를 사용하고 SSL/TLS를 활성화하도록 지시합니다. ssl_certificatessl_certificate_key 지시문은 SSL/TLS 인증서와 개인 키의 파일 경로를 지정합니다. listen 443 ssl;指令告诉Nginx使用标准的443端口并启用SSL/TLS。ssl_certificatessl_certificate_key指令指定SSL/TLS证书和私钥的文件路径。

  1. 配置HTTP2

HTTP2是一种新的网络协议,它可以提供比传统的HTTP 1.1更快的网页加载速度和更好的性能。当你使用HTTP2时,你可以同时从服务器上获取多个文件或资源,并且可以使用二进制而不是文本格式,从而使得通信更快。同时,HTTP2还提供了更好的安全性,例如服务器推送,就可以一次性将多个文件传输到客户端,从而减少了往返时间。要在Nginx中启用HTTP2,您可以使用以下配置:

server {
    listen 443 ssl http2;
    server_name mywebsite.com;

    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;

    location / {
        # Your web application logic...
    }
}

在以上配置中,我们在listen指令中将http2选项添加到ssl选项后面,以启用HTTP2。

  1. 防止SQL注入

SQL注入是一种非常流行的攻击方式,黑客可以通过注入恶意代码来访问数据库,窃取敏感信息或破坏数据完整性。在Nginx中,您可以通过使用以下配置来防止SQL注入攻击:

location / {
    # Your web application logic...

    # Block SQL injection attacks
    if ($args ~ "(<|%3C).*script.*(>|%3E)" ) {
        return 403;
    }
}

在以上配置中,我们使用了一个正则表达式来检查请求的参数中是否包含脚本。如果是因为有了脚本,就会返回一个403错误,从而拒绝请求。

  1. 防止跨站点请求伪造(CSRF)

跨站点请求伪造(CSRF)是一种非常常见的攻击方式,黑客可以通过欺骗用户在他们不知情的情况下执行恶意操作。为了防止CSRF攻击,您可以在Nginx配置中添加以下代码:

location / {
    # Your web application logic...

    # Block CSRF attacks
    if ($http_referer !~ "^https?://mywebsite.com") {
        return 403;
    }
}

在以上配置中,我们使用了一个正则表达式来检查请求的Referer标头是否与我们自己的网站域名匹配。如果不匹配,就会返回一个403错误,从而拒绝请求。

  1. 防止DDoS攻击

分布式拒绝服务(DDoS)攻击是一种非常流行的攻击方式,黑客会使用大量的计算资源来模拟大量的网络流量,从而使目标Web服务器宕机。在Nginx中,您可以通过以下配置来防止DDoS攻击:

http {
    # Define blacklist zone
    geo $blacklist {
        default 0;
        # Add IP address to blacklist if over 100 connections per IP
        # in the last 10 seconds
        limit_conn_zone $binary_remote_addr zone=blacklist:10m;
        limit_conn blacklist 100;
    }
 
    server {
        listen 80 default_server;
        server_name mywebsite.com;

        # Add IP addresses to whitelist
        allow 192.168.1.1/24;
        deny all;

        # Block blacklisted IP addresses
        if ($blacklist = 1) {
            return 403;
        }

        location / {
            # Your web application logic...
        }
    }
}

在以上配置中,我们使用了Nginx的limit_conn_zonelimit_conn模块来限制每个IP地址的同时连接数。我们也添加了一个白名单,允许特定的IP地址范围,只有在IP地址不在白名单中并且超过连接限制时才会禁止访问。

总结

Nginx有很多强大的Web安全特性,您可以使用它们来保护自己的Web应用程序免受各种攻击。在本文中,我们介绍了以下几个重要的安全措施:

  • 配置SSL/TLS证书,加密通信数据。
  • 配置HTTP2协议,提高网页加载速度和性能。
  • 防止SQL注入,通过检测请求参数中的脚本来防止攻击。
  • 防止CSRF攻击,通过检查请求中的Referer标头来拒绝非法请求。
  • 防止DDoS攻击,使用limit_conn_zonelimit_conn
    1. HTTP2 구성

    HTTP2는 기존 HTTP 1.1보다 더 빠른 웹 페이지 로딩 속도와 더 나은 성능을 제공할 수 있는 새로운 네트워크 프로토콜입니다. HTTP2를 사용하면 서버에서 동시에 여러 파일이나 리소스를 가져올 수 있으며 텍스트 형식 대신 바이너리를 사용할 수 있어 통신이 더 빨라집니다. 동시에 HTTP2는 여러 파일을 클라이언트에 동시에 전송할 수 있는 서버 푸시와 같은 향상된 보안을 제공하므로 왕복 시간이 단축됩니다. Nginx에서 HTTP2를 활성화하려면 다음 구성을 사용할 수 있습니다: 🎜rrreee🎜 위 구성에서는 listen 지시문의 sslhttp2 옵션을 추가했습니다. /code> 옵션을 사용하여 HTTP2를 활성화합니다. 🎜
      🎜SQL 주입 방지🎜🎜🎜SQL 주입은 해커가 악성 코드를 주입하여 데이터베이스에 액세스하거나, 중요한 정보를 도용하거나, 데이터 무결성을 파괴할 수 있는 매우 널리 사용되는 공격 방법입니다. Nginx에서는 다음 구성을 사용하여 SQL 주입 공격을 방지할 수 있습니다. 🎜rrreee🎜 위 구성에서는 정규식을 사용하여 요청 매개변수에 스크립트가 포함되어 있는지 확인했습니다. 스크립트 때문인 경우 403 오류가 반환되고 요청이 거부됩니다. 🎜
        🎜CSRF(교차 사이트 요청 위조) 방지 🎜🎜🎜교차 사이트 요청 위조(CSRF)는 해커가 사용자를 속여 사용자 모르게 수행할 수 있는 매우 일반적인 공격 방법입니다. CSRF 공격을 방지하려면 Nginx 구성에 다음 코드를 추가할 수 있습니다. 🎜rrreee🎜 위 구성에서는 정규식을 사용하여 요청의 Referer 헤더가 우리 웹사이트와 일치하는지 확인했습니다. 도메인 이름이 일치합니다. 일치하는 항목이 없으면 403 오류가 반환되고 요청이 거부됩니다. 🎜
          🎜DDoS 공격 방지🎜🎜🎜DDoS(분산 서비스 거부) 공격은 매우 널리 사용되는 공격 방법입니다. 해커는 대량의 네트워크 트래픽을 시뮬레이션하기 위해 많은 양의 컴퓨팅 리소스를 사용합니다. 만들기 대상 웹 서버가 다운되었습니다. Nginx에서는 다음 구성으로 DDoS 공격을 방지할 수 있습니다. 🎜rrreee🎜 위 구성에서는 Nginx의 limit_conn_zonelimit_conn 모듈을 사용하여 각 IP 수를 제한했습니다. 주소에 동시 연결. 또한 특정 IP 주소 범위를 허용하고 IP 주소가 화이트리스트에 없고 연결 제한을 초과하는 경우에만 액세스를 차단하는 화이트리스트를 추가했습니다. 🎜🎜요약🎜🎜Nginx에는 다양한 공격으로부터 웹 애플리케이션을 보호하는 데 사용할 수 있는 강력한 웹 보안 기능이 많이 있습니다. 이 글에서는 다음과 같은 중요한 보안 조치를 소개합니다: 🎜
      🎜SSL/TLS 인증서를 구성하고 통신 데이터를 암호화합니다. 🎜🎜웹페이지 로딩 속도와 성능을 향상하려면 HTTP2 프로토콜을 구성하세요. 🎜🎜SQL 주입을 방지하고 요청 매개변수에서 스크립트를 감지하여 공격을 방지합니다. 🎜🎜불법 요청을 거부하려면 요청의 Referer 헤더를 확인하여 CSRF 공격을 방지하세요. 🎜🎜DDoS 공격을 방지하고 limit_conn_zonelimit_conn 모듈을 사용하여 IP 주소당 동시 연결 수를 제한하고 화이트리스트를 사용하여 특정 IP 주소에 대한 액세스를 허용합니다. 🎜🎜🎜위에 언급된 보안 조치를 사용하면 웹 애플리케이션의 보안을 보호하고 다양한 공격으로부터 보호할 수 있습니다. 🎜

    위 내용은 Nginx 웹 보안 공격 및 방어 실습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.