Giải pháp sử dụng mã nguồn mở Vyatta thay thế Cisco và Fortinet (Phần IV – Firewall)

I – Tổng Quan Về Bảo mật Trong Vyatta
 
1. Tường lửa trong Vyatta

Tường lửa trong Vyatta là tường lửa loại stateful firewall (tường lửa có trạng thái), có khả năng  thực hiện cơ chế điều tác và quản lý tình trạng của các gói tin, và khả năng kiểm tra không chỉ dừng lại ở  tầng transport và network mà nó có thể  trải dài lên các tầng khác như application.
 
Tường lửa phân tích và lọc các gói tin IP giữa các card mạng. Là ứng dụng quan trọng nhất dùng để bảo vệ  luồng dữ  liệu giữa mạng nội bộ và  internet. Nó cho phép người quản trị có thể lọc các gói tin dựa vào đặc điểm và các hành động của chúng. Hệ thống tường lửa trong Vyatta cung cấp các khả năng sau:

  • Lọc lưu lượng của các gói tin đi ngang qua router, sử dụng các từ khóa inout trên card mạng.
  • Lọc lưu lượng của chính router, sử dụng từ khóa local 
  • Định  nghĩa  các  tiêu  chuẩn cho các luật  để  lọc gói tin, bao gồm  có  địa chỉ  IP nguồn, địa chỉ IP đích, cổng nguồn, cổng đích, giao thức IP, và kiểu ICMP
  • Phát hiện các tùy chọn trong các gói tin IP ví dụ như source routing và các gói tin broadcast

Chức năng tường lửa của Vyatta có thể kiểm tra gói một cách ổn định và cung cấp thêm nhiều chiến  lược an ninh phân tầng cho người quản trị. Hệ  thống có thể đóng vai  trò chốt chặn chủ động, tự động phân loại và cấu hình cơ  sở dữ  liệu của chính nó nhằm thực hiện các hành động như cho phép, hay từ chối lưu lượng dữ liệu đi qua nó. Ngoài ra tường lửa Vyatta còn có thể là một lớp bổ sung khi sử dụng cùng với các thiết bị lọc gói khác.
 
2. Đặc điểm một luật trong firewall

Các luật của tường lửa sẽ định nghĩa chi tiết về điều kiện phù hợp và hành động thích hợp khi gặp các điều kiện trùng với các điều kiện đó. Lưu  lượng có thể được xét với nhiều đặc điểm khác nhau, bao gồm có địa chỉ  IP nguồn, địa chỉ  IP đích, port nguồn, port đích, giao thức, và kiểu ICMP.
Các luật được thực hiện  theo thứ tự, tùy thuộc vào số của luật. Nếu lưu lượng trùng với đặc điểm được định nghĩa trong luật, hành động gắn với luật đó sẽ được thực thi, nếu không, hệ thống sẽ tự động bỏ qua và thực hiện luật tiếp theo.
Các hành động có thể là một trong số sau:

  • Accept: lưu lượng được cho phép và được chuyển đi tiếp.
  • Drop: lưu lượng bị bỏ đi mà không báo trước.
  • Reject: lưu lượng sẽ bị bỏ qua kèm theo tín hiệu TCP reset
  • Inspect: lưu lượng sẽ được xử lý bởi hệ thống chống xâm nhập (IPS)

Mặc định sau tất cả các luật, một luật ngầm định với hành động reject all sẽ được thực hiện, như vậy, nếu lưu lượng không đáp ứng được bất kì luật nào được định nghĩa sẽ bị bỏ qua kèm theo với tín hiệu TCP reset. Ta có thể  thay đổi hành động mặc định này bằng cách sử dụng câu lệnh
 
firewall name <tên> default-action <hành động>
 
Ngoài ra ta có thể sử dụng các luật phủ định với dấu chấm than “!”. Tuy nhiên việc sử dụng các luật phủ định có thể gây ra những hành động khó đoán trước cho hệ thống.

3. Mối quan hệ giữa stateful firewall và connection tracking

Tường lửa Vyatta cung cấp khả  năng  kiểm tra kết nối trên nhiều chức  năng  của hệ thống, bao gồm có tường lửa, NAT, cân bằng tải WAN. Trên tường lửa, khả năng kiểm tra kết nối cho phép tường lửa có thể kiểm tra trạng thái các gói tin đi qua.

Không giống như tường lửa phi trạng thái (stateless firewall) sẽ lọc các gói tin một cách độc lập dựa trên các nguồn tĩnh cùng với thông tin về điểm đến, tường lửa có trạng thái (stateful firewall) kiểm tra trạng thái và luồng di chuyển của lưu lượng, từ đó cho phép hoặc chặn các lưu lượng đó cho đến khi trạng thái của các kết nối đó được nhận biết và được quyền đi qua. Mặc dù làm giảm tốc độ và tăng tải cho hệ thống, nhưng tường lửa có trạng thái có khả năng chặn tốt hơn đối với những kết nối không rõ nguồn gốc, giúp bảo vệ hệ thống tốt hơn.

