Tuesday, November 22, 2011

Juniper - Firewall Filter


1.Firewall filter là gì?

Khái niệm firewall là một khái niệm quen thuộc. Khi nói về firewall, người ta thường nghĩ tới các thiết bị có khả năng chặn được các cuộc "tấn công” từ các tác nhân bên ngoài vào một hệ thống mạng. Đối với các hãng sản xuất khác, người ta thường dùng khái niệm Access Control List, còn đối với Juniper thì khái niệm tương tự là Firewall Filter.

Firewall filter được đưa ra dưới dạng một stateless firewall, chủ yếu được sử dụng để kiểm soát thông tin đi ra/vào các thiết bị sử dụng Junos. Ta có thể sử dụng Firewall filter để hạn chế một số thông tin không cần thiết, hoặc cũng có thể dùng để kiểm soát, theo dõi tình trạng bảo mật.

Firewall filter sẽ kiếm soát thông tin bằng cách xem xét các thông số về layer 3, layer 4 trong gói tin. Dựa vào những rules đã được cấu hình vào lưu trong database, sẽ xem xét và áp dụng các hành động thực thi với gói tin.

Có thể tạm so sánh Firewall filter của Junos với ACL của IOS như sau:


2.Cấu tạo của một Firewall filter

Hình ảnh so sánh ACL của IOS và Firewall filter của Junos bên trên cũng đã cho ta một cái nhìn phần nào về firewall filter. Firewall filter có cấu tạo cũng khá giống với routing policy, bao gồm các term, trong term có các vế from để định nghĩa điều kiện lọc, và vế then để áp dụng hành động cho các chủ thể được lọc.


3. Các điều kiện để lọc
Có rất nhiều điều kiện để firewall filter lọc, chủ yếu là các thông số về layer 3 và layer 4 của gói tin.
Firewall filter có thể sử dụng rất nhiều các điều kiện khác nhau cho việc lọc. Tương tự như routing policy, term trong firewall filter cũng sử dụng vế from để định nghĩa các điều kiện lọc:

4.Các hành động xảy ra

Khi một packet đã được firewall filter lọc, nó sẽ cho ra 2 kết quả: ĐÚNG hoặc SAI. Nếu như kết quả ĐÚNG - tức là thành phần của packet khớp với nội dung của vế from- thì packet sẽ phải chấp nhận một hành động được thực thi do firewall filter đưa ra. Hành động này được định nghĩa trong vế then của firewall filter. Nếu như kết quả SAI thì sẽ bỏ qua.

Lưu ý rằng, đối với firewall filter cũng có một hành động mặc định được định nghĩa đó là nếu như không khớp với nội dung của firewall filter thì packet sẽ bị block.

Các hành động mà firewall filter đưa ra được chia làm 3 mục chính:
-Terminating actions:
  • -accept
  • -reject
  • -discard

-Flow control:
  • -next term

-Action modifiers:
  • -count.log. và syslog
  • -forwarding-class và loss-priority
  • -Policer

Trong đó, terminating actions sẽ chấm dứt hoạt động lọc packet của firewall filter.Hai hoạt động reject discard là như nhau, đều loại bỏ packet nhưng với reject thì sẽ gửi một thông điệp ICMP về nơi gửi packet. Còn discard thì sẽ lặng lẽ gạt bỏ packet mà không hề thông báo cho bên gửi.

Flow control sẽ điều khiển hướng đi tiếp theo của packet trong việc lọc. Giá trị next term nói cho firewall filter biết rằng, nếu như packet khớp với vế from thì sẽ đưa packet đến term tiếp theo để lọc.

Action modifier được sử dụng cho Class-of-Service tham khảo.

5.Xây dựng một Firewall filter hoàn chỉnh

Firewall filter được định nghĩa dưới mode [edit firewall]. Junos hỗ trợ đa giao thức nên cần phải lựa chọn các kiểu giao thức phù hợp. Ở đây, ta sẽ xây dựng firewall filter trên nền giao thức IPv4 trong family
IPv4 được Junos đưa vào trong inet family, IPv6 thì được đưa vào trong inet6. Ta sẽ xem xét xây dựng firewall filter tại inet family.

Muốn xây dựng một firewall filter trước hết cần phải hiểu rõ các yêu cầu đề ra. Xây dựng firewall filter cũng tương tự như routing-policy, trong firewall filter cũng bao gồm các term. Term được tạo nên từ 2 vế from và then.

Ví dụ: cấm một subnet truy cập tới một subnet khác.
Với ví dụ trên thì restrict-access là tên của firewall filter. Filter này có một term là term1. Nội dung của term đó là: mọi truy cập từ subnet 10.0.0.0/24 đến subnet 11.0.0.0/24 sẽ bị reject.

6.Sử dụng firewall filter

Sau khi đã xây dựng được một firewall filter thì ta sẽ áp dụng filter này cho router. Mục đích của ta là điều khiển luồng lưu lượng ra vào router nên sẽ áp đặt filter cho các interfaces. Khi áp đặt filter cho các interfaces, ta cần chú ý vào hướng lưu thông ra/vào của packet.

Các input firewall filter sẽ điều khiển luồng traffic đi vào router, output firewall filter sẽ điều khiển luồng traffic đi ra khỏi router.

Ngoài ra, ta cũng có thể áp dụng firewall filter với interface loopback để kiểm soát các traffic đi vào hệ thống.

Như vậy, firewall filter sẽ được áp dụng cho interface.

Với ví dụ trên, ta sẽ áp dụng restrict-access cho interface em1 để lọc luồng packet đi vào (input) router.













7 comments:

  1. Tớ có 3 Router
    R1------------------(em0)R2(em1)-------------------R3
    192.168.1.0/24 192.168.2.0/24
    Tớ muốn cấm ping từ R3 đến R1 tớ viết filter ntn bị lỗi chỗ nào cậu nhỉ
    firewall {
    family inet {
    filter ABC {
    term chan_ping {
    from {
    source-address {
    192.168.2.0/24;
    }
    icmp-type [ echo-request echo-reply ];
    }
    then {
    reject;
    }
    }
    }
    }
    }

    và áp vào interface em1
    em1 {
    unit 0 {
    family inet {
    filter {
    input ABC;
    }
    address 192.168.2.2/24;
    }
    }
    }

    ReplyDelete
  2. chào H, cậu thử thêm vào vế from giao thức icmp xem sao. và nhớ là có một term cuối để cho phép các gói tin còn lại, nếu ko sẽ bị block hết.

    ReplyDelete
  3. Hy vọng anh viết bài về NAT cho đủ bộ

    ReplyDelete
    Replies
    1. Rất khó làm NAT trên Olive nếu ko muốn nói là không hỗ trợ. Mình có kiếm trên trang Olive, ko thấy họ nói có test NAT thành công trên Olive hay ko. Viết bài lý thuyết suông mà ko có LAB thì giống như...chém gió nên lười ko viết luôn :-)

      Delete
    2. Ồ, mình cũng kiếm hoài mà chẳng thấy câu lệnh nào đánh vào khớp với Olive. Có được cái này anh tham khảo thử:
      http://remcobressers.nl/2008/07/configuring-nat-on-juniper-j-series/

      Delete
    3. NAT trên Juniper yêu cầu phải config Adaptive service interface (sp). Trên Olive ko giả lập được interface này.

      Delete
  4. mình muốn chặn fb và youtube trên juniper srx220h. bạn hướng dẫn mình với .

    ReplyDelete