MỤC LỤC
-Nguồn gốc từ một kỹ thuật thiết kế trong xây dựng để ngăn chặn hạn chế các hỏa hoạn, trong công nghệ thông tin, Firewall là một cơ chế đảm bảo an toàn cho mạng máy tính, nó bao gồm một hoặc nhiều những thành phần tạo lên bức tường lửa với mục đích để ngăn cản điều khiển các truy xuất giữa mạng bên ngoài với mạng nội bộ. - Về mặt logic, Firewall là bộ tách(Separator) vì nó phân định một bên là mạng ngoài không an toàn và bên kia là mạng nội bộ cần được bảo vệ, là bộ tách(Restricter) vì nó ngăn chặn sự tấn công từ bên ngoài, là bộ phân tích(Analyzer) vì nó xem xét các gói thông tin vào ra để quyết định cho vào ra hay không. Như vậy, việc kiểm soát càng làm cho firewall có khả năng chỉ cho phép một một số loại kết nối nhất định vào máy chủ nào đó hoặc chỉ một số dịch vụ nào đó (Telnet, SMNP, FTP…) được phép mới chạy được trên hệ thống mạng cục bộ.
Một phương pháp để vượt qua firewall kiểu này là giả mạo địa chỉ IP (IP spoofing), ví dụ như trong hệ thống mạng của một công ty, khi một người nào đó đi công tác ở xa nhưng vẫn phải truy nhập vào mạng của công ty để lấy dữ liệu. - Mỗi một dịch vụ phải có kết nối chương trình tương ứng: ví dụ đối với web thì phải có kết nối tương ứng để quản lí web và chương trình tương ứng để cho phép hay cấm, đối với mail thì cũng phải có kết nối tương ứng để quản lí mail và chương trình tương ứng để cho phép hay cấm. - Screened Subnet dẫn xuất từ kiến trúc Screened host bằng cách thêm vào một tầng an toàn gọi là mạng ngoại vi (Perimeter network), nhằm cô lập mạng nội bộ ra với mạng bên ngoài và cô lập Bastion host bằng cách đặt chúng trên mạng ngoại vi, nhằm tránh sự lay lan khi bastion bị tổn thương.
- Router trong ngăn cách máy chủ pháo đài với mạng nội bộ, khi hệ thống bảo mật trên pháo đài bị tổn thương thì máy chủ pháo đài cũng không thể bị lợi dụng làm bàn đạp để tấn công vào mạng nội bộ vì trong mạng nội bộ đã có một router trong bảo vệ.
Với chain này packet sẽ được masquerade như là nó được sinh ra từ máy cục bộ, hơn thế nữa các packet ngược sẽ được nhận ra và chúng sẽ được demasqueraded một cách tự động, bỏ qua forwarding chain. Ví dụ: Nếu đặt MIRROR đích trên cổng đích trên chuỗi luật OUTPUT và ai đó cố gắn truy cập trên cổng này, chúng ta sẽ gửi trở lại người đó gói tin và cuối cùng chắc chắn người đó sẽ thấy được homepage của họ. CONFIG_IP_NF_NAT- thành phần này cho phép chuyển đổi địa chỉ mạng và truy cập bảng NAT trong iptables, lựa chọn này đòi hỏi nếu muốn làm một port chuyển tiếp hay masquerading.
* FORWARD packet (chuyển packet): Một packet để cho host khác được gọi là FORWARD packet, đầu tiên nó chuyển qua chain PREOUTING (trước khi định tuyến) trong bảng mangle, tại đây packet có thể bị thay đổi thông số. - Đối với packet forward qua máy, packet sau khi rời chain PREROUTING sẽ qua chain FORWARD trong bảng filter, tại chain FORWARD chỉ những nguyên tắc lọc mới được áp vào (ACCEPT hoặc DENY). - Sau khi packet qua chain FORWARD hoặc chain OUTPUT sẽ được chuyển qua chain POSTROUTING (sau khi định tuyến) trong bảng NAT, trong chain này các nguyên tắc SNAT (source Network Address Tranlation - đổi địa chỉ IP nguồn) được áp vào hoặc MASQUERADE, cuối cùng packet được chuyển ra giao diện bên ngoài.
Khi packet chuyển qua chain này, hệ thống xác định nơi packet được định tuyến, khi đã quyết định được định tuyến packet chuyển qua chain POSTOUTING trong bảng NAT, đây là nơi nguyên tắc SNAT được áp vào, packet chuyển qua giao diện thích hợp. * Receive packet (Nhận packet): packet được chuyển đến host cục bộ, đầu tiên nó được chuyển đến chain PREOUTTING trong bảng mangle, sau đó được chuyển qua chain PREOUTING trong bảng NAT. Đây là nơi nguyên tắc DNAT được áp vào, sau khi nguyên tắc DNAT được áp vào thì định tuyến được quyết định, sau đó packet được chuyển qua chain OUTPUT trong bảng filter, cuối cùng packet được chuyển vào tiến trình hoặc ứng dụng thích hợp.
Sau đó, gói tin sẽ bắt đầu đi qua một loạt các bước trong nhân hệ điều hành, trước khi nó được gửi tới ứng dụng cục bộ hoặc là được chuyển tiếp đến máy tính khác hay chịu tác động nào đó của nhân hệ điều hành. - Khi một máy bên trong mạng nội bộ truy cập vào tài nguyên bên ngoài thì packet được gửi đến IP NAT, IP NAT sẽ thay đổi địa chỉ nguồn của packet bằng một địa chỉ hợp lệ trong dãy địa chỉ được cấp trên Internet nếu còn. Vì mỗi lần hành động MASQUERADE bắt gặp (hit) một gói tin nó sẽ tự động kiểm tra địa chỉ IP để dùng thay vì thực hiện các thao tác như SNAT - chỉ dùng một địa chỉ IP được cấu hình đơn.
* Phần lớn tất cả các hành động áp dụng lên gói tin đều có thể được sử dụng trong chuỗi luật này tuy nhiên những hành động đã được nêu ở phần trên chỉ có thể được sử dụng trong bảng riêng của nó. - FORWARD: được sử dụng để thay đổi thông tin gói tin sau khi chúng đã sang bước quyết định dẫn đường đầu tiên, nhưng trước khi chúng chịu tác động của quyết định dẫn đường cuối cùng.
Chỉ những chain được xây dựng sẵn (INPUT, OUTPUT, FORWARD) mới có chính sách, bởi vì nếu packet rơi vào cuối chain của người dùng định nghĩa thì nó duyệt trở lại chain trước. Chúng ta sử dụng ‘-p’ để chỉ định giao thức và ‘-s’ để chỉ định địa chỉ nguồn nhưng có các lựa chọn khác để chúng ta có thể sử dụng để chỉ định những đặc tính của packet. * Các packet duyệt qua chain INPUT nghĩa là không phải giao diện đi ra, vì vậy bất kỳ nguyên tắc sử dụng ‘-o’ trong chain này sẽ không bao giờ được thoả.
Tương tự các packet duyệt qua chain OUTPUT nghĩa là giao diện đi vào, vì vậy bất kỳ nguyên tắc sử dụng ‘-i’ trong chain này sẽ không bao giờ được thoả. Nếu nhìn phía trong packet đại diện cho các header giao thức (TCP, UDP, ICMP) thì không thể biết, vì các header chỉ chứa trong mảnh đầu tiên. Thí dụ: Một nguyên tắc –p TCP –sport www sẽ không bao giờ thoả phân mảnh nào khác hơn phân mảnh đầu tiên kể cả nguyên tắc ngược lại –p TCP –sport!.
Nếu một luật thoả một packet và hành động của nó là một trong 2 hành động này thì không có luật nào được tham khảo: số phận packet đã được quyết định. Một mặt mạnh của Iptables thừa hưởng từ Ipchains là khả năng cho người dùng tạo các chain mới, ngoài các chain đã xây dựng sẵn (INPUT, FORWARD, và OUTPUT). Trong ứng dụng này dùng Iptables trong máy chủ Linux làm IP Masquerading để chia sẻ thông tin truy cập Internet cho một mạng nội bộ bên trong qua một đường kết nối dial up kết nối đến Internet.
Khi packet đến ‘Linux#1’ từ ‘Any box’, nó gán số hiệu cổng nguồn mới và địa chỉ IP của chính nó vào header của packet, lưu lại thông tin header của packet nguyên gốc Masquerading Server sau đó gói packet đã thay đổi lên giao diện ppp/Ethernet đến Internet. Khi packet đáp lại từ Internet vào ‘Linux#1’, nó sẽ kiểm tra số hiệu cổng là một trong số các cổng được gán ở trên, sau đó Masquerading Server lấy thông tin header cũ đã lưu trước đó đặt lại vào header packet và gửi packet trở lại ‘Any box’. Bên cạnh việc đặt địa chỉ IP thích hợp cho các máy nội bộ bên trong IP Masquerading (gán IP tĩnh hoặc IP động), đặt địa chỉ IP Gateway thích hợp của Server Linux Masquerading, địa chỉ DNS server.
Trong ứng dụng này dùng Iptables trên máy chủ Linux làm IP NAT cho phép một mạng bên ngoài truy cập vào mạng nội bộ và cho phép mạng nội bộ truy cập mạng bên ngoài qua IP NAT. - Khi một máy của mạng bên ngoài truy cập tài nguyên của mạng cục bộ qua IP NAT, khi packet đến IP NAT nó sẽ thay đổi địa chỉ đích của packet bằng một địa chỉ của mạng nội bộ. - ‘allowed’: Chứa các nguyên tắc xem xét những packet TCP có bit SYN được bắt đầu và được xem là packet đầu của kết nối mới thì được phép đi qua.
Do những ưu điểm của hệ điều hành Linux, việc xây dựng mô hình bảo vệ mạng bằng bức tường lửa Iptables trong Linux rất được sự quan tâm của nhiều cá nhân và tổ chức.