Fortigate Voip Sip 50
Fortigate Voip Sip 50
Fortigate Voip Sip 50
Technical Documentation
docs.fortinet.com
Knowledge Base
kb.fortinet.com
support.fortinet.com
Training Services
training.fortinet.com
FortiGuard
fortiguard.com
Document Feedback
techdocs@fortinet.com
Table of Contents
Change Log....................................................................................................... 6
Introduction....................................................................................................... 7
How this guide is organized..................................................................................... 7
14
16
17
19
19
21
23
24
25
27
30
31
33
36
37
39
39
41
44
Page 3
45
46
46
47
47
48
48
50
51
53
55
58
61
63
64
65
65
67
68
71
72
76
76
77
78
79
79
79
Page 4
91
91
92
93
93
94
94
Index ................................................................................................................ 96
Page 5
Change Log
Date
Change Description
2012-11-13
Page 6
Introduction
This FortiOS Handbook chapter contains detailed information about how FortiGate units
processes SIP VoIP calls and how to configure the FortiGate unit to apply security features to
SIP calls. This document all describes all FortiGate SIP configuration options and contains
detailed configuration examples. Future versions of this document will include more and more
configuration examples and more information about SIP functionality.
This document uses numeric IP addresses for all SIP end points. SIP addresses can also use
domain names instead of addresses. For the example, the following SIP addresses could refer
to the same SIP end point:
inviter@10.31.101.20
inviter@example.com
Page 7
SIP overview
The Session Initiation Protocol (SIP) is an IETF application layer signaling protocol used for
establishing, conducting, and terminating multiuser multimedia sessions over TCP/IP networks
using any media. SIP is often used for Voice over IP (VoIP) calls but can be used for establishing
streaming communication between end points.
SIP employs a request and response transaction model similar to HTTP for communicating
between endpoints. SIP sessions being with a SIP client sending a SIP request message to
another client to initiate a multimedia session. The other client responds with a SIP response
message. Using these request and response messages, the clients engage in a SIP dialog to
negotiate how to communicate and then start, maintain, and end the communication session.
SIP commonly uses TCP or UDP port 5060 and/or 5061. Port 5060 is used for non-encrypted
SIP signaling sessions and port 5061 is typically used for SIP sessions encrypted with SSL or
TLS.
Devices involved in SIP communications are called SIP User Agents (UAs) (also sometimes
called a User Element (UE)). UAs include User Agent Clients (UACs) that communicate with
each other and User Agent Servers (UASs) that facilitate communication between UACs. For a
VoIP application, an example of a UAC would be a SIP phone and an example of a UAS would
be a SIP proxy server.
Page 8
A SIP message contain headers that include client and server names and addresses required
for the communication sessions. The body of a SIP message contains Session Description
Protocol (SDP) statements that establish the media communication (port numbers, protocols
and codecs) that the SIP UAs use. SIP VoIP most commonly uses the Real Time Protocol (RTP)
and the Real Time Control Protocol (RTCP) for voice communication. Once the SIP dialog
establishes the SIP call the VoIP stream can run independently, although SIP messages can
affect the VoIP stream by changing port numbers or addresses and by ending it.
Once SIP communication and media settings are established, the UAs communicate with each
using the established media settings. When the communication session is completed, one of
the UAs ends the session by sending a final SIP request message and the other UA sends a SIP
response message and both UAs end the SIP call and stop the media stream.
FortiGate units provide security for SIP communications using the SIP session helper and the
SIP ALG:
The SIP session-helper provides basic high-performance support for SIP calls passing
through the FortiGate unit by opening SIP and RTP pinholes and performing source and
destination IP address and port translation for SIP and RTP packets and for the IP addresses
and port numbers in the SIP headers and the SDP body of the SIP messages. For more
about the SIP session helper, see The SIP session helper on page 24.
The SIP Application Layer Gateway (ALG) provides the same features as the session helper
plus additional advanced features such as deep SIP message inspection, SIP logging, SIP
IPv6 support, SIP message checking, HA failover of SIP sessions, and SIP rate limiting. For
more about the SIP ALG, see The SIP ALG on page 31.
There are a large number of SIP-related Internet Engineering Task Force (IETF) documents
(Request for Comments) that define behavior of SIP and related applications. FortiGate units
provide complete support of RFC 3261 for SIP, RFC 4566 for SDP and RFC 3262 for Provisional
Response Acknowledgement (PRACK). FortiGate units also provide support for other SIP and
SIP-related RFCs and performs Deep SIP message inspection on page 77 for SIP statements
defined in other SIP RFCs.
SIP Phone A
(PhoneA@10.31.101.20)
SIP Phone B
Phone B answers
(PhoneB@10.31.101.30)
Page 9
Peer to peer configurations are not very common because they require the SIP phones to keep
track of the names and addresses of all of the other SIP phones that they can communicate
with. In most cases a SIP proxy or re-direct server maintains addresses of a large number of SIP
phones and a SIP phone starts a call by contacting the SIP proxy server.
4. Phone B is
notified of incoming
call by proxy server
phone rings
P Ph
SIP
Phone B
SIP Phone A
(PhoneB@10.31.101.30)
(PhoneA@10.31.101.20)
A common SIP configuration would include multiple networks of SIP phones. Each of the
networks would have its own SIP server. Each SIP server would proxy the communication
between phones on its own network and between phones in different networks.
Page 10
5. Phone B is
notified of incoming
n
call by Phone A
phone rings
SIP P
Phone
h
A
h
B
SIP Ph
Phone
(PhoneA@10.31.101.20)
(PhoneB@10.31.101.30)
4. Phone B is
notified of incoming
call by proxy server
phone rings
SIP Phone B
SIP Phone A
(PhoneB@10.31.101.30)
(PhoneA@10.31.101.20)
SIP Registrar
Page 11
SIP Phone A
(PhoneA@10.31.101.20)
SIP Phone B
(PhoneB@10.31.101.30)
4. Phone B is
notified of incoming
call by proxy server
phone rings
Fort
FortiGate
rtt iG
G ate unit
in Transparent mode
The phones and server use the same SIP dialogs as they would if the FortiGate unit was not
present. However, the FortiGate unit can be configured to control which devices on the network
can connect to the SIP proxy server and can also protect the SIP proxy server from SIP
vulnerabilities.
Figure 6 shows a FortiGate unit operating in NAT/Route mode and installed between a private
network and the Internet. Some SIP phones and the SIP proxy server are connected to the
private network and some SIP phones are connected to the Internet. The SIP phones on the
Internet can connect to the SIP proxy server through the FortiGate unit and communication
between SIP phones on the private network and SIP phones on the Internet must pass through
the FortiGate unit.
Page 12
SIP Phone
Ph
P
h on
one
eA
(PhoneA@10.31.101.20)
B
SIP
SI
P Phone
Ph
h
(PhoneB@172.20.120.30)
4. Phone B is
notified of incoming
call by proxy server
phone rings
The phones and server use the same SIP dialog as they would if the FortiGate unit was not
present. However, the FortiGate unit can be configured to control which devices on the network
can connect to the SIP proxy server and can also protect the SIP proxy server from SIP
vulnerabilities. In addition, the FortiGate unit has a firewall virtual IP that forwards packets sent
to the SIP proxy server Internet IP address (172.20.120.50) to the SIP proxy server internal
network IP address (10.31.101.30).
Since the FortiGate unit is operating in NAT/Route mode it must translate packet source and
destination IP addresses (and optionally ports) as the sessions pass through the FortiGate unit.
Also, the FortiGate unit must translate the addresses contained in the SIP headers and SDP
body of the SIP messages. As well the FortiGate unit must open SIP and RTP pinholes through
the FortiGate unit. SIP pinholes allow SIP signalling sessions to pass through the FortiGate
between phones and between phones and SIP servers. RTP pinholes allow direct RTP
communication between the SIP phones once the SIP dialog has established the SIP call.
Pinholes are opened automatically by the FortiGate unit. Administrators do not add security
policies for pinholes or for RTP sessions. All that is required is a security policy that accepts SIP
traffic.
Opening an RTP pinhole means opening a port on a FortiGate interface to allow RTP traffic to
use that port to pass through the FortiGate unit between the SIP phones on the Internet and SIP
phones on the internal network. A pinhole only accepts packets from one RTP session. Since a
SIP call involves at least two media streams (one from Phone A to Phone B and one from Phone
B to Phone A) the FortiGate unit opens two RTP pinholes. Phone A sends RTP packets through
a pinhole in port2 and Phone B sends RTP packets through a pinhole in port1. The FortiGate
unit opens the pinholes when required by the SIP dialog and closes the pinholes when the SIP
call is completed. The FortiGate unit opens new pinholes for each SIP call.
Each RTP pinhole actually includes two port numbers. The RTP port number as defined in the
SIP message and an RTCP port number, which is the RTP port number plus 1. For example, if
the SIP call used RTP port 3346 the FortiGate unit would create a pinhole for ports 3346 and
3347.
Page 13
SIP Phone A
(Sending UAC
PhoneA@10.31.101.20)
SIP Phone B
(Receiving UAC
PhoneB@10.31.101.30)
Page 14
If a UAS in the form of a SIP proxy server is involved, similar messages are sent and received,
but the proxy server participates as an intermediary in the initial call setup. In the example in
Figure 8 the SIP proxy server receives the INVITE request from Phone A and forwards it to
Phone B. The proxy server then sends a 100 Trying response to Phone A. Phone B receives the
INVITE request and responds with a 180 Ringing and then a 200 OK SIP response message.
These messages are received by the proxy server and forwarded to Phone A to notify Phone A
that Phone B received and accepted the request. Phone A then sends an ACK message to
notify Phone B that the SIP response was received. This response is received by the proxy
server and forwarded to Phone B. Phone A and Phone B can then participate in the media
session independently of the proxy server.
When the phone call is complete Phone B hangs up sending a BYE request message to Phone
A. Phone A then sends a 200 OK response to Phone B acknowledging that the session has
ended.
Figure 8: Basic SIP dialog between UACs with a SIP proxy server UAS
SIP Phone A
(Sending UAC
PhoneA@10.31.101.20)
SIP Phone B
(Receiving UAC
PhoneB@10.31.101.30)
The SIP messages include SIP headers that contain names and addresses of Phone A, Phone B
and the proxy server. This addressing information is used by the UACs and the proxy server
during the call set up.
The SIP message body includes Session Description Protocol (SDP) statements that Phone A
and Phone B use to establish the media session. The SDP statements specify the type of media
stream to use for the session (for example, audio for SIP phone calls) and the protocol to use for
the media stream (usually the Real Time Protocol (RTP) media streaming protocol).
Phone A includes the media session settings that it would like to use for the session in the
INVITE message. Phone B includes its response to these media settings in the 200 OK
response. Phone As ACK response confirms the settings that Phone A and Phone B then use
for the media session.
Page 15
Description
INVITE
ACK
The originator of an INVITE message sends an ACK request to confirm that the
final response to an INVITE request was received. If the INVITE request did not
contain the session description, it must be included in the ACK request.
PRACK
OPTIONS
BYE
A client sends a BYE request to end a session. A BYE request from either end
of the SIP session terminates the session.
CANCEL
REGISTER
Info
For distributing mid-session signaling information along the signaling path for
a SIP call. I
Subscribe
For requesting the current state and state updates of a remote node.
Notify
Refer
Page 16
Description
Update
Response
Indicates the status of a transaction. For example: 200 OK, 202 Accepted, or
codes (1xx,
400 Bad Request.
202, 2xx, 3xx,
4xx, 5xx, 6xx)
Trying
Ringing
Call is being forwarded
Queued
Session progress
Success
Success responses indicate that a request message was received, understood, and accepted.
Success responses can contain the following reason codes and reason phrases:
200 OK
202 Accepted
Page 17
Redirection
Redirection responses indicate that more information is required for the endpoint to respond to
a request message. Redirection responses can contain the following reason codes and reason
phrases:
300
301
302
305
380
Multiple choices
Moved permanently
Moved temporarily
Use proxy
Alternative service
Client error
Client error responses indicate that a request message was received by a server that contains
syntax that the server cannot understand (i.e. contains a syntax error) or cannot comply with.
Client error responses include the following reason codes and reason phrases:
400
402
404
406
408
410
413
415
480
481
482
484
486
488
Bad request
401 Unauthorized
Payment required
403 Forbidden
Not found
405 Method not allowed
Not acceptable
407 Proxy authentication required
Request time-out
409 Conflict
Gone
411 Length required
Request entity too large 414 Request-URL too large
Unsupported media type
420 Bad extension
Temporarily not available
Call leg/transaction does not exist
Loop detected
483 Too many hops
Address incomplete
485 Ambiguous
Busy here
487 Request canceled
Not acceptable here
Server error
Server error responses indicate that a server was unable to respond to a valid request message.
Server error responses include the following reason codes and reason phrases:
500
501
502
502
504
505
Global failure
Global failure responses indicate that there are no servers available that can respond to a
request message. Global failure responses include the following reason codes and reason
phrases:
600
603
604
606
Fortinet Technologies Inc.
Busy everywhere
Decline
Does not exist anywhere
Not acceptable
Page 18
The first line of a SIP request message. The request-line includes the
SIP message type, the SIP protocol version, and a Request URI that
indicates the user or service to which this request is being
addressed. The following example request-line specifies the INVITE
message type, the address of the sender of the message
(inviter@example.com), and the SIP version:
INVITE sip:inviter@example.com SIP/2.0
Status-line
The first line of a SIP response message. The status-line includes the
SIP protocol version, the response code, and the reason phrase. The
example status-line includes the SIP version, the response code
(200) and the reason phrase (OK).
SIP/2.0 200 OK
SIP headers
Following the start line, SIP messages contain SIP headers (also called SIP fields) that convey
message attributes and to modify message meaning. SIP headers are similar to HTTP header
fields and always have the following format:
<header_name>:<value>
SIP messages can include the SIP headers listed in Table 2:
Table 2: SIP headers
SIP Header
Description
Allow
Call-ID
Contact
Included in SIP request messages, the Contact header contains the SIP
URI of the sender of the SIP request message. The receiver uses this
URI to contact the sender. For example:
Contact: Sender <sip:sender@10.31.100.20>t
Content-Length
Page 19
Description
Content-Type
CSeq
Expires
Gives the relative time after which the message (or content) expires.
The actual time and how the header is used depends on the SIP
method. For example:
Expires: 5
From
Max-forwards
Record-Route
Page 20
Description
Route
Forces routing for a request message through one or more SIP proxies.
The following example includes two SIP proxies:
Route: <sip:172.20.120.10;lr>,
<sip:10.31.101.50;lr>
RSeq
To
Identifies the receiver of the message. The address in this field is used
to send the message to the receiver. The following example includes
the receivers name (Receiver) and the receivers SIP address
(receiver@10.31.101.30.):
To: Receiver <sip:receiver@10.31.101.30>
Via
Indicates the SIP version and protocol to be used for the SIP session
and the address to which to send the response to the message that
contains the Via field. The following example Via field indicates to use
SIP version 2, UDP for media communications, and to send the
response to 10.31.101.20 using port 5060.
Via: SIP/2.0/UDP 10.31.101.20:5060
Page 21
Description
a=
b=
Contains information about the bandwidth required for the session or media in the
form b=<bandwidth_type>:<bandwidth>.
c=
Connection data about the session including the network type (usually IN for
Internet), address type (IPv4 or IPv6), the connection source address, and other
optional information. For example:
c=IN IPv4 10.31.101.20
i=
A text string that contains information about the session. For example:
i=A audio presentation about SIP
k=
Can be used to convey encryption keys over a secure and trusted channel. For
example:
k=clear:444gdduudjffdee
m=
Media information, consisting of one or more lines all starting with m= and
containing details about the media including the media type, the destination port
or ports used by the media, the protocol used by the media, and a media format
description.
m=audio 49170 RTP 0 3
m-video 3345/2 udp 34
m-video 2910/2 RTP/AVP 3 56
Multiple media lines are needed if SIP is managing multiple types of media in one
session (for example, separate audio and video streams).
Multiple ports for a media stream are indicated using a slash. 3345/2 udp means
UDP ports 3345 and 3346. Usually RTP uses even-numbered ports for data with
the corresponding one-higher odd ports used for the RTCP session belonging to
the RTP session. So 2910/2 RTP/AVP means ports 2910 and 2912 are used for
RTP and 2911 and 2913 are used for RTCP.
Media types include udp for an unspecified protocol that uses UDP, RTP or
RTP/AVP for standard RTP and RTP/SAVP for secure RTP.
o=
r=
Repeat times for a session. Used if a session will be repeated at one or more
timed intervals. Not normally used for VoIP calls. The times can be in different
formats. For example.
r=7d 1h 0 25h
r=604800 3600 0 90000
Page 22
Description
s=
Any text that describes the session or s= followed by a space. For example:
s=Call from inviter
t=
The start and stop time of the session. Sessions with no time restrictions (most
VoIP calls) have a start and stop time of 0.
t=0 0
v=
SDP protocol version. The current SDP version is 0 so the v= field is always:
v=0
z=
Time zone adjustments. Used for scheduling repeated sessions that span the
time between changing from standard to daylight savings time.
z=2882844526 -1h 2898848070 0
Page 23
The following example shows a possible 200 OK SIP response message in response to the
previous INVITE request message. The response includes 200 OK which indicates success,
followed by an echo of the original SIP INVITE request followed by PhoneBs SDP profile.
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.31.101.50:5060
From: PhoneA <sip:PhoneA@10.31.101.20>
To: PhoneB <sip:PhoneB@172.20.120.30>
Call-ID: 314159@10.31.101.20
CSeq: 1 INVITE
Contact: sip:PhoneB@10.31.101.30
Content-Type: application/sdp
Content-Length: 107
v=0
o=PhoneB 124333 67895 IN IP4 172.20.120.30
s=Hello!
t=0 0
c=IN IP4 172.20.120.30
m=audio 3456 RTP 0
SIP can support multiple media streams for a single SIP session. Each media steam will have its
own c= and m= lines in the body of the message. For example, the following message includes
three media streams:
INVITE sip:PhoneB@172.20.120.30 SIP/2.0
Via: SIP/2.0/UDP 10.31.101.20:5060
From: PhoneA <sip:PhoneA@10.31.101.20>
To: PhoneB <sip:PhoneB@172.20.120.30>
Call-ID: 314159@10.31.101.20
CSeq: 1 INVITE
Contact: sip:PhoneA@10.31.101.20
Content-Type: application/sdp
Content-Length: 124
v=0
o=PhoneA 5462346 332134 IN IP4 10.31.101.20
s=Let's Talk
t=0 0
c=IN IP4 10.31.101.20
m=audio 49170 RTP 0 3
c=IN IP4 10.31.101.20
m=audio 49172 RTP 0 3
c=IN IP4 10.31.101.20
m=audio 49174 RTP 0 3
Page 24
In most cases you would want to use the SIP ALG since the SIP session helper provides limited
functionality. However, the SIP session helper is available and can be useful for
high-performance solutions where a high level of SIP security is not a requirement.
Page 25
You do not have to disable the SIP session helper to use the SIP ALG.
If the SIP session helper has been disable by being removed from the session-helper list you
can use the following command to enable the SIP session helper by adding it back to the
session helper list:
config system session-helper
edit 0
set name sip
set port 5060
set protocol 17
end
Page 26
Changing the port numbers that the SIP session helper listens on
You can use the following command to change the port number that the SIP session helper
listens on for SIP traffic to 5064. The SIP session helper listens on the same port number for
UDP and TCP SIP sessions. In this example, the SIP session helper is session helper 13:
config system session-helper
edit 13
set port 5064
end
Your FortiGate unit may use a different session helper number for SIP. Enter the following
command to view the session helpers:
show system session-helper
.
.
.
edit 13
set name sip
set port 5060
set protocol 17
end
.
.
.
Po
Port2
Port1
1
SIP Phone A
(PhoneA@10.31.101.20)
FortiGate unit
in Transparent mode
Page 27
SIP Phone B
(PhoneB@10.31.101.30)
Phone_A
Type
Subnet
Subnet / IP Range
10.31.101.20/255.255.255.255
Interface
port1
Address Name
Phone_B
Type
Subnet
Subnet / IP Range
10.31.101.30/255.255.255.255
Interface
port2
Policy Type
Firewall
Policy Subtype
Address
Incoming Interface
port1
Source Address
Phone_A
Outgoing Interface
port2
Destination Address
Phone_B
Schedule
always
Service
SIP
Action
ACCEPT
Page 28
4. Select OK.
5. Add a security policy to allow Phone B to send SIP request messages to Phone A:
Policy Type
Firewall
Policy Subtype
Address
Incoming Interface
port2
Source Address
Phone_B
Outgoing Interface
port1
Destination Address
Phone_A
Schedule
always
Service
SIP
Action
ACCEPT
6. Select OK.
Page 29
2. Enter the following command to add security policies to allow Phone A to send SIP request
messages to Phone B and Phone B to send SIP request messages to Phone A.
config firewall policy
edit 0
set srcintf port1
set dstintf port2
set srcaddr Phone_A
set dstaddr Phone_B
set action accept
set schedule always
set service SIP
next
edit 0
set srcintf port2
set dstintf port1
set srcaddr Phone_B
set dstaddr Phone_A
set action accept
set schedule always
set service SIP
set utm-status enable
end
Page 30
Page 31
Figure 10:The SIP ALG works at the application level after ingress packets are accepted by a
security policy
SIP
Egress
Router
SIP ALG
IPS
Signatures
Opt.
Firewall
DoS
Sensor
Security Policy
IPsec VPN encryption, decryption
Access control
SIP
Page 32
processing certain SIP messages. In this case you can temporarily block these message
types until problem with the SIP server has been fixed.
SIP statistics and logging
SIP over IPv6
SIP over SSL/TLS
Deep SIP message syntax checking (also called deep SIP header inspection or SIP fuzzing
protection). Prevents attacks that use malformed SIP messages. Can check many SIP
headers and SDP statements. Configurable bypass and modification options.
Hosted NAT traversal, Resolves IP address issue in SIP and SDP lines due to NAT-PT in far
end firewall. Important feature for VoIP access networks.
SIP High Availability (HA), including active-passive clustering and session pickup (session
failover) for SIP sessions.
Geographical Redundancy. In an HA configuration, if the active SIP server fails (missing SIP
heartbeat messages or SIP traffic) SIP sessions can be redirected to a secondary SIP server
in another location.
SIP per request method message rate limitation with configurable threshold for SIP message
rates per request method. Protects SIP servers from SIP overload and DoS attacks.
RTP Bypass, Supports configurations with and without RTP pinholing. May inspect and
protect SIP signaling only.
SIP NAT with IP address conservation. Performs SIP and RTP aware IP Network Address
translation. Preserves the lost IP address information in the SDP profile i= line for later
processing/debugging in the SIP server. See NAT with IP address conservation on
page 63.
IP topology hiding
The IP topology of a network can be hidden through NAT and NAPT manipulation of IP and
SIP level addressing. For example, see SIP NAT configuration example: destination address
translation (destination NAT) on page 58.
SIP inspection without address translation
The SIP ALG inspects SIP messages but addresses in the messages are not translated. This
feature can be applied to a FortiGate unit operating in Transparent mode or in NAT/Route
mode. In Transparent mode you add normal Transparent mode security policies that enable
the SIP ALG and include a VoIP profile that causes the SIP ALG to inspect SIP traffic as
required. For an example configuration, see Configuration example: SIP in Transparent
Mode on page 41.
For a FortiGate unit operating in NAT/Route mode, if SIP traffic can pass between different
networks without requiring NAT because is supported by the routing configuration, you can
add security policies that accept SIP traffic without enabling NAT. In the VoIP profile you can
configure the SIP ALG to inspect SIP traffic as required.
Page 33
VoIP profiles
To add a new VoIP profile from the web-based manager go to UTM Security Profiles > VoIP >
Profile and select Create New.
For SIP, from the web-based manager you can configure the VoIP profile to limit the number of
SIP REGISTER and INVITE requests and enable logging of SIP sessions and SIP violations.
Many additional options for configuring how the ALG processes SIP sessions are available from
the CLI.
For SCCP you can limit the call setup time. Additional SCCP options are available from the CLI.
Use the following command to add a VoIP profile named VoIP_Pro_1 from the CLI:
config voip profile
edit VoIP_Pro_1
end
FortiGate units include two pre-defined VoIP profiles. On the web-based manager these profiles
look identical. However, the CLI-only settings result in the following functionality.
default
The most commonly used VoIP profile. This profile enables both SIP and SCCP and
places the minimum restrictions on what calls will be allowed to negotiate. This
profile allows normal SCCP, SIP and RTP sessions and enables the following
security settings:
block-long-lines to block SIP messages with lines that exceed maximum
line lengths.
block-unknown to block unrecognized SIP request messages.
log-violations to write log messages that record SIP violations.
log-call-summary to write log messages that record SIP call progress (similar
to DLP archiving).
nat-trace (see NAT with IP address conservation on page 63).
contact-fixup perform NAT on the IP addresses and port numbers in SIP
headers in SIP CONTACT messages even if they dont match the sessions IP
address and port numbers.
strict
This profile is available for users who want to validate SIP messages and to only
allow SIP sessions that are compliant with RFC 3261. In addition to the settings in
the default VoIP profile, the strict profile sets all SIP deep message inspection
header checking to block and drop SIP messages that contain malformed SIP or
SDP lines that can be detected by the ALG. For more information about SIP deep
header inspection, see Deep SIP message inspection on page 77.
Page 34
Neither of the default profiles applies SIP rate limiting or message blocking. To apply more ALG
features to SIP sessions you can clone (copy) the pre-defined VoIP profiles and make your own
modifications to them. For example, to clone the default profile and configure the limit for SIP
NOTIFY request messages to 1000 messages per second per security policy and block SIP
INFO request messages.
config voip profile
clone default to my_voip_pro
edit my_voip_pro
config sip
set notify-rate 1000
set block-info enable
end
end
end
Page 35
Use the following command to display status information about the SIP sessions being
processed by the SIP ALG. You can also clear all SIP ALG statistics.
diagnose sys sip-proxy stats {clear | list}
Page 36
Also, you can check to see if some ALG-only features are not being applied to all SIP sessions.
For example, the VoIP usage widget on the FortiGate dashboard displays statistics for SIP and
SCCP calls processed by the ALG but not for calls processed by the session helper. So if you
see fewer calls than expected the session helper may be processing some of them.
Other logging and monitoring features such as log messages and DLP archiving are only
supported by the ALG.
Finally, you can check the policy usage and session information dashboard widgets to see if SIP
sessions are being accepted by the wrong security policies.
Page 37
Page 38
You can use the provisional-invite-expiry-time SIP VoIP profile option to control how
long the SIP ALG waits for provisional INVITE messages before assuming that the call setup has
been interrupted and the SIP call should be dropped. The default value for this timer is 210
seconds. You can change it to between 10 and 3600 seconds.
Use the following command to change the expiry time to 100 seconds.
config voip profile
edit Profile_name
config sip
set provisional-invite-expiry-time 100
end
end
Source IP
Any
Source port
Any
Destination IP
The SIP ALG extracts the destination IP address from the c= line in the
SDP profile. The c= line can appear in either the session or media part of
the SDP profile. The SIP ALG uses the IP address in the c= line of the
media part of the SDP profile first. If the media part does not contain a c=
line, the SIP ALG checks the c= line in the session part of the SDP profile.
If the session part of the profile doesnt contain a c= line the packet is
dropped. Pinholes for RTP and RTCP sessions share the same destination
IP address.
Destination port
The SIP ALG extracts the destination port number for RTP from the m=
field and adds 1 to this number to get the RTCP port number.
Lifetime
The length of time during which the pinhole will be open. When the lifetime
ends, the SIP ALG removes the pinhole.
Page 39
The SIP ALG keeps RTP pinholes open as long as the SIP session is alive. When the associated
SIP session is terminated by the SIP ALG or the SIP phones or servers participating in the call,
the RTP pinhole is closed.
Figure 11 shows a simplified call setup sequence that shows how the SIP ALG opens pinholes.
Phone A and Phone B are installed on either side of a FortiGate unit operating in Transparent
mode. Phone A and Phone B are on the same subnet. The FortiGate unit includes a security
policy that accepts SIP sessions from port1 to port2 and from port2 to port1. The FortiGate unit
does not require an RTP security policy, just the SIP policy.
You can see from this diagram that the SDP profile in the INVITE request from Phone A indicates
that Phone A is expecting to receive a media stream sent to its IP address using port 4000 for
RTP and port 4001 for RTCP. The SIP ALG creates pinhole 1 to allow this media traffic to pass
through the FortiGate unit. Pinhole 1 is opened on the Port2 interface and will accept media
traffic sent from Phone B to Phone A.
When Phone B receives the INVITE request from Phone A, Phone B will know to send media
streams to Phone A using destination IP address 10.31.101.20 and ports 4000 and 4001. The
200 OK response sent from Phone B indicates that Phone B is expecting to receive a media
stream sent to its IP address using ports 8000 and 8001. The SIP ALG creates pinhole 2 to allow
this media traffic to pass through the FortiGate unit. Pinhole 2 is opened on the Port1 interface
and will accept media traffic sent from Phone A to Phone B.
Page 40
Port1
rt1
SIP Phone A
(PhoneA@10.31.101.20)
Port2
P
Po
FortiGate
Fort
t iG
iGate
G
unit
in Transparent mode
SIP Phone B
(PhoneB@10.31.101.30)
Page 41
Po
Port2
Port1
1
SIP Phone A
(PhoneA@10.31.101.20)
FortiGate unit
in Transparent mode
SIP Phone B
(PhoneB@10.31.101.30)
Phone_A
Type
Subnet
Subnet / IP Range
10.31.101.20/255.255.255.255
Interface
port1
Address Name
Phone_B
Type
Subnet / IP Range
Subnet / IP Range
10.31.101.30/255.255.255.255
Interface
port2
Page 42
3. Add a security policy to allow Phone A to send SIP request messages to Phone B:
Policy Type
Firewall
Policy Subtype
Address
Incoming Interface
port1
Source Address
Phone_A
Outgoing Interface
port2
Destination Address
Phone_B
Schedule
always
Service
SIP
Action
ACCEPT
Firewall
Policy Subtype
Address
Incoming Interface
port2
Source Address
Phone_B
Outgoing Interface
port1
Destination Address
Phone_A
Schedule
always
Service
SIP
Action
ACCEPT
Page 43
Page 44
Enter the following command to enable RTP bypass in a VoIP profile by disabling opening RTP
pinholes:
config voip profile
edit VoIP_Pro_1
config sip
set rtp disable
end
end
Opening and closing SIP register, contact, via and record-route pinholes
You can use the open-register-pinhole, open-contact-pinhole, open-via-port,
and open-record-route-pinhole VoIP profile CLI options to control whether the FortiGate
unit opens various pinholes.
If open-register-pinhole is enabled (the default setting) the FortiGate unit opens pinholes
for SIP Register request messages. You can disable open-register-pinhole so that the
FortiGate unit does not open pinholes for SIP Register request messages.
If open-contact-pinhole is enabled (the default setting) the FortiGate unit opens pinholes
for non-Register SIP request messages. You can disable open-contact-pinhole so that the
FortiGate unit does not open pinholes for non-register requests. Non-register pinholes are
usually opened for SIP INVITE requests.
If open-via-pinhole is disabled (the default setting) the FortiGate unit does not open
pinholes for Via messages. You can enable open-via-pinhole so that the FortiGate unit
opens pinholes for Via messages.
If open-record-route-pinhole is enabled (the default setting) the FortiGate unit opens
pinholes for Record-Route messages. You can disable open-record-route-pinhole so
that the FortiGate unit does not open pinholes for Record-Route messages.
Usually you would want to open these pinholes. Keeping them closed may prevent SIP from
functioning properly through the FortiGate unit. They can be disabled, however, for interconnect
scenarios (where all SIP traffic is between proxies and traveling over a single session). In some
cases these settings can also be disabled in access scenarios if it is known that all users will be
registering regularly so that their contact information can be learned from the register request.
You might want to prevent pinholes from being opened to avoid creating a pinhole for every
register or non-register request. Each pinhole uses additional system memory, which can affect
system performance if there are hundreds or thousands of users, and requires refreshing which
can take a relatively long amount of time if there are thousands of active calls.
To configure a VoIP profile to prevent opening register and non-register pinholes:
config voip profile
edit VoIP_Pro_1
config sip
set open-register-pinhole disable
set open-contact-pinhole disable
end
end
In some cases you may not want to open pinholes for the port numbers specified in SIP Contact
headers. For example, in an interconnect scenario when a FortiGate unit is installed between
two SIP servers and the only SIP traffic through the FortiGate unit is between these SIP servers
pinholes may not need to be opened for the port numbers specified in the Contact header lines.
Page 45
If you disable open-register-pinhole then pinholes are not opened for ports in Contact
header lines in SIP Register messages. If you disable open-contact-pinhole then pinholes
are not opened for ports in Contact header lines in all SIP messages except SIP Register
messages.
Page 46
The addressing and port number information in SDP fields is used by the ALG to reserve ports
for the media session and create a NAT mapping between them and the ports in the SDP fields.
Because SDP uses sequential ports for the RTP and RTCP channels, the ALG provides
consecutive even-odd ports.
Page 47
NAT action
To:
None
From:
Call-ID:
Via:
Request-URI:
None
Contact:
Record-Route:
Route:
Page 48
Response messages from phones or servers on the Internet are sent to the FortiGate unit
interface connected to the Internet where the destination addresses are translated back to
addresses on the private network before forwarding the SIP response message to the private
network.
Table 5: Source NAT translation of IP addresses in SIP response messages
SIP header
NAT action
To:
None
From:
Call-ID:
Via:
Request-URI:
N/A
Contact:
None
Record-Route:
Route:
NAT action
To:
Replace VIP address with address on the private network as defined in the
firewall virtual IP.
From:
None
Call-ID:
None
Via:
None
Request-URI:
Replace VIP address with address on the private network as defined in the
firewall virtual IP.
Contact:
None
Record-Route:
None
Route:
None
Page 49
SIP response messages sent in response to the destination NAT translated messages are sent
from a server or a phone on the private network back to the originator of the request messages
on the Internet. These reply messages are accepted by the same security policy that accepted
the initial request messages, The firewall VIP in the original security policy contains the
information that the SIP ALG uses to translate the private network source addresses in the SIP
headers into the firewall virtual IP address.
Table 7: Destination NAT translation of IP addresses in SIP response messages
SIP header
NAT action
To:
None
From:
Call-ID:
None
Via:
None
Request-URI:
N/A
Contact:
Record-Route:
Route:
None
Page 50
Where
audio is the media type. FortiGate units support the audio media type.
<port_number> is the destination port number used by the media stream.
RTP is the application layer transport protocol used for the media stream. FortiGate units
support the Real Time Protocol (RTP) transport protocol.
<format_list> is the format list that provides information about the application layer
protocol that the media uses.
Internal
10.31.101.100
SIP Phone A
(PhoneA@10.31.101.20)
FortiGate unit
in NAT/Route mode
SIP Phone B
(PhoneB@172.20.120.30)
Page 51
For the replies to SIP packets sent by Phone A to be routable on Phone Bs network, the
FortiGate unit uses source NAT to change their source address to the address of the WAN1
interface. The SIP ALG makes similar changes the source addresses in the SIP headers and
SDP profile. For example, the original INVITE request from Phone A includes the address of
Phone A (10.31.101.20) in the from header line. After the INVITE request passes through the
FortiGate unit, the address of Phone A in the From SIP header line is translated to
172.20.120.122, the address of the FortiGate unit WAN1 interface. As a result, Phone B will
reply to SIP messages from Phone A using the WAN1 interface IP address.
The FortiGate unit also opens a pinhole so that it can accept media sessions sent to the WAN1
IP address using the port number in the m= line of the INVITE request and forward them to
Phone A after translating the destination address to the IP address of Phone A.
Phone B sends the 200 OK response to the INVITE message to the WAN1 interface. The SDP
profile includes the port number that Phone B wants to use for its media stream. The FortiGate
unit forwards 200 OK response to Phone A after translating the addresses in the SIP and SDP
lines back to the IP address of Phone A. The SIP ALG also opens a pinhole on the Internal
interface that accepts media stream sessions from Phone A with destination address set to the
IP address of Phone B and using the port that Phone B added to the SDP m= line.
Figure 14:SIP source NAT scenario part 2: 200 OK returned and media streams established
WAN1
172.20.120.122
Internal
10.31.101.100
SIP Phone A
(PhoneA@10.31.101.20)
FortiGate unit
in NAT/Route mode
SIP Phone B
(PhoneB@172.20.120.30)
Page 52
Port2
00
0
10.11.101.100
Port1
P
Po
172.
1
72 20.
172.20.120.141
SIP Phone
Ph
P
h on
one A
(PhoneA@10.31.101.20)
SIP
P Phone
Ph
hone B
(PhoneB@172.20.120.30)
1. Phone B sends an INVITE request
for Phone A to the SIP Proxy Server
Virtual IP (SDP 172.20.120.30:4900)
INVITE sip:PhoneA@172.20.120.50 SIP/2.0
Via: SIP/2.0/UDP 172.20.120.50:5060
From: PhoneB <sip:PhoneB@172.20.120.30>
To: PhoneA <sip:PhoneA@172.20.120.50>
Call-ID: 314134@172.20.120.30
CSeq: 1 INVITE
Contact: sip:PhoneB@172.20.120.30
v=0
o=PhoneB 2346 134 IN IP4 172.20.120.30
c=IN IP4 172.20.120.30
m=audio 4900 RTP 0 3
(SDP: 172.20.120.30:4900)
Page 53
Phone A sends a 200 OK response back to the SIP proxy server. The SIP proxy server forwards
the response to Phone B. The FortiGate unit accepts the 100 OK response. The SIP ALG
translates the Phone A addresses back to the SIP proxy server virtual IP address before
forwarding the response back to Phone B. The SIP ALG also opens a pinhole using the SIP
proxy server virtual IP which is the address in the o= line of the SDP profile and the port number
in the m= line of the SDP code.
Figure 16:SIP destination NAT scenario part 2: 200 OK returned to Phone B and media streams
established
FortiGate-620B
Cluster
In NAT/Route mode
Port2
00
0
10.11.101.100
Port1
P
Po
172.20.120.141
172.
1
72 20.
SIP Phone A
(PhoneA@10.31.101.20)
SIP Phone B
(PhoneB@172.20.120.30)
SIP/2.0 200 OK
Via: SIP/2.0/UDP 10.31.101.50:5060
From: PhoneB <sip:PhoneB@172.20.120.30>
To: PhoneA <sip:PhoneA@10.31.101.50>
Call-ID: 314134@172.20.120.30
CSeq: 1 INVITE
Contact: sip:PhoneB@172.20.120.30
v=0
o=PhoneB 2346 134 IN IP4 172.20.120.30
c=IN IP4 10.31.101.20
m=audio 5500 RTP 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 172.20.120.50:5060
From: PhoneB <sip:PhoneB@172.20.120.30>
To: PhoneA <sip:PhoneA@172.20.120.50>
Call-ID: 314134@172.20.120.30
CSeq: 1 INVITE
Contact: sip:PhoneB@172.20.120.30
v=0
o=PhoneB 2346 134 IN IP4 172.20.120.30
c=IN IP4 172.20.120.50
m=audio 5500 RTP 0
The media stream from Phone A is accepted by pinhole one and forwarded to Phone B. The
source address of this media stream is changed to the SIP proxy server virtual IP address. The
media stream from Phone B is accepted by pinhole 2 and forwarded to Phone B. The
destination address of this media stream is changed to the IP address of Phone A.
Page 54
Internal
100
10.31.101.100
SIP Phone A
(PhoneA@10.31.101.20)
WAN1
1 2
17
172.20.120.122
SIP Phone B
(PhoneB@172.20.120.30)
FortiGate
F
tiG
G t unit
it
in NAT/Route mode
Address Name
Phone_A
Type
Subnet
Subnet / IP Range
10.31.101.20/255.255.255.255
Interface
Internal
Address Name
Phone_B
Type
Subnet
Subnet / IP Range
172.20.120.30/255.255.255.255
Interface
wan1
Page 55
Firewall
Policy Subtype
Address
Incoming Interface
internal
Source Address
Phone_A
Outgoing Interface
wan1
Destination Address
Phone_B
Schedule
always
Service
SIP
Action
ACCEPT
Firewall
Policy Subtype
Address
Incoming Interface
wan1
Source Address
Phone_B
Outgoing Interface
internal
Destination Address
Phone_A
Schedule
always
Service
SIP
Action
ACCEPT
Page 56
Page 57
Port2
00
0
10.11.101.100
Port1
P
Po
172.20.120.141
172 20.
172.
SIP Phone
Ph
P
h
A
(PhoneA@10.31.101.20)
SIP Phone
Ph
B
(PhoneB@172.20.120.30)
Name
SIP_Proxy_VIP
External Interface
port1
Type
Static NAT
External IP Address/Range
172.20.120.50
Mapped IP Address/Range
10.31.101.50
Page 58
SIP_Proxy_Server
Type
Subnet
Subnet / IP Range
10.31.101.50/255.255.255.255
Interface
port2
Firewall
Policy Subtype
Address
Incoming Interface
port1
Source Address
all
Outgoing Interface
port2
Destination Address
SIP_Proxy_VIP
Schedule
always
Service
SIP
Action
ACCEPT
Policy Type
Firewall
Policy Subtype
Address
Incoming Interface
port2
Source Address
SIP_Proxy_Server
Outgoing Interface
port1
Destination Address
all
Page 59
Schedule
always
Service
SIP
Action
ACCEPT
Page 60
2. Enter the following command to add a source NAT security policy to allow the SIP proxy
server to send SIP request messages to Phone B and the Internet:
config firewall policy
edit 0
set srcintf port2
set dstintf port1
set srcaddr SIP_Proxy_Server
set dstaddr all
set action accept
set schedule always
set service SIP
set nat enable
set utm-status enable
set voip-profile default
end
217.10.69.11
RTP Media
Server
217.233.122.132
10.72.0.57
FortiGate Unit
Page 61
217.10.69.11
RTP Media
Server
SIP Proxy
Server
10.72.0.60
72.0.60
217.233.122.132
217.23
10.72.0.57
F tiiG t U
FortiGate
Unitit
In the scenario, shown in Figure 20, the SIP phone connects to a VIP (10.72.0.60). The SIP ALG
translates the SIP contact header to 217.10.79.9, opens RTP pinholes, and manages NAT.
The FortiGate unit also supports a variation of this scenario where the RTP media servers IP
address is hidden on a private network or DMZ.
Figure 21:SIP destination NAT-RTP media server hidden
192.168.200.99
219.29.81.21
RTP Media
Server
10.0.0.60
217.233.90.60
In the scenario shown in Figure 21, a SIP phone connects to the Internet. The VoIP service
provider only publishes a single public IP. The FortiGate unit is configured with a firewall VIP. The
SIP phone connects to the FortiGate unit (217.233.90.60) and using the VIP the FortiGate unit
translates the SIP contact header to the SIP proxy server IP address (10.0.0.60). The SIP proxy
server changes the SIP/SDP connection information (which tells the SIP phone which RTP
media server IP it should contact) also to 217.233.90.60.
Page 62
219.29.81.10
219.29.81.20
RTP Server
10.0.0.60
R
RTP-1: 217.233.90.65
RTP-2: 217.233.90.70
R
SIP: 217.233.90.60
S
SIP Server
In this scenario, shown in Figure 22, assume there is a SIP server and a separate media
gateway. The SIP server is configured so that the SIP phone (219.29.81.20) will connect to
217.233.90.60. The media gateway (RTP server: 219.29.81.10) will connect to 217.233.90.65.
What happens is as follows:
1. The SIP phone connects to the SIP VIP. The FortiGate ALG translates the SIP contact header
to the SIP server: 219.29.81.20 > 217.233.90.60 (> 10.0.0.60).
2. The SIP server carries out RTP to 217.233.90.65.
3. The FortiGate ALG opens pinholes, assuming that it knows the ports to be opened.
4. RTP is sent to the RTP-VIP (217.233.90.65.) The FortiGate ALG translates the SIP contact
header to 192.168.0.21.
Page 63
Controlling how the SIP ALG NATs SIP contact header line addresses
You can enable contact-fixup so that the SIP ALG performs normal SIP NAT translation to
SIP contact headers as SIP messages pass through the FortiGate unit.
Disable contact-fixup if you do not want the SIP ALG to perform normal NAT translation of
the SIP contact header if a Record-Route header is also available. If contact-fixup is
disabled, the FortiGate ALG does the following with contact headers:
For Contact in Requests, if a Record-Route header is present and the request comes from
the external network, the SIP Contact header is not translated.
For Contact in Responses, if a Record-Route header is present and the response comes
from the external network, the SIP Contact header is not translated.
Page 64
If contact-fixup is disabled, the SIP ALG must be able to identify the external network. To
identify the external network, you must use the config system interface command to set
the external keyword to enable for the interface that is connected to the external network.
Enter the following command to perform normal NAT translation of the SIP contact header:
config voip profile
edit VoIP_Pro_1
config sip
set contact-fixup enable
end
end
Page 65
IP: 192.168.10.20
IP Phone
Virtual Server
IP Address
172.20.120.20
TCP Port 5060
port2
ortt1
port1
172.20.120.1
Page 66
IP: 192.168.10.20
IP Phone
Virtual Server
IP Address
172.20.120.20
TCP Port 5060
p
port2
t1
1
port1
172.20.120.1
Page 67
2 Add a security policy that includes the virtual IP and VoIP profile.
config firewall policy
edit 1
set srcintf "port1"
set dstintf "port2"
set srcaddr "all"
set dstaddr "sip_port_ldbl_vip"
set action accept
set schedule "always"
set service "ANY"
set utm-status enable
set voip-profile default
set comments "Translate SIP destination port"
end
Adding the original IP address and port to the SIP message header after NAT
In some cases your SIP configuration may require that the original IP address and port from the
SIP contact request is kept after NAT. For example, the original SIP contact request could
include the following:
Contact: <sip:0150302438@172.20.120.110:5060>;
After the packet goes through the FortiGate unit and NAT is performed, the contact request
could normally look like the following (the IP address translated to a different IP address and the
port to a different port):
Contact: <sip:0150302438@10.10.10.21:33608>;
You can enable register-contact-trace in a VoIP profile to have the SIP ALG add the
original IP address and port in the following format:
Contact: <sip:0150302438@<nated-ip>:<nated-port>;o=<original-ip>:
<original-port>>;
So the contact line after NAT could look like the following:
Contact: <sip:0150302438@10.10.10.21:33608;o=172.20.120.110:5060>;
Enter the following command to enable keeping the original IP address and port:
config voip profile
edit Profile_name
config sip
set register-contract-trace enable
end
Page 68
Po
Port2
10.11.101.100
10
10.11.101.10
SIP Server Virtual IP: 172.20.120.50
SIP Phone A
(PhoneA@172.20.120.20)
SIP server
10.11.101.50
In the example, a client (SIP Phone A) sends a REGISTER request to the SIP server with the
following information:
Client IP: 10.31.101.20
Server IP: 10.21.101.50
Port: UDP (x,5060)
REGISTER Contact: 10.31.101.20:y
Where x and y are ports chosen by Phone A.
As soon as the server sends the 200 OK reply it can forward INVITE requests from other SIP
phones to SIP Phone A. If the SIP proxy server uses the information in the REGISTER message
received from SIP Phone A the INVITE messages sent to Phone A f will only get through the
FortiGate unit if an policy has been added to allow the server to send traffic from the private
network to the Internet. Or the SIP ALG must open a pinhole to allow traffic from the server to
the Internet. In most cases the FortiGate unit is protecting the SIP server so there is no reason
not to add a security policy to all the SIP server to send outbound traffic to the Internet.
In a typical SOHO scenario shown in Figure 26, SIP Phone A is being protected from the
Internet by a FortiGate unit. In most cases the FortiGate unit would not allow incoming traffic
from the Internet to reach the private network. So the only way that an INVITE request from the
SIP server can reach SIP Phone A is if the SIP ALG creates an incoming pinhole. All pinholes
have three attributes:
(source address, destination address, destination port)
Page 69
Figure 26:SOHO configuration, FortiGate unit protecting a network with SIP phones
FortiGate unit
In NAT/Route mode
Port1
172.20.120.141
Port2
10.11.101.100
SIP Phone A
(PhoneA@10.11.101.20)
SIP proxy server
172.20.120.50
The more specific a pinhole is the more secure it is because it will accept less traffic. In this
situation, the pinhole would be more secure if it only accepted traffic from the SIP server. This is
what happens if strict-register is enabled in the VoIP profile that accepts the REGISTER
request from Phone A.
(SIP server IP address, client IP address, destination port)
If strict-register is disabled (the default configuration) the pinhole is set up with the
following attributes
(ANY IP address, client IP address, destination port)
This pinhole allows connections through the FortiGate unit from ANY source address which is a
much bigger and less secure pinhole. In most similar network configurations you should enable
strict-register to improve pinhole security.
Enabling strict-register can cause problems when the SIP registrar and SIP proxy server
are separate entities with separate IP addresses.
Enter the following command to enable strict-register in a VoIP profile.
config voip profile
edit Profile_name
config sip
set strict-register enable
end
Page 70
Page 71
10 30 120 20
0
10.30.120.20
SIP
10.30.120.1
NAT device
(not SIP aware)
172.20.120.141
172.20.12
FortiGate unit
with SIP ALG
ed
d
Configured for Hosted
NAT Traversal
172.20.120.30
10.21.101.1
10.2
1
10
0 21.101.1
SIP + RTP
Ph
h
C
SIP P
Phone
(PhoneC@192.168.30.1)
SIP + RTP
Service
Provider
Network
SIP + RTP
10.11.101.10
10.11.101.20
NAT device
(not SIP aware)
NAT device
(not SIP aware)
SIP Ph
P
Phone A
(PhoneA@192.168.10.1)
Ph
h
B
SIP P
Phone
(PhoneB@192.168.20.1)
Configuration example: Hosted NAT traversal for calls between SIP Phone A and
SIP Phone B
The following address translation takes place to allow a SIP call from SIP Phone A to SIP Phone
B in Figure 27.
1. SIP Phone A sends a SIP Invite message to the SIP server. Packet source IP address:
192.168.10.1, destination IP address: 10.21.101.10.
2. The SIP packets are received by the NAT device which translates the source address of the
SIP packets from 192.168.10.1 to 10.11.101.20.
3. The SIP packets are received by the FortiGate unit which translates the packet destination IP
address to 10.30 120.20. The SIP ALG also translates the IP address of the SIP phone in the
SIP header and SDP lines from 192.168.10.1 to 10.11.101.20.
4. The SIP server accepts the Invite message and forwards it to SIP Phone B at IP
address10.11.101.20. The SIP server has this address for SIP Phone B because SIP packets
from SIP Phone B have also been translated using the hosted NAT traversal configuration of
the SIP ALG.
5. When the SIP call is established, the RTP session is between 10.11.101.10 and 10.11.101.20
and does not pass through the FortiGate unit. The NAT devices translated the destination
address of the RTP packets to the private IP addresses of the SIP phones.
Page 72
3. Add a firewall address for the SIP proxy server on the private network.
4. Add a destination NAT security policy that accepts SIP sessions from the Internet destined
for the SIP proxy server virtual IP and translates the destination address to the IP address of
the SIP proxy server on the private network.
5. Add a security policy that accepts SIP sessions initiated by the SIP proxy server and
destined for the Internet.
SIP_Proxy_VIP
External Interface
port1
Type
Static NAT
External IP Address/Range
172.20.120.50
Mapped IP Address/Range
10.31.101.50
SIP_Proxy_Server
Type
Subnet
Subnet / IP Range
10.31.101.50/255.255.255.255
Interface
port2
Policy Type
Firewall
Policy Subtype
Address
Incoming Interface
port1
Source Address
all
Outgoing Interface
port2
Destination Address
SIP_Proxy_VIP
Schedule
always
Page 73
Service
SIP
Action
ACCEPT
Firewall
Policy Subtype
Address
Incoming Interface
port2
Source Address
SIP_Proxy_Server
Outgoing Interface
port1
Destination Address
all
Schedule
always
Service
SIP
Action
ACCEPT
Page 74
To add the SIP proxy server firewall virtual IP and firewall address
1. Enter the following command to add the SIP proxy server firewall virtual IP.
config firewall vip
edit SIP_Proxy_VIP
set type static-nat
set extip 10.21.101.10
set mappedip 10.30.120.20
set extintf port1
end
2. Enter the following command to add the SIP proxy server firewall address.
config firewall address
edit SIP_Proxy_Server
set associated interface port2
set type ipmask
set subnet 10.30.120.20 255.255.255.255
end
To add security policies
1. Enter the following command to add a destination NAT security policy that includes the SIP
proxy server virtual IP that allows Phone A to send SIP request messages to the SIP proxy
server.
config firewall policy
edit 0
set srcintf port1
set dstintf port2
set srcaddr all
set dstaddr SIP_Proxy_VIP
set action accept
set schedule always
set service SIP
set nat enable
set utm-status enable
set profile-protocol-options default
set voip-profile HNT
end
Page 75
2. Enter the following command to add a source NAT security policy to allow the SIP proxy
server to send SIP request messages to Phone B:
config firewall policy
edit 0
set srcintf port2
set dstintf port1
set srcaddr SIP_Proxy_Server
set dstaddr all
set action accept
set schedule always
set service SIP
set nat enable
set utm-status enable
set profile-protocol-options default
set voip-profile default
end
Hosted NAT traversal for calls between SIP Phone A and SIP Phone C
The following address translation takes place to allow a SIP call from SIP Phone A to SIP Phone
C in Figure 27 on page 71.
1. SIP Phone A sends a SIP Invite message to the SIP server. Packet source IP address:
192.168.10.1 and destination IP address: 10.21.101.10.
2. The SIP packets are received by the NAT device which translates the source address of the
SIP packets from 192.168.10.1 to 10.11.101.20.
3. The SIP packets are received by the FortiGate unit which translates the packet destination IP
address to 10.30 120.20. The SIP ALG also translates the IP address of the SIP phone in the
SIP header and SDP lines from 192.168.10.1 to 10.11.101.20.
4. The SIP server accepts the Invite message and forwards it to SIP Phone C at IP address
172.20.120.30. The SIP server has this address for SIP Phone C because SIP packets from
SIP Phone C have also been translated using the hosted NAT traversal configuration of the
SIP ALG.
5. When the SIP call is established, the RTP session is between 10.11.101.10 and
172.20.120.30. The packets pass through the FortiGate unit which performs NAT as
required.
Page 76
SIP Server
RTP Server
IPv6 addresses
IPv6 firewall policy
IPv6 address
To enable SIP support for IPv6 add an IPv6 security policy that accepts SIP packets and
includes a VoIP profile.
Page 77
Message compliant
FortiCarrier
SIP
Parser
Active
Blade
Malformed SIP header
field detected
Configured:
Pass ?
No
Yes: Return
SIP client error
Response message
Configured:
Respond
?
If no
Discard message
Deep SIP message inspection checks the syntax of each SIP header and SDP profile line to
make sure they conform to the syntax defined in the relevant RFC and IETF standard. You can
also configure the SIP ALG to inspect for:
Unknown SIP message types (message types not defined in a SIP RFC) this option is
enabled by default and can be disabled. When enabled unknown message types are
discarded. Configured using the block-unknown option.
Unknown line types (message line types that are not defined in any SIP or SDP RFC).
Configured using the unknown-header option.
Messages that are longer than a configured maximum size. Configured using the
max-body-length option.
Messages that contain one or more lines that are longer that a set maximum line length
(default 998 characters). Configured using the max-line-length option.
Page 78
If the SIP ALG finds a malformed message line, and the action for this message line type is
discard, the message is discarded with no further checking or responses. If the action is pass,
the SIP ALG continues parsing the SIP message for more malformed message lines. If the
action is respond, the SIP ALG sends the SIP response message and discards the message
containing the malformed line with no further checking or response. If only malformed message
line types with action set to pass are found, the SIP ALG extracts as much information as
possible from the message (for example for NAT and opening pinholes, and forwards the
message to its destination).
If a SIP message containing a malformed line is discarded the SIP ALG will not use the
information in the message for call processing. This could result in the call being terminated. If a
malformed line in a SIP message includes information required for the SIP call that the SIP ALG
cannot interpret (for example, if an IP address required for SIP NAT is corrupted) the SIP ALG
may not be able to continue processing the call and it could be terminated. Discarded
messages are counted by SIP ALG static message counters.
Page 79
Enter the following command to configure deep SIP message inspection to discard messages
with malformed Request-lines (the first line in a SIP request message):
config voip profile
edit VoIP_Pro_Name
config sip
set malformed-request-line respond
end
end
You cannot configure message inspection for the Status-line, which is the first line in a SIP
response message.
Table 8 lists the SIP header lines that the SIP ALG can inspect and the CLI command for
configuring the action for each line type. The table also lists the RFC that the header line is
defined in.
Table 8: SIP header lines that the SIP ALG can inspect for syntax errors
SIP Header line
RFC
Allow
malformed-header-allow
RFC 3261
Call-ID
malformed-header-call-id
RFC 3261
Contact
malformed-header-contact
RFC 3261
Content-Length
malformed-header-content-length
RFC 3261
Content-Type
malformed-header-content-type
RFC 3261
CSeq
malformed-header-cseq
RFC 3261
Expires
malformed-header-expires
RFC 3261
From
malformed-header-from
RFC 3261
Max-forwards
malformed-header-max-forwards
RFC 3261
P-Asserted-Identity
malformed-header-p-asserted-identity
RFC 3325
RAck
malformed-header-rack
RFC 3262
Record-Route
malformed-header-record-route
RFC 3261
Route
malformed-header-route
RFC 3261
RSeq
malformed-header-rseq
RFC 3262
To
malformed-header-to
RFC 3261
Via
malformed-header-via
RFC 3261
Page 80
Table 9 lists the SDP profile lines that the SIP ALG inspects and the CLI command for
configuring the action for each line type. SDP profile lines are defined by RFC 4566 and RFC
2327.
Table 9: SDP profile lines that the SIP ALG can inspect for syntax errors
Attribute
a=
malformed-header-sdb-a
b=
malformed-header-sdp-b
c=
malformed-header-sdp-c
i=
malformed-header-sdp-i
k=
malformed-header-sdp-k
m=
malformed-header-sdp-m
o=
malformed-header-sdp-o
r=
malformed-header-sdp-r
s=
malformed-header-sdp-s
t=
malformed-header-sdp-t
v=
malformed-header-sdp-v
z=
malformed-header-sdp-z
Discarding SIP messages with some malformed header and body lines
Enter the following command to configure deep SIP message inspection to discard SIP
messages with a malformed Via line, a malformed route line or a malformed m= line but to pass
messages with a malformed i= line or a malformed Max-Forwards line
config voip profile
edit VoIP_Pro_Name
config sip
set malformed-header-via discard
set malformed-header-route discard
set malformed-header-sdp-m discard
set malformed-header-sdp-i pass
set malformed-header-max-forwards pass
end
end
Page 81
Page 82
Use the following command to configure a VoIP profile to block SIP CANCEL and Update
request messages:
config voip profile
edit VoIP_Pro_Name
config sip
set block-cancel enable
set block-update enable
end
end
SIP uses a variety of text-based messages or requests to communicate information about SIP
clients and servers to the various components of the SIP network. Since SIP requests are
simple text messages and since the requests or their replies can contain information about
network components on either side of the FortiGate unit, it may be a security risk to allow these
messages to pass through.
Table 10 lists all of the VoIP profile SIP request message blocking options. All of these options
are disabled by default.
Blocking SIP OPTIONS messages may prevent a redundant configuration from operating
correctly. See Supporting geographic redundancy when blocking OPTIONS messages on
page 90 for information about resolving this problem.
ACK
block-ack
BYE
block-bye
Cancel
block-cancel
INFO
block-info
INVITE
block-invite
Message
block-message
Notify
block-notify
Options
block-options
PRACK
block-prack
Publish
block-publish
Refer
block-refer
Register
block-register
Subscribe
block-subscribe
Update
block-update
Page 83
INVITE
REGISTER
SUBSCRIBE
NOTIFY
REFER
SIP
SIP
UPDATE
OPTIONS
MESSAGE
ACK
PRACK
INFO
FortiGate units support rate limiting for the following types of VoIP traffic:
Session Initiation Protocol (SIP)
Skinny Call Control Protocol (SCCP) (most versions)
Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions
(SIMPLE).
You can use rate limiting of these VoIP protocols to protect the FortiGate unit and your network
from SIP and SCCP Denial of Service (DoS) attacks. Rate limiting protects against SIP DoS
attacks by limiting the number of SIP REGISTER and INVITE requests that the FortiGate unit
receives per second. Rate limiting protects against SCCP DoS attacks by limiting the number of
SCCP call setup messages that the FortiGate unit receives per minute.
You configure rate limiting for a message type by specifying a limit for the number of messages
that can be received per second. The rate is limited per security policy. When VoIP rate limiting
is enabled for a message type, if the a single security policy accepts more messages per
second than the configured rate, the extra messages are dropped and log messages are written
when the messages are dropped.
Use the following command to configure a VoIP profile to limit the number of INVITE messages
accepted by each security policy that the VoIP profile is added to 100 INVITE messages a
second:
config voip profile
edit VoIP_Pro_Name
config sip
set invite-rate 100
end
end
Page 84
If you are experiencing denial of service attacks from traffic using these VoIP protocols, you can
enable VoIP rate limiting and limit the rates for your network. Limit the rates depending on the
amount of SIP and SCCP traffic that you expect the FortiGate unit to be handling. You can
adjust the settings if some calls are lost or if the amount of SIP or SCCP traffic is affecting
FortiGate unit performance.
Table 11 lists all of the VoIP profile SIP rate limiting options. All of these options are set to 0 so
are disabled by default.
Blocking SIP OPTIONS messages may prevent a redundant configuration from operating
correctly. See Supporting geographic redundancy when blocking OPTIONS messages on
page 90 for information about resolving this problem.
ACK
ack-rate
BYE
bye-rate
Cancel
cancel-rate
INFO
info-rate
INVITE
invite-rate
Message
message-rate
Notify
notify-rate
Options
options-rate
PRACK
prack-rate
Publish
publish-rate
Refer
refer-rate
Register
register-rate
Subscribe
subscribe-rate
Update
update-rate
Page 85
This command sets the maximum number of SIP dialogs that can be open for SIP sessions
accepted by any security policy that you add the VoIP profile to. The default setting of 0 does
not limit the number of dialogs. You can add a limit to control the number of open dialogs and
raise and lower it as required. You might want to limit the number of open dialogs for protection
against SIP-based attackers opening large numbers of SIP dialogs. Every dialog takes memory
and FortiGate CPU resources to process. Limiting the number of dialogs may improve the
overall performance of the FortiGate unit. Limiting the number of dialogs will not drop calls in
progress but may prevent new calls from connecting.
Page 86
Figure 31:SIP over SSL/TLS between a SIP phone and a SIP server
SIP Phone
SIP server
Other than enabling SSL mode and making sure the security policies accept the encrypted
traffic, the FortiGate configuration for SSL/TLS SIP is the same as any SIP configuration. SIP
over SSL/TLS is supported for all supported SIP configurations.
Page 87
The certificates are added to the list of Local Certificates as the filenames you uploaded. You
can add comments to make it clear where its from and how it is intended to be used.
ssl-client-renegotiation
{allow | deny |
secure}
ssl-algorithm {high | low Select the relative strength of the algorithms that can be
| medium}
selected. You can select high, the default, to allow only
AES or 3DES, medium, to allow AES, 3DES, or RC4 or low,
to allow AES, 3DES, RC4, or DES.
ssl-pfs {allow | deny |
regqure}
ssl-min-version {ssl-3.0 Select the minimum level of SSL support to allow. The
| tls-1.0 | tls-1.1} default is ssl-3.0.
ssl-max-version {ssl-3.0 Select the maximum level of SSL support to allow. The
| tls-1.0 | tls-1.1} default is tls-1.1.
Page 88
SIP session failover replicates SIP states to all cluster units. If an HA failover occurs, all in
progress SIP calls (setup complete) and their RTP flows are maintained and the calls will
continue after the failover with minimal or no interruption.
SIP calls being set up at the time of a failover may lose signaling messages. In most cases the
SIP clients and servers should use message retransmission to complete the call setup after the
failover has completed. As a result, SIP users may experience a delay if their calls are being set
up when an HA a failover occurs. But in most cases the call setup should be able to continue
after the failover.
Figure 32:SIP HA session failover
primary
Ethernet
ENET/VP/
VPLS
LS
Switch
(1)
GE
Active
Active
Blade
Blade
Floating
Mac/IP
SIP Interconnect
secondary
(optional)
FortiCarri
FortiOS
er
GE
Ethernet
ENET/VPL
/
VPLS
S
Switch
Switch
(2)
(2)
Heart
GE beat GE
FortiCarri
FortiOS
er
GE
Standby
Standby
Blade
Blade
ENET/VPL
Ethernet /
S
VPLS
Switch
Switch
(1)(1)
SIP
SIP
Server
Server
Floating
Mac/IP
GE
ENET/VP
Ethernet /
VPLS
LS
Switch
Switch
(2)
(2)
Secondary Server
Primary Server
SIP
SIP
Server
Server
SIP
SIP
Server
Server
SIP
Server
SIP
SIP
Heartbeat
(SIP
OPTION)
Secondary Server
Failover
SIP
Server
SIP
Heartbeat
SIP Heartbeat
SIP
Failover
SIP is forwarded to
primary SIP Server, as
long as its successfully
sending heartbeats
SIP
Signaling
Firewall
SIP
SIP
Signaling
Firewall
SIP
Page 89
Page 90
SIP debugging
SIP debug log format
Assuming that diagnose debug console timestamp is enabled then the following shows
the debug that is generated for an INVITE if diag debug appl sip -1 is enabled:
2010-01-04 21:39:59 sip port 26 locate session for 192.168.2.134:5061 ->
172.16.67.192:5060
2010-01-04 21:39:59 sip sess 0x979df38 found for 192.168.2.134:5061 ->
172.16.67.192:5060
2010-01-04 21:39:59 sip port 26 192.168.2.134:5061 -> 172.16.67.192:5060
2010-01-04 21:39:59 sip port 26 read [(0,515)
(494e56495445207369703a73657276696365403139322e3136382e322e3130303a35303630205349502f322e300d0a566961
3a205349502f322e302f554450203132372e302e312e313a353036313b6272616e63683d7a39684734624b2d363832
372d3632302d300d0a46726f6d3a2073697070203c7369703a73697070403132372e302e312e313a353036313e3b74
61673d363832375349507054616730303632300d0a546f3a20737574203c7369703a73657276696365403139322e31
36382e322e3130303a353036303e0d0a43616c6c2d49443a203632302d36383237403132372e302e312e310d0a4353
65713a203120494e564954450d0a436f6e746163743a207369703a73697070403132372e302e312e313a353036310d
0a4d61782d466f7277617264733a2037300d0a5375626a6563743a20506572666f726d616e636520546573740d0a43
6f6e74656e742d547970653a206170706c69636174696f6e2f7364700d0a436f6e74656e742d4c656e6774683a2020
3132390d0a0d0a763d300d0a6f3d7573657231203533363535373635203233353336383736333720494e2049503420
Page 91
3132372e302e312e310d0a733d2d0d0a633d494e20495034203132372e302e312e310d0a743d3020300d0a6d3d6175
64696f2036303031205254502f41565020300d0a613d7274706d61703a302050434d552f383030300d0a)(INVITE
sip:service@192.168.2.100:5060 SIP/2.0..Via: SIP/2.0/UDP
127.0.1.1:5061;branch=z9hG4bK-6827-620-0..From: sipp
%lt;sip:sipp@127.0.1.1:5061>;tag=6827SIPpTag00620..To: sut
%lt;sip:service@192.168.2.100:5060>..Call-ID: 620-6827@127.0.1.1..CSeq: 1
INVITE..Contact: sip:sipp@127.0.1.1:5061..Max-Forwards: 70..Subject: Performance
Test..Content-Type: application/sdp..Content-Length: 129....v=0..o=user1 53655765
2353687637 IN IP4 127.0.1.1..s=-..c=IN IP4 127.0.1.1..t=0 0..m=audio 6001 RTP/AVP
0..a=rtpmap:0 PCMU/8000..)]
2010-01-04 21:39:59 sip port 26 len 515
2010-01-04 21:39:59 sip port 26 INVITE '192.168.2.100:5060' addr 192.168.2.100:5060
2010-01-04 21:39:59 sip port 26 CSeq: 1 INVITE
2010-01-04 21:39:59 sip port 26 Via: UDP 127.0.1.1:5061 len 14 received 0 rport 0 0 branch
'z9hG4bK-6827-620-0'
2010-01-04 21:39:59 sip port 26 From: 'sipp ;tag=6827SIPpTag00620' URI 'sip:sipp@127.0.1.1:5061' tag
'6827SIPpTag00620'
2010-01-04 21:39:59 sip port 26 To: 'sut ' URI 'sip:service@192.168.2.100:5060' tag ''
2010-01-04 21:39:59 sip port 26 Call-ID: '620-6827@127.0.1.1'
2010-01-04 21:39:59 sip port 26 Contact: '127.0.1.1:5061' addr 127.0.1.1:5061 expires 0
2010-01-04 21:39:59 sip port 26 Content-Length: 129 len 3
2010-01-04 21:39:59 sip port 26 sdp o=127.0.1.1 len=9
2010-01-04 21:39:59 sip port 26 sdp c=127.0.1.1 len=9
2010-01-04 21:39:59 sip port 26 sdp m=6001 len=4
2010-01-04 21:39:59 sip port 26 find call 0 '620-6827@127.0.1.1'
2010-01-04 21:39:59 sip port 26 not found
2010-01-04 21:39:59 sip port 26 call 0x97a47c0 open (collision (nil))
2010-01-04 21:39:59 sip port 26 call 0x97a47c0 open txn 0x979f7f8 INVITE dir 0
2010-01-04 21:39:59 sip port 26 sdp i: 127.0.1.1:6001
2010-01-04 21:39:59 sip port 26 policy id 1 is_client_vs_policy 1 policy_dir_rev 0
2010-01-04 21:39:59 sip port 26 policy 1 not RTP policy
2010-01-04 21:39:59 sip port 26 learn sdp from stream address
2010-01-04 21:39:59 sip port 26 call 0x97a47c0 sdp 172.16.67.198:43722
2010-01-04 21:39:59 sip port 26 call 0x97a47c0 txn 0x979f7f8 127.0.1.1:5061 find new address and port
2010-01-04 21:39:59 sip port 26 call 0x97a47c0 txn 0x979f7f8 127.0.1.1:5061 find new address and port
2010-01-04 21:39:59 sip port 26 call 0x97a47c0 txn 0x979f7f8 127.0.1.1:5061 find new address and port
2010-01-04 21:39:59 sip port 30 write 192.168.2.134:5061 -> 172.16.67.192:5060 (13,539)
2010-01-04 21:39:59 sip port 30 write [(13,539)
(494e56495445207369703a73657276696365403137322e31362e36372e3139323a35303630205349502f322e300d0a566961
3a205349502f322e302f554450203137322e31362e36372e3139383a35323036353b6272616e63683d7a3968473462
4b2d363832372d3632302d300d0a46726f6d3a2073697070203c7369703a73697070403137322e31362e36372e3139
383a34333732343e3b7461673d363832375349507054616730303632300d0a546f3a20737574203c7369703a736572
76696365403137322e31362e36372e3139323a353036303e0d0a43616c6c2d49443a203632302d3638323740313237
2e302e312e310d0a435365713a203120494e564954450d0a436f6e746163743a207369703a73697070403137322e31
362e36372e3139383a34333732350d0a4d61782d466f7277617264733a2037300d0a5375626a6563743a2050657266
6f726d616e636520546573740d0a436f6e74656e742d547970653a206170706c69636174696f6e2f7364700d0a436f
6e74656e742d4c656e6774683a20203133380d0a0d0a763d300d0a6f3d757365723120353336353537363520323335
3336383736333720494e20495034203137322e31362e36372e3139380d0a733d2d0d0a633d494e2049503420313732
2e31362e36372e3139380d0a743d3020300d0a6d3d617564696f203433373232205254502f41565020300d0a613d72
74706d61703a302050434d552f383030300d0a)(INVITE sip:service@172.16.67.192:5060 SIP/2.0..Via:
SIP/2.0/UDP 172.16.67.198:52065;branch=z9hG4bK-6827-620-0..From: sipp
;tag=6827SIPpTag00620..To: sut ..Call-ID: 620-6827@127.0.1.1..CSeq: 1 INVITE..Contact:
sip:sipp@172.16.67.198:43725..Max-Forwards: 70..Subject: Performance Test..Content-Type:
application/sdp..Content-Length: 138....v=0..o=user1 53655765 2353687637 IN IP4
172.16.67.198..s=-..c=IN IP4 172.16.67.198..t=0 0..m=audio 43722 RTP/AVP 0..a=rtpmap:0
PCMU/8000..)]
Page 92
sys
sys
sys
sys
sys
sys
sys
sys
sys
sys
sys
sys
sys
sys
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
filter
filter
filter
filter
filter
filter
filter
filter
filter
filter
filter
filter
filter
filter
vd
dst-addr4
dst-addr6
dst-port
identity-policy
negate
policy
policy-type
profile-group
src-addr4
src-addr6
src-port
vd
voip-profile
You can clear, view and negate/invert the sense of a filter using these commands:
diag sys sip-proxy filter clear
diag sys sip-proxy filter list
diag sys sip-proxy filter negate
sys
sys
sys
sys
sys
sys
sys
sys
sys
sys
sys
sys
sys
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
sip-proxy
log-filter
log-filter
log-filter
log-filter
log-filter
log-filter
log-filter
log-filter
log-filter
log-filter
log-filter
log-filter
log-filter
vd
dst-addr4
dst-addr6
dst-port
identity-policy
policy
policy-type
profile-group
src-addr4
src-addr6
src-port
vd
voip-profile
You can clear, view and negate/invert the sense of a filter using these commands:
diag sys sip-proxy log-filter clear
diag sys sip-proxy log-filter list
diag sys sip-proxy log-filter negate
Page 93
Page 94
For the following command output rate 1 shows that the current (over last second) measured
rate for INVITE/ACK and BYTE was 1 per second, the peak 1 shows that the peak rate
recorded is 1 per second, the max 0 shows that there is no maximum limit set, the count 18
indicates that 18 messages were received and drop 0 indicates that none were dropped due
to being over the limit.
diag sys sip-proxy meters
sip
sip vd: 0
sip policy: 1
sip identity-policy: 0
sip policy-type: IPv4
sip profile-group:
sip dialogs: 18
sip dialog-limit: 0
sip UNKNOWN: rate 0 peak 0 max 0 count 0 drop 0
sip ACK: rate 1 peak 1 max 0 count 18 drop 0
sip BYE: rate 1 peak 1 max 0 count 18 drop 0
sip CANCEL: rate 0 peak 0 max 0 count 0 drop 0
sip INFO: rate 0 peak 0 max 0 count 0 drop 0
sip INVITE: rate 1 peak 1 max 0 count 18 drop 0
sip MESSAGE: rate 0 peak 0 max 0 count 0 drop 0
sip NOTIFY: rate 0 peak 0 max 0 count 0 drop 0
sip OPTIONS: rate 0 peak 0 max 0 count 0 drop 0
sip PRACK: rate 0 peak 0 max 0 count 0 drop 0
sip PUBLISH: rate 0 peak 0 max 0 count 0 drop 0
sip REFER: rate 0 peak 0 max 0 count 0 drop 0
sip REGISTER: rate 0 peak 0 max 0 count 0 drop 0
sip SUBSCRIBE: rate 0 peak 0 max 0 count 0 drop 0
sip UPDATE: rate 0 peak 0 max 0 count 0 drop 0
sip PING: rate 0 peak 0 max 0 count 0 drop 0
sip YAHOOREF: rate 0 peak 0 max 0 count 0 drop 0
Page 95
Index
A
ALG
changing the port numbers that the SIP ALG listens
on 35
gui-voip-profile 34
H
HA
call-keepalive 38
contact-fixup 65
Content-Length
SIP header 82
inactivity timeout
SIP session 37
informational
SIP response message 17
inspection without address translation
SIP 12, 33
IP address conservation
NAT 63
IP pool
SIP 62
IPS 91
disabling for pinholes 91
ips-rtp 91
IPv6
SIP 77
malformed-request-line 80
max-body-length 82
max-dialogs 85
message
SIP 14
message length
SIP 82
message request-line
SIP 19
message start line
SIP 19
block 82
body
SIP message 9
branch 90
field
SIP 19
final
SIP response message 17
FortiFone
SIP phone 9
fuzzing protection
SIP 77
L
limiting
number of SIP dialogs 85
location server
SIP 11
Page 96
message status-line
SIP 19
N
NAT
SDP 65
SIP ALG IP address conservation 64
SIP ALG NAT tracing 64
SIP contact headers 64
SIP session helper NAT tracing 64
with IP address conservation 63
nat-trace 64
no-sdp-fixup 65
P
pinhole
disabling IPS 91
more secure 68
RTP 9, 13
SIP 9, 13
smaller 68
strict-register 68
port number
changing the port numbers that the SIP ALG listens
on 35
changing the port numbers that the SIP session
helper listens on 27
PRACK
SIP message 9, 17
preserve-override 64
profile
VoIP 34
provisional
SIP response message 17
provisional response acknowledgement
SIP message 9, 17
provisional-invite-expiry-time 39
proxy server
SIP 10
R
rate limit
number of SIP dialogs 85
rate limiting
SCCP 84
SIMPLE 84
SIP 84
Real Time Control Protocol 39
Real Time Protocol 51
redirect server
SIP 10
register-contact-trace 68
registrar
SIP 11
request
SIP 8
request messages 16
Request-line
deep SIP message checking 80
request-line
SIP 19
response
SIP 8
RFC
SIP 9
RFC 2543 90
RTCP 9, 39
RTP 9, 51, 61
hardware acceleration 16
pinhole 9, 13
S
SCCP
DoS sensor 84
protection profile 84
rate limiting 84
VoIP profile 33
SDP 9, 15, 21
NAT 65
session profile 21
session description protocol
See SDP 21
session failover
SIP 88
session helper
changing the port numbers that the SIP session
helper listens on 27
disabling the SIP session helper 25
enabling the SIP session helper 25
Session Initiation Protocol for Instant Messaging and
Presence Leveraging Extensions
See SIMPLE 33
Session Initiation Protocol. See SIP
session profile
SDP 21
SIMPLE
protection profile 84
rate limiting 84
VoIP profile 33
Page 97
SIP
accepting register response 46
blocking requests 82
changing the port numbers that the SIP ALG listens
on 35
changing the port numbers that the SIP session
helper listens on 27
contact headers and NAT 64
deep header inspection 77
deep message inspection 77
destination NAT 61
dialog 8, 14
different source and destination NAT for SIP and
RTP 63
disabling the SIP session helper 25
DoS sensor 84
enabling the SIP session helper 25
fields 19
fuzzing protection 77
HA session failover 88
headers 19
inspection without address translation 12, 33
IP address conservation 64
IPv6 77
location server 11
message request-line 19
message sequence 14
message start line 19
message status-line 19
NAT tracing 64
NAT with dynamic IP pool 62
NAT with IP address conservation 63
pinhole 9, 13
protection profile 84
proxy server 10
rate limiting 84
redirect server 10
registrar 11
request 8
request-line
SIP 19
response 8
RFCs 9
source NAT 61
start line
SIP 19
status-line
SIP 19
Transparent mode 12, 33
user element 8
VoIP profile 34
SIP ALG
changing the port numbers that the SIP ALG listens
on 35
NAT tracing 64
SIP dialogs
limiting the number 85
SIP message
body 9
final 17
headers 9
informational 17
PRACK 9, 17
provisional 17
SIP phone
FortiFone 9
SIP requests 82
SIP session
inactivity timeout 37
SIP session helper
changing the port numbers that the SIP session
helper listens on 27
disabling 25
enabling 25
NAT tracing 64
sip-nat-trace 64
sip-ssl-port 35
sip-tcp-port 35
sip-udp-port 35
Skinny Call Control Protocol
See SCCP 33
Skinny Call Control Protocol. See SCCP
source NAT
SIP 61
start line
SIP 19
stateful SIP tracking 37
status-line
SIP 19
strict
VoIP profile 34
strict-register 68
T
timer
provisional invite 39
trace
SIP ALG NAT tracing 64
SIP session helper NAT tracing 64
Transparent mode
SIP 12, 33
U
UA 8
UAC 8
UAS 8
UE
See UA 8
User Agent 8
User Agent Client 8
User Agent Server 8
user element
See UA 8
Page 98
V
VoIP
profile 34
VoIP Profile
SCCP 33
SIMPLE 33
VoIP profile
default 34
strict 34
VoIP support
enabling on the web-based manager 34
Page 99