Trong FortiOS 7.0 đã giới thiệu tính năng kiểm tra session trên giao thức SIP (Session Initiation Protocol) và tính năng này được thực hiện thông qua Engine IPS (Intrusion Prevention System).
Khi bạn áp dụng cấu hình VoIP cho rule của mình, bạn cần quyết định liệu bạn muốn sử dụng SIP ALG hoặc kiểm tra Session SIP để quản lý và kiểm tra kết nối VoIP trong mạng của bạn. Lựa chọn này phụ thuộc vào yêu cầu cụ thể của mạng và thiết bị bạn đang sử dụng. SIP ALG thường cung cấp kiểm soát cao hơn đối với giao tiếp SIP, trong khi kiểm tra dựa trên Session SIP thường tập trung vào xác định và quản lý các luồng dữ liệu, cụ thể như sau:
SIP ALG (Application Layer Gateway): SIP ALG là một tính năng trong firewall hoặc các thiết bị sử dụng để hỗ trợ và quản lý giao thức SIP. Khi bạn kích hoạt SIP ALG nó sẽ can thiệp vào giao thức SIP để thực hiện các chức năng như tạo “pin hole” trong NAT hoặc kiểm tra bảo mật và quản lý kết nối VoIP. Nếu bạn áp dụng cấu hình VoIP cho rule của mình và sử dụng SIP ALG, thiết bị này sẽ theo dõi và kiểm tra giao thức SIP trong thời gian thực.
Kiểm tra dựa trên Session SIP: Nếu bạn chọn kiểm tra dựa trên Session SIP, thiết bị sẽ không can thiệp vào nội dung của giao thức SIP mà sẽ theo dõi luồng dữ liệu SIP và thực hiện các thay đổi dựa trên quy tắc được định nghĩa trước. Nó không can thiệp sâu vào thông điệp SIP mà chỉ dựa vào luồng truyền dẫn để xác định và kiểm tra các kết nối VoIP.
Khái niệm "pin hole" liên quan đến việc sử dụng firewall và Network Address Translation (NAT) để cho phép dữ liệu đi qua mạng mà không ảnh hưởng đến tính bảo mật của mạng.
Khi bạn sử dụng firewall và NAT, mạng bên trong được bảo vệ bằng cách ẩn địa chỉ IP thật của các thiết bị bên trong và thay thế chúng bằng một địa chỉ IP duy nhất (được gọi là địa chỉ NAT) khi thông tin đi ra mạng công cộng hoặc internet. Điều này giúp bảo vệ tính riêng tư của mạng bên trong và ngăn các kết nối không mong muốn từ bên ngoài.
Tuy nhiên, khi bạn muốn thiết lập một kết nối đến một thiết bị bên trong (như một máy chủ web hoặc một dịch vụ VoIP), bạn cần phải tạo một loại quy tắc trong firewall và NAT để cho phép dữ liệu đi vào máy chủ bên trong. Đây chính là "pin hole", nó là một loại quy tắc hoặc một tùy chọn trong firewall và NAT để định rõ rằng một cổng cụ thể hoặc một loại kết nối nào đó được phép đi qua firewall và NAT và được định tuyến đến một thiết bị bên trong cụ thể.
Nhờ có "pin hole", bạn có thể mở các cổng hoặc kết nối cụ thể để cho phép truy cập vào các dịch vụ hoặc thiết bị bên trong mạng mà không cần lo lắng về việc tiết lộ toàn bộ mạng bên trong.
Để giải quyết vấn đề này, FortiOS 7.4.0 giới thiệu một VoIP Profile mới dựa trên IPS (ips-voip-filter) cho phép kiểm tra dựa trên Session SIP bổ sung SIP ALG và làm việc cùng nhau.
Ví dụ cấu hình:
config firewall policy
edit <id>
set ips-voip-filter <name>
next
end
Lựa chọn VoIP Profile trong một rule policy đã được khôi phục về cách hoạt động trước phiên bản 7.0. Bây giờ, bạn có thể chọn hồ sơ VoIP mà không cần quan tâm đến chế độ kiểm tra trong rule policy.
Trước đây, trong hồ sơ VoIP, người dùng có thể lựa chọn một tập tính năng dựa trên proxy hoặc dựa trên session. Chúng đã được đổi tên thành voipd và ips. Bạn có thêm hai tùy chọn trong cấu hình SIP.
Ví dụ cấu hình:
config voip profile
edit <name>
set feature-set {ips | voipd}
config sip
set call-id-regex <chuỗi>
set call-id-regex <chuỗi>
end
next
end
Bây giờ, bạn có thể chọn VoIP Profile với tính năng voipd hoặc ips trong hồ sơ và cấu hình SIP cho cả hai tùy chọn này. Điều này giúp bạn linh hoạt hơn trong việc quản lý tính năng VoIP trong rule policy của bạn.
Các tùy chọn và chức năng trong cấu hình VoIP Profile:
feature-set {ips | voipd}
: Đây là tùy chọn để chọn tính năng kiểm tra. Bạn có hai lựa chọn:ips
: Trước đây được gọi là “flow,” dùng để kiểm tra IPS Engine cho tùy chọn firewall ips-voip-filter.voipd
: Trước đây được gọi là “proxy”, dùng để kiểm tra SIP ALG cho tùy chọn firewall voip-profile.
call-id-regex <chuỗi>
: Tùy chọn này chỉ có sẵn khi bạn chọn tính năng “ips.” Bạn cần nhập một biểu thức chính quy PCRE để xác thực giá trị tiêu đề “Call-Id.”call-id-regex <chuỗi>
: Tùy chọn này cũng chỉ có sẵn khi bạn chọn tính năng “ips.” Bạn cần nhập một biểu thức chính quy PCRE để xác thực giá trị tiêu đề “Content-Type.”
Tùy chọn “feature-set” cho phép bạn chọn xem bạn muốn sử dụng tính năng kiểm tra IPS Engine (ips) hoặc tính năng kiểm tra SIP ALG (voipd) cho firewall của bạn. Nếu bạn chọn “ips,” bạn cũng có thể cấu hình các biểu thức chính quy PCRE để xác thực giá trị tiêu đề “Call-Id” và “Content-Type” trong lưu lượng SIP.
Bạn có thể lựa chọn một VoIP Profile SIP ALG trong một rule policy để xử lý lưu lượng VoIP với tính năng SIP ALG. Ví dụ:
config firewall policy
edit 1
set voip-profile "voip_sip_alg"
next
end
Hồ sơ VoIP SIP ALG này sẽ xử lý lưu lượng VoIP sử dụng tính năng SIP ALG.
Tuy nhiên, bạn cũng có thể lựa chọn một hồ sơ VoIP dựa trên IPS (kiểm tra dựa trên session SIP) cùng với một VoIP Profile SIP ALG trong cùng một rule policy. Ví dụ:
config firewall policy
edit 1
set voip-profile "voip_sip_alg"
set ips-voip-filter "voip_sip_ips"
next
end
Điều này cho phép bạn kết hợp cả hai tính năng: SIP ALG (SIP Application Layer Gateway) cho tính năng SIP và kiểm tra dựa trên Session SIP (dựa trên IPS) trong cùng một rule policy. Điều này giúp bạn quản lý lưu lượng VoIP một cách linh hoạt, sử dụng các tính năng cả của SIP ALG và kiểm tra dựa trên Session SIP.
Khi cả SIP ALG và SIP IPS được sử dụng và được cấu hình với các quy tắc chặn (block rules) giống nhau, SIP IPS sẽ được ưu tiên và thực hiện chặn (blocking).
Điều này có nghĩa là nếu bạn có cả hai SIP ALG và SIP IPS được kích hoạt và cấu hình để chặn cùng một loại lưu lượng, SIP IPS sẽ được ưu tiên trong việc thực hiện các quy tắc chặn. SIP ALG sẽ không được sử dụng để chặn lưu lượng trong trường hợp này.
Lý do là SIP IPS (Intrusion Prevention System) là một hệ thống kiểm tra an ninh mạng mạnh mẽ và thông minh hơn, có khả năng phát hiện và ngăn chặn các tình huống đe dọa bảo mật mạng. Do đó, nó được ưu tiên để đảm bảo tính an toàn và bảo mật của hệ thống mạng.
Ví dụ.
Trong ví dụ này, bạn cần cấu hình SIP ALG với SIP IPS và áp dụng cả hai SIP Profile trong cùng một rule policy. Dưới đây là cách cấu hình hồ sơ VoIP và rule policy:
Cấu hình VoIP Profile:
Tạo hai VoIP Profile, một với tính năng voipd (SIP ALG) và một với tính năng ips (SIP IPS).
config voip profile
edit "voip_sip_alg"
set feature-set voipd
set comment "sip_alg_simple"
config sip
set log-violations enable
set log-call-summary enable
end
next
edit "voip_sip_ips"
set feature-set ips
set comment "ips_voip_blocking"
config sip
set block-invite enable
set log-violations enable
end
next
end
Cấu hình rule policy:
Tạo rule policy và đặt các thông số cơ bản như dưới.
Đặt inspection-mode
thành “proxy” để sử dụng SIP ALG.
Đặt voip-profile
là “voip_sip_alg” để áp dụng VoIP Profile với tính năng SIP ALG.
Đặt ips-voip-filter
là “voip_sip_ips” để áp dụng hồVoIP Profile với tính năng SIP IPS.
config firewall policy
edit 1
set srcintf "port1"
set dstintf "port9"
set action accept
set srcaddr "all"
set dstaddr "all"
set srcaddr6 "all"
set dstaddr6 "all"
set schedule "always"
set service "ALL"
set utm-status enable
set inspection-mode proxy
set ips-sensor "g-default"
set voip-profile "voip_sip_alg"
set ips-voip-filter "voip_sip_ips"
set logtraffic all
set nat enable
next
end
Với cấu hình này, bạn đã áp dụng cả hai VoIP Profile, một cho tính năng SIP ALG (voipd) và một cho tính năng SIP IPS (ips), trong cùng một rule policy. SIP ALG sẽ xử lý pinhole creation, NAT, và các thông điệp SIP dựa trên session, trong khi SIP IPS sẽ chịu trách nhiệm kiểm tra và chặn lưu lượng dựa trên cấu hình bạn đã chỉ định.
Dưới đây là đoạn output của lệnh diagnose sys sip-proxy calls
dùng để kiểm tra cuộc gọi SIP:
Kiểm tra yêu cầu đăng ký (REGISTER request).
# diagnose sys sip-proxy calls
sip calls
vdom 1 (vdom1) vrf 0 call 7f2b99828300
call-id: 619216389
txn 7f2b998ad600 (REGISTER)
cseq 2 dir 0 state 5 status 200 expiry 527 HA 0
i_session: 7f2b998aac00 r_session: 7f2b998aac00
register: present
from: sip:2001@172.16.200.44
to: sip:2001@172.16.200.44
src: 10.1.100.11:5060
dst: 172.16.200.44:5060
- Kiểm tra yêu cầu invite (INVITE request).
# diagnose sys sip-proxy calls
sip calls
vdom 1 (vdom1) vrf 0 call 7f2b99828300
call-id: 619216389
txn 7f2b998ad600 (REGISTER)
cseq 2 dir 0 state 5 status 200 expiry 316 HA 0
i_session: 7f2b998aac00 r_session: 7f2b998aac00
register: present
from: sip:2001@172.16.200.44
to: sip:2001@172.16.200.44
src: 10.1.100.11:5060
dst: 172.16.200.44:5060
Các thông tin này cung cấp thông tin về các cuộc gọi SIP, bao gồm các yêu cầu đăng ký (REGISTER request) và yêu cầu invite (INVITE request) cụ thể, bao gồm cả địa chỉ nguồn và đích của cuộc gọi, trạng thái và nhiều thông tin khác. Điều này giúp bạn theo dõi và kiểm tra lưu lượng VoIP qua hệ thống của bạn.
Đây là Logs Register request.
date=2023-01-13 time=09:46:03 eventtime=1673631963477298677 tz="-0800" logid="0814044032" type="utm" subtype="voip" eventtype="voip" level="information" vd="vdom1" session_id=17092 epoch=0 event_id=1 srcip=10.1.100.11 src_port=5060 dstip=172.16.200.44 dst_port=5060 proto=17 src_int="port1" dst_int="port9" policy_id=1 profile="voip_sip_alg" voip_proto="sip" kind="register" action="permit" status="succeeded" duration=0 dir="session_origin" call_id="619216389" from="sip:2001@172.16.200.44" to="sip:2001@172.16.200.44"
Đây là Logs Invite request.
date=2023-01-13 time=09:54:43 eventtime=1673632484065549240 tz="-0800" logid="0814044033" type="utm" subtype="voip" eventtype="voip" level="notice" vd="vdom1" session_id=17092 epoch=0 event_id=0 srcip=10.1.100.11 src_port=5060 dstip=172.16.200.44 dst_port=5060 proto=17 src_int="port1" dst_int="port9" policy_id=1 profile="voip_sip_ips" voip_proto="sip" kind="call" action="block" status="N/A" reason="block-request" duration=0 dir="session_reverse" message_type="request" request_name="INVITE" call_id="1967779864" count=0 from="<sip:2001@172.16.200.44>" to="<sip:2002@172.16.200.44>" attackid=50083 attack="SIP.Invite.Method"