HƯỚNG DẪN Chặn truy cập URL trang admin WordPress trên Nginx

Thảo luận trong 'KIẾN THỨC VPS/SERVER' bắt đầu bởi quyet1990, 7/12/16.

  1. quyet1990

    quyet1990 New Member

    Tham gia ngày:
    22/10/16
    Bài viết:
    220
    Đã được thích:
    0
    Vấn đề:
    Cách tốt nhất để ngăn chặn các URL WordPress như example.com/blog/wp-login.php và example.com/blog/wp-admin/ trong nginx web-server là gì?

    Tấn công vào các trang web WordPress không phải là mới. Tuy nhiên, gần đây nhiều hãng tin báo cáo rằng có một cuộc tấn công brute force khá lớn xảy ra trên nhiều người sử dụng WordPress ở nhiều máy chủ. Những hacker tấn công brute force vào cổng quản trị của WordPress (example.com/wp-admin/), sử dụng tên người dùng "admin" và cố gắng hàng ngàn mật khẩu.

    Nginx chặn truy cập cổng quản trị WordPress
    Chỉnh sửa tập tin nginx.conf, hãy nhập:
    Mã:
     vi /etc/nginx/nginx.conf 
    Thêm đoạn mã này vào tập tin:
    Mã:
    location ~ ^/(wp-admin|wp-login\.php) {
      allow 1.2.3.4;
      deny all;
      }
    
    Nếu blog của bạn nằm trong /blog/ sub-directory, hãy thử:
    Mã:
      location ~ ^/blog/(wp-admin|wp-login\.php) {
      allow 1.2.3.4;
      deny all;
      }
    
    Thay 1.2.3.4 với địa chỉ IP tĩnh thực tế của bạn. Đây là một tập tin cấu hình mẫu
    Mã:
    upstream apachebackend  {
     server 192.168.1.10:8080 weight=6;
     server 192.168.1.11:8080 weight=5;
     server 192.168.1.12:8080 weight=5;
     server 192.168.1.13:8080 weight=5;
     #server 127.0.0.1:8080 weight=1;
    }
    
    server {
      access_log  /var/log/nginx/access.log;
      error_log  /var/log/nginx/error.log;
       index  index.html;
      listen  75.126.153.206:80 default;
      root  /usr/share/nginx/html;
      server_name aluhost.com www.aluhost.com;
    
      ## PROXY - Web
      location / {
      proxy_pass  http://apachebackend;
      proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
      proxy_redirect off;
      proxy_buffering off;
      proxy_set_header  Host  $host;
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    
      location ~ ^/(wp-admin|wp-login\.php) {
      allow 1.2.3.4;
      deny all;
      proxy_pass  http://apachebackend;
      proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
      proxy_set_header  Host  $host;
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    }
    
    Reload lại nginx để áp dụng thay đổi, nhập lệnh sau:
    Mã:
     /etc/init.d/nginx reload 
    Kiểm tra
    Ghé thăm địa chỉ blog của bạn như http://www.aluhost.com/cms/wp-login.php hoặc http://bash.aluhost.com/wp-admin/
    Ví dụ kết quả đầu ra:
    [​IMG]
    Các đề nghị khác
    Đầu tiên, thiết lập chứng chỉ SSL trên nginx. Chỉnh sửa tập tin wp-config.php và thêm chỉ thị sau đây:
    Mã:
     define('FORCE_SSL_ADMIN', true); 
    Lưu lại và đóng tập tin. Tùy chọn FORCE_SSL_ADMIN sẽ giúp WordPress đảm bảo thông tin đăng nhập và khu vực admin , cả mật khẩu và cookie không bao giờ được gửi trong http. Sử dụng lệnh curl để xem http headers, hãy nhập
    Mã:
     curl -I http://www. aluhost.com /cms/wp-admin/ 
    Ví dụ kết quả đầu ra:
    Mã:
    HTTP/1.1 302 Found
    Server: nginx
    Date: Sun, 14 Apr 2013 09:01:44 GMT
    Content-Type: text/html
    Connection: keep-alive
    Keep-Alive: timeout=60
    Vary: Cookie
    Expires: Wed, 11 Jan 1984 05:00:00 GMT
    Cache-Control: no-cache, must-revalidate, max-age=0
    Pragma: no-cache
    Location: https://www.aluhost.com/cms/wp-admin/
    
    Tôi cũng đề nghị bạn thêm các quy tắc tường lửa sau đây đến phần SSL:
    Mã:
    ## Open port 443 to you only ##
    ## Allow your home/office static IP 1.2.3.4 at port 443
    /sbin/iptables -A INPUT -s 1.2.3.4  -m state --state NEW -p tcp --dport 443 --destination YOUR-Web-Server-SSL-IP-HERE -j ACCEPT
    
    ## Make sure  you DROP the rest of the world for 75.126.153.203 for TCP port 443 ###
    ##/sbin/iptables -A INPUT -s 0/0  -m state --state NEW -p tcp --dport 443 --destination YOUR-Web-Server-SSL-IP-HERE -j DROP
    
     

Chia sẻ trang này

Đang tải...