# GÓC CÔNG NGHỆ > Tin tức công nghệ > Thảo luận | Đánh giá > Bảo mật & Lỗi bảo mật >  ERC - Lọc và chặn IP tự động ( A Php plugin Anti DDoS)

## kevinsorbo

*ERC - Lọc và chặn IP tự động

*


```

[COLOR=#000000][/COLOR][COLOR=#007700]<?[/COLOR][COLOR=#0000BB]php $ban [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]$n [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]5[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]$in [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]""[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$_SERVER[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'REMOTE_ADDR'[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#DD0000]" - "[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$_SERVER[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'REQUEST_URI'[/COLOR][COLOR=#007700]]; [/COLOR][COLOR=#0000BB]$log [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]fopen[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'erc.log'[/COLOR][COLOR=#007700],[/COLOR][COLOR=#DD0000]'a'[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]fwrite[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$log[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]$in[/COLOR][COLOR=#007700]);    [/COLOR][COLOR=#0000BB]fclose[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$log[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]$list [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]file[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'erc.log'[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]FILE_IGNORE_NEW_LINES [/COLOR][COLOR=#007700]| [/COLOR][COLOR=#0000BB]FILE_SKIP_EMPTY_LINES[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]$last [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]count[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$list[/COLOR][COLOR=#007700]) - [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]; if([/COLOR][COLOR=#0000BB]$last [/COLOR][COLOR=#007700]> [/COLOR][COLOR=#0000BB]50[/COLOR][COLOR=#007700]) { [/COLOR][COLOR=#0000BB]unlink[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'erc.log'[/COLOR][COLOR=#007700]); }     elseif([/COLOR][COLOR=#0000BB]$last [/COLOR][COLOR=#007700]> [/COLOR][COLOR=#0000BB]$n[/COLOR][COLOR=#007700]) {    for([/COLOR][COLOR=#0000BB]$i [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]$i [/COLOR][COLOR=#007700]< [/COLOR][COLOR=#0000BB]$n[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]++)    if([/COLOR][COLOR=#0000BB]$list[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]$last [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]$i[/COLOR][COLOR=#007700]] != [/COLOR][COLOR=#0000BB]$list[/COLOR][COLOR=#007700][[/COLOR][COLOR=#0000BB]$last[/COLOR][COLOR=#007700]]) [/COLOR][COLOR=#0000BB]$ban [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700];     } else { [/COLOR][COLOR=#0000BB]$ban [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]0[/COLOR][COLOR=#007700]; } if([/COLOR][COLOR=#0000BB]$ban[/COLOR][COLOR=#007700]) {    [/COLOR][COLOR=#0000BB]$in [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"Deny from "[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$_SERVER[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'REMOTE_ADDR'[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#DD0000]""[/COLOR][COLOR=#007700];     [/COLOR][COLOR=#0000BB]$lock [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]fopen[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'.htaccess'[/COLOR][COLOR=#007700],[/COLOR][COLOR=#DD0000]'a'[/COLOR][COLOR=#007700]);    [/COLOR][COLOR=#0000BB]fwrite[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$lock[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]$in[/COLOR][COLOR=#007700]);    [/COLOR][COLOR=#0000BB]fclose[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$lock[/COLOR][COLOR=#007700]);} [/COLOR][COLOR=#0000BB]$ban [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]; [/COLOR][COLOR=#0000BB]?>[/COLOR]  


```

Save lại thành *erc.php* đặt vào thư mục gốc của forum (hoặc portal hay muzic, blog site ...).

Nếu vBB : mở file *global.php* chèn vào dòng bên dưới *<?php*
Nếu phpBB : mở file *common.php* chèn vào dòng bên dưới *<?php
*


```

[COLOR=#000000][/COLOR][COLOR=#007700]include [/COLOR][COLOR=#DD0000]'erc.php'[/COLOR][COLOR=#007700];  [/COLOR] 



```

[/B]

Để clear theo lịch ta sử dụng code sau :



```

[COLOR=#000000][/COLOR][COLOR=#007700]<?[/COLOR][COLOR=#0000BB]php [/COLOR][COLOR=#007700]if([/COLOR][COLOR=#0000BB]file_exists[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'.htaccess'[/COLOR][COLOR=#007700])) [/COLOR][COLOR=#0000BB]unlink[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'.htaccess'[/COLOR][COLOR=#007700]); if([/COLOR][COLOR=#0000BB]file_exists[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'erc.log'[/COLOR][COLOR=#007700])) [/COLOR][COLOR=#0000BB]unlink[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'erc.log'[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]?>[/COLOR]  

```

Save lại erc_res.php, upload vào thư mục gốc của forum, vào cron jobs và đặt thời gian cho nó.
cPanel Cron Jobs :



Như vậy cứ mỗi phút nó sẽ clear list một lần.

Với vBB thì ta có thể dùng Schedule của nó để tự động clear IP bằng thiết lập như sau:



```

[COLOR=#000000][/COLOR][COLOR=#007700]<?[/COLOR][COLOR=#0000BB]php [/COLOR][COLOR=#007700]if([/COLOR][COLOR=#0000BB]file_exists[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]DIR[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]'/.htaccess'[/COLOR][COLOR=#007700])) [/COLOR][COLOR=#0000BB]unlink[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]DIR[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]'/.htaccess'[/COLOR][COLOR=#007700]); if([/COLOR][COLOR=#0000BB]file_exists[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]DIR[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]'/erc.log'[/COLOR][COLOR=#007700])) [/COLOR][COLOR=#0000BB]unlink[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]DIR[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]'/erc.log'[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#0000BB]?>[/COLOR]  

```

upload vào *includes/cron/*



Vậy 10 phút clear một lần.

- ERC mặc định chặn IP nếu 5 lần nhanh và liên tiếp truy cập vào một URL. Để điều chỉnh sử thay giá trị của biến *$n*
- Phải chmod thư mục gốc của forum sao cho ERC có quyền write.
- File *erc.log* lưu trữ tạm thời các URI và được xoá sau khi đã phân tích xong.

----------