Các tùy chọn mặc  định cho trạng thái có thể  được  thay  đổi bằng cách sử  dụng lệnh

firewall conntrack-table-size và firewall conntrack-tcp-loose
 
4. Các nguyên tắc khi gắn một tường lửa vào card mạng.
 
Khi áp dụng các  tường lửa đã được định nghĩa vào một card mạng,  tường lửa sẽ hoạt độngnhư một bộ lọc gói tin. Tường lữa sẽ thực hiện việc lọc các gói tin theo các quy tắc sau, phụ thuộc vào cách ta áp dụng các quy tắc đó. Bao gồm những thông tin sau:

in: khi ta áp dụng một tường lửa kiểu in, tường lửa sẽ lọc các gói tin đi vào card mạng và đi qua hệ thống. Ta chỉ có thể dùng một luật in trong bộ lọc gói tin.

out: khi ta áp dụng một  tường lửa kiểu out,  tường lữa sẽ  lọc các gói  tin đi ra  từ card mạng được áp dụng. Các gói  tin được lọc bởi kiểu out có thể  là các gói  tin đi qua hệ thống hoặc xuất phát từ chính hệ thống.

local:  khi ta áp dụng  tường lửa kiểu  local,  tường lữa sẽ  lọc các gói tin từ  chính hệ thống. Một tường lửa chỉ được áp dụng một bộ lọc local.

5. Mối quan hệ giữa tường lửa, NAT và định tuyến
 
Vì tường lửa trong Vyatta sẽ hoạt động chung với nhiều dịch vụ khác của hệ thống. Do đó ta cần nắm rõ nguyên tắc khi hệ thống thao tác với lưu lượng đi qua. Dưới đây là sơ đồ về cách thức xử lý các gói tin đi qua hệ thống giữa các dịch vụ tường lửa, NAT, và định tuyến:
 

Sơ đồ xử lý khi luồng dữ liệu đi qua hệ thống với luật in của firewall, luồng dữ liệu sẽ được DNAT và định tuyến trước khi SNAT:
 
Sơ đồ xử lý với luồng dữ liệu đi qua hệ thống khi tường lửa được áp dụng luật out:

 
Với lưu lượng được sinh ra bởi chính router (local)sẽ được xử lý theo sơ đồ sau:

 
Khi router gửi gói tin đi ta áp dụng sơ đồ sau (khi các gói tin đi ra từ hệ thống sẽ không áp dụng DNAT)

 
II – Zone-Based Firewall
 
1. Giới thiệu:

Thông  thường các quy tắc  tường lửa cơ bản được áp dụng lên mỗi card mạng sẽ  thực hiện lọc gói tin trên mỗi card mạng đó. Trong chế độ zone-based firewall, một nhóm các card mạng sẽ được đặt trọng một vùng được gọi là “zone”, ở cấp độ này, các card mạng cùng một nhóm sẽ có chung một cấp độ an ninh.

 
Quy tắc lọc gói được áp dụng giữa các vùng. Luồng dữ liệu di chuyển giữa các mạng trong cùng một vùng sẽ không bị lọc và di chuyển tự do, giữa các card giao tiếp mạng có chung cấp độ bảo mật.
 

Trong mô hình trên, ta có ba vùng  chính bao gồm có: Private Zone, DMZ Zone, và Public Zone. Private Zone bao gồm có eth0 và eth1, DMZ Zone thuộc về  eth2, và Public Zone thuộc về eth3.

Các mũi tên màu biểu thị cho các chính sách truy cập từ vùng này sang vùng khác giữa các Zone. Ngoài ra ta còn có local Zone thuộc về chính thiết bị Router.

Trong Zone-Based Firewall, ta có thể cấu hình cho phép các chính sách lọc lưu lượng cho phép dữ liệu đi qua lại giữa các Zone với nhau.

2. Đặc điểm của Zone-Based Firewall

Mỗi card giao tiếp mạng chỉ có thể thuộc về một Zone duy nhất.

Mỗi card giao tiếp mạng khi đã phụ  thuộc vào một Zone thì ta không thể áp dụng các rule riêng lẻ tính theo từng card giao tiếp mạng và ngược lại.

Nếu luồng dữ liệu di chuyển giữa các card giao tiếp mạng không phụ thuộc vào bất kì zone nào thì dữ liệu đó có thể được lọc bởi các luật riêng cho các card giao tiếp mạng đó.

Mặc định tất cả  lưu  lượng đi đến một zone nào đó sẽ bị bỏ đi  trừ khi  ta áp đặt chính sách cho phép luồng dữ liệu này đi tiếp.

Các chính sách lọc sẽ  được áp dụng theo các cặp zone với nhau (from_zone và to_zone), ví dụ như từ Private to DMZ, Public to Private…

3. Đặc điểm cấu hình

Để  sử dụng  tường lửa, ta cần định nghĩa một luật  (rule), và  lưu nó dưới một cái tên.

