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
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.
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.
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.
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.