Iptables: Công cụ lọc gói tin trên Linux

MỤC LỤC

6 Target và Jumps

  • Các tham số dòng lệnh thường gặp của Iptables

    REJECT Tương tự như DROP , nhưng nó sẽ gởi trả lại cho phía người gởi một thông báo lỗi rằng gói đã bị chặn và loại bỏ. # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT không đóng các kết nối đang được thiết lập, đồng thời cũng cho phép mở các kết nối mới trong kết nối được thiết lập. Đối với chain test, mình giới hạn limit-burst ở mức 5 gói, limit là 2 gói/phút, nếu thỏa luật sẽ trở về (RETURN) còn không sẽ bị DROP.

    Bây giờ đã đạt đến mức đỉnh là 5 gói, lập tức Iptables sẽ giới hạn PING tới lo là 2 gói trên mỗi phút bất chấp có bao nhiêu gói được PING tới lo đi nữa. Nếu trong phút tới không có gói nào PING tới, Iptables sẽ giảm limit đi 2 gói tức là tốc độ đang là 2 gói/phút sẽ tăng lên 4 gói/phút. Để xem cỏc luật trong Iptables bạn gừ lệnh $ iptables -L -nv (-L tất cả cỏc luật trong tất cả các chain, table mặc định là filter, -n liệt kê ở dạng số, v để xem chi tiết).

    Các tham số sau sẽ cho phép Iptables thực hiện các hành động sao cho phù hợp với biểu đồ xử lý gói do người sử dụng hoạch định sẵn. Iptables được cấu hình cho phép “firewall” chấp nhận các gói dữ liệu có giao tiếp (protocols) là TCP , đến từ giao tiếp card mạng eth0 , có bất kỳ địa chỉ IP nguồn là bất kỳ đi đến địa chỉ 192.168.1.1, là địa chỉ IP của firewall. Có thể là một giá trị hoặc một chuỗi có dạng : start-port-number:end-port-number -p udp --dport <port> Điều kiện TCP port đích ( destination port ).

    Các trạng thái thông dụng nhất được dung là : ESTABLISHED:Gói dữ liệu là một phần của kết nối đã được thiết lập bởi cả 2 hướng. Đến khi các gói dữ liệu nhận trở lại từ 192.168.1.58, thay vì mở các port nguồn và đích , bạn chỉ việc cho phép dùng kết nối cũ đã thiết lập bằng cách dùng tham số -m state và --state ESTABLISHED. Input chain tách riêng biệt để hỗ trợ cho những giao thức đặc biệt và chuyển các gói đến những protocol specific chains.

    Output chain tách riêng biệt để hỗ trợ cho những giao thức đặc biệt và chuyển các gói đến những protocol specific chains. Định dạng mẫu trong file iptables cho phép giao thức ICMP, IPSec (những gói ESP và AH), thiết lập liên kết, và quay lại SSH. Trong Fedora có chương trình gọi lokkit, chưong trình này có thể thiết lập một rule firewall đơn giản, giúp tăng cường bảo mật.

    Hình 3. Cách đôỉ địa chỉ Ip đông
    Hình 3. Cách đôỉ địa chỉ Ip đông

    13.Những đoạn mã iptables mẫu

      Ta có thể thêm vào nhiểu cái ứng dụng khởi tạo cho đoạn mã, bao gồm việc kiểm tra đường truyền internet từ những địa chỉ riêng RFC1918. Nhiều hơn nhứng khởi tạo phức tạpbao gồm kiểm tra lỗi bởi sự tấn công sử dụng cờ TCP không có giá trị. Đoạn mã cũng sử dụng nhiều “user-defined chain” để tạo đoạn mã ngắn hơn và nhanh hơn như những chain có thể bị truy cập lặp lại.

      Firewall không thể tạo yêu cầu DNS queries đến Internet bởi vì Internet được yêu cầu cho hàm cơ bản của firewall, nhưng bởi vì Fedora Linux’s yum RPM sẽ giúp giữ máy chủ cập nhật với trạng thái bảo vệ mới nhất. Những trạng thái theo sau sẽ cập nhật không chỉ cho firewall hoạt động như nhưng DNS client nhưng cũng cho những firewall làm việc trong một bộ đệm hoặc có vai trò như DNS server. Đoạn mã ngắn này là cho một firewall và gấp đôi như một web server được.

      Ngược lại, những port trên (80 và 22) sẽ không được thiết lập chế độ bảo mật tại ngừ ra cho những gúi chỉ được chuyển đi khụng quay về cho tất cả liên kết thiết lập được phép.

      13.5_. Firewall cho phép bạn để truy cập Internet

        Đường truyền từ tất cả thiết bị trên một hoặc nhiều mạng được bảo vệ sẽ xuất hiện như là nó bắt đầu từ địa chỉ IP đơn trên vị trí Internet của firewall. Một masquerading được thiết lập sử dụng POSTROUTING chain của bảng nat table, ta sẽ phải định dạng iptables để cho phép nhiều gói đi qua giữa 2 bề mặt. Nhiều hơn, nhiều gói liên quan những liên kết NEW và ESTABLISHED sẽ được cho phép outbound đến Internet, nhưng chỉ những gói liên quan đến liên kết ESTABLISHES sẽ được phép inbound.

        Điều này được thực hiện bằng cách cho phép chuyển tiếp IP hoặc định tuyến bằng cách cho tập tin / proc/sys/net/ipv4/ip_forward giá trị 1 như trái ngược với các giá trị mặc định vô hiệu hóa bằng 0. Sau khi giả mạo đã đạt được bằng cách sử dụng chuỗi POSTROUTING của bảng nat, bạn sẽ phải cấu hình iptables để cho phép các gói tin đến dòng chảy giữa hai giao diện. Cụ thể hơn, các gói liên quan đến kết nối NEW và ESTABLISHED sẽ được phép đi vào Internet, nhưng chỉ gói tin liên quan đến các kết nối ESTABLISHED sẽ được phép vào.

        Lưu ý: Nếu bạn cấu hình tường lửa của bạn để làm giả mạo, sau đó nếu cần phải được sử dụng như là các gateway mặc định cho tất cả các máy chủ của bạn trên mạng. Nếu một bức tường lửa Linux cũng là giao diện của bạn với mạng Internet và bạn muốn lưu trữ một trang web vào một trong các máy chủ nhà bảo vệ NAT, sau đó bạn sẽ phải sử dụng cổng chuyển tiếp.Ở đây, sự kết hợp của địa chỉ IP duy nhất của tường lửa, địa chỉ IP của máy chủ từ xa, và nguồn / đích đến cảng giao thông có thể được sử dụng để nhận diện ra một luồng giao thông. Tất cả các giao thông phù hợp với một sự kết hợp đặc biệt của những yếu tố này sau đó có thể được chuyển tiếp đến một máy chủ duy nhất trên mạng riêng.

        # Bạn sẽ phải sử dụng một biểu thức khác nhau để có được địa chỉ IP # Cho các hệ thống điều hành khác đã có một đầu ra ifconfig khác nhau # Hoặc nhập địa chỉ IP bằng tay trong báo cáo kết PREROUTING #. Trong ví dụ này, tất cả lưu lượng truy cập đến một địa chỉ IP cụ thể nào, không chỉ tới một cổng đặc biệt, được phiên dịch sang một máy chủ trên mạng con được bảo vệ. Bởi vì các bức tường lửa có hơn một địa chỉ IP, tôi không thể khuyên bạn nên Masquerade, nó sẽ buộc giả mạo địa chỉ IP của giao diện chính và không phải là một trong các bí danh địa chỉ IP tường lửa có thể có.

        Thay vào đó, sử dụng SNAT để chỉ định bí danh địa chỉ IP được sử dụng cho các kết nối được khởi xướng bởi tất cả các máy chủ khác trong mạng lưới bảo vệ. Ngoài ra thông báo như thế nào bạn phải chỉ định một lựa chọn đa cổng riêng biệt-m bất cứ khi nào bạn cần phải kết hợp nhiều cổng không liên tục cho cả hai nguồn và đích. # Cho phép chuyển tiếp cho mỗi máy chủ cấu hình cho NAT 01:01 # (Đối với các kết nối có nguồn gốc từ Internet. Chú ý cách bạn # Sử dụng địa chỉ IP thực sự ở đây).

        Sau khi giả mạo đã đạt được bằng cách sử dụng chuỗi POSTROUTING của bảng nat, bạn sẽ phải cấu hình iptables để cho phép các gói tin đến dòng chảy giữa hai  giao diện
        Sau khi giả mạo đã đạt được bằng cách sử dụng chuỗi POSTROUTING của bảng nat, bạn sẽ phải cấu hình iptables để cho phép các gói tin đến dòng chảy giữa hai giao diện

        VÍ DỤ VỀ CẤU HÌNH IPTABLES CHO MÁY CHỦ PHỤC VỤ WEB

          Ví dụ nếu bạn muốn dùng chức năng LOG trong Iptables, bạn phải nạp môđun ipt_LOG vào trước bằng lệnh # modprobe ipt_LOG. Đối với các gói ICMP đến, chúng ta sẽ đẩy qua chain CHECK_PINGFLOOD để kiểm tra xem hiện tại đamg bị ngập lụt PING hay không, sau đó mới cho phép gói vào. Nếu đang bị ngập lụt PING, môđun LOG sẽ tiến hành ghi nhật kí ở mức giới hạn --limit $LOG_LIMIT và --limit-burst $LOG_LIMIT_BURST, các gói PING ngập lụt sẽ bị thả hết.

          Ở đây bạn tạo sẵn chain reject quét cổng, chúng ta sẽ đẩy vào chain INPUT sau. Đối với gói TCP, chúng ta reject bằng gói TCP với cờ SYN=1 còn đối với gói UDP, chúng ta sẽ reject bằng gói ICMP `port-unreachable`. --syn -m state --state NEW -j DETECT_NMAP Đối với các gói TCP đến eth0 mở kết nối nhưng không đặt SYN=1 chúng ta sẽ chuyển sang chain DETECT_NMAP.

          Chain DETECT_NMAP sẽ phát hiện ra hầu hết các kiểu quét của Nmap và tiến hành ghi nhật kí ở mức --limit $LOG_LIMIT và --limit-burst $LOG_LIMIT_BURST. Ví dụ để kiểm tra quét XMAS, bạn dùng tùy chọn --tcp-flags ALL FIN,URG,PSH nghĩa là 3 cờ FIN, URG và PSH được bật, các cờ khác đều bị tắt. Gói mở TCP với cờ SYN được set 1 là hợp lệ nhưng không ngoại trừ khả năng là các gói SYN dùng để ngập lụt.

          Bao gồm cách cài đặt iptables, cơ chế xử lý package trong iptables, Target và Jumps, các tham số dòng lệnh của Iptables.