web-dev-qa-db-fra.com

SIP Demande UDP brisant à travers iptables

J'ai étudié quelques instances récemment où SIP UDP trafic a été en quelque sorte évasionner le jeu de règles défini dans IPTABLES qui me conduit à soupçonner qu'il y a un trou dans nos règles, donc je cherche des conseils sur Comment renforcer les défenses sur le système local. Nous avons un pare-feu devant ce serveur qui pourrait être amélioré, mais il semble important que ce problème soit compris avant que nous examinions des mesures supplémentaires, une telle question est directement concernant les défenses de serveurs locaux - spécifiquement les IPTables. .

Le SIP paquets commence à inclure des tentatives d'injection SQL et je suis préoccupé que sans être directement traitée, la demande peut éventuellement être compromise. À l'heure actuelle, l'appelant gère l'établissement d'un appel qui joue simplement notre Aucune annonce de service pour obtenir un SIP conversation a commencé avec le serveur local - pas idéal!

J'ai copié des détails ci-dessous avec un système de rédaction cohérent, cependant, si des informations supplémentaires sont nécessaires, veuillez commenter ci-dessous et je vais le mettre en place.

Appréciez des conseils, merci de jeter un coup d'œil!

origine IP: 185.107.83.35 SIP IP du serveur: 200.200.114.207

Je vais commencer par un exemple de l'offensive SIP paquet:

INVITE sip:00*[email protected]:5060;transport=UDP SIP/2.0
Via: SIP/2.0/UDP 185.107.83.35:5060;branch=z9hG4bK-524287-1---i9aif7pifkudxkd8
Max-Forwards: 70
Contact: <sip:...hi'or...x...='x';@185.107.83.35:5060;transport=UDP>
To: <sip:00*[email protected];transport=UDP>
From: <sip:...hi'or...x...='x';@200.200.114.207;transport=UDP>;tag=gj0njz16
Call-ID: LztInRxh5KJSOAGxCOGB0T..
CSeq: 1 INVITE
Content-Type: application/sdp
User-Agent: Avaya one-X Deskphone
Allow-Events: presence, kpml, talk
Content-Length: 515

v=0
o=Avaya 0 0 IN IP4 185.107.83.35
s=Avaya
c=IN IP4 185.107.83.35
t=0 0
m=audio 8000 RTP/AVP 18 3 110 8 0 97 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:97 iLBC/8000
a=rtpmap:3 GSM/8000
a=rtpmap:98 AMR/8000
a=rtpmap:9 G722/8000
a=rtpmap:100 SPEEX/8000
a=rtpmap:99 AMR-WB/16000
a=rtpmap:102 SPEEX/16000
a=rtpmap:121 G7221/16000
a=fmtp:121 bitrate=24000
a=rtpmap:105 opus/48000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=sendrecv

Configuration IP sur l'hôte:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope Host lo
    inet6 ::1/128 scope Host
       valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:11:22:33:44:7d brd ff:ff:ff:ff:ff:ff
    inet 192.168.20.20/24 brd 255.255.255.255 scope global em1
    inet6 aaaa::aaaa:aaaa:aaaa:aaaa/64 scope link
       valid_lft forever preferred_lft forever
3: em2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 00:11:22:33:44:7f brd ff:ff:ff:ff:ff:ff
    inet 200.200.114.207/26 brd 200.200.114.255 scope global em2
    inet6 aaaa::aaaa:aaaa:aaaa:aaaa/64 scope link
       valid_lft forever preferred_lft forever
4: em3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:11:22:33:44:81 brd ff:ff:ff:ff:ff:ff
5: em4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:11:22:33:44:83 brd ff:ff:ff:ff:ff:ff

Voici la sortie de iptables -v -n --list

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
4769K  538M ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           /* 000 accept all icmp */
 645M  276G ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           /* 001 accept all to lo interface */
  11G 2946G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           /* 002 accept related established rules */ state RELATED,ESTABLISHED
4036K  238M ACCEPT     tcp  --  em1    *       0.0.0.0/0            0.0.0.0/0           multiport ports 22 /* 101 accept SSH from internal interface */
36907 2036K ACCEPT     all  --  em1    *       192.168.4.0/24       0.0.0.0/0           /* 102 accept all traffic from site 1 LAN */
 160K 6397K ACCEPT     all  --  em1    *       192.168.5.0/24       0.0.0.0/0           /* 103 accept all traffic from site 1 LAN */
8651K  527M ACCEPT     all  --  em1    *       192.168.20.0/24      0.0.0.0/0           /* 105 accept all traffic from site 2 LAN */
    0     0 ACCEPT     tcp  --  em2    *       190.190.89.10        0.0.0.0/0           multiport ports 22 /* 106 accept SSH from WAN */
    0     0 ACCEPT     tcp  --  em1    *       0.0.0.0/0            0.0.0.0/0           multiport ports 2812 /* 107 accept monit from LAN */
