Récemment Mr Google à rendu disponible un certain nombre de nouvelles extensions DNS et dans le lot figure le .zip et le .mov.
Dans mon entourage, beaucoup de personnes voient cela d'un très mauvais oeil et je ne peux pas vraiment leur donner tord.
Je me suis donc amusé à trouver des solutions pour bloquer ces extensions avec les technologies du libre.
La solution la plus évidente et qui fonctionne plus pas mal, c'est d'utiliser un DNS menteur pour tous ces domaines. Le gros avantage, c'est que c'est vite mis en place et que c'est disponibles sur à peu prés toutes les plateformes.
Je me suis ensuite demandé, si je pouvais faire mieux avec un IDS/IPS ( snort ) pour ne pas le nommer. Et la encore, cela fonctionne pas mal même si il y une difficulté avec https pouvant générer des faux positifs.
Aujourd'hui, j'en suis à l'option linux/iptables et même si cela fonctionne ( pour l'essentiel ) sans que ce soit optimisé, je suis face à un truc que je ne comprend pas.
Donc, j'utilise le module string d'iptables pour faire mes "recherches"
Donc si je fait
Cela fonctionne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 iptables -A OUTPUT -p tcp -m tcp --dport 80 -m string --string ".zip" --algo kmp --to 65535 -j LOG --log-prefix "http kmp .ZIP" iptables -A OUTPUT -p tcp -m tcp --dport 80 -m string --string "zip" --algo kmp --to 65535 -j LOG --log-prefix "http kmp ZIP"
Si je fait ( je change uniquement l'algo de kmp -> bm )
Cela ne fonctionne plus
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 iptables -A OUTPUT -p tcp -m tcp --dport 80 -m string --string ".zip" --algo bm --to 65535 -j LOG --log-prefix " http bm .ZIP" iptables -A OUTPUT -p tcp -m tcp --dport 80 -m string --string "zip" --algo bm --to 65535 -j LOG --log-prefix " http bm ZIP"
Mais par contre si je refait la même chose avec l'https
cela fonctionne dans tous les cas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 iptables -A OUTPUT -p tcp -m tcp --dport 443 -m string --string ".zip" --algo kmp --to 65535 -j LOG --log-prefix "https kmp .ZIP" iptables -A OUTPUT -p tcp -m tcp --dport 443 -m string --string "zip" --algo kmp --to 65535 -j LOG --log-prefix "https kmp ZIP" iptables -A OUTPUT -p tcp -m tcp --dport 443 -m string --string ".zip" --algo bm --to 65535 -j LOG --log-prefix "https bm .ZIP" iptables -A OUTPUT -p tcp -m tcp --dport 443 -m string --string "zip" --algo bm --to 65535 -j LOG --log-prefix "https bm ZIP"
Le resultat après deux lynx - 1 http et un 1 https vers un domaine .zip
Bon d'accord l'information se situe pas au même endroit pour http et https mais tout de même, je n'arrive pas à comprendre le pourquoi ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Chain OUTPUT (policy ACCEPT 36 packets, 2622 bytes) num pkts bytes target prot opt in out source destination 1 4 292 LOG udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 STRING match "|7a697000|" ALGO name bm TO 65535 LOG flags 0 level 4 prefix " DNS ZIP " 2 1 251 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 STRING match ".zip" ALGO name kmp TO 65535 LOG flags 0 level 4 prefix "http kmp .ZIP" 3 1 251 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 STRING match "zip" ALGO name kmp TO 65535 LOG flags 0 level 4 prefix "http kmp ZIP" 4 0 0 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 STRING match ".zip" ALGO name bm TO 65535 LOG flags 0 level 4 prefix " http bm .ZIP" 5 0 0 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 STRING match "zip" ALGO name bm TO 65535 LOG flags 0 level 4 prefix " http bm ZIP" 6 1 446 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 STRING match ".zip" ALGO name kmp TO 65535 LOG flags 0 level 4 prefix "https kmp .ZIP" 7 1 446 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 STRING match "zip" ALGO name kmp TO 65535 LOG flags 0 level 4 prefix "https kmp ZIP" 8 1 446 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 STRING match ".zip" ALGO name bm TO 65535 LOG flags 0 level 4 prefix "https bm .ZIP" 9 1 446 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 STRING match "zip" ALGO name bm TO 65535 LOG flags 0 level 4 prefix "https bm ZIP"
Donc, si vous aviez une explication, je suis preneur
Partager