Một tường  lửa được tạo ra với một dãy các quy tắc. Sau khi được tạo ra, ta cần gán luật vào card mạng cần sử dụng để lọc các gói tin đi qua.

Để tạo một luật cú pháp câu lệnh như sau:

set firewall name Tên node là tên của chính sách ta cần tạo, trong chính sách này ta có thể thiết lập nhiều luật nhỏ, các luật nhỏ bao gồm có 4 loại: accept, drop, inspect, reject

Một số thông tin cần thiết cho mỗi rule bao gồm có:

  • destination: điểm đến của gói tin
  • icmp: kiểu gói icmp
  • protocol: giao thức được sử dụng
  • state: trạng thái của kết nối tcp
  • source: nguồn của gói tin

Để áp dụng một rule của tường lửa lên một card giao tiếp mạng ta sử dụng cú pháp như sau:

set interfaces ethernet [tên card mạng] firewall [in|out|local] name [tên rule]

Ngoài ra ta có thể dùng  tường lửa Vyatta để giới hạn  lưu  lượng của luồng dữ  liệu di chuyển qua Router bằng câu lệnh có cú pháp như sau:

set firewall name [tên rule] rule [số thứ tự] limit rate [số packet/second]

hoặc

set firewall name [tên rule] rule [số thứ tự] limit burst [số packet]

Trong đó thông số packet là số gói được phép đi qua trong 1 giây (limit rate) hoặc số gói được đi qua đồng thời (limit burst)

III – Mô hình minh họa
 

Cấu hình firewall trên máy V1 theo các yêu cầu sau:

a/ Không cho mạng Internet truy cập vào mạng Private

b/ Chỉ cho phép mạng Private truy cập mạng Internet các port sau: TCP(80,443,53,110,21) UDP(53)

c/ Chỉ cho phép mạng Internet truy cập vào mạng DMZ các port sau: TCP(80, 443, 25, 110, 53)

UDP(53). Mạng DMZ được phép truy cập mạng Internet tất cả các giao thức.

d/ Chỉ cho phép mạng Private truy cập mạng DMZ các port sau: TCP(53,80,443,25,110,445) UDP(53). Mạng DMZ được phép truy cập mạng Private tất cả các giao thức.

e/ Chỉ cho phép máy 192.168.10.10 của mạng Private được phép truy cập vào máy V1 các port sau: TCP (22)

f/ Máy V1 được phép truy cập tất cả các mạng.

Tạo zone

 
a/ Không cho mạng Internet truy cập vào mạng Private
 
b/ Chỉ cho phép mạng Private truy cập mạng Internet các port sau: TCP(80,443,53,110,21) UDP(53)

 
show firewall name private_to_public

c/ Chỉ cho phép mạng Internet truy cập vào mạng DMZ các port sau: TCP(80, 443, 25, 10, 53), UDP(53). Mạng DMZ được phép truy cập mạng Internet tất cả các giao thức.

 
show firewall name public_to_dmz

d/ Chỉ cho phép mạng Private truy cập mạng DMZ các port sau: TCP(22,53,80,443,25,110,445) UDP(53). Mạng DMZ được phép truy cập mạng Private tất cả các giao thức.
 

show firewall name private_to_dmz

e/ Chỉ cho phép máy 192.168.10.10 của mạng Private được phép truy cập vào máy V1 các port sau: TCP (22)
 

show firewall name private_to_vyatta

f/ Máy V1 được phép truy cập mạng dmz

 
g/ Máy V1 được phép truy cập mạng public.
 
Kiểm tra các zone-policy

show zone-policy

Kết luận

Ưu điểm : các cơ chế chống truy cập của tường lửa trong Vyatta cho phép ta thiết lập nhiều cách để chống sự truy cập trái phép vào hệ thống. Quản lý thời gian hoạt động của các rule, cho phép kiểm soát chi tiết đến từng loại gói tin và các cờ tcp. Từ đó giúp cho hệ thống tường lửa Vyatta trở nên mềm dẻo, kết hợp với hệ thống IPS đem lại khả năng bảo mật tốt hơn cho hệ thống.

Nhược điểm : tuy nhiên hệ thống Vyatta chỉ cho phép lọc  theo đặc điểm của kết nối hoặc gói tin đi qua. Do đó, vẫn còn hạn chế so với chức năng tường lửa của Microsoft ISA server với khả năng kiểm soát truy cập ở mức người dùng hoặc nhóm người dùng, quản lý kết hợp các địa chỉ ip hoặc các tên miền v.v…

Qua phần 5 tôi sẽ trình bày về virtual private network (VPN) của Vyatta. Chúc các bạn thành công !

Hoàng Lâm (từ vyatta)

About Tony Nguyễn
Tôi tên Tony tự Tèo trú tại thôn Tám, Trảng Thanh tỉnh Thừa Thiên. Thưở thiếu thời trí tuệ tôi thường thường, tuy thế tính tình thật thà thẳng thắng, thích thi thơ ...

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: