Bài này tôi sẽ hướng dẫn các bạn block các kết nối đến trang web của bạn bằng cấu hình trên nginx rất đơn giản và hiệu quả .
Bạn muốn ngăn chặn những gì ?
Ví dụ ngăn chặn IP , ngăn chặn ăn cắp băng thông , ngăn chặn các trò Exploits, SQL Injections, File Injections của hacker ....
- Để cấu hình block cho dễ các bạn cần tạo một file tên là block.conf và đặt trong thư mục của nginx
Thư mục nginx trên ubuntu mặc định ở /etc/nginx , trên centos mặc định khi ở /usr/local/share/nginx
Và nếu bạn build nginx from source thì hãy gõ nginx -V để tìm cho đúng thư mục nhé
Bài này tôi ví dụ nginx của tôi đặt ở /usr/local/nginx và tôi đặt file block.conf ở đó
- Tiếp theo mở file vhost của ban và include file block.conf trong phần server {}
Ví dụ
- Tiếp theo để thực hiện ngặn chặn chúng ta thưc hiên thêm các rules vào file block.conf
Mở file block.conf thêm như hướng dẫn
1 . Block IP
Hoặc có lúc bạn cần block toàn bộ các IP nước ngoài và chỉ có dân việt nam vào thôi thì mình có chia sẻ cho các bạn mội list allow IP việt nam và chặn toàn bộ IP nước ngoài , danh sách này đã allow google , bing , và opera + ucweb
2 . Block user agents
Bạn cần thêm vào file block.conf nếu muốn block thêm nhiều nữa thì thêm rules nhé
3 . Block Referrer
Chẳng hạn như bạn muốn ngăn chặn các trang web ăn cắp băng thông
4 . Block spam
Chặn các loại bot hoặc spam mà query có các từ cần cấm
5 . Block SQL injections
SQL injections là Một cách mà hacker tận dụng lỗi trên trang web của bạn để hack vào cơ sở dữ liệu , rất nguy hiểm , để chặn ta dùng rules sau để block
6 . Block file injections
Một dạng tấn công injections nhưng ở đây là vào file chứ không phải mysql , rules để block
7 . Block common exploits
Exploits hay Xss mà hôm rồi có bạn report lỗi Xss trên daivietpda và tôi đã dùng rules này để block
Sau khi thêm các Rules muốn block xong vào file block.conf thì phải khởi động lại nginx để có tác dụng nhé
Chúc các bạn thành công
Bài viết có tham khảo của các trang
http://www.nginxtips.com/blocking-connections-using-nginx/
http://www.howtoforge.com/nginx-how...jections-file-injections-spam-user-agents-etc
Bạn muốn ngăn chặn những gì ?
Ví dụ ngăn chặn IP , ngăn chặn ăn cắp băng thông , ngăn chặn các trò Exploits, SQL Injections, File Injections của hacker ....
- Để cấu hình block cho dễ các bạn cần tạo một file tên là block.conf và đặt trong thư mục của nginx
Thư mục nginx trên ubuntu mặc định ở /etc/nginx , trên centos mặc định khi ở /usr/local/share/nginx
Và nếu bạn build nginx from source thì hãy gõ nginx -V để tìm cho đúng thư mục nhé
Bài này tôi ví dụ nginx của tôi đặt ở /usr/local/nginx và tôi đặt file block.conf ở đó
- Tiếp theo mở file vhost của ban và include file block.conf trong phần server {}
Ví dụ
Code:
server {
server_name daivietpda.vn www.daivietpda.vn;
root /usr/local/nginx/html;
location / {
include /usr/local/nginx/block.conf;
}
#......
#......
}
- Tiếp theo để thực hiện ngặn chặn chúng ta thưc hiên thêm các rules vào file block.conf
Mở file block.conf thêm như hướng dẫn
1 . Block IP
Code:
deny 54.242.194.3; # ip này dos chẳng hạn
Code:
allow 108.0.0.0/8;
allow 65.0.0.0/8;
allow 157.0.0.0/8;
allow 209.0.0.0/8;
allow 173.0.0.0/8;
allow 199.0.0.0/8;
allow 192.0.0.0/8;
allow 70.0.0.0/8;
allow 65.0.0.0/8;
allow 64.0.0.0/8;
allow 37.0.0.0/8;
allow 171.0.0.0/8;
allow 82.0.0.0/8;
allow 141.0.0.0/8;
allow 80.0.0.0/8;
allow 195.0.0.0/8;
allow 66.0.0.0/9;
allow 1.52.0.0/14;
allow 14.0.16.0/20;
allow 14.160.0.0/11;
allow 14.224.0.0/11;
allow 20.139.145.0/24;
allow 27.0.12.0/22;
allow 27.2.0.0/15;
allow 27.64.0.0/12;
allow 27.118.16.0/20;
allow 58.186.0.0/15;
allow 61.28.224.0/19;
allow 64.187.118.160/27;
allow 69.13.190.127/29;
allow 69.13.190.135/32;
allow 69.65.54.80/29;
allow 72.8.172.0/24;
allow 72.20.3.28/30;
allow 72.20.6.160/30;
allow 72.20.34.192/26;
allow 72.20.38.192/26;
allow 72.249.68.0/24;
allow 110.35.64.0/20;
allow 110.44.184.0/21;
allow 111.91.232.0/22;
allow 112.72.64.0/18;
allow 112.78.0.0/20;
allow 112.137.128.0/20;
allow 112.197.0.0/16;
allow 112.213.80.0/20;
allow 113.22.0.0/16;
allow 113.23.0.0/17;
allow 113.52.32.0/19;
allow 113.61.108.0/22;
allow 113.160.0.0/11;
allow 115.72.0.0/13;
allow 115.84.176.0/21;
allow 115.146.120.0/21;
allow 115.165.160.0/21;
allow 116.68.128.0/21;
allow 116.96.0.0/12;
allow 116.118.0.0/17;
allow 116.193.64.0/20;
allow 117.0.0.0/13;
allow 117.103.192.0/18;
allow 117.122.0.0/17;
allow 118.68.0.0/14;
allow 118.102.0.0/21;
allow 119.15.160.0/19;
allow 119.17.192.0/18;
allow 119.18.128.0/20;
allow 119.18.184.0/21;
allow 119.82.128.0/20;
allow 120.50.184.0/21;
allow 120.72.80.0/21;
allow 120.72.96.0/19;
allow 120.138.64.0/20;
allow 122.102.112.0/22;
allow 122.201.8.0/21;
allow 123.16.0.0/12;
allow 124.158.0.0/20;
allow 125.212.128.0/17;
allow 125.214.0.0/19;
allow 125.214.32.0/21;
allow 125.214.40.0/23;
allow 125.214.42.0/24;
allow 125.214.43.0/26;
allow 125.214.43.64/27;
allow 125.214.43.96/29;
allow 125.214.43.112/20;
allow 125.214.59.112/22;
allow 125.214.63.112/25;
allow 125.214.63.240/28;
allow 125.234.0.0/15;
allow 134.159.138.0/24;
allow 169.211.5.0/24;
allow 172.205.0.0/17;
allow 175.106.0.0/22;
allow 180.93.0.0/16;
allow 180.148.0.0/21;
allow 180.148.128.0/20;
allow 180.214.236.0/22;
allow 182.161.80.0/20;
allow 182.236.112.0/22;
allow 182.237.20.0/22;
allow 183.80.0.0/16;
allow 183.81.0.0/17;
allow 183.90.160.0/21;
allow 183.91.0.0/19;
allow 183.91.160.0/19;
allow 202.4.168.0/24;
allow 202.4.176.0/24;
allow 202.6.2.0/24;
allow 202.6.96.0/23;
allow 202.9.79.0/23;
allow 202.9.84.0/24;
allow 202.43.108.0/22;
allow 202.47.87.0/24;
allow 202.47.142.0/24;
allow 202.52.39.0/24;
allow 202.55.132.0/22;
allow 202.56.57.0/24;
allow 202.59.238.0/23;
allow 202.59.252.0/23;
allow 202.60.104.0/21;
allow 202.78.224.0/21;
allow 202.79.232.0/21;
allow 202.87.212.0/22;
allow 202.92.4.0/22;
allow 202.93.156.0/22;
allow 202.124.204.0/24;
allow 202.130.36.0/23;
allow 202.134.16.0/21;
allow 202.134.54.0/24;
allow 202.151.160.0/20;
allow 202.158.244.0/22;
allow 202.160.124.0/23;
allow 202.172.4.0/23;
allow 202.174.156.128/26;
allow 202.191.56.0/22;
allow 203.34.144.0/24;
allow 203.77.178.0/24;
allow 203.79.28.0/24;
allow 203.89.140.0/22;
allow 203.99.248.0/22;
allow 203.113.128.0/18;
allow 203.119.8.0/22;
allow 203.119.36.0/22;
allow 203.119.44.0/22;
allow 203.119.58.0/20;
allow 203.119.74.0/23;
allow 203.128.240.0/21;
allow 203.160.0.0/23;
allow 203.160.96.0/20;
allow 203.161.0.0/22;
allow 203.161.178.0/24;
allow 203.162.0.0/16;
allow 203.170.26.0/23;
allow 203.171.16.0/20;
allow 203.176.160.0/21;
allow 203.189.28.0/22;
allow 203.190.160.0/20;
allow 203.191.8.0/21;
allow 203.191.48.0/21;
allow 203.201.56.0/22;
allow 203.209.180.0/22;
allow 203.210.128.0/17;
allow 206.49.194.32/26;
allow 206.49.194.96/28;
allow 206.49.194.128/26;
allow 206.49.194.192/27;
allow 206.49.196.0/26;
allow 206.49.196.128/27;
allow 206.214.218.106/30;
allow 206.214.220.222/30;
allow 209.200.226.5/29;
allow 210.86.224.0/20;
allow 210.211.96.0/19;
allow 210.245.0.0/17;
allow 216.38.50.153/30;
allow 218.100.10.0/24;
allow 218.100.14.0/24;
allow 218.100.60.0/24;
allow 220.231.64.0/18;
allow 221.121.0.0/18;
allow 221.132.0.0/18;
allow 221.133.0.0/19;
allow 222.252.0.0/14;
deny all;
2 . Block user agents
Bạn cần thêm vào file block.conf nếu muốn block thêm nhiều nữa thì thêm rules nhé
Code:
## Block user agents
set $block_user_agents 0;
# Don't disable wget if you need it to run cron jobs!
#if ($http_user_agent ~ "Wget") {
# set $block_user_agents 1;
#}
# Disable Akeeba Remote Control 2.5 and earlier
if ($http_user_agent ~ "Indy Library") {
set $block_user_agents 1;
}
# Common bandwidth hoggers and hacking tools.
if ($http_user_agent ~ "libwww-perl") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "GetRight") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "GetWeb!") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "Go!Zilla") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "Download Demon") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "Go-Ahead-Got-It") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "TurnitinBot") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "GrabNet") {
set $block_user_agents 1;
}
if ($block_user_agents = 1) {
return 403;
}
3 . Block Referrer
Chẳng hạn như bạn muốn ngăn chặn các trang web ăn cắp băng thông
Code:
if ($http_referer ~* "bingo|casino|viagra") {
return 403;
}
Chặn các loại bot hoặc spam mà query có các từ cần cấm
Code:
## Block spam
set $block_spam 0;
if ($query_string ~ "\b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b") {
set $block_spam 1;
}
if ($query_string ~ "\b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b") {
set $block_spam 1;
}
if ($query_string ~ "\b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b") {
set $block_spam 1;
}
if ($query_string ~ "\b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b") {
set $block_spam 1;
}
if ($block_spam = 1) {
return 403;
}
5 . Block SQL injections
SQL injections là Một cách mà hacker tận dụng lỗi trên trang web của bạn để hack vào cơ sở dữ liệu , rất nguy hiểm , để chặn ta dùng rules sau để block
Code:
## Block SQL injections
set $block_sql_injections 0;
if ($query_string ~ "union.*select.*\(") {
set $block_sql_injections 1;
}
if ($query_string ~ "union.*all.*select.*") {
set $block_sql_injections 1;
}
if ($query_string ~ "concat.*\(") {
set $block_sql_injections 1;
}
if ($block_sql_injections = 1) {
return 403;
}
6 . Block file injections
Một dạng tấn công injections nhưng ở đây là vào file chứ không phải mysql , rules để block
Code:
## Block file injections
set $block_file_injections 0;
if ($query_string ~ "[a-zA-Z0-9_]=//?)+") {
set $block_file_injections 1;
}
if ($query_string ~ "[a-zA-Z0-9_]=/([a-z0-9_.]//?)+") {
set $block_file_injections 1;
}
if ($block_file_injections = 1) {
return 403;
}
7 . Block common exploits
Exploits hay Xss mà hôm rồi có bạn report lỗi Xss trên daivietpda và tôi đã dùng rules này để block
Code:
## Block common exploits XSS
set $block_common_exploits 0;
if ($query_string ~ "(<|%3C).*script.*(>|%3E)") {
set $block_common_exploits 1;
}
if ($query_string ~ "(<|%3C).*.*(>|%3E)") {
set $block_common_exploits 1;
}
if ($query_string ~ "(<|%3C).*.*(|%3E)") {
set $block_common_exploits 1;
}
if ($query_string ~ "GLOBALS(=|\[|\%[0-9A-Z]{0,2})") {
set $block_common_exploits 1;
}
if ($query_string ~ "_REQUEST(=|\[|\%[0-9A-Z]{0,2})") {
set $block_common_exploits 1;
}
if ($query_string ~ "proc/self/environ") {
set $block_common_exploits 1;
}
if ($query_string ~ "mosConfig_[a-zA-Z_]{1,21}(=|\%3D)") {
set $block_common_exploits 1;
}
if ($query_string ~ "base64_(en|de)code\(.*\)") {
set $block_common_exploits 1;
}
if ($block_common_exploits = 1) {
return 403;
}
Sau khi thêm các Rules muốn block xong vào file block.conf thì phải khởi động lại nginx để có tác dụng nhé
Code:
server nginx restart
Chúc các bạn thành công
Bài viết có tham khảo của các trang
http://www.nginxtips.com/blocking-connections-using-nginx/
http://www.howtoforge.com/nginx-how...jections-file-injections-spam-user-agents-etc