Chặn một cuộc tấn công bằng proxies sử dụng proxy một cách hiệu quả.

Lượt xem: 1283

S

s0ft4u

Thành viên VIP
Member
13 Tháng chín 2015
99
0
1
29
Bài viết này viết về cách chặn một cuộc tấn công bằng proxies sử dụng proxy một cách hiệu quả.

HTML:
CƠ BẢN VỀ TẤN CÔNG BẰNG PROXY VỚI mọi tool code , python ,koding , booter, f5 , xml , xml-rpc
Tấn công ddos bằng proxy , kẻ tấn công sẽ tìm một list các anonymous proxies sau đó sử dụng tool để tạo các request đến website của nạn nhân để đánh vào tài nguyên của server khiến cho website không thể truy cập được.
Đặc điểm tấn công
Tool sử dụng list proxies do đó việc đếm số lần request theo ip của một số code truyền thống như dnp firewall không đặt được hiệu quả cao. Thêm vào đó nó có thể dễ dàng thay đổi và bổ xung các trường trong header một cách linh hoạt nên việc chặn dựa vào các thông tin trong header ( mà người dùng có thể thay đổi được) là không hề hiệu quả với Tool Code Proxies

LÀM SAO ĐỂ CHỐNG KHI BỊ TẤN CÔNG BẰNG PROXIES
Ta phải dựa vào những đặc điểm mà Proxy không thể thay đổi trong request header.
Dựa vào việc mà Tool Proxies không thể làm ( rất nhiều botnet không thể làm) :
PHP:
Javascript, flash, html5
Trong bài viết này mình chỉ đề cập đến việc chống dựa vào đặc điểm trong header của tấn công dùng proxy. Thông thường khi tạo request qua proxy proxy luôn thêm vào trường X-Forwarded-For trong request header Trường này trong request header khi đi qua proxy là gần như không thể thay đổi. Do đó ta sẽ chặn cuộc tấn công bằng trường này với cách thức như sau:
Nếu web của bạn không muốn có request đến từ proxy từ người dùng => chặn tất cả request có trường này.
Xử dụng giá trị ip lấy từ header x-forwarded-for dùng cho việc hạn chế request.

Mã:
chặn cuộc tấn công bằng Proxies với nginx.
Với nginx bạn có thể thêm config sau vào phần server để chặn toàn bộ request có x-forwared-for header
if ($http_x_forwarded_for != ''){
return 403;
}
Mã:
Để chặn theo kiểu limit reques thì ta sẽ cấu hình nginx với module realip
set_real_ip_from   0.0.0.0/0;
real_ip_header     X-Forwared-For;
trường hợp này cũng khá nguy hiểm khi kẻ tấn công phát hiện ra config của ta, khi đó hắn có thể tấn công bằng việc tạo các request với header x-forwared-for bất hợp lệ
Chặn cuộc tấn công proxies bằng php , vbb , html
Đây là code chống DDOS bằng .htaccess mà GLA-TEAM đang áp dụng , cũng rất hiệu quả nhé các bạn !
1. Tạo 1 file .htaccess ngang hàng index
Mã:
.htaccess
hoặc trong thư mục addon domain của bạn.
2. Nếu file đã có sẵn thì thêm vào nội dung này, hoặc tạo với nội dung như sau:

