NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
07/06/2023
Lượt xem

Cách chống tấn công DOS và DDoS cho Apache trên Centos 7

07/06/2023
14 phút đọc
Lượt xem

Đánh giá

5/5 - (101 bình chọn)

Các cuộc tấn công mạng DoS và DDoS là các cụm từ không còn xa lạ với những người sử dụng công nghệ. Có rất nhiều hệ thống lớn nhỏ phải chịu ảnh hưởng từ các cuộc tấn công mạng. Trong bài viết này, Vietnix sẽ hướng dẫn bạn cách cài đặt, cấu hình và sử dụng mod_evasive trên server để chống tấn công DOS và DDoS cho Apache trên Centos 7.

Giới thiệu về DOS và DDoS

Module Apache mod_evasive được biết đến với tên mod_dosevasive. Module này giúp chống lại các cuộc tấn công DoS, DDoS (từ chối dịch vụ phân tán – distribute denial of service) cũng như tấn công brute force trên web server Apache. mod_evasive có thể phòng thủ trong các cuộc tấn công và báo cáo vi phạm thông qua email và các syslog.

Giới thiệu về DOS và DDoS
Giới thiệu về DOS và DDoS

Module này hoạt động bằng cách tạo bảng động nội bộ của địa chỉ IP và URI cũng như từ chối địa chỉ IP từ các yêu cầu sau:

  • Yêu cầu trang giống nhau nhiều lần trong vài giây.
  • Thực hiện đồng thời hơn 50 yêu cầu trên cùng một tiến trình con mỗi giây.
  • Thực hiện bất kỳ yêu cầu nào trong khi tạm thời bị liệt vào danh sách đen.

Nếu đáp ứng một trong các điều kiện bên trên, một phản hồi 403 sẽ được gửi và địa chỉ IP được lưu lại. Thông báo email có thể được gửi đến chủ sở hữu server hoặc một lệnh hệ thống có thể được thực thi để chặn địa chỉ IP.

Yêu cầu để chống tấn công DOS và DDoS cho Apache trên Centos 7

Để thực hiện các bước trong bài viết này, bạn cần đạt được những yêu cầu sau:

  • Máy chủ CentOS 7 64 bit (có thể hoạt động với CentOS 6).
  • Người dùng non-root có quyền sudo.
  • Web server Apache đang chạy trên máy chủ. 

Nếu bạn chưa sở hữu máy chủ hoặc đang tìm kiếm giải pháp thuê máy chủ tiết kiệm chi phí thì VPS Việt Nam tại Vietnix sẽ là giải pháp phù hợp. VPS Vietnix cung cấp các gói dịch vụ chất lượng cao với nhiều tùy chọn theo nhu cầu sử dụng của khách hàng như VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp, VPS NVMe, VPS GPU.

Vietnix hỗ trợ khách hàng 247 với đội ngũ kỹ thuật viên giàu kinh nghiệm để giải quyết các vấn đề liên quan đến máy chủ. Do đó bạn có thể yên tâm sử dụng VPS Vietnix để phát triển và vận hành các dịch vụ trên mạng. Liên hệ để được tư vấn chi tiết nhất.

Bước 1 – Cài đặt mod_evasive

Trong bước này, bạn sẽ cài đặt các package required cho mod_evasive hoạt động. Sau đó là cài đặt mod_evasive.

Đầu tiên, bạn cần cài đặt repo yum EPEL (Extra Packages for Enterprise Linux) trên server. EPEL là một nhóm lợi ích đặc biệt của Fedora tạo ra nhằm duy trì và quản lý một bộ các gói phần mềm mã nguồn mở chất lượng cao cho Enterprise Linux. Hãy chạy lệnh sau để cài đặt và kích hoạt kho lưu trữ EPEL trên server của bạn.

Trên CentOS 7, bạn hãy gõ lệnh:

sudo rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

Trên CentOS 6:

sudo rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

Hãy xác minh kho lưu trữ EPEL đã được kích hoạt bằng cách sử dụng lệnh:

sudo yum repolist

Nếu kho lưu trữ được kích hoạt, bạn sẽ thấy nó được liệt kê trong output:

epel/x86_64 

Tiếp theo, bạn cần bảo vệ các base package từ EPEL bằng cách sử dụng plugin yum protectbase:

sudo yum install yum-plugin-protectbase.noarch -y

Mục đích của plugin protectbase là bảo vệ một số kho lưu trữ yum khỏi các cập nhật từ những kho lưu trữ khác. Các gói trong kho được bảo vệ sẽ không bị cập nhật hoặc ghi đè bởi các gói không được bảo vệ, ngay cả khi chúng có phiên bản mới.

Bây giờ bạn đã sẵn sàng cài đặt mod_evasive. Chạy lệnh sau để cài đặt:

sudo yum install mod_evasive -y

Bước 2 – Xác nhận cài đặt

Khi mod_evasive đã được cài đặt, bạn cần xác nhận rằng file cấu hình cũng đã được cài đặt và module đang được tải.

Trong quá trình này, file cấu hình mod_evasive /etc/httpd/conf.d/mod_evasive.conf đã được thêm vào. Chạy lệnh sau để xác nhận:

sudo ls -al /etc/httpd/conf.d/mod_evasive.conf

Output sẽ tương tự như sau:

-rw-r--r-- 1 root root 3473 Jul 21 01:41 /etc/httpd/conf.d/mod_evasive.conf

Mặc định, dòng LoadModule sẽ được thêm vào đầu file cấu hình mod_evasive.conf. Mở file và thêm dòng này nếu chưa có. Dòng này cho phép web server Apache tải và sử dụng module mod_evasive.

Trên CentOS 7 sẽ có dạng:

LoadModule evasive20_module modules/mod_evasive24.so

Trên CentOS 6, dòng này sẽ như sau:

LoadModule evasive20_module modules/mod_evasive20.so

Hãy liệt kê các module đã tải cho web server Apache và tìm mod_evasive bằng lệnh:

sudo  httpd -M | grep evasive

Output sẽ hiển thị như sau:

evasive20_module (shared)

Bước 3 – Cấu hình mod_evasive

Sau khi cài đặt hoàn tất và được xác nhận, bạn cần xem xét cấu hình của module. mod_evasive có thể tùy chỉnh dễ dàng thông qua file cấu hình mod_evasive.conf.

Một trong những tùy chọn cấu hình bạn cần thay đổi là DOSEmailNotify. Tùy chọn này cho phép máy chủ gửi email thông báo đến địa chỉ email đã chỉ định mỗi khi một địa chỉ IP nào đó được đưa vào danh sách đen của máy chủ. Nội dung email sẽ hiển thị mod_evasive HTTP Blacklisted 111.111.111.111.

Ví dụ, nếu bạn muốn gửi cảnh báo mod_evasive đến địa chỉ vietnix@example.com, hãy chỉnh sửa file bằng lệnh:

sudo nano /etc/httpd/conf.d/mod_evasive.conf

Bỏ chú thích dòng DOSEmailNotify bằng cách loại bỏ dấu # ở đầu dòng và thay đổi địa chỉ email thành của bạn:

DOSEmailNotify   vietnix@example.com

Một tham số khác mà bạn có thể muốn thiết lập là DOSWhitelist. Khi sử dụng tùy chọn này, địa chỉ IP của các client đáng tin cậy có thể được thêm vào danh sách trắng để đảm bảo họ sẽ không bị từ chối truy cập. Mục đích của danh sách trắng là bảo vệ phần mềm, script, local search bot hoặc các tool tự động không bị từ chối khi yêu cầu lượng dữ liệu lớn từ máy chủ.

Để thêm vào danh sách trắng một địa chỉ IP, ví dụ như 111.111.111.111, bạn hãy thêm một mục vào file cấu hình như sau:

DOSWhitelist	111.111.111.111

Wildcards có thể được sử dụng đến 3 octet cuối cùng của địa chỉ IP nếu cần thiết.

Để cho phép truy cập từ nhiều địa chỉ IP khác nhau, bạn có thể thêm các dòng DOSWhitelist trong file cấu hình như sau:

DOSWhitelist	111.111.111.111
DOSWhitelist	222.222.222.222

DOSPageCountDOSSiteCount là hai tham số nên thay đổi để tránh trường hợp khách hàng bị chặn truy cập không cần thiết.

DOSPageCount là giới hạn cho số lượng yêu cầu tối đa đến một trang từ một địa chỉ IP trong một khoảng thời gian nhất định (thường là 1 giây). Khi ngưỡng cho khoảng thời gian đó đã vượt quá, địa chỉ IP của client sẽ được thêm vào danh sách bị chặn. Giá trị mặc định được đặt khá thấp ở mức 2. Bạn có thể thay đổi thành giá trị cao hơn, ví dụ như 20, bằng cách chỉnh sửa trong /etc/httpd/conf.d/mod_evasive.conf như sau:

DOSPageCount 20

DOSSiteCount giới hạn tổng số yêu cầu được thực hiện đến cùng một trang web theo địa chỉ IP trong một khoảng thời gian nhất định. Theo mặc định, thời gian này là 1 giây. Để thay đổi nó thành một giá trị lớn hơn như 100 giây, bạn hãy gõ lệnh sau:

DOSSiteCount 100

Còn một số tham số khác bạn có thể thay đổi để trang web đạt được hiệu suất tốt hơn.

Một trong số đó là DOSBlockingPeriod. Đây là thời gian (tính bằng giây) mà một client (địa chỉ IP) sẽ bị chặn nếu được thêm vào danh sách bị chặn. Trong thời gian này, tất cả các yêu cầu tiếp theo từ client sẽ dẫn đến lỗi 403 (Forbidden) và timer sẽ được đặt lại (mặc định là 10 giây).

Ví dụ, nếu bạn muốn tăng thời gian chặn lên 300 giây, hãy gõ lệnh sau:

DOSBlockingPeriod	 300

Một tham số khác là DOSLogDir. Đây là là một tùy chọn cấu hình được sử dụng để chỉ định thư mục tạm thời được sử dụng bởi mod_evasive. Theo mặc định, thư mục /tmp sẽ được sử dụng để lưu trữ các khóa. Tuy nhiên điều này có thể gây ra các vấn đề bảo mật nếu hệ thống của bạn cho phép người dùng shell truy cập vào thư mục này. Nếu có người dùng shell non-privileged, bạn nên tạo một thư mục chỉ có thể ghi bởi người dùng Apache (thường là apache) và đặt tham số này trong file cấu hình mod_evasive.conf. 

Ví dụ, để đặt thư mục được sử dụng bởi mod_evasive thành /var/log/mod_evasive, hãy tạo thư mục bằng cách sử dụng lệnh:

sudo mkdir /var/log/mod_evasive

Tiếp theo, đặt sở hữu cho người dùng apache:

sudo chown -R apache:apache /var/log/mod_evasive

Sau đó, chỉnh sửa cấu hình mod_evasive và thay đổi thư mục như sau:

DOSLogDir           "/var/log/mod_evasive"

Tham số tiếp theo là DOSSystemCommand. Nếu một giá trị được đặt, lệnh sẽ được thực thi bất cứ khi nào một địa chỉ IP được đưa vào danh sách đen. Khi sử dụng tham số này, bạn có thể tích hợp mod_evasive với tường lửa hoặc các lệnh shell khác trên server để chặn các địa chỉ IP được đưa vào danh sách đen.

Bước 4 – Tải module mod_evasive

Sau khi đã thay đổi file cấu hình, bạn cần khởi động lại web server Apache để thay đổi có hiệu lực. Hãy chạy lệnh sau để khởi động lại Apache.

Trên CentOS 7, bạn hãy dùng lệnh:

sudo systemctl restart httpd.service

Trên CentOS 6, dùng lệnh sau:

sudo service httpd restart

Lưu ý: mod_evasive có thể xung đột với FrontPage Server Extensions. Bạn nên kiểm tra cài đặt của web server Apache để đảm bảo mod_evasive hoạt động tốt.

Bước 5 – Kiểm tra mod_evasive

Hãy thực hiện một bài test ngắn để xem module hoạt động đúng cách hay không. Bạn sẽ sử dụng một script perl test.pl được viết bởi các nhà phát triển mod_evasive. Để thực thi script, bạn cần cài đặt gói perl trên server:

sudo yum install -y perl

Test script được cài đặt cùng với mod_evasive tại đường dẫn sau:

/usr/share/doc/mod_evasive-1.10.1/test.pl

Mặc định, test script yêu cầu cùng một trang từ web server Apache 100 lần liên tiếp để kích hoạt mod_evasive. Trong bước trước, bạn đã sửa đổi mod_evasive để chấp nhận nhiều yêu cầu hơn trong một giây đến cùng một trang. Bạn cần thay đổi script để thành 200 yêu cầu liên tiếp thay vì 100 để đảm bảo tất cả các phương thức thông báo của mod_evasive được kích hoạt.

Chỉnh sửa /usr/share/doc/mod_evasive-1.10.1/test.pl bằng lệnh dưới đây:

sudo nano /usr/share/doc/mod_evasive-1.10.1/test.pl

Sau đó, bạn tìm dòng sau:

for(0..100) {

Tiếp theo, thay 100 bằng 200:

for(0..200) {

Cuối cùng, lưu file và thoát.

Để thực thi script, bạn chạy lệnh sau:

sudo perl /usr/share/doc/mod_evasive-1.10.1/test.pl

Bạn nên thấy output tương tự như sau:

HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
...

Script tạo 100 yêu cầu đến web server của bạn. Mã phản hồi 403 cho thấy truy cập bị từ chối bởi web server. mod_evasive cũng lưu vào syslog khi địa chỉ IP bị chặn. Để kiểm tra log file, bạn hãy sử dụng lệnh:

sudo tailf /var/log/messages

Output chỉ ra địa chỉ IP đã bị chặn bởi mod_evasive:

Jul 29 00:11:18 servername mod_evasive[18290]: Blacklisting address 127.0.0.1: possible DoS attack.

Nếu bạn đã cấu hình mod_evasive để gửi email cảnh báo khi một địa chỉ IP bị chặn, một email sẽ được gửi tới hộp thư đến với nội dung sau:

mod_evasive HTTP Blacklisted 127.0.0.1

Để nâng cao hiệu quả phòng chống tấn công DDoS, bạn có thể sử dụng thêm dịch vụ Firewall anti DDoS kết hợp cùng VPS Vietnix. Đây là công nghệ độc quyền được Vietnix phát triển, cải tiến và nâng cấp liên tục trong suốt 11 năm hoạt động. Vietnix cũng được biết đến là nhà cung cấp tiên phong phát triển công nghệ này tại Việt Nam. Chất lượng dịch vụ của Vietnix càng được khẳng định qua giải thưởng Thương hiệu Việt Nam xuất sắc 2022. Bạn còn chần chờ gì mà không liên hệ với Vietnix để bảo vệ website mình ngay hôm nay khỏi rủi ro tấn công dịch vụ trên internet.

Mọi vấn đề thắc mắc cần tư vấn, quý khách vui lòng liên hệ:

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
  • Hotline: 1800 1093.
  • Email: sales@vietnix.com.vn.

Lời kết

Qua bài viết này, bạn đã học được cách chống lại tấn công DOS và DDoS với mod_evasive. Đây là một giải pháp tốt để chống lại các cuộc tấn công từ bên ngoài. Tuy nhiên, phương thức này bị giới hạn và chỉ hữu ích trong phạm vi băng thông tổng của máy chủ và khả năng xử lý và phản hồi các yêu cầu không hợp lệ. Vì lý do này, bạn nên tích hợp module này với tường lửa để đạt hiệu quả bảo vệ tối đa. Trong trường hợp cuộc tấn công phức tạp, phạm vi lớn và kéo dài, người dùng có thể cần chuyển sang một giải pháp chống lại DDoS dựa trên phần cứng.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Black Friday Hosting & VPS

Chương trình bắt đầu sau

Giảm giá 40% hosting VPS

50 coupon mỗi ngày

Gia hạn giá không đổi

NHẬN DEAL NGAY
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG