<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Network on Roduygo | Blog</title><link>/categories/network/</link><description>Recent content in Network 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="/categories/network/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><item><title>Vành đai Tường lửa (Firewall) &amp; NAT</title><link>/post/firewall-nat-network-security/</link><pubDate>Thu, 21 May 2026 22:58:00 +0700</pubDate><guid>/post/firewall-nat-network-security/</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! Trong 10 bài viết trước, chúng ta đã lột tả mọi góc khuất của các giao thức mạng từ Tầng 1 đến Tầng 7 và phân tích cách hacker thao túng chúng. Giờ là lúc chúng ta chuyển từ thế bị động sang chủ động: Xây dựng các công sự bảo vệ. Hôm nay, chúng ta sẽ bắt đầu với lớp giáp kiên cố nhất của mọi hệ thống: &lt;strong&gt;Vành đai Tường lửa&lt;/strong&gt; (Firewall) và cơ chế ẩn danh nội bộ (&lt;strong&gt;NAT&lt;/strong&gt;).&lt;/p&gt;
&lt;h2 id="1-tường-lửa-firewall-là-gì-và-vị-trí-hoạt-động"&gt;1. Tường lửa (Firewall) là gì và Vị trí hoạt động
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Firewall&lt;/strong&gt; là một hệ thống bảo mật mạng đóng vai trò như một &amp;ldquo;màng lọc&amp;rdquo; khắc nghiệt, kiểm soát toàn bộ lưu lượng dữ liệu đi ra (Outbound) và đi vào (Inbound) giữa mạng nội bộ an toàn và môi trường Internet đầy rẫy hiểm nguy.&lt;/p&gt;
&lt;p&gt;Dưới góc độ triển khai, Firewall được chia thành hai loại chính:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Network Firewall:&lt;/strong&gt; Thường là thiết bị phần cứng hoặc máy chủ chuyên dụng đặt tại Gateway/Router để bảo vệ cả một mạng doanh nghiệp.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Host-based Firewall:&lt;/strong&gt; Chạy trực tiếp trên từng hệ điều hành (như &lt;strong&gt;Windows Defender Firewall&lt;/strong&gt; hoặc &lt;code&gt;firewalld&lt;/code&gt; trên Linux) để bảo vệ duy nhất chiếc máy tính đó.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Để chặn đứng các mối đe dọa, Firewall có thể hoạt động ở nhiều tầng khác nhau trong mô hình OSI:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Layer 3 (Network):&lt;/strong&gt; Lọc dựa trên địa chỉ IP Nguồn/Đích (ví dụ: Chặn IP &lt;code&gt;157.240.199.35&lt;/code&gt; của Facebook).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layer 4 (Transport):&lt;/strong&gt; Lọc dựa trên giao thức TCP/UDP và số Cổng (ví dụ: Cấm cổng &lt;code&gt;22&lt;/code&gt; SSH).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Layer 7 (Application):&lt;/strong&gt; Lọc dựa trên nội dung thực tế của ứng dụng (ví dụ: Chặn các truy vấn DNS độc hại hoặc các HTTP GET mang mã SQL Injection).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="2-nguyên-lý-hoạt-động-acl-packet-filtering-và-stateful-inspection"&gt;2. Nguyên lý hoạt động: ACL, Packet Filtering và Stateful Inspection
&lt;/h2&gt;&lt;p&gt;Sức mạnh của Firewall nằm ở một danh sách các quy tắc được định nghĩa từ trước gọi là &lt;strong&gt;ACL&lt;/strong&gt; (Access Control List). Khi một gói tin bay tới, Firewall sẽ áp dụng các cơ chế kiểm tra sau:&lt;/p&gt;
&lt;h3 id="21-lọc-gói-tin-packet-filtering"&gt;2.1 Lọc gói tin (Packet Filtering)
&lt;/h3&gt;&lt;p&gt;Firewall sẽ &amp;ldquo;soi&amp;rdquo; trực tiếp vào các lớp vỏ Header (Lớp 3 và Lớp 4) mà chúng ta đã phân tích trên Wireshark ở các bài trước. Nó kiểm tra xem địa chỉ IP và Port này có nằm trong danh sách đen (Blacklist) hay không.&lt;/p&gt;
&lt;h3 id="22-kiểm-tra-trạng-thái-stateful-inspection"&gt;2.2 Kiểm tra trạng thái (Stateful Inspection)
&lt;/h3&gt;&lt;p&gt;Những thế hệ Firewall thông minh không chỉ soi từng gói tin rời rạc, mà nó còn &lt;strong&gt;&amp;ldquo;nhớ&amp;rdquo;&lt;/strong&gt; trạng thái của cả một cuộc hội thoại. Ví dụ: Nếu nó nhớ rằng máy tính của bạn vừa gửi một gói &lt;code&gt;SYN&lt;/code&gt; ngỏ lời ra ngoài, nó sẽ tự động cho phép gói &lt;code&gt;SYN-ACK&lt;/code&gt; phản hồi từ Server đi xuyên qua tường lửa để trở về máy bạn.&lt;/p&gt;
&lt;h3 id="23-phán-quyết-actions"&gt;2.3 Phán quyết (Actions)
&lt;/h3&gt;&lt;p&gt;Sau khi đối chiếu ACL, Firewall sẽ đưa ra một trong ba phán quyết đối với gói tin:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Allow / Accept:&lt;/strong&gt; Cho phép gói tin đi qua bình thường.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deny / Drop:&lt;/strong&gt; Tiêu hủy gói tin trong &lt;strong&gt;im lặng&lt;/strong&gt;. Kẻ gửi sẽ không biết gói tin đi đâu, dẫn đến việc Wireshark liên tục báo lỗi &lt;code&gt;TCP Retransmission&lt;/code&gt; do chờ mãi không thấy phản hồi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reject:&lt;/strong&gt; Hủy gói tin nhưng lịch sự gửi lại một thông báo lỗi (thường là gói tin &lt;strong&gt;ICMP&lt;/strong&gt;) báo cho kẻ gửi biết rằng &amp;ldquo;Cửa đã bị khóa&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-thực-chiến-firewall-và-bắt-bệnh-trên-wireshark"&gt;3. Thực chiến Firewall và Bắt bệnh trên Wireshark
&lt;/h2&gt;&lt;p&gt;Để minh họa sự khác biệt của phán quyết, chúng ta dùng &lt;code&gt;firewalld&lt;/code&gt; trên Linux để chặn cổng &lt;code&gt;22&lt;/code&gt; (SSH) bằng cơ chế &lt;strong&gt;REJECT&lt;/strong&gt; và xem hệ thống phản ứng ra sao.&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;# Kiểm tra danh sách các luật (rules) đang hoạt động trên Firewall&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall-cmd --list-all
&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;# Thêm một Rich Rule để từ chối mọi kết nối TCP vào cổng 22&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall-cmd --add-rich-rule&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#39;rule family=&amp;#34;ipv4&amp;#34; port port=&amp;#34;22&amp;#34; protocol=&amp;#34;tcp&amp;#34; reject&amp;#39;&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;# Reload để Tường lửa áp dụng luật mới ngay lập tức&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo firewall-cmd --reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Lúc này, nếu có kẻ cố tình truy cập vào cổng &lt;code&gt;22&lt;/code&gt; của máy bạn (&lt;code&gt;192.168.1.29&lt;/code&gt;), Wireshark sẽ không hiện lỗi gửi lại (Retransmission) mà sẽ chộp được ngay một gói tin phản hồi chí mạng ở Lớp 3:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# Gói tin ICMP trả về khi Firewall áp dụng cơ chế REJECT
# Hệ thống trực tiếp đóng sập cửa và thông báo &amp;#34;Host unreachable&amp;#34;

No. Time Source Destination Protocol Info
5 2.204045407 192.168.1.29 192.168.1.29 ICMP Destination unreachable (Host unreachable)
&lt;/code&gt;&lt;/pre&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Góc nhìn SOC:&lt;/strong&gt; Thông điệp &lt;code&gt;Destination unreachable (Host unreachable)&lt;/code&gt; của ICMP chính là cách Firewall &amp;ldquo;trả lời&amp;rdquo; kẻ tấn công. Trong thực tế, Blue Team thường ưu tiên dùng quy tắc &lt;strong&gt;DROP&lt;/strong&gt; thay vì &lt;strong&gt;REJECT&lt;/strong&gt;. Việc Drop (hủy trong im lặng) sẽ làm công cụ quét mạng (Scanner) của hacker bị treo và chậm đi đáng kể do phải đợi Timeout, đồng thời không cung cấp cho chúng bất kỳ manh mối nào về việc hệ thống có Firewall hay không.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="4-nat-network-address-translation-người-hùng-giấu-mặt"&gt;4. NAT (Network Address Translation): Người hùng giấu mặt
&lt;/h2&gt;&lt;p&gt;Firewall chặn đứng các cuộc tấn công từ bên ngoài, nhưng còn một kỹ thuật khác giúp hệ thống nội bộ trở nên vô hình trên Internet: &lt;strong&gt;NAT&lt;/strong&gt;. NAT hoạt động chủ yếu ở Tầng 3 và Tầng 4, với nhiệm vụ thay đổi địa chỉ IP trong gói tin khi nó đi qua Router.&lt;/p&gt;
&lt;p&gt;Hãy xem quá trình gói tin đi từ máy tính của bạn (IP nội bộ &lt;code&gt;192.168.1.29&lt;/code&gt;) ra máy chủ Facebook (&lt;code&gt;157.240.199.35&lt;/code&gt;):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Gói tin đi ra (Outbound):&lt;/strong&gt; Máy bạn gửi gói tin từ địa chỉ &lt;code&gt;192.168.1.29:56375&lt;/code&gt; tới &lt;code&gt;157.240.199.35:443&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tại Router (Quá trình dịch):&lt;/strong&gt; Router không thể đẩy dải IP &lt;code&gt;192.168.x.x&lt;/code&gt; ra Internet vì đây là dải địa chỉ &lt;strong&gt;Private&lt;/strong&gt; không được định tuyến. NAT sẽ &amp;ldquo;xóa&amp;rdquo; IP nguồn này và thay bằng IP Public của công ty (ví dụ: &lt;code&gt;113.161.x.x&lt;/code&gt;). Đồng thời, nó ghi vào &lt;strong&gt;NAT Table&lt;/strong&gt; một dòng: &amp;ldquo;Port &lt;code&gt;56375&lt;/code&gt; của máy nội bộ &lt;code&gt;.29&lt;/code&gt; đang được gán cho kết nối Facebook&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gói tin đi về (Inbound):&lt;/strong&gt; Facebook phản hồi lại địa chỉ Public &lt;code&gt;113.161.x.x:56375&lt;/code&gt;. Router nhận gói tin, dò lại NAT Table, thấy khớp Port nên tự động &amp;ldquo;dịch&amp;rdquo; ngược lại IP đích thành &lt;code&gt;192.168.1.29&lt;/code&gt; và đẩy vào máy bạn.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Nhờ NAT, dù công ty bạn có hàng nghìn nhân viên, tất cả chỉ cần dùng chung một vài địa chỉ IP Public để lướt web. Hacker đứng ngoài Internet sẽ không thể nào biết được kiến trúc địa chỉ IP thực sự bên trong mạng nội bộ của bạn.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Việc triển khai vững chắc Firewall và NAT giúp che giấu và bảo vệ hạ tầng mạng của tổ chức khỏi 90% các cuộc rà quét tự động của tin tặc. Tuy nhiên, Firewall chỉ có thể soi được lớp vỏ Header, vậy nếu hacker nhét một tệp chứa mã độc vào bên trong một gói tin HTTP hợp lệ thì sao? Ở Bài 12 tiếp theo, chúng ta sẽ lắp đặt thêm &amp;ldquo;con mắt ma thuật&amp;rdquo; cho mạng lưới: Phân tích sự khác biệt giữa IDS (Giám sát thụ động) và IPS (Ngăn chặn chủ động) với công cụ Suricata. Đừng bỏ lỡ nhé!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Hạ tầng Mạng (DNS &amp; DHCP)</title><link>/post/dns-dhcp-network-infrastructure/</link><pubDate>Thu, 21 May 2026 22:53:00 +0700</pubDate><guid>/post/dns-dhcp-network-infrastructure/</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! Sau khi đã thiết lập xong &amp;ldquo;đường hầm&amp;rdquo; mã hóa vững chắc ở Tầng 6, chúng ta chính thức bước chân vào Lớp 7 (Application). Đây là nơi chứa đựng những giao thức nền tảng nhất giúp Internet vận hành, nhưng cũng là những &amp;ldquo;góc khuất ngây thơ&amp;rdquo; nhất vì mặc định chúng thiếu đi các cơ chế bảo mật cốt lõi. Hôm nay, chúng ta sẽ cùng bóc tách hệ thống phân giải tên miền (DNS) và quá trình xin cấp phát IP tự động (DHCP), đồng thời phân tích các đòn đánh hiểm hóc nhắm vào chúng.&lt;/p&gt;
&lt;h2 id="1-dns-domain-name-system---bản-danh-bạ-của-internet"&gt;1. DNS (Domain Name System) - Bản danh bạ của Internet
&lt;/h2&gt;&lt;p&gt;Hệ thống phân giải tên miền (&lt;strong&gt;DNS&lt;/strong&gt;) là một giao thức cốt lõi thuộc Tầng 7 (Application Layer) hoạt động chủ yếu qua cổng &lt;strong&gt;UDP 53&lt;/strong&gt;. Nhiệm vụ của nó là &amp;ldquo;dịch&amp;rdquo; các tên miền dễ nhớ đối với con người (như &lt;code&gt;google.com&lt;/code&gt;) thành địa chỉ IP thực tế để máy tính có thể giao tiếp với nhau trên mạng.&lt;/p&gt;
&lt;p&gt;Ví dụ, trước khi bạn thực sự truy cập vào trang Facebook, máy tính của bạn sẽ bắn một gói tin truy vấn DNS đến máy chủ phân giải (như &lt;code&gt;8.8.8.8&lt;/code&gt;) để hỏi IP của Facebook là gì. Sau khi DNS trả về địa chỉ IP và lưu nó vào bộ nhớ đệm (cache), trình duyệt của bạn mới bắt đầu thực hiện kết nối TCP 3 bước để trao đổi dữ liệu web.&lt;/p&gt;
&lt;h2 id="2-bắt-tại-trận-các-đòn-tấn-công-nhắm-vào-dns"&gt;2. Bắt tại trận các đòn tấn công nhắm vào DNS
&lt;/h2&gt;&lt;p&gt;DNS được thiết kế từ thời kỳ sơ khai của Internet nên nó rất &amp;ldquo;ngây thơ&amp;rdquo;: mặc định các truy vấn &lt;strong&gt;không được mã hóa&lt;/strong&gt; và &lt;strong&gt;không có cơ chế xác thực danh tính&lt;/strong&gt; mạnh mẽ. Hacker hiểu rất rõ điểm yếu này và thường xuyên tung ra các đòn tấn công sau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DNS Spoofing / Poisoning (Lừa đảo/Đầu độc):&lt;/strong&gt; Kẻ tấn công gửi một gói tin trả lời (Response) giả mạo chứa địa chỉ IP của máy hacker, cố gắng đến máy bạn nhanh hơn cả DNS Server thật. Nếu số định danh &lt;code&gt;Transaction ID&lt;/code&gt; trong gói tin trùng khớp, máy tính của bạn sẽ tin tưởng tuyệt đối và truy cập thẳng vào trang web lừa đảo do hacker dựng sẵn.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS Tunneling (Đường hầm dữ liệu):&lt;/strong&gt; Tường lửa của các doanh nghiệp thường luôn cho phép cổng &lt;code&gt;53&lt;/code&gt; đi qua một cách tự do. Biết được kẽ hở này, hacker có thể nhồi nhét dữ liệu nhạy cảm (như mã nguồn dự án hoặc thông tin thẻ tín dụng) vào bên trong các truy vấn DNS thông thường để âm thầm tuồn dữ liệu ra ngoài (&lt;strong&gt;Data Exfiltration&lt;/strong&gt;) mà không bị hệ thống IDS/IPS chặn lại.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS Hijacking (Chiếm quyền điều khiển):&lt;/strong&gt; Kẻ gian trực tiếp thay đổi cài đặt máy chủ DNS trên hệ điều hành máy nạn nhân hoặc trên Router để trỏ mọi truy vấn phân giải về một DNS Server do chúng kiểm soát hoàn toàn.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dưới đây là output Wireshark ghi lại một truy vấn DNS bình thường. Nếu bị &lt;strong&gt;DNS Spoofing&lt;/strong&gt;, IP trả về ở gói số 2 sẽ là IP của kẻ tấn công thay vì IP thật:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# Máy khách 192.168.1.156 hỏi DNS Server 203.113.188.6 địa chỉ của google.com
# Bộ lọc Wireshark: dns &amp;amp;&amp;amp; ip.addr == 192.168.1.156

No. Time Source Destination Protocol Info
1 0.000000 192.168.1.156 -&amp;gt; 203.113.188.6 DNS Standard query 0x24b7 A google.com
2 0.084123 203.113.188.6 -&amp;gt; 192.168.1.156 DNS Standard query response 0x24b7 A google.com A 142.250.198.46
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="3-dhcp-dynamic-host-configuration-protocol-và-quy-trình-dora"&gt;3. DHCP (Dynamic Host Configuration Protocol) và Quy trình DORA
&lt;/h2&gt;&lt;p&gt;Trước khi máy tính có thể &amp;ldquo;hỏi đường&amp;rdquo; bằng DNS, nó phải làm thủ tục &amp;ldquo;xin hộ khẩu&amp;rdquo; để có một địa chỉ IP nội bộ hợp lệ nhằm gia nhập mạng. Quá trình tự động hóa này do giao thức &lt;strong&gt;DHCP&lt;/strong&gt; đảm nhận, hoạt động ở Tầng 7 và sử dụng cổng &lt;strong&gt;UDP 67&lt;/strong&gt; cho Server, &lt;strong&gt;UDP 68&lt;/strong&gt; cho Client.&lt;/p&gt;
&lt;p&gt;Khi bạn vừa cắm dây cáp mạng hoặc bật Wi-Fi, một quy trình 4 bước mang tên &lt;strong&gt;DORA&lt;/strong&gt; sẽ lập tức diễn ra:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;D — Discover (Khám phá):&lt;/strong&gt; Máy tính của bạn lúc này chưa có IP, nó dùng địa chỉ &lt;code&gt;0.0.0.0&lt;/code&gt; để &amp;ldquo;hét&amp;rdquo; lên toàn mạng bằng gói tin Broadcast: &amp;ldquo;Có ai là DHCP Server ở đây không? Tôi cần một địa chỉ IP!&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;O — Offer (Đề nghị):&lt;/strong&gt; Router (đóng vai trò DHCP Server) nghe thấy và đáp lại: &amp;ldquo;Tôi đây! Tôi đang có sẵn địa chỉ &lt;code&gt;192.168.1.14&lt;/code&gt; trống, cậu có muốn dùng không?&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;R — Request (Yêu cầu):&lt;/strong&gt; Máy của bạn phản hồi lại toàn mạng: &amp;ldquo;Tuyệt quá! Tôi đồng ý dùng địa chỉ &lt;code&gt;.14&lt;/code&gt; đó. Làm ơn khóa địa chỉ đó lại cho tôi nhé!&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A — Acknowledge (Xác nhận):&lt;/strong&gt; Router chốt sổ và thông báo: &amp;ldquo;Ok, địa chỉ &lt;code&gt;.14&lt;/code&gt; là của cậu trong vòng 24 giờ tới. Đây là thông số DNS và Default Gateway để cậu vào mạng&amp;rdquo;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="4-dhcp-starvation-và-rogue-server---sự-nguy-hiểm-của-broadcast"&gt;4. DHCP Starvation và Rogue Server - Sự nguy hiểm của Broadcast
&lt;/h2&gt;&lt;p&gt;Điểm yếu chí mạng của DHCP là nó hoạt động hoàn toàn dựa trên &lt;strong&gt;niềm tin&lt;/strong&gt; vào bất kỳ thiết bị nào phản hồi lại gói tin Broadcast (&lt;code&gt;255.255.255.255&lt;/code&gt;). Kẻ tấn công đứng trong cùng một mạng LAN có thể dễ dàng khai thác niềm tin này:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DHCP Starvation (Tấn công làm cạn kiệt):&lt;/strong&gt; Hacker sử dụng công cụ tự động để tạo ra hàng vạn gói tin Discover với các địa chỉ MAC giả mạo liên tục. Router sẽ ngây thơ cấp phát toàn bộ dải IP trống trong kho của nó (ví dụ từ &lt;code&gt;.2&lt;/code&gt; đến &lt;code&gt;.254&lt;/code&gt;) cho các MAC ảo này. Hậu quả là khi một nhân viên thật kết nối vào mạng, Router sẽ báo &amp;ldquo;hết số&amp;rdquo; và họ không thể nhận được IP để vào mạng.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Rogue DHCP Server (Server giả mạo):&lt;/strong&gt; Hacker chủ động dựng lên một DHCP Server giả ngay trong mạng công ty. Khi máy của nhân viên gửi gói tin Discover xin IP, Server giả này sẽ phản hồi nhanh hơn cả Router thật để cấp IP — nhưng nó sẽ cấp cho nạn nhân một &lt;strong&gt;Default Gateway giả mạo&lt;/strong&gt; trỏ thẳng về máy của hacker. Lúc này, toàn bộ dữ liệu nạn nhân gửi ra Internet đều chảy xuyên qua máy kẻ tấn công, tạo nên một đòn &lt;strong&gt;Man-in-the-Middle (MitM)&lt;/strong&gt; hoàn hảo.&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Cảnh báo SOC:&lt;/strong&gt; Để chống lại các cuộc tấn công hạ tầng này, quản trị viên mạng cần cấu hình tính năng &lt;strong&gt;DHCP Snooping&lt;/strong&gt; trên các Switch vật lý. Tính năng này sẽ chỉ cho phép các cổng (Port) kết nối với Router thật mới được quyền gửi gói tin &lt;code&gt;Offer&lt;/code&gt; và &lt;code&gt;Acknowledge&lt;/code&gt;, chặn đứng mọi DHCP Server giả mạo.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Thấu hiểu cách DNS và DHCP vận hành giúp SOC Analyst phát hiện sớm các chiến dịch đánh cắp dữ liệu hoặc nghe lén mạng nội bộ trước khi chúng gây ra hậu quả. Sau khi gói tin của chúng ta đã có IP và tìm được đích đến, nó sẽ được chuyển giao cho các giao thức truyền tải văn bản và tệp tin. Trong Bài 9 tiếp theo, chúng ta sẽ phân tích sâu hơn về HTTP/HTTPS, cách FTP làm lộ mật khẩu trần trụi và kiến trúc đường hầm an toàn của SFTP. Hẹn gặp lại các bạn!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Lớp 5 (Session) &amp; Ranh giới của Phiên làm việc</title><link>/post/session-layer/</link><pubDate>Thu, 21 May 2026 22:30:00 +0700</pubDate><guid>/post/session-layer/</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! Sau khi đã thiết lập xong &amp;ldquo;đường ống&amp;rdquo; vật lý vững chắc bằng giao thức TCP ở Tầng 4, hệ thống phải đối mặt với một bài toán mới: Làm sao để &amp;ldquo;nhớ mặt&amp;rdquo; người dùng mà không bắt họ phải đăng nhập lại sau mỗi cú click chuột? Đó chính là nhiệm vụ của Tầng 5 (Session Layer) — nơi ranh giới của các phiên làm việc được thiết lập và cũng là nơi hacker tung ra những đòn cướp quyền vô cùng hiểm độc.&lt;/p&gt;
&lt;h2 id="1-tầng-5-session-và-sự-cần-thiết-của-phiên-làm-việc"&gt;1. Tầng 5 (Session) và Sự cần thiết của Phiên làm việc
&lt;/h2&gt;&lt;p&gt;Khi bạn mở trình duyệt web và thực hiện nhiều yêu cầu cùng lúc (như mở nhiều tab, tải nhiều ảnh), dữ liệu có nguy cơ bị lẫn lộn vào nhau. Tầng 5 (Lớp Phiên) sinh ra để giải quyết vấn đề này bằng cách thiết lập, quản lý và kết thúc các phiên kết nối. Nó đóng vai trò tạo ra một ranh giới độc nhất cho từng cuộc liên lạc.&lt;/p&gt;
&lt;p&gt;Ở mức độ truyền tải, Tầng 5 quản lý &amp;ldquo;luồng&amp;rdquo; nói chuyện thông qua 3 chế độ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Đơn công (Simplex):&lt;/strong&gt; Dữ liệu chỉ đi một chiều (như bạn nghe radio).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bán song công (Half-duplex):&lt;/strong&gt; Hai bên nói chuyện luân phiên (như bộ đàm — người này nói xong người kia mới được nói).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Song công toàn phần (Full-duplex):&lt;/strong&gt; Cả hai cùng nói và nghe cùng lúc (như gọi điện thoại di động).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tuy nhiên, bài toán lớn nhất ở đây là &lt;strong&gt;hiệu năng&lt;/strong&gt;. Việc bắt tay (Handshake) ở Tầng 4 (TCP) và Tầng 6 (TLS) cực kỳ tốn thời gian và làm &amp;ldquo;mệt&amp;rdquo; CPU của máy chủ. Để tối ưu hóa, Tầng 5 không bắt hai thiết bị phải chào hỏi lại từ đầu cho mỗi gói tin, mà sử dụng các cơ chế định danh đặc biệt.&lt;/p&gt;
&lt;h2 id="2-giải-phẫu-session-id-và-session-ticket-trên-wireshark"&gt;2. Giải phẫu Session ID và Session Ticket trên Wireshark
&lt;/h2&gt;&lt;p&gt;Để duy trì trạng thái kết nối, Tầng 5 sử dụng hai công cụ chính là &lt;strong&gt;Session ID&lt;/strong&gt; và &lt;strong&gt;Session Ticket&lt;/strong&gt;. Bằng cách dùng Wireshark, chúng ta có thể dễ dàng bắt được những &amp;ldquo;tấm vé&amp;rdquo; này bay trên không gian mạng.&lt;/p&gt;
&lt;h3 id="21-định-danh-cuộc-trò-chuyện-bằng-session-id"&gt;2.1 Định danh cuộc trò chuyện bằng Session ID
&lt;/h3&gt;&lt;p&gt;Sau lần bắt tay đầu tiên thành công, máy chủ sẽ cấp cho bạn một &amp;ldquo;mã số định danh&amp;rdquo; gọi là &lt;strong&gt;Session ID&lt;/strong&gt;. Khi máy bạn gửi hàng nghìn khung dữ liệu tiếp theo, nó chỉ cần đính kèm ID này. Server nhìn vào ID sẽ biết ngay: &amp;ldquo;Đây là khách quen, đã kiểm tra an ninh xong rồi, cho dữ liệu đi thẳng lên Tầng 6 để xử lý!&amp;rdquo;.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# Lọc gói tin Server Hello để tìm Session ID do máy chủ cấp phát
# Cú pháp bộ lọc trên Wireshark: tls.handshake.type == 2

Handshake Protocol: Server Hello
 Handshake Type: Server Hello (2)
 Length: 118
 Version: TLS 1.2 (0x0303)
 Random: dc3aa089a0c8825e54cc0106c17a0cb90305776b2d49f405fe30dc0f2bfad484
 Session ID Length: 32
 Session ID: d451a3116057f79488abdba0e27371ef79b25a156fcd8afaf011b9aa5bdb900b
 Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img alt="Giá trị của handshake" class="gallery-image" data-flex-basis="687px" data-flex-grow="286" height="222" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/session-layer/handshake.png" width="636"&gt;&lt;/p&gt;
&lt;p&gt;Cái dãy số Hex dài đó (d451a311&amp;hellip;) dùng để:
Định danh cuộc trò chuyện: Khi máy Lenovo của bạn gửi hàng nghìn Frame dữ liệu tiếp theo (như các gói DATA của HTTP/2), nó không cần phải gửi lại toàn bộ thông tin chào hỏi. Nó chỉ cần gắn cái ID này vào (hoặc dùng trạng thái đã thiết lập từ ID này).
Nhận diện người quen: Server nhìn vào ID này sẽ biết: &amp;ldquo;À, đây là gói tin tiếp theo của ông bạn ở IP 192.168.1.156, đã kiểm tra xong xuôi rồi, cho dữ liệu đi thẳng lên Tầng 6 để dịch luôn!&amp;rdquo;.&lt;/p&gt;
&lt;h3 id="22-vé-phục-hồi-nhanh-session-ticket"&gt;2.2 Vé phục hồi nhanh (Session Ticket)
&lt;/h3&gt;&lt;p&gt;Để đẩy nhanh tốc độ kết nối lại (0-RTT), máy chủ cung cấp một &lt;strong&gt;Session Ticket&lt;/strong&gt;. Đây thực chất là một cái &amp;ldquo;vé&amp;rdquo; lưu trữ trạng thái bảo mật của phiên trước đó. Thay vì phải tính toán lại các thuật toán mã hóa nặng nề, máy khách chỉ cần trình chiếc vé này ra để nối lại phiên làm việc ngay lập tức.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# Lọc gói tin New Session Ticket để xem vé bảo mật được mã hóa
# Cú pháp bộ lọc trên Wireshark: tls.handshake.type == 4

