<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ips on Roduygo | Blog</title><link>/tags/ips/</link><description>Recent content in Ips on Roduygo | Blog</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Thu, 21 May 2026 23:00:00 +0700</lastBuildDate><atom:link href="/tags/ips/index.xml" rel="self" type="application/rss+xml"/><item><title>IDS/IPS với Suricata &amp; Cân bằng tải</title><link>/post/ids-ips-suricata-load-balancer/</link><pubDate>Thu, 21 May 2026 23:00:00 +0700</pubDate><guid>/post/ids-ips-suricata-load-balancer/</guid><description>&lt;p&gt;Chào mừng các bạn tiếp tục với Series Giải phẫu Mạng &amp;amp; Packet Analysis! Ở bài viết trước, chúng ta đã xây dựng thành công Vành đai Tường lửa (Firewall) vững chắc, nhưng Firewall truyền thống chỉ kiểm tra được lớp vỏ bên ngoài của gói tin. Để phát hiện được những mã độc nằm sâu bên trong &amp;ldquo;thùng hàng&amp;rdquo; dữ liệu và điều phối lưu lượng mạng khổng lồ, hệ thống cần được trang bị thêm &amp;ldquo;con mắt ma thuật&amp;rdquo; và &amp;ldquo;bộ não&amp;rdquo; thông minh. Hôm nay, chúng ta sẽ đi sâu vào phân tích hệ thống phát hiện/ngăn chặn xâm nhập (&lt;strong&gt;IDS/IPS&lt;/strong&gt;) với Suricata, đồng thời làm rõ nghệ thuật &lt;strong&gt;Cân bằng tải&lt;/strong&gt; (Load Balancing) ở Layer 4 và Layer 7.&lt;/p&gt;
&lt;h2 id="1-ranh-giới-giữa-quan-sát-và-hành-động-ids-vs-ips"&gt;1. Ranh giới giữa &amp;ldquo;Quan sát&amp;rdquo; và &amp;ldquo;Hành động&amp;rdquo;: IDS vs IPS
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;IDS&lt;/strong&gt; (Intrusion Detection System) và &lt;strong&gt;IPS&lt;/strong&gt; (Intrusion Prevention System) đều là các công nghệ bảo mật giúp phát hiện và cảnh báo hoạt động trái phép dựa trên chữ ký, trí tuệ nhân tạo hoặc các hành vi bất thường. Tuy nhiên, vị trí đứng và quyền sinh sát của chúng trong mạng lưới lại hoàn toàn khác nhau.&lt;/p&gt;
&lt;h3 id="11-giám-sát-thụ-động-với-ids-passive-monitoring"&gt;1.1 Giám sát thụ động với IDS (Passive Monitoring)
&lt;/h3&gt;&lt;p&gt;IDS hoạt động theo cơ chế &lt;strong&gt;Promiscuous Mode&lt;/strong&gt; (Chế độ hỗn tạp). Điều này có nghĩa là nó chỉ &lt;strong&gt;copy&lt;/strong&gt; một bản sao dữ liệu từ Switch (thông qua cổng SPAN/Mirror) để phân tích mà &lt;strong&gt;không hề can thiệp&lt;/strong&gt; vào luồng đi của gói tin gốc.&lt;/p&gt;
&lt;p&gt;Ví dụ, khi bạn đang tải một file qua FTP không bảo mật, IDS sẽ soi gói tin và phát hiện nội dung Clear-text truyền đi. Lúc này, nó sẽ kích hoạt &lt;strong&gt;Signature-based Detection&lt;/strong&gt; và bắn một Alert lên màn hình SOC: &amp;ldquo;Cảnh báo: Phát hiện truyền tin Clear-text trên cổng &lt;code&gt;21&lt;/code&gt;!&amp;rdquo;. Tuy nhiên, vì nó chỉ quan sát, tệp tin của bạn vẫn sẽ được tải về bình thường.&lt;/p&gt;
&lt;h3 id="12-kiểm-tra-trực-diện-với-ips-in-line-inspection"&gt;1.2 Kiểm tra trực diện với IPS (In-line Inspection)
&lt;/h3&gt;&lt;p&gt;Trái ngược với sự thụ động của IDS, IPS đứng ngay &lt;strong&gt;giữa đường truyền mạng&lt;/strong&gt; giống như một trạm thu phí (&lt;strong&gt;In-line Inspection&lt;/strong&gt;). Mọi gói tin bắt buộc phải đi xuyên qua thân xác nó. Nếu gói tin sạch thì được đi tiếp, còn gói tin &amp;ldquo;bẩn&amp;rdquo; chứa mã độc sẽ bị &lt;strong&gt;Drop&lt;/strong&gt; (Hủy) ngay lập tức.&lt;/p&gt;
&lt;p&gt;Trong thực tế, nếu kẻ xấu thực hiện &lt;strong&gt;Brute Force SSH&lt;/strong&gt; với hàng trăm gói tin từ một IP lạ, IPS sẽ dùng &lt;strong&gt;Statistical Anomaly-based Detection&lt;/strong&gt; để nhận diện bất thường. Nó không chỉ báo cáo mà còn tự động tạo một Rule trên tường lửa để Block/Deny IP đó ngay tức khắc, khiến kẻ tấn công chỉ nhận được thông báo &lt;code&gt;Connection timed out&lt;/code&gt;.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Cảnh báo SOC:&lt;/strong&gt; Việc triển khai IPS tuy an toàn tuyệt đối nhưng lại mang rủi ro &amp;ldquo;nghẽn cổ chai&amp;rdquo; mạng hoặc chặn nhầm (&lt;strong&gt;False Positive&lt;/strong&gt;) lưu lượng hợp lệ. Trong thực tiễn vận hành SOC, các hệ thống giám sát mới sẽ luôn được chạy ở chế độ &lt;strong&gt;IDS&lt;/strong&gt; (chỉ nhận cảnh báo) một thời gian dài để &amp;ldquo;học&amp;rdquo; hành vi mạng, trước khi được chuyển sang bật chế độ &lt;strong&gt;IPS&lt;/strong&gt; (chặn cắt tự động).&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="2-thực-chiến-cấu-hình-ips-suricata-chặn-ping"&gt;2. Thực chiến cấu hình IPS Suricata chặn Ping
&lt;/h2&gt;&lt;p&gt;Để biến Suricata từ một &amp;ldquo;kẻ quan sát&amp;rdquo; thành một &amp;ldquo;vệ sĩ&amp;rdquo; thực thụ mang tính chất IPS, chúng ta phải dùng &lt;code&gt;iptables&lt;/code&gt; để tóm các gói tin ICMP (Ping) và đẩy chúng vào một hàng chờ (Queue) để Suricata trực tiếp duyệt và ra lệnh hủy.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Đẩy gói tin Ping (ICMP) chiều vào (INPUT) sang hàng chờ NFQUEUE số 0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo iptables -I INPUT -p icmp -j NFQUEUE --queue-num &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Đẩy gói tin Ping (ICMP) chiều ra (OUTPUT) sang hàng chờ NFQUEUE số 0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo iptables -I OUTPUT -p icmp -j NFQUEUE --queue-num &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Mở file rule của Suricata để thêm luật Drop ICMP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nano /var/lib/suricata/rules/local.rules
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Khởi chạy Suricata trỏ vào file luật vừa tạo và lắng nghe trên card mạng enp7s0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo suricata -S /var/lib/suricata/rules/local.rules -i enp7s0
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Theo dõi log cảnh báo và hành động chặn (Drop) theo thời gian thực&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo tail -f /var/log/suricata/fast.log
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Sau khi cấu hình, nếu bạn thực hiện lệnh &lt;code&gt;ping 8.8.8.8&lt;/code&gt;, gói tin sẽ bị tóm vào NFQUEUE. Thay vì nhận được phản hồi Ping thành công, màn hình của bạn sẽ báo &lt;code&gt;Request Timeout&lt;/code&gt;, và trong file &lt;code&gt;fast.log&lt;/code&gt; sẽ liên tục xuất hiện nhãn &lt;code&gt;[wDrop]&lt;/code&gt; chứng tỏ IPS đã ra tay chặn đứng thành công.&lt;/p&gt;
&lt;h2 id="3-nghệ-thuật-cân-bằng-tải-load-balancer"&gt;3. Nghệ thuật Cân bằng tải (Load Balancer)
&lt;/h2&gt;&lt;p&gt;Bên cạnh bảo mật, &lt;strong&gt;Cân bằng tải&lt;/strong&gt; (Load Balancing) là kỹ thuật sống còn để điều phối lưu lượng giao thông mạng, đảm bảo các máy chủ không bao giờ bị &amp;ldquo;nghẽn cổ chai&amp;rdquo; khi có lượng lớn người truy cập cùng lúc.&lt;/p&gt;
&lt;h3 id="31-cân-bằng-tải-lớp-4-l4-load-balancing"&gt;3.1 Cân bằng tải Lớp 4 (L4 Load Balancing)
&lt;/h3&gt;&lt;p&gt;Kiểu cân bằng này điều phối giao thông dựa trên giao thức TCP/UDP ở Tầng 4. Nó chỉ nhìn vào &lt;strong&gt;Địa chỉ IP Đích&lt;/strong&gt; và &lt;strong&gt;Số cổng&lt;/strong&gt; (Port) để ra quyết định — không cần quan tâm nội dung bên trong gói tin chứa cái gì. Nhờ việc không phải giải mã nội dung (Decapsulation), cách này có tốc độ xử lý cực kỳ nhanh (ví dụ: IPVS trên Linux, F5 Big-IP).&lt;/p&gt;
&lt;h3 id="32-cân-bằng-tải-lớp-7-l7-load-balancing"&gt;3.2 Cân bằng tải Lớp 7 (L7 Load Balancing)
&lt;/h3&gt;&lt;p&gt;Đây là kiểu cân bằng tải &lt;strong&gt;&amp;ldquo;thông minh&amp;rdquo;&lt;/strong&gt; hoạt động ở Tầng Ứng dụng, thường dựa trên giao thức HTTP/HTTPS. L7 Load Balancer có khả năng &amp;ldquo;soi&amp;rdquo; sâu vào nội dung của &lt;strong&gt;URL&lt;/strong&gt;, &lt;strong&gt;Header&lt;/strong&gt; hoặc &lt;strong&gt;Cookie&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Nó cực kỳ linh hoạt và phù hợp cho kiến trúc Microservices. Ví dụ, nếu người dùng truy cập &lt;code&gt;ezlearn.com/api/v1/chat&lt;/code&gt;, nó sẽ đẩy sang cụm máy ảo xử lý Chat; còn nếu truy cập &lt;code&gt;ezlearn.com/static/images&lt;/code&gt;, nó lại đẩy sang cụm lưu trữ hình ảnh (ví dụ: Nginx, HAProxy).&lt;/p&gt;
&lt;h3 id="33-cân-bằng-tải-mức-dns-dns-load-balancing"&gt;3.3 Cân bằng tải mức DNS (DNS Load Balancing)
&lt;/h3&gt;&lt;p&gt;Đây là kiểu cân bằng nằm ở &amp;ldquo;vòng ngoài cùng&amp;rdquo; trước khi gói tin chạm tới hệ thống của bạn. Khi bạn gõ &lt;code&gt;google.com&lt;/code&gt;, máy chủ DNS sẽ tự động xoay vòng (&lt;strong&gt;Round Robin&lt;/strong&gt;) và trả về các địa chỉ IP khác nhau cho những người dùng khác nhau.&lt;/p&gt;
&lt;h2 id="4-demo-thực-chiến-nginx-load-balancer-round-robin"&gt;4. Demo thực chiến Nginx Load Balancer (Round Robin)
&lt;/h2&gt;&lt;p&gt;Để thấy rõ cách một L7 Load Balancer chia việc, chúng ta dùng Nginx thiết lập thuật toán &lt;strong&gt;Round Robin&lt;/strong&gt; (Chia đều) cho 2 máy chủ Python.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Bật máy chủ backend số 1 chạy nền ở cổng 8001&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python3 -m http.server &lt;span style="color:#ae81ff"&gt;8001&lt;/span&gt; &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Bật máy chủ backend số 2 chạy nền ở cổng 8002&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python3 -m http.server &lt;span style="color:#ae81ff"&gt;8002&lt;/span&gt; &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Sửa file cấu hình của Nginx để điều hướng tải giữa 2 máy chủ trên&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nano /etc/nginx/conf.d/lb.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Kiểm tra xem file cấu hình Nginx có bị lỗi cú pháp không&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo nginx -t
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Khởi động lại dịch vụ Nginx để áp dụng cấu hình Load Balancer&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl restart nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Gửi request kiểm tra đến Nginx ở cổng 8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -I http://127.0.0.1:8080
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Với cơ chế Round Robin, mỗi request &lt;code&gt;curl&lt;/code&gt; mới sẽ được Nginx luân phiên gửi sang backend kế tiếp trong danh sách (gói thứ nhất vào &lt;code&gt;8001&lt;/code&gt;, gói thứ hai vào &lt;code&gt;8002&lt;/code&gt;). Nếu bạn dùng Wireshark với bộ lọc &lt;code&gt;http &amp;amp;&amp;amp; (tcp.port == 8001 || tcp.port == 8002)&lt;/code&gt;, bạn sẽ thấy rõ sự phân tán luồng cực kỳ nhịp nhàng này.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Việc kết hợp IDS/IPS để thanh lọc mã độc và Load Balancer để điều phối luồng truy cập giúp hệ thống mạng doanh nghiệp đạt được cả hai yếu tố: Bảo mật vững chắc và Hiệu năng tối đa. Tuy nhiên, hacker luôn tìm cách lẩn trốn, và chúng có thể dùng Proxy hoặc VPN để mã hóa toàn bộ dữ liệu, khiến cả IDS lẫn IPS đều bị &amp;ldquo;mù&amp;rdquo;. Trong Bài 13 tiếp theo, chúng ta sẽ phân tích cách VPN hoạt động ở Tầng 3 và nghệ thuật Vượt rào &amp;amp; Ẩn danh (Proxy vs VPN). Hãy cùng đón đọc nhé!&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>