Tấn công từ chối dịch vụ (DoS) và Distributed Denial of Service (DDoS) là mối đe dọa phổ biến mà mỗi trang web truy cập công khai phải đối mặt. Mục đích của các cuộc tấn công như vậy, trong thuật ngữ đơn giản, là để làm tràn một máy chủ với các kết nối quá tải và ngăn chặn từ việc chấp nhận các lưu lượng hợp pháp. Các cuộc tấn công đã ngày càng trở nên tự động thay vì nhắm mục tiêu trực tiếp, các hacker sử dụng các botnet (mạng máy tính bị nhiễm bệnh có thể được điều khiển từ xa), do đó việc sử dụng botnet ngày càng tăng trưởng với tốc độ nhanh chóng, làm cho tấn công DoS và DDoS phổ biến hơn nhiều. May mắn thay, CFS có thể được sử dụng để giúp giảm thiểu các cuộc tấn công nhỏ. Trước khi tiếp tục, điều quan trọng là phải hiểu được những điểm sau đây: 1. Không có cách nào để ngăn chặn một cuộc tấn công DoS/DDoS chống lại bất kỳ máy chủ kết nối Internet; điều duy nhất có thể làm cố gắng để giảm thiểu ảnh hưởng của nó. 2. Không có cách nào để làm cho một máy chủ phản ứng thông thường khi nó đang bị tấn công; nhiều nhất có thể làm là cố gắng giữ cho nó trực tuyến trong cuộc tấn công bằng cách giảm tác động của lưu lượng đến. 3. Trong một số trường hợp, cách tốt nhất để đối phó với một cuộc tấn công với quy mô lớn là để null-route địa chỉ IP của máy chủ. Có nghĩa là tạm thời dùng ẩn nó cho đến khi lưu lượng đến giảm xuống. 4. Bất kỳ biện pháp được sử dụng trong CFS sẽ chỉ có hiệu lực đối với các cuộc tấn công nhỏ, và các biện pháp cần được thực hiện trong CFS chỉ khi máy chủ đang bị tấn công. Các thiết lập tường lửa luôn luôn phải được khôi phục sau đó để giảm thiểu sự gián đoạn lưu lượng hợp pháp, vì các biện pháp của CFS nêu dưới đây sẽ làm chậm gói tin đến. 5. CSF không phải là cách duy nhất để giảm thiểu các cuộc tấn công quy mô nhỏ. Các dịch vụ được cung cấp bởi mạng CloudFlare cũng có thể giúp đỡ bởi vì chúng từ bên ngoài, lưu lượng đệm đến các máy chủ. Chuẩn bị Loạt bài này giả sử bạn có ConfigServer Firewall (CSF) được cài đặt trên máy chủ cPanel của bạn, và bạn có quyền truy cập vào WebHost Manager (WHM). Việc đầu tiên là chắc chắn bạn đã sao lưu cấu hình tường lửa hiện tại (tham khảo tại bài viết này) trước khi thực hiện bất kỳ thay đổi. Sau khi cuộc tấn công đã giảm xuống, bạn sẽ muốn khôi phục lại cấu hình tường lửa lúc ban đầu bằng cách sử dụng các hướng dẫn trong bài viết đó. Bước 1: Mở plugin Firewall trong WHM 1. Trong WebHost Manager, tìm và chọn ConfigServer Security & Firewall dưới phần Plugins trong menu bên trái. Bạn cũng có thể bắt đầu gõ "fire" vào trường tìm kiếm ở phía trên bên trái để thu hẹp các lựa chọn. 2. Nhấn vào nút Firewall Configuration để mở tập tin cấu hình. Bước 2: Hạn chế tỉ lệ lưu lượng đến Việc đầu tiên mà có thể được thực hiện để giảm thiểu những ảnh hưởng của một cuộc tấn công là hạn chế số lượng kết nối cho mỗi địa chỉ IP. Khi được cấu hình đúng cách, CFS sẽ theo dõi số lượng kết nối từ địa chỉ IP tấn công máy chủ và chặn các địa chỉ IP ở cấp tường lửa trong một giới hạn xác định. Điều quan trọng là không để thiết lập giới hạn quá thấp, như các giao thức như FTP, IMAP, và thậm chí cả HTTP những dịch vụ đó đều thực hiện rất nhiều kết nối. Ngoài ra, hãy nhớ rằng hầu hết các công ty cũng như các ngôi nhà và các hostpot công cộng có thể có nhiều máy tính khác nhau trên mạng nội bộ của họ mà tất cả các chia sẻ đều sử dụng một địa chỉ IP publlic duy nhất. A. Để thiết lập các giới hạn về kết nối cho mỗi địa chỉ IP, di chuyển xuống phần Connection Tracking của trang Firewall Configuration và thiết lập CT_LIMIT với giá trị phù hợp. Với mục đích của hướng dẫn này, chúng tôi sẽ sử dụng 150 kết nối cho mỗi địa chỉ IP như là một giới hạn trên. Bạn có thể thấy rằng bạn cần phải giảm hoặc tăng số đó, nhưng nói chung, bạn không nên cố gắng để cài đặt nó dưới khoảng 100. B. Giả sử máy chủ bị tấn công, bạn cũng sẽ muốn vô hiệu hóa thông báo qua email bằng cách thiết lập CT_EMAIL_ALERT với giá trị là "0". Nếu không, các máy chủ sẽ gửi một email mỗi khi nó chặn một địa chỉ IP, điều này chỉ làm tăng thêm quá tải trên máy chủ. C. Bạn cũng có thể hạn chế tốc độ đến các cổng cụ thể, điều này được thực hiện bằng cách sử dụng thiết lập CT_PORTS. Nhiều cổng có thể được thêm vào trong định dạng bằng dấu phẩy (không có khoảng trắng ở giữa). Trong ví dụ này, chúng tôi đang áp dụng giới hạn chỉ cho cổng HTTP: Với thiết lập này, bất kỳ địa chỉ IP mà hơn 150 kết nối đến các trang web và/hoặc cổng an toàn sẽ bị chặn trong các bức tường lửa. Theo mặc định, đó sẽ là một ngăn chặn tạm thời trong vòng 30 phút. Thiết lập CT_BLOCK_TIME có thể kéo dài thời gian ngăn chặn, với thiết lập CT_PERMANENT bạn có thể cấu hình cho các địa chỉ IP bị chặn vĩnh viễn. Bước 3: Bảo vệ SYNflood Một cuộc tấn công SYNflood là một cuộc tấn công DoS khai thác giao thức TCP (Transmission Control Protocol). Về cơ bản, một kết nối TCP được thiết lập bằng bắt tay ba bước : Các khách hàng (kết nối đến) sẽ gửi một gói đồng bộ (SYN) đến máy chủ. Các máy chủ đáp ứng với một sự xác nhận đồng bộ (SYN/ACK) cho khách hàng. Các khách hàng sau đó phản ứng với sự xác nhận (ACK) lại cho máy chủ. SYNflood tấn công quá trình bắt tay ba bước bằng cách tạo ra nhiều yêu cầu đồng bộ hóa và sau đó từ chối đáp ứng với bất kỳ sự xác nhận chính thức. Điều đó làm cho máy chủ, giữ lại một vị trí mở chờ đợi phản hồi cuối cùng của khách hàng để hoàn thành kết nối. Điều này dẫn tới, máy chủ phải tiếu tốn rất nhiều tài nguyên làm cho máy chủ có thể không thiết lập bất kỳ kết nối khác và gây ra lỗi "time out". Việc ngăn chặn hoàn toàn cuộc tấn công là không thể, Nhưng có nhiều cách để giảm thiểu tác động của các cuộc tấn công này. Trên một máy chủ Linux, bạn có thể nhanh chóng kiểm tra các gói tin SYN bằng cách chạy lệnh này qua SSH: Mã: netstat -nap | grep SYN -c Điều quan trọng cần lưu ý là sự hiện diện của các gói tin SYN không nhất thiết cho biết rằng một máy chủ thực sự đang bị tấn công bởi SYNflood. Ví dụ, có thể khi máy chủ đang xử lý nhiều dữ liệu hay có một lượng lớn lưu lượng gửi đến, ở một mức cho phép. Chỉ có sự hiện diện của một số lượng lớn (hàng trăm) mới có thể là dấu hiệu của một cuộc tấn công SYNflood. Nếu bạn biết rằng các máy chủ bị tấn công, bạn có thể cấu hình CSF để giúp giảm thiểu kiểu tấn công này. Nếu không, bỏ qua bước 3 và khởi động lại các bức tường lửa để áp dụng các giới hạn tỷ lệ bạn kích hoạt trong bước 1. A. Để kích hoạt tính năng bảo vệ SYNflood, tìm phần Port Flood Settings của trang Firewall Configuration. B. Bạn có thể kích hoạt tính năng bảo vệ bằng cách thiết lập SYNFLOOD đến "1" và thiết lập tỷ lệ tối đa và burst: SYNFLOOD_RATE là số lượng gói tin SYN chấp nhận trên mỗi IP, mỗi giây. Với mục đích của hướng dẫn này, chúng tôi sẽ sử dụng giá trị "75/s" trên giả định rằng một cuộc tấn công DoS được tiến hành. SYNFLOOD_BURST là số lần các IP có thể đạt tốc độ hạn chế trước khi bị chặn trong các bức tường lửa. Một thiết lập với giá trị 25 sẽ làm việc. Bước 3: Lưu thay đổi của bạn và khởi động lại Firewall Di chuyển đến dưới cùng của trang Firewall Configuration và kích vào nút Change. Trên màn hình tiếp theo, nhấp vào nút Restart csf+lfd để khởi động lại tường lửa với các thiết lập mới. Bước tiếp theo Một khi cuộc tấn công đã giảm xuống, bạn sẽ cần phải khôi phục lại cấu hình trước của tường lửa để tránh gián đoạn lưu lượng đến hợp pháp. Nếu những quy tắc chống tấn công được đặt tại chỗ, sự giám sát các gói ở cấp tường lửa sẽ làm chậm lưu lượng đáng kể và có thể dẫn đến hiệu suất máy chủ web giảm đáng kể . Nếu bạn làm theo các hướng dẫn trong Phần thứ nhất: Làm thế nào để Sao lưu và phục hồi cấu hình Firewall để sao lưu các cấu hình trước đó, bạn có thể dễ dàng sử dụng để khôi phục lại những cài đặt đã lưu. Bạn cũng có thể lưu các thiết lập bảo vệ DoS/DDoS trước khi khôi phục cấu hình ban đầu để chúng có thể nhanh chóng sử dụng trong tương lai nếu cần thiết.