Dùng .htaccess bảo vệ file chống hack local

Hôm rồi mình làm website cần phải set quyền cho một vài thư mục là 0777 để script xử lý ảnh. Vấn đề đặt ra là khi set quyền 0777 cho thư mục thì dễ bị hack local, upload shell script . Trường hợp này thường xảy ra khi bạn dùng hosting có Safe mode ON, các script xử lý thumbnail không thể ghi hình ảnh vào các thư mục .
Loanh quanh trên mạng tìm ra một đoạn code dùng .htaccess block các script chạy trong thư mục đặt nó và cả các thư mục con . Post lên đây chia sẻ với các bạn và lúc nào cần dùng thì lại vào lấy ra . 
     Trích:                              
                                   RewriteEngine On 
RewriteRule .(php|php3|php4|php5|phps|phtml|shtm|shtml|cgi|pl |pm|asp|cfm|jse|jsp|jar|py|exe|com|bat|dll|pif|scr |reg|inf|htaccess|txt|html|htm)$ - [F]                         
Dùng .htaccess bảo vệ file chống hack local 
Okie, hỗm rày thấy pà kon đưa ra cũng rất là nhiều cách bảo mật diễn đàn, nào là dấu index , nào là làm firewall cho admin.php v..v .. OG cũng nghiên cứu được 1 cách này... OG cảm thấy nó rất tiện .. Đơn giản, dễ hiểu... nên OG share idea này cho pà kon .. ai thích thì làm không thích cấm chưởi. 

Okie ... vào vấn đề chính.. IBF (hay bất cứ diễn đàn nào cũng vậy).. thường có 1 nguy cơ là bị localhack khá cao. 

LocalHack là sao? Nói đơn giản dễ hiểu là 2 người dùng chung 1 server(host) .. mà nếu host bảo mật kém thì chúng ta có thể lợi dụng nhược điểm này để read file conf của đối tượng (vì dùng chung server nên path có dạng giống nhau)...và lấy database info của đối tượng. 

Vậy thì chúng ta phải làm gì để phòng chống? Well, có thể nói là chúng ta có thể làm tất cả những gì trong khả năng của mình. Còn ngoài ra phải phụ thuộc vào Host nữa .. (nếu Host dỏm thì mình cũng pó tay thôi)... hix .. lại bắt đầu lạc đề nữa gòy.. hehe... sorry.. (ehhh.. cấm chưởi mà.. ) . 

Alright , OG sẽ hướng dẫn các bạn bảo vệ những cái OG nghĩ là chính và quan trọng. Nói thật sự ra OG chưa biết 1 tí gì về hack cả ..hehe... mà xâm mình chơi liều hướng dẫn luôn.. chịu chơi mà. 

IBF theo OG nghĩ thì có 2 files là chính.. nguy cơ bị hack ở 2 files này mà ra. 
1. admin.php (nếu bị đoạt quyền admin thì bạn biết chiện gì xảy ra rùi hen). 
2. conf_global.php (hacker thường hay dùng file này để lấy info database của mình và chỉnh sửa hoặc xóa database của mình). 

Vậy để bảo vệ chúng ta cần phải làm sao? 
#1. Trước tiên, bạn phải kiểm tra toàn bộ các folder trên host của bạn. Xem những folder nào có files .. nhưng không phải là file index chính ... ví dụ như những thư mục chứa file hình ảnh, nhạc, file cho downloads.. vân ..vân... xem xét những thư mục đó đã có file index chưa?? nếu chưa có thì làm 1 cái index.html với bất kì 1 nội dung gì và bỏ nó vào đó. 
-Giải thích: Làm vậy để làm chi? Làm như thế để USERS không thể browse thru các folders của bạn bằng trình duyệt. OG có dạo web rất nhiều lần thấy rất nhiều bạn không để file index vào các thư mục.. ngay cả thư mục root (vì làm forum nên quên root đi hay sao đó)...và có lần OG còn vào được cả phpmyadmin nữa.. nếu OG là người phá hoại thì chỉ cần 3 cái click chuột là thôi.. xong nay cái database đó rùi. 

#2 . Bảo vệ admin.php : Các bạn có thể hack Mod dấu file admin hoặc là delete nó hẳn luôn. Khi nào cần vào ACP thì up nó lên.(lưu ý, mỗi khi hack thêm mod mà có dính admin.php thì phải backup lại nhé). Tìm hiểu vấn đề này xin mời các bạn đọc bài Hide admin.php Mod. 

#3. Ở bài này OG muốn nhấn mạnh là cái phần này. Đó là dùng .htaccess để bảo vệ file conf_global.php. Tức là sao? nếu các bạn dùng Cpanel của host thì chắc các bạn cũng quen thuộc với cái màn login của nó chứ??? cái này giống như thế. 

Sau đây OG sẽ hướng dẫn các bạn cách làm. 
Cái này OG đọc được ở 1 site của mỹ , vì nó 1 ngày bị hack 2 lần nên nó mới mướn 1 tên làm cái này cho nó và nó đã hướng dẫn trong forum. 
Hướng dẫn nó bảo phải dùng telnet vào tạo .htaccess và.htpasswd ... nhưng nói cho các bạn biết ... telnet là gì OG cũng ko biết ... hehehe.. cho nên OG ngồi suy nghĩ mãi mới ra cái đường vòng này. (chuyên gia tìm đường vòng mà .. ) 

Rùi .. nhảm nhí nãy giờ đủ rùi... bây giờ xin đi đờ réc vào vấn đề. 
Thường thì trong Host của mình nó có 1 cái chức năng là bảo vệ 1 thư mục nào đó..chắc các bạn cũng biết...OK ..Cái mình cần ở đây là bảo vệ 1 file thôi.. không cần bảo vệ nguyên 1 thư mục ( vì nếu bảo vệ nguyên thư mục forum thì ai vào cũng cần phải có pass).... mà CPanel lại bảo vệ nguyên 1 thư mục.. (OG ko biết có bảo vệ 1 file được ko?) ... vậy thì làm sao đây??? Đừng lo... bạn cứ tạo 1 thư mục ra... lấy tên gì cũng được.. (hoặc nếu bạn muốn bảo vệ thư mục nào trong thư mục forum thì khỏi cần tạo.. ví dụ .. thư mục Music chẳng hạn). 

Sau đó bạn vào Cpanel .. và set chức năng bảo vệ cho thư mục vừa mới tạo ra.. OG ví dụ ở đây thư mục có tên là Virtual nhen. Set username và pass cho thư mục đó 
ví dụ : 
username = vietspace 
pass = tochathangnaohacktao 


.. xong ... Bạn dùng FTP log in vào host.. tìm đến thư mục Virtual (or thư mục nào đã set)... Bạn sẽ thấy có 1 file .htaccess ở trong đó.... ten ten.. ko biết dùng telnet thì phải làm như vầy thôi... Mở file .htaccess đó ra... (nếu mở trên host ko được thì down xuống máy). 

Mở ra các bạn sẽ thấy cái nội dung nó tương tự như vầy : 
Code: 
AuthType Basic 

AuthName "Protected" 

AuthUserFile "/home/path/tới/file/.htpasswds" 


require valid-user 
Okie .. mình không cần phải sửa cái gì trong file này cả.. cái mình cần ở đây là cái 
Code: 
/home/path/tới/file/.htpasswds 
Nó là đường dẫn tới file .htpasswd mình mới vừa set trong Cpanel. tức là cái password = tochathangnaohacktao đó. 

Rùi Copy cái dòng đó ra... để sang 1 bên... bây giờ bạn tạo 1 file .htaccess với nội dung như sau. 
Code: 
#/home/path/tới/thư mục/forum/.htaccess 
CODE

<FilesMatch "conf_global.php"> 
AuthName "Admin Only" 
AuthType Basic 
AuthUserFile /home/path/tới/file/.htpasswds 
require valid-user 
</FilesMatch>

#/home/path/tới/thư mục/forum/conf_global.php is protected 
#/home/path/tới/thư mục/forum/index.php and all others are NOT protected 
Cái dòng chữ màu đỏ là dòng mình copy từ file .htpasswds hùi nãy đó.. còn mấy dòng chữ in đậm thì bạn thay path cho nó đúng với path của forum của bạn.. 

Save nó thành .htaccess và up nó vào ngang hàng với index.php và admin.php (trong thư mục forum). 

Roài... dzị là bây giờ nếu ai access bằng IE vào file này thì nó sẽ đòi pass cũng như ai access vào thư mục Virtual . (forum vẫn hoạt động bình thường) 
Chỉ khi nào ai type vào ... htxp://yourdomain.com/forum/conf_global.php thì nó mới đòi pass (localhack đó). 

Demo : hxtp://www.janandcindy.com/~slavelo/VFC/conf_global.php 

Viết nhiều nhưng hông biết mọi người hiểu ko?? hehehe .. tui diễn tả tệ wá ha.. bởi vì tui ko có học ... telnet là cái wái gì tui cũng ko biết... hehehe.. nhưng tui được cái là kiếm đường vòng giỏi thôi.. ai rành về telnet thì chỉ thêm cho pà kon làm cách này nhen. 

Ngoài cách phòng chống ra chúng ta cũng phải thường xuyên update diễn đàn hoặc theo dõi trên IBP xem có security bugs gì mới ko mà update nó lên (SQL injection chẳng hạn).
Bài viết này có ích cho bạn không? 1 phiếu cảm nhận dễ hiểu & thực hiện (4 Phiếu)