Giáo trình tin học : Firewall chống DDoS cho Forum Khi vào nó sẽ hiện 1 form đòi nhập user và pass. Nếu ai cancel hay nhập sai thì log sẽ ghi lại IP đó Sẽ là lựa chọn tốt cho forum của bạn khi server bị tấn công từ chối dịch vụ Cách làm: Tạo 1 file log.html và chmod 777 và up lên host . File này là nơi để bạn check [code]xem những IP nào truy cập ko hợp lệ. Nếu muốn thì có thể Ban IP của nó đề phòng tấn công Code: PHP Code: <?php //////////// Firewall //////////////// /* File : firewall.php */ /* Tac Gia : HCV Team */ ///////////////////////////////////////// if (md5($PHP_AUTH_USER!='e10adc3949ba59abbe56e057f20f883e') OR md5($PHP_AUTH_PW!='e10adc3949ba59abbe56e057f20f883e')) { Header('WWW-Authenticate: Basic realm="FireWall Chong FLood"'); Header('HTTP/1.0 401 Unauthorized'); echo "<html> <head> <title>FireWall</title> </head> <body bgcolor=\"black\" text=\"red\"> <h1><b>Access denied</b></h1> <b>FireWall Of HCV Team</b> <hr></body></html>".$warnMsg = " IP: ".$_SERVER["REMOTE_ADDR"]; if(isset($PHP_AUTH_USER)){ $warnMsg = " IP: ".$_SERVER["REMOTE_ADDR"]; } exit; } //Ghi lai nhung ip truy cap vao file log.html $file = "log.html"; $mode = "r+"; if (!file_exists($file)) $mode = "w+"; $fp = fopen ($file, $mode); fseek($fp, 0, SEEK_END); fwrite($fp, $ip."<br />"); fclose($fp); echo 'Se bao IP cua ban cho Admin'; ?> Lưu ý : Code: PHP Code: (md5($PHP_AUTH_USER!='e10adc3949ba59abbe56e057f20f 883e') PHP Code: md5($PHP_AUTH_PW!='e10adc3949ba59abbe56e057f20f883 e')) Ở đây là nơi đặt user và pass ở dạng MD5 vào Vào file index.php của bạn , chèn thêm dòng này Code: PHP Code: <? include("firewall.php"); ?> 1 cách khác nữa : Flood hiểu nôm na có nghĩa là tràn ngập - Khi bạn thiết kế một FORM để nhập dữ liệu, thì bất kỳ ai cũng áo thể view sources để xem cấu trúc HTML của FORM bạn thiết kế, vì vậy nếu site bạn không chống flood, hackers có thể dễ dàng flood site bạn, làm DB của bạn có thể bị tràn ngập và xuất hiện nhiều dữ liệu dư thừa. Thông thường thì trong khi thiết kế một FORM bất kỳ thì phải thoả mãn cấu trúc như sau: <form action="Tên_file.php" method="post"> Đoạn code trên sử method="post" có nghĩa là phương pháp lấy dữ liệu là POST, ngoài nó ra bạn còn có thể dùng GET để lấy dữ liệu. Có thể hiểu nếu method="GET" là dùng nhập dữ liệu ngay trên thanh địa chỉ, điều này cũng khó kiểm soát dữ liệu vì hackers có thể trực tiếp flood qua đường này nếu như không chống flood. Còn nếu method="POST" thì bắt buộc phải được nhập qua 1 FORM nhất định, hiện tại hầu hết các site điều thiết lập method là POST vì dễ dàng kiểm tra dữ liệu và nhất là phòng chống SQL injection vì ít có hackers để ý đến các FORM lắm. Có rất nhiều phương pháp để chống flood, tôi xin trình bày vài cách để bạn tham khảo: Sử dụng session, tạo 1 field trong table dùng trong việc lưu trữ IP của máy đang truy cập (Cách này hơi rắc rối nên tôi không trình bày ở đây). Phương pháp chống flood bằng cách sử dụng SESSION: 1. Tạo FORM: Việc tạo một FORM để nhập dữ liệu không khó, nếu không biết tạo xin hỏi tại box khác vì box này chỉ dành tham khảo về bảo mật ứng dụng web thôi 2. Tạo 1 file PHP tên là anti_flood.php, với code sau: Code: PHP Code: <?php session_start(); $timeout = 60; $session_name = "action_time"; if ( isset($_SESSION["{$session_name}"]) && ( $_SESSION["{$session_name}"] >= time() - $timeout ) ) { print "Làm ơn đợi {$timeout} giây rồi quay lại kiếm tôi!!"; return false; } $_SESSION["{$session_name}"] = time(); ?> Giải thích: Dòng thứ 3 dùng session_start() để khởi động dữ liệu của session (Phiên làm việc). Dòng kế tiếp là để thiết lập thời gian cho một session, mặc định là 60 giây. Dòng tiếp theo là $session_name, đơn giản chỉ là đặt tên cho session. Dòng tiếp theo nữa là để kiểm tra thời gian của phiên làm việc trước đó (nếu trước đó có một session đã thực hiện và session đó phải lớn hơn hoặc bằng thời gian hiện tại trừ cho thời gian thiết lập cho mổi session). + Điều đó có nghĩa là nếu session đã thực hiện trước đó (session thứ 1) chỉ cách session thứ 2 dưới 60 giây (đây là thời gian do bạn qui định: $timeout = 60) thì sẽ được xét vào dạng Flood data, và ngược lại thì sẽ cho qua và xác nhận hợp lệ. Và dòng cuối cùng là thiết lập thời gian "hiện tại" cho session "hiện tại". Có 2 cách để sử dụng đoạn code trên: Cách 1: Load trực tiếp file anti_flood.php, áp dụng cho site có ít FORM cần chống flood. Code: PHP Code: <?php require_once("anti_flood.php"); ?> Cách 2: Là copy trực tiếp đoạn code của tôi rồi sửa lại tên session để dễ phân biệt cho site có nhiều FORM cần chống flood: Code: PHP Code: <?php require_once("anti_flood.php"); ?> Hướng dẫn backup data trên cpanel hosting Do có 1 số bạn nhắn tin hỏi về cách backup data trên cpanel nên PETER gửi bài hướng dẫn chung, dành cho những bạn mới làm quen với hosting và các chức năng trong cpanel control của host. Hiện nay đa số các dịch vụ hosting có control là cpanel sử dụng theme (giao diện) phổ biến là x3 nên PETER chỉ hướng dẫn trên theme x3 của cpanel với các bước thực hiện được xem là đơn giản nhất. Bắt đầu: Sau khi đăng nhập vào cpanel, các bạn vào menu (icon) Backups. Tại đây các bạn có thể download backup hoặc restore thủ công Home Directory, MySQL Database, Email Forwarders, Email Filters. Tuy nhiên cái PETER lưu ý và hướng dẫn là backup Home Directory vì nó chứa toàn bộ data của tài khoản hosting, hay còn gọi là Full Backup. Hướng dẫn Full Backup trên cpanel hosting Tại trang Backups các bạn click vào Download or Generate a Full Backup. Tại phần Generate a Full Backup, PETER hướng dẫn 2 tình huống tạo file backup cơ bản là: Backup Home Directory và Remote FTP Server. *Lưu ý: Để tạo file backup thành công thì dung lượng còn trống của host phải đủ để chứa file backup, nếu không quá trình tạo file backup sẽ bị hủy bỏ giữa chừng. 1. Backup Home Directory: Là quá trình tạo file backup chứa toàn bộ dữ liệu của tài khoản hosting và file backup này sẽ nằm ngay trên host để các bạn có thể download. Để tạo file backup này các bạn chỉ cần nhập email nhận thông báo sau khi tạo xong file backup (theo hình minh họa bên dưới) và bấm Generate Backup và chờ quá trình tạo file backup hoàn tất. Sau khi file backup được tạo xong sẽ có tên dạng: backup- 11.2.2008_08-30-46_peter.tar.gz nằm ngang hàng với folder public_htmlCHMOD http://domain.com/backup-11.2.2008_0 6_peter.tar.gz trên host (trong phần File Manager/Legacy File Manager). Các bạn cho file này thành 0644 và move nó vào folder public_html sau đó download về máy với link dạng:2. Remove FTP Server: Là quá trình tạo file backup trên host sau đó file này được upload qua 1 tài khoản hosting khác ở cùng hoặc khác server theo hình thức Remote FTP Connection bằng user và pass của remote host. Trường hợp này được dùng tới khi bạn muốn chuyển host hoặc cất giữ data ở host khác thay vì download về máy của mình. Để thực hiện backup bằng hình thức Remote FTP Server các bạn phải có 1 tài khoản hosting khác đủ dung lượng để chứa file backup, trong trường hợp cần bung nén file backup thì dung lượng còn trống phải lớn hơn 2.5 lần dung lượng của file backup. Tại trang Download or Generate a Full Backup, các bạn chọn và nhập thông tin theo hướng dẫn và hình minh họa bên dưới: Backup Destination: Chọn Remote FTP Server. Email Address: Nhập email của bạn. Remote Server (FTP/SCP only): Nhập IP của remote host. Remote User (FTP/SCP only): Nhập username đăng nhập vào FTP của remote host. Remote Password (FTP/SCP only): Nhập password đăng nhập vào FTP của remote host. Port (FTP/SCP only): Để trống nếu bạn chưa rành về FTP port. Remote Dir (FTP/SCP only): Để trống nếu bạn chưa rành về Path/dir. Click Generate Backup và chờ quá trình tạo file backup và upload qua remove host hoàn tất. Hình minh họa: Chức năng backup còn lại là Remote FTP Server (Passive mode transfer) và Secure Copy (scp) chỉ thực hiện khi các bạn đã nắm phần nào kiến thức về Passive mode transfer và Secure Copy (scp) mới biết dùng nó để làm gì và có tác dụng gì. PETER không giới thiệu thêm phần này để tránh làm các bạn bị rối. Trên đây PETER hướng dẫn các bước cơ bản về vấn đề backup dữ liệu thông dụng dành cho những host có control panel là cpanel. Chúc các bạn thành công! . Giáo trình tin học : Firewall chống DDoS cho Forum Khi vào nó sẽ hiện 1 form đòi nhập user và pass. Nếu ai cancel hay nhập sai thì log sẽ ghi lại IP đó Sẽ là lựa chọn tốt cho forum. cho site có nhiều FORM cần chống flood: Code: PHP Code: <?php require_once("anti_flood.php"); ?> Hướng dẫn backup data trên cpanel hosting Do có 1 số bạn nhắn tin. fclose($fp); echo 'Se bao IP cua ban cho Admin'; ?> Lưu ý : Code: PHP Code: (md5($PHP_AUTH_USER!='e10adc3949ba59abbe56e057f20f 883e') PHP Code: md5($PHP_AUTH_PW!='e10adc3949ba59abbe56e057f20f883