ultimedia protocols tend to have several common characteristics. First, they normally use more than one port. They use multiple data streams in order to separate data with different characteristics and in order to maximize the efficiency with which they use network resources. Thus, they normally separate audio data from video data and use different channels for data going in different directions. They also separate the actual data from administrative commands, so that the port used to send video is not the same as the port used to say "Stop sending me video, I can't take it any more"; this maximizes the chances that the administrative commands will actually get through. The administrative functions are normally known as call control.
ost multimedia protocols use different lower-level protocols for data and for call control. Data is almost always sent over UDP, while call control is almost always sent over TCP. This is because the data needs a maximum of speed. It's not important if some packets are lost, as long as all the packets that get through are used as soon as they arrive. The call control, on the other hand, happens less often but must not get lost; it's worth the higher overhead of TCP in order to be guaranteed that commands will arrive.
ultimedia protocols are very difficult to protect adequately with firewalls. It would be hard to support any protocol that involved a large number of channels, going in both directions, and using both connection-oriented and connectionless protocols, but multimedia protocols further complicate the picture by requiring very high performance.
[104]In case you're curious, the letters "T" and "H" are the designators for the ITU subcommittees that produced the standard, and subcommittee designators are just given out in alphabetical order. They're not short for anything.Neither the H.323 nor the T.120 standard requires implementors to provide any security. H.323 is used to carry audio and video data that will be presented to the user. Although this presents a risk of information leaks, it's not directly dangerous to the client except in the ways all protocols are dangerous to clients. Because H.323 sets up a large number of incoming data channels, both UDP and TCP, there's a significant risk that allowing H.323 will allow people to attack other, more vulnerable services.
T.120, on the other hand, is inherently dangerous. Both file transfer and application sharing are directly attackable applications.
Direction | SourceAddr. | Dest.Addr. | Protocol | SourcePort | Dest.Port | ACKSet | Notes |
---|---|---|---|---|---|---|---|
In | Ext | Int | TCP | >1023 | 1503 |
[105]
|
External client contacting internal server |
Out | Int | Ext | TCP | 1503 | >1023 | Yes | Internal server answering external client |
Out | Int | Ext | TCP | >1023 | 1503 | Internal client contacting external server | |
In | Ext | Int | TCP | 1503 | >1023 | Yes | External server answering internal client |
[105]ACK is not set on the first packet of this type (establishing connection) but will be set on the rest.
Direction | SourceAddr. | Dest.Addr. | Protocol | SourcePort | Dest.Port | ACKSet | Notes |
---|---|---|---|---|---|---|---|
In | Ext | Int | TCP | >1023 | 1720 |
[106]
|
External caller contacting internal callee |
Out | Int | Ext | TCP | 1720 | >1023 | Yes | Internal callee responding to external caller |
Out | Int | Ext | TCP | >1023 | 1720 | [106] | Internal caller contacting external callee |
In | Ext | Int | TCP | 1720 | >1023 | Yes | External callee responding to internal caller |
Out | Int | Ext | TCP | >1023 | >1023 | [107]
|
Call control for data going internal to external |
In | Ext | Int | TCP | >1023 | >1023 | Yes | Responses to call control for data going internal to external |
In | Ext | Int | TCP | >1023 | >1023 | [107] | Call control for data going external to internal |
Out | Int | Ext | TCP | >1023 | >1023 | Yes | Responses to call control for data going external to internal |
Out | Int | Ext | UDP | >1023 | >1023 | [107] | Data going internal to external |
In | Ext | Int | UDP | >1023 | >1023 | [107] | Data going external to internal |
[106]ACK is not set on the first packet of this type (establishing connection) but will be set on the rest.
[107]UDP has no ACK equivalent.The extensive use of dynamically allocated ports makes H.323 very hard to deal with via packet filtering; in fact, Microsoft's instructions for NetMeeting (which is based upon H.323 and mentioned later) suggest allowing all UDP and TCP connections in either direction where both ends are above 1024. This configuration is extremely insecure, and we don't recommend it. However, it is the only way to allow H.323 through a nonstateful packet filtering firewall.
A stateful packet filter that can monitor the H.323 port negotiation would be capable of allowing only the needed data ports. Note that straightforward tricks like allowing only UDP responses will not work for H.323 because the incoming data streams from the remote host will not meet the normal criteria to be considered a response; the packet filtering must be H.323-aware. Unfortunately, H.323 is not particularly easy to parse, so H.323-aware packet filters are rare, although high-end packet filtering systems do offer them.
Because H.323 does not have any built-in authentication, allowing H.323 through a packet filter is not very secure, even if you use a dynamic packet filtering system that understands H.323. If you are concerned about transmitting confidential data, or about the security of your clients, you would be better off using a proxy that provides authentication features.
One way of getting around the problems with proxying H.323 is to use what the standard calls a Multipoint Control Unit (MCU) and place it in a publicly accessible part of your network. These systems are designed primarily to control many-to-many connections, but they do it by having each person in the conference connect to them. It means that if you put one on a bastion-host network, you can allow both internal and external callers to connect to it, and only to it, and still get conferencing going. If this machine is well configured, it is relatively safe. However, it's not a true proxy. The external users have to be able to connect directly to the multipoint control unit; one multipoint control unit will not connect to another. The end result is that two sites that both use this workaround can't talk to each other. It works only if exactly one site in the conversation uses it. Several systems are available that provide this functionality, under various names.
It is also possible to get true H.323 proxies, which usually provide multipoint control and security features as well. In general, these are special-purpose products, not included with generic proxying packages. As we've pointed out, proxying H.323 is considerable work; it's not a minor modification to a normal proxy. However, vendors like Cisco and Microsoft that offer wide product ranges do offer H.323 proxying as part of specialized video conferencing products.
Direction | SourceAddr. | Dest.Addr. | Protocol | SourcePort | Dest.Port | ACKSet | Notes |
---|---|---|---|---|---|---|---|
In | Ext | Int | UDP | >1023 |
5004[108]
|
[109]
|
External RTP client to internal server |
Out | Int | Ext | UDP | 5004[108] | >1023 | [109] | Internal RTP server to external client |
In | Ext | Int | UDP | >1023 |
5005[110]
|
[109] | External RTCP client to internal server |
Out | Int | Ext | UDP | 5005[110] | >1023 | [109] | Internal RTCP server to external client |
Out | Int | Ext | UDP | >1023 | 5004[108] | [109] | Internal RTP client to external server |
In | Ext | Int | UDP | 5004[108] | >1023 | [109] | External RTP server to internal client |
Out | Int | Ext | UDP | >1023 | 5005[110] | [109] | Internal RTCP client to external server |
In | Ext | Int | UDP | 5005[110] | >1023 | [109] | External RTCP server to internal client |
[108]Or 24032, or any other port number, preferably even; see text for further explanation.
[109]UDP has no ACK equivalent.
[110]Or 24033, or any other port number, preferably odd; see text for further explanation.