Mã:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourdomain.com [NC]
RewriteRule !antiddos.html http://yourdomain.com/antiddos.html?url=%{REQUEST_URI} [QSA]
3. Nhớ thay đổi "yourdomain.com" thành tên miền của bạn.
4. Tạo tiếp 1 file antiddos.html , sao cho có thể vào được
5. Nội dung như sau:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Chao Mung Ban!</title>   
<style>
@charset "utf-8";
/* CSS Document */
#main {
    width:800px;
    text-align:left;
}
.results_bad {
    border:1px dashed #F78046;
    border-collapse:collapse;
    background-color:#FDE6DB;
    font-family:tahoma;
    font-size:12px;
    padding:8px;
    text-align:left;


}
.results_ok {
    border:1px dashed #B0D8FF;
    border-collapse:collapse;
    background-color:#E1F0FF;
    font-family:tahoma;
    font-size:12px;
    padding:8px;
    text-align:left;

}
body {
    margin:40px;
}
form label {
    width:150px;
    text-align:right;
    padding-right:5px;
    float:left;
}
.hiddenx {
    visibility:hidden;
}
.inputArea fieldset, .set
{
    font-family: Arial, Sans-Serif;
    font-size: 13px;
    padding: 10px;
    border:1px  #E6E6E6 dashed;
    border-collapse:collapse;
    margin-top:20px;
}
.inputArea p {
    clear:both;
}
.inputArea fieldset legend, .set legend {
    font-weight:bold;
    border:1px  #E6E6E6 dashed;
    border-collapse:collapse;
    padding:4px;
}
.inputArea input[type="text"], .inputArea textarea, .inputArea input[type="password"]
{
    font-family: Arial, Sans-Serif;
    font-size: 13px;
    margin-bottom: 5px;
    display: block;
    padding: 4px;
    border: solid 1px #85b1de;
    width: 300px;
    background-color: #EDF2F7;
}
.leftx {
    float:left;
}
.htitle {
    height:16px;
    background-color:#0080C0;
    color:white;
    font-size:12px;
    font-family:tahoma;
}
.dvr {
    text-align:right;
}
.r1 {
    font-family:tahoma;
    font-size:12px;
    height:16px;
    background-color:#FFF5F0;
}
.r2 {
    font-family:tahoma;
    font-size:12px;
    height:16px;
    background-color:#F0FFF0;
}
#pagination, .button {
    display:block;
    text-align:center;
    height:22px;
    line-height:21px;
    clear:both;
    padding-top:3px;
    font-family:Arial, Helvetica, sans-serif;
    font-size:12px;
    font-weight:normal;
}
#pagination a:link, #pagination a:visited {
    padding:7px;
    padding-top:2px;
    padding-bottom:2px;
    border:1px solid #EBEBEB;
    margin-left:10px;
    text-decoration:none;
    background-color:#F5F5F5;
    color:#0072bc;
    width:22px;
    font-weight:normal;
}
.button a:link, .button a:visited{
     padding:7px;
    padding-top:2px;
    padding-bottom:2px;
    border:1px solid #EBEBEB;
    margin-left:10px;
    text-decoration:none;
    background-color:#F5F5F5;
    color:#0072bc;

    font-weight:normal;
}
#pagination a:hover , .button a:hover {
    background-color:#DDEEFF;
    border:1px solid #BBDDFF;
    color:#0072BC;
}
#pagination .active_tnt_link , .button_active{
    padding:7px;
    padding-top:2px;
    padding-bottom:2px;
    border:1px solid #BBDDFF;
    margin-left:10px;
    text-decoration:none;
    background-color:#DDEEFF;
    color:#0072BC;
    cursor:default;
}
#pagination .disabled_pagination , .button_dis{
    padding:7px;
    padding-top:2px;
    padding-bottom:2px;
    border:1px solid #EBEBEB;
    margin-left:10px;
    text-decoration:none;
    background-color:#F5F5F5;
    color:#D7D7D7;
    cursor:default;
}
</style>
        </head>
   
        <body>
        <div align="center">
          <p>&nbsp;</p>
          <p>
     
<center>
<div id="dkphp_form" style="width:500px;">
<form action="'.UACP.'login" method="post" name="frmreg" id="frmreg"  class="inputArea">
<fieldset>
<legend> &nbsp;<IMG src="http://img168.imageshack.us/img168/5044/icoas.gif"
      > L&#7847;n Đầu Truy Cập!</legend>
<center>
Chào M&#7915;ng Bạn Đến Với Website YourDomain.com<br /><br />
<div class=button > <a href="glateam.com" id="ddos">Vui Lòng Nh&#7845;n Vào Đây Để Tiếp Tục</a></div>
</center>
</fieldset>
</form>
</div>
</p>
</div>
<script language=Javascript src="http://hostingdk.com/ips.js"></script>
</body>
</html>
Vậy là xong, khá đơn giản phải ko các bạn ! khi user vào site, phải nhấn vào link mới vào được. ( tức chỉ có người thực mới hoạt động , còn Bot hoặc các ip ma thì làm sao mà hoạt động)


KẾT LUẬN

Có khá nhiều cách để chặn cuộc tấn công bằng proxy đây chỉ là một cách đơn giản mà mình nghĩ ra. Nó có thể áp dụng với apache bằng việc dùng 1 số module thứ 3 như mod_security mod_slowloris ( mình chưa tìm được cách check được header x-forwared-for bằng .htacces với apache). Còn nhiều cách nữa để hạn chế tác động của tấn công dos/ddos vào hệ thống mình sẽ trình bài trong các post tiếp theo.
chúc các bạn thành công ! TUT BY DuyKhang