Trong bối cảnh Internet phát triển mạnh mẽ, nhà mua hàng online người người mua hàng online. Kinh Doanh online vẫn nơi màu mỡ của các cá nhân và doanh nghiệp phát triển.
Như bạn có thể biết: Kinh doanh online chi phí khởi tạo nó thấp hơn rất nhiều so với kinh doanh offline. là một miền đất hứa của các doanh nghiệp, rào cản gia nhập thị trường kinh doanh online thấp hơn kinh doanh offline, nên vì vậy đồng nghĩa với việc cạnh tranh khắc nghiệt hơn rất nhiều.
Các cuộc tấn công từ chối dịch vụ (DDoS) ngày càng trở nên phổ biến và tinh vi hơn.
Các cuộc tấn công DDoS có thể sử dụng nhiều phương thức khác nhau, bao gồm tấn công UDP flood, tấn công ICMP flood, SYN flood,Slowloris DDoS và HTTP flood… rất nhiều kỹ thuật nhưng ngày hôm nay mình sẽ nói tập trung nói về về syn flood, tương lai nếu mình có nhiều thời gian mình sẽ chia sẻ những kỹ thuật khác, nhưng bài viết này mình sẽ tập trung vào chia sẻ syn flood và cách phòng chống syn flood và cách nhân biết…
Mục tiêu chính của tấn công SYN flood là khiến máy chủ không thể phản hồi các yêu cầu hợp lệ từ người dùng khách hàng của bạn. về lý thuyết kỹ thuật ddos nào cũng thế. Mục tiêu là làm sập máy chủ của bạn. SYN flood làm cạn kiệt bảng trạng thái kết nối.
Mình sẽ tìm hiểu kỹ hơn ở dưới đây.

Mục lục
- 1 SYN flood là gì?
- 2 Hướng dẫn syn flood
- 3 Nhận biết server của mình đang bị syn flood
- 4 Hướng dẫn chống syn flood
- 4.1 Chặn theo quốc gia, giả sử bạn chỉ kinh doanh ở việt nam thôi thì hãy chỉ để ip việt nam mới truy cập được website của bạn
- 4.2 Tăng kích thước hàng đợi SYN (SYN backlog queue)
- 4.3 Sử dụng syn cookie
- 4.4 Sử dụng rp_filter
- 4.5 Sử dụng CDN Cloudflare hoặc CDN QUIC CLOUD
- 4.6 Lựa chọn những đơn vị VPS có hệ thống hỗ trợ chống ddos layer 3 và layer 4
- 4.7 Nâng cấp phần cứng
- 4.8 Quản lý port chặt chẽ
- 4.9 Sử dụng tính năng SynFlood trong csf
- 4.10 Giới hạn yêu cầu
SYN flood là gì?
Tấn công SYN Flood là một hình thức tấn công từ chối dịch vụ (DDoS) phổ biến nhất hiện tại, trong đó kẻ tấn công gửi một lượng lớn yêu cầu SYN (Đồng bộ) đến máy chủ để làm quá tải bảng trạng thái kết nối . Nó khai thác lỗ hổng trong quá trình bắt tay 3 bước (three-way handshake) của giao thức TCP . Mục tiêu của cuộc tấn công SYN Flood là làm cạn kiệt bảng trạng thái kết nối của webserver.
Thông thường, để thiết lập kết nối TCP, client (người dùng) và server (máy chủ) cần thực hiện 3 bước sau:
- Client gửi gói tin SYN (synchronize – đồng bộ) đến server để yêu cầu kết nối. (Thực tế: bạn truy cập vào website ví dụ như wptangtoc.com thì lúc đầu nó sẽ gửi một gói tín hiệu syn, giống như ngoài đời bạn mua hàng online ví dụ như bạn mua trà sữa thì đây là giai đoạn bạn đặt hàng bạn đặt trà sữa)
- Server nhận được gói tin SYN và phản hồi lại client bằng gói tin SYN-ACK (synchronize-acknowledge) để xác nhận. (Thực tế máy chủ của wptangtoc.com sẽ gửi một gói tín hiệu SYN-ACK như ví dụ trên khi bạn đặt trà sữa thì bên cửa hàng quán trà sữa sẽ làm trà sữa chuyển đến cho bạn )
- Client nhận được gói tin SYN-ACK và gửi lại server gói tin ACK (acknowledge) để hoàn tất quá trình bắt tay. (Thực tế: trình duyệt sẽ gửi một gói tín hiệu ACK để xác nhận bạn đã nhận được được hàng – ví dụ thực tế khi bạn nhận được trà sữa rồi bạn phản hồi lại cho quán mình đã nhận được trà sữa rồi.)
Trong tấn công SYN flood, kẻ tấn công sẽ gửi một lượng lớn gói tin SYN đến server (đặt rất nhiều hàng). Tuy nhiên, thay vì gửi gói tin ACK cuối cùng để hoàn tất kết nối ở bước số 3 mình giải thích ở bên trên, họ không phản hồi gói ACK lại cho phía máy chủ.
Ví dụ: giống như việc đặt trà sữa ở ví dụ bên trên, khi shipper giao trà sữa đến thì kẻ xấu bom hàng không nhận hàng. SYN flood mình vẫn hay gọi đùa nó là bom hàng . Chính vì điều đó kẻ xấu họ đặt rất nhiều hàng rồi họ bom hàng thì phía doanh nghiệp của hàng cũng sẽ tổn thất rất nhiều với những kẻ bom hàng như thế này.
Điều này khiến server phải lưu trữ một lượng lớn các kết nối “half-open” (đang chờ xác nhận) trong bảng kết nối (connection table). Khi bảng kết nối bị đầy, server sẽ không thể tiếp nhận thêm bất kỳ kết nối mới nào, dẫn đến tình trạng từ chối dịch vụ. Các dấu hiệu của một cuộc tấn công SYN Flood bao gồm sự bão hòa tầng TCP và việc không thể hoàn thành quá trình bắt tay 3 bước giữa client và server trên mọi cổng
Hướng dẫn syn flood
Bạn có thể sử dụng hping3 để test giả lập một cuộc tấn công syn flood.
Mong các bạn hãy chỉ sử dụng đúng mục đích là thử nghiệm cho chính bản thân của mình. tuyệt đối không nhằm mục đích đi phá hoạt hệ thống của người khác.
Để tải phần mềm hping3 yêu cầu hệ điều hành linux
Hệ điều hành almalinux 8 và 9 hoặc rocky linux 8 và 9:
dnf install hping3 -y
hệ điều hành ubuntu hoặc debian””
apt install hping3 -y
khi đã tải xong phần mềm. bạn có thể syn flood.
hping3 -S -p <port mục tiêu> --flood <ip mục tiêu>
bạn hãy thay port mục tiêu và ip mục tiêu bạn muốn test
ví dụ:
hping3 -S -p 443 --flood 192.168.1.1
ví dụ ở trên sẽ syn flood vào port 443 địa chỉ ip 192.168.1.1
nâng cao hơn bạn có thể thêm –rand-source vào trong câu lệnh để tạo địa chỉ IP nguồn giả mạo ngẫu nhiên
Nhận biết server của mình đang bị syn flood
website của bạn chậm bất thường, truy cập ssh bị lag còn khó lúc truy cập được lúc không, website bị downtimes
Để nhận biết bạn đang bị syn flood
- Bạn hãy xem lệnh top: chỉ số si rất cao trên > 9
- Tiến trình ksoftirqd kernel chạy rất cao cpu (xem trong lệnh top)
- Bạn có thể sử dụng netstat: gõ lệnh: netstat -npt | awk ‘{print $6}’ | sort | uniq -c | sort -nr | head nhìn chỉ số SYN_RECV rất cao để gõ được lệnh này bạn hãy cài net-tools trước nhé.
- Bạn có thể xem tcpdump để theo dõi
Hướng dẫn chống syn flood
Dưới đây là hướng dẫn về các phương pháp chống tấn công SYN flood
Chặn theo quốc gia, giả sử bạn chỉ kinh doanh ở việt nam thôi thì hãy chỉ để ip việt nam mới truy cập được website của bạn
Bạn có thể sử dụng csf hoặc các tường lửa nào đó chỉ cho phép sử dụng 1 số, nếu bạn đang dùng wptangtoc ols thì trong quản lý csf có support sẵn tính năng này để bạn dễ dàng sử dụng
Tăng kích thước hàng đợi SYN (SYN backlog queue)
Nguyên lý: Tăng số lượng kết nối SYN_RECV mà hệ thống có thể xử lý trước khi bắt đầu từ chối kết nối mới.
Nhược điểm: Chỉ là biện pháp tạm thời. Nếu cuộc tấn công đủ lớn, hàng đợi vẫn có thể bị đầy.
Hướng dẫn bạn hay mode tuỳ chỉnh lại kernel linux ví dụ ở đây mình sẽ set là 16000 hàng đợi, bạn có thể tăng lên cao hơn cần được điều chỉnh phù hợp với tài nguyên hệ thống (RAM, CPU). Quá lớn có thể gây lãng phí, quá nhỏ không đủ chống lại tấn công.
sysctl -w net.ipv4.tcp_max_syn_backlog=16000
nếu bạn muốn set vĩnh viễn hãy thêm vào /etc/sysctl.conf
net.ipv4.tcp_max_syn_backlog = 16000
Nguyên lý: khi hàng đợi SYN bị quá tải vượt ngưỡng bạn set. Thay vì lưu trữ thông tin về các kết nối SYN đang chờ trong hàng đợi (queue) có giới hạn (giới hạn là set ở SYN backlog queue ở bên trên), máy chủ sẽ tạo ra một “cookie” đặc biệt. Cookie này chứa thông tin về kết nối (như địa chỉ IP, cổng) được mã hóa vào số sequence number (ISN) của gói tin SYN-ACK gửi trả lại cho client. Khi client gửi gói tin ACK cuối cùng, máy chủ sẽ giải mã cookie từ ISN của client để xác thực kết nối mà không cần phải lưu trữ trạng thái trước đó.
sysctl -w net.ipv4.tcp_syncookies=1
nếu bạn muốn set vĩnh viễn hãy thêm vào /etc/sysctl.conf
net.ipv4.tcp_syncookies=1
Sử dụng rp_filter
Nguyên lý: Nó là một biện pháp bảo mật giúp chống lại IP spoofing (giả mạo địa chỉ IP). ví dụ như bạn dùng hping3 thêm –rand-source để giả mạo ip ấy, thì dùng kỹ thuật này để khắc chế giả mạo ip
sysctl -w net.ipv4.conf.all.rp_filter = 1
nếu bạn muốn set vĩnh viễn hãy thêm vào /etc/sysctl.conf
net.ipv4.conf.all.rp_filter = 1
Sử dụng CDN Cloudflare hoặc CDN QUIC CLOUD
CDN này là dạng CDN proxy ngược. nó giúp bạn ẩn đi ip gốc, khiến đối kẻ tấn công không biết được địa chỉ ip gốc của bạn là gì để thực thi syn flood. với những hacker giỏi thì phương án này họ vẫn có cách bypass tìm ra được ip gốc của mình. Để tấn công, nhưng với hacker kém thì cách này rất hiệu quả.
Bạn có thể nâng cao hơn triển khai theo kiểu này một ý tưởng mình ứng dụng rất là hay:
Cloudflare CDN > Proxy ngược chính bạn tự build > Máy chủ gốc.
Nếu đối phương cao tay họ rò ra được bypass qua được cloudflare, thì họ sẽ chỉ biết được ip proxy ngược chính bạn tự build, họ sẽ tấn công vào đó, bạn có thể kết hợp APO cloudflare để cache đẩy thời gian cache lưu file lưu lâu hơn, nếu như họ đánh sập mất con proxy ngược thì bạn nhân bản con proxy ngược đó để thay đổi địa chỉ ip trỏ dns vào con proxy ngược.
Phương án này rất tuyệt vời với các website dạng blog tĩnh. Rồi chống syn flood bằng chính con proxy ngược hãy chọn những hãng ngon ngon support chống ddos layer 3 và layer 4 thì tuyệt hảo. hãng nào ngon thì mình sẽ đề cập ở bên dưới:
Lựa chọn những đơn vị VPS có hệ thống hỗ trợ chống ddos layer 3 và layer 4
- Những đơn vị như OVH, amazon, google cloud, microsoft azure…
OVH là dòng VPS giá rẻ phần cứng CPU, RAM có vẻ hiệu suất đuối, nhưng quả gộp bằng thông mạng tạm thời để chống ddos thì bao đỉnh mình trải nghiệm đánh giá rất cao. còn 3 ông lớn amazon, google cloud, microsoft azure thì đắt nó sắt ra miếng.
Với cá nhân mình thích dùng OVH cần thiết để làm proxy ngược cũng rất tuyệt vời như ý tưởng ở bên trên. Hiệu suất phần cứng không ngon lắm nhưng được cái giá rẻ, proxy ngược thì cũng không cần quá nhiều phần cứng phải khỏe. với mình như thế là đủ, còn giàu nhiều tiền thì cứ chơi mấy ông lớn google, amazon, microsoft.
Nếu bạn synflood bạn có thể cân những sử dụng những hãng vps máy chủ này để tăng cường chống synflood
Những đơn vị VPS bình dân phổ thông như Vultr, Digitalocean, Lionde, Upcloud… những hàng này phân khúc bình dân phổ thông phần cứng cpu và ram và uptime rất ngon nhưng họ có quảng cáo họ có công nghệ chống ddos layer3 và layer 4 tự động nhưng mình trải nghiệm sử dụng nó chỉ mang tính chất quảng cáo nó chả có tác dụng gì.
Nâng cấp phần cứng
Bạn có thể nâng cấp nhiều cpu hơn xịn hơn và ram nhiều hơn và băng thông mạng cao hơn trong tạm thời khi đang bị tấn công. Khi nào qua cuộc tấn công thì có thể giảm xuống phù hợp với nhu cầu hiện tại.
biết là giải pháp này không trỉệt để cho nắm, nó sẽ hữu ích với những cuộc tấn công nhỏ mà thôi, còn tấn công lớn thì bao nhiêu tài nguyên cho đủ
Quản lý port chặt chẽ
synflood chỉ hoạt động hiệu quả khi tấn công vào những port đang được mở, còn những port đã bị drop đóng rồi thì không hiểu quả.
Port nào không dùng thì hãy đóng port đó lại, đừng mở vô tội vạ.
Những port cơ bản cần thiết như http (80) và https (443) thì bắt buộc phải mở rồi để sử dụng làm webserver rồi.
Sử dụng tính năng SynFlood trong csf
Trong phần mềm csf có hỗ trợ tính năng chống syn flood khá ok.
Bạn có thể config trong file: /etc/csf/csf.conf chuyển SYNFLOOD=0 thành SYNFLOOD=1 rồi restart lại csf để sử dụng.
Giới hạn yêu cầu
iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
ví dụ ở bên trên bạn có thể sử dụng iptables: Giới hạn 10 gói SYN/giây từ mỗi IP, nếu bạn đang dùng firewalld hoặc nftables thì sẽ có hình thức triển khai la lá như nhau, ở đây mình chỉ thị phạm iptables.
Bạn có thể tuỳ biến giới hạn truy cập yêu cầu trên port 443 hay 80 theo nhu cầu của bạn. đây là cách mình thường thích làm.
Còn có rất nhiều phương án chống syn flood khác nữa… mình cũng xin phép kết thúc bài viết ở đây thôi.
Kết luận:
Hy vọng bài viết này mình sẽ để anh chị em có thêm những kiến thức về an ninh mạng.
Tại sao tự nhiên website đang chạy ngon mà tự nhiên nó bị lỗi downtimes không chạy được. (và mình vẫn nghe được những câu hỏi website của em không làm gì tự nhiên nó lỗi, đây là câu hỏi mình được hỏi hàng ngày cũng chán không muốn trả lời, website bạn hàng ngày bán hàng và online và có bài viết mới, giống như một chiếc xe máy thôi đi nhiều thì nó cũng có hạn sử dụng đến lúc nào đó thì có thể nó sẽ bị lỗi website cũng thế thôi)
Nếu có kẻ xấu tấn công các bạn có biết được rằng họ tấn công mình bằng cách gì và cách phòng thủ ứng phó ra sao.
Bạn có thể kết hợp các phương án chống syn flood kết hợp với nhau để tạo nên lá chắn cơ bản bảo vệ website của bạn.
Còn có rất nhiều kỹ thuật tấn công khác nhau tương lai mình có thời gian thì sẽ chia sẻ nhiều hơn để anh em có thêm kiến thức về bảo mật chống ddos
Để lại một bình luận