41878   19M ACCEPT     udp  --  em2    *       190.190.89.0/26      0.0.0.0/0           multiport ports 5060 /* 150 accept SIP from WAN */
 144K   55M ACCEPT     udp  --  em2    *       200.200.114.192/26   0.0.0.0/0           multiport ports 5060 /* 152 accept SIP from WAN */
    0     0 ACCEPT     udp  --  em2    *       180.180.63.32/27     0.0.0.0/0           multiport ports 5060 /* 201 accept SIP from carrier */
    0     0 ACCEPT     udp  --  em2    *       180.180.63.32/27     0.0.0.0/0           multiport ports 8000:60000 /* 202 accept RTP from carrier */
    0     0 ACCEPT     udp  --  em2    *       170.170.67.2         0.0.0.0/0           multiport ports 5060 /* 210 accept SIP from carrier */
    0     0 ACCEPT     udp  --  em2    *       170.170.67.2         0.0.0.0/0           multiport ports 8000:60000 /* 211 accept RTP from carrier */
  55M 8576M ACCEPT     udp  --  em2    *       0.0.0.0/0            0.0.0.0/0           multiport ports 16384:32768 /* 300 accept all RTP */
 489K  219M REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           /* 999 reject all other requests */ reject-with icmp-Host-prohibited

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           /* 998 reject all FORWARD */ reject-with icmp-Host-prohibited

Chain OUTPUT (policy ACCEPT 12G packets, 3230G bytes)
 pkts bytes target     prot opt in     out     source               destination
7
puppyFlo

Vous devriez vérifier l'en-tête IP sur ce paquet. Juste après le TTL = valeur, il doit indiquer le protocole. Si le protocole arrive en tant que tel, ce sera votre problème. J'ai vu cela quelque chose comme ça avant.

Une valeur de protocole d'un indique ICMP, que vous autorisez globalement comme votre première règle. Bien que cela soit nécessaire pour que Ping fonctionne, il permettra aux paquets mal formés, sauf si vous avez un pare-feu périmètre configuré pour les rejeter.

Un indice valide SIP doit utiliser 17 pour UDP ou 6 pour TCP, en fonction de votre configuration particulière.

Si l'attaquant utilise malformé SIP paquets (défini sur le protocole 1 au lieu de 17), vous pouvez configurer votre pare-feu pour déposer tous les types de paquets ICMP sauf ping. Il y a très peu de raisons d'accepter quoi que ce soit Outre des pings valides des hôtes externes.

1
DoubleD

Probablement le fichier PCAP avec aide dans ce cas, cependant, voici ce que je pense se passe à partir des informations données:

L'invitation a la source et la destination IP 200.200.114.207,

To: <sip:00*[email protected];transport=UDP>
From: <sip:...hi'or...x...='x';@200.200.114.207;transport=UDP>;tag=gj0njz16

si l'invitation est correctement, il semble que l'adresse IP correspond à l'une de vos règles, je pense.

144K   55M ACCEPT     udp  --  em2    *       200.200.114.192/26   0.0.0.0/0

Ce que vous pouvez faire est de commencer avec les règles de port, 5060 et 5061 est la liste régulière SIP et après les gammes IP sur votre IPTABLES.

0
camp0

Vous avez une règle associée/établie au début de la chaîne (comme nous le faisons tous). Consultez si le module SIP pour iptables est présent.

lsmod |grep -i sip

Cela pourrait être la source de la fuite. Si tel est le cas, essayez de le contourner pour le trafic SIP.

0
MTG

FYI, j'ai exactement le même problème. À partir des tests, il semble que le suivi de la connexion UDP (appelé dans la règle établie associée) identifie les paquets désignés pour UDP/5060 dans le cadre d'une session existante ou associée. Vous pouvez vérifier cela en regardant la table de suivi de la connexion et recherchez des intérêts sur UDP/5060; Les entrées incriminées auront des drapeaux [assurés].

Je suppose que le traqueur Conn voit les paquets dans le cadre d'une session connexe et permettant au paquet. Le serveur répond alors (généralement A SIP Réponse non valide), et cela l'envoie en état assuré. Techniquement, la partie correspondante n'est supposée être appelée que par une assistante de traqueur de connexion (comme le SIP ALG ALGER); Je n'ai pas ce module de noyau chargé, alors peut-être que je suis peut-être légèrement éteint et que cela ne le voit pas comme apparenté, mais en fait une session établie. Si c'est le cas, c'est un Bugger bug.

Ma solution de contournement actuelle consiste à bloquer les paquets de ceux-ci offensant IPS avant pour frapper la règle établie/liée. Cela la corrige et il n'y en a pas beaucoup, mais c'est assez gênant.

0
lidocaineus