TLSv1.3 Record Layer: Handshake Protocol: New Session Ticket
 Content Type: Application Data (23)
 Version: TLS 1.2 (0x0303)
 Handshake Protocol: New Session Ticket
 Handshake Type: New Session Ticket (4)
 Length: 53
 TLS Session Ticket
 Session Ticket Lifetime Hint: 600 seconds (10 minutes)
 Session Ticket Age Add: 3185912667
 Session Ticket Nonce Length: 8
 Session Ticket: af23cc7378d7440f6a6447726da2062b7d2198d9b8c7aaad6a71213fba0cbb97
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img alt="Session-ticket" class="gallery-image" data-flex-basis="687px" data-flex-grow="286" height="222" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/session-layer/handshake.png" width="636"&gt;&lt;/p&gt;
&lt;h2 id="3-các-đòn-tấn-công-tử-huyệt-nhắm-vào-phiên-làm-việc"&gt;3. Các đòn tấn công tử huyệt nhắm vào Phiên làm việc
&lt;/h2&gt;&lt;p&gt;Hacker hiểu rất rõ giá trị của những mã Session ID này. Vì Server hoàn toàn tin tưởng vào cái vé, nên &lt;strong&gt;kẻ nào cầm vé, kẻ đó có quyền&lt;/strong&gt;. Dưới đây là 3 đòn tấn công kinh điển ở Tầng 5.&lt;/p&gt;
&lt;h3 id="31-cướp-phiên-session-hijacking"&gt;3.1 Cướp Phiên (Session Hijacking)
&lt;/h3&gt;&lt;p&gt;Đây là đòn đánh trực diện nhất. Kẻ địch hoàn toàn &lt;strong&gt;không cần biết mật khẩu&lt;/strong&gt; của bạn.&lt;/p&gt;
&lt;p&gt;Chúng chỉ cần &amp;ldquo;đánh cắp&amp;rdquo; được Session ID đang nằm trong Cookie hoặc bộ nhớ đệm trình duyệt thông qua các kỹ thuật như &lt;strong&gt;Sniffing&lt;/strong&gt; (nghe lén mạng Wi-Fi không an toàn) hoặc tấn công &lt;strong&gt;Cross-Site Scripting (XSS)&lt;/strong&gt;. Khi có được ID này, chúng dùng nó để gửi gói tin lên Server. Server sẽ lầm tưởng hacker chính là bạn và cho phép truy cập thẳng vào tài khoản.&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Cảnh báo SOC:&lt;/strong&gt; Để chống lại Session Hijacking, hệ thống mạng bắt buộc phải mã hóa toàn bộ dữ liệu truyền tải bằng &lt;strong&gt;HTTPS/TLS&lt;/strong&gt; và các Cookie phải được gắn cờ &lt;code&gt;Secure&lt;/code&gt; cùng &lt;code&gt;HttpOnly&lt;/code&gt; để ngăn mã độc JavaScript trích xuất Session ID.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="32-tấn-công-phản-hồi-replay-attack"&gt;3.2 Tấn công Phản hồi (Replay Attack)
&lt;/h3&gt;&lt;p&gt;Lỗ hổng này đánh thẳng vào cơ chế &amp;ldquo;vé phục hồi nhanh&amp;rdquo; (&lt;strong&gt;New Session Ticket / 0-RTT&lt;/strong&gt;) mà chúng ta vừa soi trên Wireshark.&lt;/p&gt;
&lt;p&gt;Vì cái vé này được thiết kế để kết nối nhanh mà không cần bắt tay lại, hacker có thể can thiệp ở giữa mạng (&lt;strong&gt;MitM&lt;/strong&gt;), bắt lấy bản sao gói tin chứa Ticket của bạn và gửi lại cho Server nhiều lần. Nếu hệ thống ứng dụng không có cơ chế chống trùng lặp (ví dụ: dùng &lt;code&gt;timestamp&lt;/code&gt; hoặc &lt;code&gt;nonce&lt;/code&gt;), hacker có thể ép Server thực hiện lại một giao dịch nhạy cảm (như chuyển tiền) nhiều lần chỉ bằng cách &amp;ldquo;phát lại&amp;rdquo; cái vé cũ đó.&lt;/p&gt;
&lt;h3 id="33-cố-định-phiên-session-fixation"&gt;3.3 Cố định Phiên (Session Fixation)
&lt;/h3&gt;&lt;p&gt;Ngược lại với việc đi ăn cắp, trong kỹ thuật này hacker lại chủ động &lt;strong&gt;&amp;ldquo;tặng&amp;rdquo;&lt;/strong&gt; cho bạn một cái ID.&lt;/p&gt;
&lt;p&gt;Kẻ tấn công sẽ tạo ra một Session ID hợp lệ từ trước, sau đó lừa bạn click vào một đường link chứa sẵn ID đó để đăng nhập. Sau khi bạn đăng nhập thành công, hệ thống vô tình &amp;ldquo;đóng dấu xác thực&amp;rdquo; cho cái ID do hacker cung cấp. Lúc này, hacker chỉ cần ung dung nhập cái ID mà chúng đã biết trước đó vào trình duyệt — phiên làm việc lúc này trở thành &amp;ldquo;dùng chung&amp;rdquo; giữa bạn và hacker.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Việc thấu hiểu Tầng 5 giúp SOC Analyst nhận ra rằng: Không phải cứ đăng nhập xong là an toàn tuyệt đối, bởi nếu kẻ gian cướp được &amp;ldquo;tấm vé&amp;rdquo; Session, chúng nghiễm nhiên trở thành người chủ hợp pháp. Tuy nhiên, cái vé đó và toàn bộ dữ liệu ứng dụng thực chất được xáo trộn như thế nào để không ai đọc lén được trên mạng? Trong Bài 6 tiếp theo, chúng ta sẽ bước lên Tầng 6 (Presentation) để bóc tách lớp vỏ mã hóa SSL/TLS, giải phẫu thuật toán CHACHA20 và tìm hiểu lỗ hổng POODLE khét tiếng. Hãy cùng chờ đón nhé!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>TCP và Nghệ thuật Bắt tay 3 Bước</title><link>/post/tcp-handshake/</link><pubDate>Thu, 21 May 2026 09:00:00 +0700</pubDate><guid>/post/tcp-handshake/</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 trước, chúng ta đã thấy Tầng 2 và 3 chỉ biết tìm đường và &amp;ldquo;ném&amp;rdquo; gói tin đi mà không hề quan tâm đến sự sống chết của dữ liệu. Để đảm bảo thông tin không bị thất lạc hay lộn xộn trên môi trường Internet khắc nghiệt, chúng ta cần đến &amp;ldquo;trái tim&amp;rdquo; của sự ổn định: Giao thức TCP tại Tầng 4. Hôm nay, hãy cùng mổ xẻ cơ chế Bắt tay 3 bước kinh điển và cách dùng Wireshark để phát hiện các đòn tấn công mạng nguy hiểm.&lt;/p&gt;
&lt;h2 id="1-tầng-4-transport-và-sứ-mệnh-của-tcp"&gt;1. Tầng 4 (Transport) và Sứ mệnh của TCP
&lt;/h2&gt;&lt;p&gt;Nhiệm vụ cốt lõi của Tầng 4 (Giao vận) là kiểm soát toàn bộ quá trình truyền tải dữ liệu. Khi nhận dữ liệu từ các tầng trên, Tầng 4 sẽ thực hiện &lt;strong&gt;phân đoạn&lt;/strong&gt; (Segmentation) để chia nhỏ dữ liệu cho vừa với đường truyền, &lt;strong&gt;đánh số thứ tự&lt;/strong&gt; (Sequencing) và dùng số &lt;strong&gt;Cổng&lt;/strong&gt; (Port) để định tuyến đến đúng ứng dụng.&lt;/p&gt;
&lt;p&gt;Tại đây, hai giao thức thống trị là &lt;strong&gt;TCP&lt;/strong&gt; (Transmission Control Protocol) và &lt;strong&gt;UDP&lt;/strong&gt; (User Datagram Protocol). Việc lựa chọn giao thức nào hoàn toàn phụ thuộc vào ứng dụng ở Tầng 7. Hệ điều hành sẽ dán một cái nhãn vào IP Header ở Tầng 3 (ví dụ nhãn số &lt;code&gt;6&lt;/code&gt; cho TCP, &lt;code&gt;17&lt;/code&gt; cho UDP) để Tầng 4 biết phải lôi &amp;ldquo;bộ máy&amp;rdquo; nào ra xử lý.&lt;/p&gt;
&lt;p&gt;Trong khi UDP đề cao tốc độ bằng cách &amp;ldquo;cứ có là gửi, mất thì thôi&amp;rdquo;, thì TCP lại là biểu tượng của sự tin cậy. TCP đảm bảo mọi gói tin đều đến đúng nơi, đúng thứ tự, và nếu có bất kỳ dữ liệu nào bị mất, nó sẽ bắt buộc gửi lại (&lt;strong&gt;Retransmission&lt;/strong&gt;).&lt;/p&gt;
&lt;h2 id="2-nghệ-thuật-bắt-tay-3-bước-3-way-handshake"&gt;2. Nghệ thuật Bắt tay 3 Bước (3-Way Handshake)
&lt;/h2&gt;&lt;p&gt;Trước khi truyền đi dù chỉ một byte dữ liệu ứng dụng, TCP yêu cầu hai thiết bị phải thiết lập một kết nối vững chắc thông qua quá trình &lt;strong&gt;Bắt tay 3 bước&lt;/strong&gt;. Quá trình này diễn ra như sau:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Bước 1 — Gói SYN:&lt;/strong&gt; Máy Client gửi một gói tin mang cờ &lt;code&gt;SYN&lt;/code&gt; (Synchronize) với số thứ tự Sequence ban đầu để ngỏ lời kết nối. Gói này cũng khai báo &lt;code&gt;Window Size&lt;/code&gt;, báo cho Server biết: &amp;ldquo;Tôi có thể nhận tối đa 64,240 bytes dữ liệu một lúc đấy nhé&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bước 2 — Gói SYN-ACK:&lt;/strong&gt; Server đồng ý và đáp lại bằng gói &lt;code&gt;SYN, ACK&lt;/code&gt;. Cờ &lt;code&gt;ACK&lt;/code&gt; được bật để Server thông báo: &amp;ldquo;Tôi đã nhận được gói 0 của ông, tôi đang đợi gói 1 đây&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bước 3 — Gói ACK:&lt;/strong&gt; Client gửi lại gói &lt;code&gt;ACK&lt;/code&gt; cuối cùng để chốt hạ. Từ lúc này, &amp;ldquo;đường ống&amp;rdquo; đã thông suốt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="TCP handshake" class="gallery-image" data-flex-basis="326px" data-flex-grow="136" height="501" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/tcp-handshake/image.png" width="682"&gt;&lt;/p&gt;
&lt;p&gt;Dưới đây là output Wireshark bắt được khi Client &lt;code&gt;192.168.1.114&lt;/code&gt; kết nối đến Server &lt;code&gt;72.34.249.208&lt;/code&gt; qua cổng HTTPS (443):&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;# Lọc theo địa chỉ IP của Client và Server:
# Mẫu luồng gói tin trong Wireshark

No. Time Source Destination Protocol Info
1 0.000000 192.168.1.114 -&amp;gt; 72.34.249.208 TCP 47682 -&amp;gt; 443 [SYN] Seq=0 Win=64240 Len=0 MSS=1460
2 0.474661 72.34.249.208 -&amp;gt; 192.168.1.114 TCP 443 -&amp;gt; 47682 [SYN, ACK] Seq=0 Ack=1 Win=64512 Len=0
3 0.474780 192.168.1.114 -&amp;gt; 72.34.249.208 TCP 47682 -&amp;gt; 443 [ACK] Seq=1 Ack=1 Win=64512 Len=0
4 0.476483 192.168.1.114 -&amp;gt; 72.34.249.208 TLSv1.3 Client Hello (SNI=apex.go.sonobi.com)
&lt;/code&gt;&lt;/pre&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Ghi chú:&lt;/strong&gt; Gói số 4 cho thấy ngay sau khi bắt tay 3 bước hoàn tất, Client lập tức gửi &lt;code&gt;Client Hello&lt;/code&gt; của TLS để khởi động mã hóa. Đây là quy trình chuẩn của HTTPS.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="3-cơ-chế-đảm-bảo-toàn-vẹn-sequence--acknowledgment"&gt;3. Cơ chế Đảm bảo Toàn vẹn (Sequence &amp;amp; Acknowledgment)
&lt;/h2&gt;&lt;p&gt;Làm sao TCP biết một gói tin đã đến đích an toàn? Bí quyết nằm ở cách nó sử dụng hai con số: &lt;strong&gt;Sequence Number&lt;/strong&gt; (Số thứ tự) và &lt;strong&gt;Acknowledgment Number&lt;/strong&gt; (Số xác nhận).&lt;/p&gt;
&lt;p&gt;Khi gửi dữ liệu, Tầng 4 sẽ tính toán dựa trên số lượng byte. Nếu gói tin thứ nhất mang 500 byte dữ liệu và có &lt;code&gt;Seq=1&lt;/code&gt;, thì gói tin thứ hai sẽ được đánh số &lt;code&gt;Seq=501&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Khi máy đích nhận được gói thứ nhất, nó sẽ phản hồi bằng một gói có &lt;code&gt;Ack=501&lt;/code&gt;, mang hàm ý: &amp;ldquo;Tôi đã nhận đủ 500 byte, hãy gửi tiếp cho tôi dữ liệu từ byte 501 trở đi&amp;rdquo;. Nếu Server không gửi Acknowledgment phản hồi sau một khoảng thời gian chờ, máy gửi sẽ tự động thực hiện gửi lại gói tin đó (&lt;strong&gt;Fast Retransmit&lt;/strong&gt; hoặc &lt;strong&gt;RTO&lt;/strong&gt;).&lt;/p&gt;
&lt;h2 id="4-bắt-bệnh-mạng-và-cảnh-báo-soc-bằng-wireshark"&gt;4. Bắt bệnh Mạng và Cảnh báo SOC bằng Wireshark
&lt;/h2&gt;&lt;p&gt;Với cơ chế khắt khe của TCP, Wireshark cung cấp cho SOC Analyst các bộ lọc cực kỳ mạnh mẽ để &amp;ldquo;bắt bệnh&amp;rdquo; hệ thống khi mạng bị chậm hoặc gặp sự cố:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Mất gói (Retransmission):&lt;/strong&gt; Bộ lọc &lt;code&gt;tcp.analysis.retransmission&lt;/code&gt; sẽ hiển thị các dòng chữ màu đỏ cảnh báo gói tin phải gửi lại do không nhận được ACK.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Thiếu mảnh dữ liệu (Duplicate ACK):&lt;/strong&gt; Dùng bộ lọc &lt;code&gt;tcp.analysis.duplicate_ack&lt;/code&gt;. Bạn sẽ thấy máy nhận liên tục gửi các gói ACK có cùng một số hiệu để &amp;ldquo;gào thét&amp;rdquo; đòi mảnh dữ liệu bị rớt ở giữa luồng.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hệ thống bị ngộp (Zero Window):&lt;/strong&gt; Bộ lọc &lt;code&gt;tcp.analysis.zero_window&lt;/code&gt; phát hiện khi thiết bị nhận đã cạn kiệt bộ nhớ đệm. Nó sẽ ném ra gói tin này để ép máy gửi phải dừng truyền ngay lập tức (cơ chế &lt;strong&gt;Flow Control&lt;/strong&gt;).&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;Cảnh báo SOC — Tấn Công SYN Flood:&lt;/strong&gt; Hacker rất thích lợi dụng sự &amp;ldquo;kỹ tính&amp;rdquo; trong quá trình Bắt tay 3 bước của TCP để thực hiện tấn công từ chối dịch vụ (DDoS). Bằng cách bắn hàng vạn gói &lt;code&gt;SYN&lt;/code&gt; giả mạo vào Server nhưng tuyệt đối không bao giờ trả lời bằng gói &lt;code&gt;ACK&lt;/code&gt; cuối cùng, Server sẽ bị treo cứng vì cạn kiệt tài nguyên để chờ đợi những cái &amp;ldquo;bắt tay&amp;rdquo; không bao giờ hoàn tất. Bộ lọc phát hiện nhanh: &lt;code&gt;tcp.flags.syn == 1 &amp;amp;&amp;amp; tcp.flags.ack == 0&lt;/code&gt;.&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Như vậy, việc thấu hiểu nhịp đập của &amp;ldquo;Trái tim&amp;rdquo; TCP giúp chúng ta phân biệt được một sự cố mạng do đường truyền kém với một cuộc tấn công từ chối dịch vụ có chủ đích. Ở Tầng 4, chúng ta mới chỉ quản lý được các cổng (Port), nhưng để duy trì trạng thái đăng nhập liên tục của người dùng, chúng ta cần tiến lên một bậc nữa. Trong Bài 4 tiếp theo, hãy cùng khám phá Lớp 5 (Session) và các kỹ thuật cướp phiên (Session Hijacking) tinh vi của Hacker. Đừng bỏ lỡ nhé!&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Một gói tin được cấu tạo thế nào</title><link>/post/networkbasic/</link><pubDate>Wed, 20 May 2026 08:00:00 +0700</pubDate><guid>/post/networkbasic/</guid><description>&lt;p&gt;Chào mừng các bạn đến với Series Giải phẫu Mạng (Network Anatomy) &amp;amp; Packet Analysis! Nếu trong series trước, chúng ta đã trở thành những &amp;ldquo;bác sĩ pháp y&amp;rdquo; mổ xẻ nội tạng của hệ điều hành Windows, thì ở series này, chúng ta sẽ bước ra không gian bên ngoài: Hệ thống Mạng. Đối với một SOC Analyst, nếu bạn không biết cách đọc một gói tin (Packet), bạn sẽ bị mù hoàn toàn trước các cuộc tấn công nhắm vào máy chủ. Hãy cùng khởi động bằng việc tìm hiểu bộ khung xương sống của vạn vật trên Internet: Mô hình OSI và công cụ Wireshark.&lt;/p&gt;
&lt;h2 id="1-bức-tranh-toàn-cảnh-mô-hình-osi-và-tcpip"&gt;1. Bức tranh toàn cảnh: Mô hình OSI và TCP/IP
&lt;/h2&gt;&lt;p&gt;Để các thiết bị từ các nhà sản xuất khác nhau (Apple, Lenovo, Cisco&amp;hellip;) có thể nói chuyện được với nhau, Tổ chức Tiêu chuẩn hóa Quốc tế đã tạo ra một bộ quy tắc chung gọi là Mô hình OSI (Open Systems Interconnection). Nó chia quá trình mạng phức tạp thành 7 tầng riêng biệt.&lt;/p&gt;
&lt;p&gt;Từ trên xuống dưới, 7 tầng này bao gồm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tầng 7 - Application (Ứng dụng):&lt;/strong&gt; Nơi dữ liệu có ý nghĩa với con người (như giao thức HTTP, DNS, SSH, FTP). Hầu hết các cuộc tấn công hiện đại như SQL Injection đều nhắm vào tầng này.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tầng 6 - Presentation (Trình bày):&lt;/strong&gt; Làm nhiệm vụ thông dịch, nén và đặc biệt là Mã hóa (như SSL/TLS) để bảo mật dữ liệu.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tầng 5 - Session (Phiên):&lt;/strong&gt; Thiết lập, duy trì và quản lý phiên kết nối (Session ID) giữa 2 thiết bị.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tầng 4 - Transport (Giao vận):&lt;/strong&gt; Kiểm soát truyền tải bằng TCP (tin cậy) hoặc UDP (tốc độ). Nó chia dữ liệu thành các đoạn nhỏ và dùng số Cổng (Port) để định tuyến đến đúng ứng dụng.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tầng 3 - Network (Mạng):&lt;/strong&gt; Quản lý địa chỉ logic (IP) và tìm đường đi (Routing) tốt nhất trên môi trường Internet.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tầng 2 - Data Link (Liên kết dữ liệu):&lt;/strong&gt; Quản lý địa chỉ vật lý (MAC) để các thiết bị nói chuyện trực tiếp với nhau trong cùng một mạng LAN.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tầng 1 - Physical (Vật lý):&lt;/strong&gt; Chuyển đổi dữ liệu nhị phân (0 và 1) thành các xung điện, ánh sáng hoặc sóng vô tuyến (Wi-Fi) truyền trên dây cáp vật lý.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Trong thực tế triển khai, người ta thường gộp mô hình này lại cho gọn nhẹ thành Mô hình TCP/IP (4 Lớp): Lớp Ứng dụng (gộp tầng 5,6,7), Lớp Giao vận (tầng 4), Lớp Internet (tầng 3), và Lớp Giao diện mạng (gộp tầng 1,2).&lt;/p&gt;
&lt;p&gt;&lt;img alt="Mô hình OSI và TCP/IP" class="gallery-image" data-flex-basis="224px" data-flex-grow="93" height="304" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/networkbasic/img1.png" width="284"&gt;&lt;/p&gt;
&lt;h2 id="2-hành-trình-của-một-dữ-liệu-đóng-gói-encapsulation"&gt;2. Hành trình của một dữ liệu: Đóng gói (Encapsulation)
&lt;/h2&gt;&lt;p&gt;Khi bạn bấm nút &amp;ldquo;Gửi&amp;rdquo; một tin nhắn, dữ liệu không bay thẳng vèo sang máy bên kia. Nó phải trải qua quá trình Đóng gói (Encapsulation) - nghĩa là đi qua mỗi tầng sẽ bị bọc thêm một lớp vỏ (Header) mới.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dữ liệu thô (Data):&lt;/strong&gt; Được sinh ra ở tầng Ứng dụng.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Segment / Datagram:&lt;/strong&gt; Xuống Tầng 4, nó được dán thêm Header của TCP hoặc UDP chứa thông tin Cổng (Port).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Packet (Gói tin):&lt;/strong&gt; Xuống Tầng 3, nó được bọc thêm IP Header chứa IP Nguồn và IP Đích.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Frame (Khung):&lt;/strong&gt; Xuống Tầng 2, nó tiếp tục được dán thêm địa chỉ MAC Nguồn và MAC Đích.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Bits:&lt;/strong&gt; Cuối cùng, chiếc card mạng (NIC) biến toàn bộ Frame đó thành các tia điện hoặc sóng Wi-Fi đẩy ra ngoài (Lớp 1).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Khi đến máy nhận, quá trình ngược lại gọi là Mở gói (Decapsulation) sẽ diễn ra: Lột dần từng lớp vỏ từ dưới lên trên để lấy dữ liệu thực.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Cách biểu diễn dữ liệu trong mô hình OSI" class="gallery-image" data-flex-basis="425px" data-flex-grow="177" height="486" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/networkbasic/image.png" srcset="/post/networkbasic/image_hu_1098341a0a271d9e.png 800w, /post/networkbasic/image.png 862w" width="862"&gt;&lt;/p&gt;
&lt;h2 id="3-đặt-gói-tin-lên-bàn-mổ-wireshark"&gt;3. Đặt gói tin lên &amp;ldquo;bàn mổ&amp;rdquo; Wireshark
&lt;/h2&gt;&lt;p&gt;Wireshark chính là kính hiển vi của SOC Analyst. Nó bắt được chính xác cấu trúc đóng gói mà ta vừa học. Khi bạn click vào một gói tin bất kỳ trên Wireshark, giao diện chi tiết ở khung bên dưới sẽ phản ánh đúng thứ tự của mô hình OSI.&lt;/p&gt;
&lt;p&gt;Hãy cùng giải phẫu các thành phần cốt lõi của một gói tin:&lt;/p&gt;
&lt;h3 id="31-lớp-1-physical---mục-frame"&gt;3.1 Lớp 1 (Physical) - Mục Frame
&lt;/h3&gt;&lt;p&gt;Đây là các siêu dữ liệu vật lý mà card mạng ghi nhận được:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Frame Length:&lt;/strong&gt; Kích thước thực sự của gói tin khi chạy trên dây cáp (ví dụ: 96 bytes (768 bits)).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Arrival Time:&lt;/strong&gt; Thời gian chính xác đến từng micro giây mà gói tin chạm vào card mạng.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Interface id:&lt;/strong&gt; Tên card mạng đang bắt gói tin (ví dụ: wlp8s0 trên Linux).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protocols in frame:&lt;/strong&gt; Wireshark tóm tắt luôn các lớp vỏ bên trong: &lt;code&gt;eth:ethertype:ip:tcp:dns&lt;/code&gt; (Gói DNS chạy trên TCP, bọc bởi IP và Ethernet).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Wireshark hiển thị phần Frame" class="gallery-image" data-flex-basis="648px" data-flex-grow="270" height="353" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/networkbasic/frame.png" srcset="/post/networkbasic/frame_hu_8f96efe506fb5a36.png 800w, /post/networkbasic/frame.png 954w" width="954"&gt;&lt;/p&gt;
&lt;h3 id="32-lớp-2-data-link---mục-ethernet-ii"&gt;3.2 Lớp 2 (Data Link) - Mục Ethernet II
&lt;/h3&gt;&lt;p&gt;Đây là nơi địa chỉ vật lý (MAC Address) làm chủ cuộc chơi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source (Src) &amp;amp; Destination (Dst):&lt;/strong&gt; Địa chỉ MAC (gồm 48 bit) của máy gửi và máy nhận (thường là Router để đi ra Internet).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Type:&lt;/strong&gt; Một ID cực kỳ quan trọng báo hiệu cho card mạng biết lớp vỏ tiếp theo là gì. Nếu là IPv4 (&lt;code&gt;0x0800&lt;/code&gt;), nó sẽ chuyển lên cho giao thức IPv4 xử lý. Nếu là &lt;code&gt;0x86dd&lt;/code&gt;, đó là IPv6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Wireshark hiển thị phần Ethernet II" class="gallery-image" data-flex-basis="954px" data-flex-grow="397" height="242" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/networkbasic/datalink.png" srcset="/post/networkbasic/datalink_hu_4d34881798340e40.png 800w, /post/networkbasic/datalink.png 962w" width="962"&gt;&lt;/p&gt;
&lt;h3 id="33-lớp-3-network---mục-ipv4"&gt;3.3 Lớp 3 (Network) - Mục IPv4
&lt;/h3&gt;&lt;p&gt;Bóc lớp Ethernet ra, chúng ta thấy bộ định tuyến Internet:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source Address &amp;amp; Destination Address:&lt;/strong&gt; Địa chỉ IP logic của máy gửi và máy đích.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Time to Live (TTL):&lt;/strong&gt; &amp;ldquo;Tuổi thọ&amp;rdquo; của gói tin. Mỗi khi đi qua một con Router, số này bị trừ đi 1 để tránh gói tin chạy vòng vòng mãi mãi. Nếu thấy TTL = 64, hệ thống nguồn có khả năng cao là chạy nhân Linux.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flags:&lt;/strong&gt; Các lá cờ điều khiển. Ví dụ cờ &lt;code&gt;0x2, Don't fragment&lt;/code&gt; dặn các thiết bị mạng rằng: &amp;ldquo;Tuyệt đối không xé nhỏ gói tin này ra&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protocol:&lt;/strong&gt; Giống như Type ở Lớp 2, trường này (ví dụ: TCP (6) hoặc UDP (17)) sẽ ra lệnh cho hệ điều hành biết giao thức Tầng 4 nào sẽ phải xử lý tiếp theo.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Header Checksum:&lt;/strong&gt; Dãy mã (như &lt;code&gt;0xe861&lt;/code&gt;) dùng để đảm bảo các thông tin (IP, TTL) không bị hỏng hóc hay thay đổi bit trong quá trình truyền.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Wireshark hiển thị phần IPv4" class="gallery-image" data-flex-basis="577px" data-flex-grow="240" height="400" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/networkbasic/ipv4.png" srcset="/post/networkbasic/ipv4_hu_176b48287d5ec3c9.png 800w, /post/networkbasic/ipv4.png 962w" width="962"&gt;&lt;/p&gt;
&lt;h3 id="34-lớp-4-transport---transmission-control-protocol-tcp"&gt;3.4 Lớp 4 (Transport) - Transmission Control Protocol (TCP)
&lt;/h3&gt;&lt;p&gt;Bên trong cùng, chúng ta sẽ thấy cổng giao tiếp và luật chơi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Source Port &amp;amp; Destination Port:&lt;/strong&gt; Ví dụ máy bạn dùng cổng ngẫu nhiên 58610 để gõ cửa cổng HTTPS (443) của Facebook.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sequence &amp;amp; Acknowledgment:&lt;/strong&gt; Các con số giúp TCP sắp xếp lại thứ tự dữ liệu cho đúng và đảm bảo không gói tin nào bị rơi rớt.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="Wireshark hiển thị phần TCP" class="gallery-image" data-flex-basis="507px" data-flex-grow="211" height="448" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/networkbasic/img1a.png" srcset="/post/networkbasic/img1a_hu_40751a0b06e98de5.png 800w, /post/networkbasic/img1a.png 947w" width="947"&gt;&lt;/p&gt;
&lt;h3 id="35-tầng-5-6-7-nơi-gói-tin-biến-mất-và-nhường-chỗ-cho-dữ-liệu-application-data"&gt;3.5 Tầng 5, 6, 7: Nơi &amp;ldquo;Gói tin&amp;rdquo; biến mất và nhường chỗ cho &amp;ldquo;Dữ liệu&amp;rdquo; (Application Data)
&lt;/h3&gt;&lt;p&gt;Nếu bạn tinh mắt quan sát trên Wireshark, bạn sẽ thấy sau khi đi qua lớp TCP/UDP (Tầng 4), các lớp phía trên (Tầng 5 - Session, Tầng 6 - Presentation, Tầng 7 - Application) thường không được chia thành các mục riêng biệt rõ ràng như lớp MAC hay lớp IP, mà chúng hòa quyện lại thành một mục gọi là Application Data (như DNS, HTTP, TLS)
Quá trình Wireshark &amp;ldquo;Giải mã&amp;rdquo; và hiển thị: Khi Wireshark bắt được luồng điện từ card mạng, nó thực hiện quá trình Decapsulation (Mở gói) đi ngược từ dưới lên trên. Nó bóc lớp vỏ Ethernet (Tầng 2) để lấy địa chỉ MAC, bóc tiếp lớp IP (Tầng 3) để lấy địa chỉ IP, và bóc lớp TCP (Tầng 4) để lấy số Port.
Khi bóc đến Tầng 4 xong, phần lõi còn lại được đẩy thẳng lên Tầng Ứng dụng (Layer 7). Lúc này:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nếu là giao thức không mã hóa (như HTTP, DNS, FTP): Wireshark sẽ &amp;ldquo;đọc hiểu&amp;rdquo; và phơi bày trần trụi toàn bộ văn bản, tài khoản, mật khẩu (Clear-text) cho bạn xem.&lt;/li&gt;
&lt;li&gt;Nếu dữ liệu đã đi qua Tầng 6 (Presentation) và bị mã hóa bởi SSL/TLS: Wireshark sẽ gom lại và hiển thị dưới dạng một khối Encrypted Application Data chứa toàn các ký tự rác mà con người (và cả hacker) không thể đọc được
&lt;img alt="Wireshark hiển thị gói tin http không được mã hóa" class="gallery-image" data-flex-basis="553px" data-flex-grow="230" height="417" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="/post/networkbasic/http.png" srcset="/post/networkbasic/http_hu_f84bd66c21d2e5ef.png 800w, /post/networkbasic/http.png 962w" width="962"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Như vậy, chúng ta đã nắm được &amp;ldquo;bản đồ kho báu&amp;rdquo; của mạng máy tính và biết cách sử dụng Wireshark để đọc những lớp vỏ cơ bản nhất. Bất kỳ một công cụ bảo mật nào (Firewall, IDS/IPS) cũng đều dựa trên nguyên lý đọc các lớp Header này để chặn/mở. Ở Bài 2 tiếp theo, chúng ta sẽ lặn sâu hơn vào Tầng 2 &amp;amp; 3, phân tích các giao thức kết nối nền tảng (ARP, ICMP) và trực tiếp đóng vai Hacker để thực hiện đòn tấn công mạo danh MAC (MAC Spoofing). Hẹn gặp lại các bạn!&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>