Làm cứng Hardening TCP/IP Stack phòng chống DDoS SYN Floods

Tác giả Network Engineer, T.Năm 21, 2020, 10:13:27 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Làm cứng Hardening TCP/IP Stack phòng chống DDoS SYN Floods


1. Giới thiệu.

Các cuộc tấn công từ chối dịch vụ (DDoS) khởi chạy thông qua SYN Floods có thể rất khó khăn đối với các máy chủ không được cấu hình đúng để xử lý chúng. Các chính sách lọc tường lửa phù hợp chắc chắn thường là tuyến phòng thủ đầu tiên, tuy nhiên Linux Kernel cũng có thể được tăng cường chống lại các loại tấn công này. Kiểu làm cứng này rất hữu ích đối với SYN Floods cố gắng làm quá tải một dịch vụ cụ thể với các yêu cầu (như https) trái ngược với dịch vụ có ý định bão hòa kết nối mạng của máy chủ, cần có tường lửa để bảo vệ.


2. Định nghĩa về SYN Floods.

Các kết nối TCP được thiết lập bằng cách bắt tay 3 chiều. Những kẻ tấn công mong muốn bắt đầu một trận SYN Floods sẽ giả mạo địa chỉ IP của chúng trong header của gói SYN được gửi đến máy chủ, để khi máy chủ phản hồi với gói SYN-ACK, nó sẽ không bao giờ đến đích (từ đó ACK sẽ được gửi và kết nối được thiết lập). Máy chủ để lại các kết nối chưa được thiết lập này trong một hàng đợi trong một khoảng thời gian xác định trước mà sau đó chúng chỉ bị loại bỏ. Tuy nhiên, nếu đủ các kết nối này, các kết nối giả mạo trong hàng đợi có thể ngăn chặn các yêu cầu hợp pháp, mới được xử lý. Linux có một hàng đợi tồn đọng tương đối nhỏ theo mặc định và giữ các yêu cầu đang mở trong hàng đợi tối đa 3 phút. Do đó, nhu cầu điều chỉnh Linux Kernel xử lý các yêu cầu này được sinh ra.

3. Bảo vệ máy chủ của bạn.

Trước tiên, chúng ta sẽ đặt các biến được kích hoạt ngay lập tức:

Mã nguồn [Chọn]
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
echo 2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo 3 > /proc/sys/net/ipv4/tcp_synack_retries

Điều này đặt kernel sử dụng cơ chế cookie SYN, sử dụng kích thước hàng đợi tồn đọng của 2048 kết nối và lượng thời gian để giữ các kết nối đang mở trong hàng đợi (3 tương đương với khoảng 45 giây).

4. Lưu những thay đổi tồn tại mãi mãi.

Để thực hiện những thay đổi này liên tục trong các lần khởi động lại liên tiếp, chúng ta cần nói với hệ thống sysctl về các tham số được sửa đổi này. Chúng ta sử dụng tập tin /etc/sysctl.conf để làm như vậy. Chúng ta sẽ thêm các dòng sau vào dưới cùng của tập tin:

Mã nguồn [Chọn]
# TCP SYN Flood Protection
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 3

Những thay đổi của bạn sẽ là vĩnh viễn.