Múltkor például sikerült rájönnöm, hogy IPsec-el lehet olyan szabályt létrehozni, ami annyit csinál, hogy ha egy kliens megpróbál az adott portra csatlakozni, akkor kap egy X sec-es ban-t mindenféle hálózati forgalommal együtt..
Belegondolva ez egy standard támadó ellen teljesen jó kis csapda -> Csupán annyit kell csinálnunk, hogy egy meglehetősen alacsony portra kirakunk egy sérülékeny szolgáltatást (rsh, telnet, csak hogy finoman is nézzen ki), majd rádefiniálunk egy szabályt, hogy aki megpróbál bejönni, annak mondjuk 1 napig csend legyen.. Amennyiben a támadónk valamiféle scanneléssel próbálkozik (sima nmap is elég :)) már bele is esett a csapdába.. Csodálatos, mit ne mondjak :))
Hogy ez a valóságban hogy is néz ki? Nos van 1-2 alapfeltétel:
- clic.rte alatti csomagoknak fent kell legyenek a gépen
- Be kell legyen töltve az Ipsec modul (ipsec_v4, ha IPv4et akarunk védeni)
- A szabályokat nekünk kell beállítani.
Tehát a feladat szimplán ennyi:
A szabály beállítás némileg macerásabb. Csinálhatjuk 'smitty ips4_add_filter'-el, vagy genfilt-en keresztül parancssorból is.server # installp -avXYgd /source clic.rte.lib clic.rte.kernext # Alap csomagok telepítése server # smitty ips4_start # Indítsuk el az Ipsec IPv4es támogatását server # lsdev -l ipsec_v4 # Nézzük meg elérhetővé vált e az ipsec_v4 device ipsec_v4 Available IP Version 4 Security Extension
Ugyan ez parancssorból:Smitty-ből így néz ki a konfigolás: * Rule Action [shunHost] * IP Source Address [0.0.0.0] * IP Source Mask [0.0.0.0] IP Destination Address [10.1.0.100] IP Destination Mask [] * Apply to Source Routing? (PERMIT/inbound only) [yes] * Protocol [all] * Source Port / ICMP Type Operation [any] * Source Port Number / ICMP Type [0] * Destination Port / ICMP Code Operation [eq] * Destination Port Number / ICMP Type [23] * Routing [both] * Direction [inbound] * Log Control [yes] * Fragmentation Control [0] * Interface [all] Expiration Time (sec) [300] Pattern Type [none] Pattern / Pattern File [] Description [telnet_boobytrap]
Némi kis magyarázat a kapcsolókról:server # genfilt -v 4 -a H -s '0.0.0.0' -m '0.0.0.0' -d 10.1.0.100 -g y -c all -o any -p 0 -O eq -P 23 -r B -w I -l Y -t 0 -i all -e 300 -D 'telnet_boobytrap'
-v 4 -> IP version 4
-a H -> ShunHost
-s 0.0.0.0 -> Source address (0.0.0.0 == bárhonnét)
-m 0.0.0.0 -> Source Mask (0.0.0.0 == mindenhonnan)
-d 10.1.0.100 -> Destination IP (nem kötelező, de a tapasztalatok alapján érdemes megadni, mert nélküle mintha nem menne (nem tudtam rájönni miért))
-g y -> Source packet átroute-olása
-c all -> Minden protokolon (udp/tcp/icmp/ospf/ipip/esp/ah)
-o any -> Source port (0 == bármelyik)
-p 0 -> Source port (0 == bármelyik)
-O eq -> Milyen tipusú operátort használjuk (eq == equal -> megyegező port)
-P 23 -> Port száma (23 == telnet)
-r B -> Routing-ot pontosan mely láncokra érvényesítsük (route forward, local routing, avagy mind2 (both)
-w I -> Direction. Jelen esetben csak a bejövő csomagokkal foglalkozunk
-l Y -> Loggolás.. Persze, hogy akarunk loggolni :) (For the record - a logok a local4:err, local4:info és local4:notice alá mennek)
-t 0 -> Fragmenation Control, avagy melyik ID-jű tunnelbe toljuk majd bele a csomagot ( a 0 default)
-i all -> Interface.. Mindenhol halgatózni akarunk természetesen :)
-e 300 -> Expiration time másodpercben (kíméletesek leszünk, most csak 5 perces bann jár :))
-D 'telnet_boobytrap' -> Description.. Hogy kb a leírás alapján tudjuk mit is akarhatott a költő amikor ezt a szabályt létrehozta..
Ennek az eredménye egy olyan rule lesz, ami bárhonnét jövő IPv4-es kapcsolatot kitilt 5 percre, ha én a 23-as portra próbálok csatlakozni.
Szerverről lekérve pedig láthatjuk is a kis szabályunkat:
Na most azért van itt még 1-2 dolgot amire ki kell térni:server # lsfilt -v4 -O 1|permit|0.0.0.0|0.0.0.0|0.0.0.0|0.0.0.0|no|udp|eq|4001|eq|4001|both|both|no|all packets|0|all|0|||Default Rule 2|*** Dynamic filter placement rule for IKE tunnels ***|no 3|shunHost|0.0.0.0|0.0.0.0|0.0.0.0|255.255.255.255|yes|all|any|0|eq|23|both|inbound|yes|all packets|0|all|300|||telnet_boobytrap 0|permit|0.0.0.0|0.0.0.0|0.0.0.0|0.0.0.0|yes|all|any|0|any|0|both|both|no|all packets|0|all|0|||Default Rule
- A 0ás,1es,2es szabályok állandóak, ergo a legkisebb ID amit kaphatunk az 3as lesz 1 szabályhoz, illetve afölött
- Azzal, hogy a rule-t létrehoztuk még nem jelenti, hogy életbe is léptettük azonnal -> azt külön meg kell tenni :)
- Ráadásként a loggolást is hiába állítottuk be, ha nem engedélyezzük azt is :)
Mázlinkra ez összesen 2 új parancsot jelent:
Innentől fogva viszont életbe léptek a változtatásaink, és mindenféle bajkeverő ilyen következményekkel kell szembenézzenserver # mkfilt -v4 -g start # Loggolás aktiválása server # mkfilt -v4 -u # A felvitt rule-ok aktiválása
Mit jelent ez a gyakorlatban?
"telnet_boobytrap" szabály nélkül az nmap ezt dobja vissza:
"telnet_boobytrap"-al ugyan ez:pentester # nmap -sS 10.1.0.100 Starting Nmap 5.51 ( http://nmap.org ) at 2012-07-25 22:15 Central Europe Daylight Time Nmap scan report for 10.1.0.100 Host is up (0.061s latency). Not shown: 994 closed ports PORT STATE SERVICE 23/tcp open telnet 111/tcp open rpcbind 514/tcp open shell 1334/tcp open writesrv 2049/tcp open nfs 9090/tcp open zeus-admin MAC Address: 00:00:00:41:47:4E (Xerox) Nmap done: 1 IP address (1 host up) scanned in 1.72 seconds
1.72 sec VS 1521.32 sec (több mint 25 perc :)) és csak egy 5 perces tiltást állítottunk be.. Képzeld el mi lesz ha "kicsit" emeljük a tétet, mondjuk 86400-ra (24 óra) :))pentester # nmap -sS 10.1.0.100 Starting Nmap 5.51 ( http://nmap.org ) at 2012-07-25 21:46 Central Europe Dayliht Time Nmap scan report for 10.1.0.100 Host is up (0.063s latency). Not shown: 919 closed ports, 76 filtered ports PORT STATE SERVICE 111/tcp open rpcbind 514/tcp open shell 1334/tcp open writesrv 2049/tcp open nfs 9090/tcp open zeus-admin MAC Address: 00:00:00:41:47:4E (Xerox) Nmap done: 1 IP address (1 host up) scanned in 1521.31 seconds
Nézzük mi van akkor ha valaki csak simán be akar telnetelni:
pentester # telnet 10.1.0.100 Trying... telnet: connect: A remote host did not respond within the timeout period.
Mindeközben a logban:
Amire tessék figyelni: Amint az egyik szabály érvényesül egy bejövő címre, az ipsec elkezdi logolni az összes próbálkozását a node-nak, miután ki lett tiltva (az nmap kellemes kis 2 MB-os logot generált nekem a ~25 perc alatt :)) de innentől már nem csak a megadott portra (23), hanem mindre amire a támadó gép bepróbálkozottserver # tail -f /var/log/syslog.out |grep ipsec Jul 25 20:29:42 server local4:info ipsec_logd: #:2 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53688 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:29:42 server local4:info ipsec_logd: #:1 R:d O:995:46f4:995:46d2:995:46f4:600:d1b8 S:17:0:0:1::2 D:0:1::656e:3100:f100:500 P:(1) -:54272 -:61696 R:l I: F:n T:3935892 L:18472 Jul 25 20:29:43 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53688 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:29:43 server local4:info ipsec_logd: #:-2010349502 R:d O:995:46f4:995:46d2:995:46f4:600:d1b8 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:ip -:12288 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:29:46 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53688 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:29:46 server local4:info ipsec_logd: #:-2010349502 R:d O:995:46f4:995:46d2:995:46f4:600:d1b8 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:ip -:12288 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:29:52 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53688 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:29:52 server local4:info ipsec_logd: #:0 R:d O:995:46f4:995:46d2:995:46f4:600:d1b8 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:ip -:27136 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:30:04 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53688 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:30:04 server local4:info ipsec_logd: #:1 R:d O:995:46f4:995:46d2:995:46f4:600:d1b8 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:(1) -:9216 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:30:28 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53688 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:30:28 server local4:info ipsec_logd: #:0 R:d O:995:46f4:995:46d2:995:46f4:600:d1b8 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:ip -:27136 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:30:57 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53697 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:30:57 server local4:info ipsec_logd: #:-2010349502 R:d O:995:46f4:995:46d2:995:46f4:600:d1c1 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:ip -:12288 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:30:58 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53697 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:30:58 server local4:info ipsec_logd: #:0 R:d O:995:46f4:995:46d2:995:46f4:600:d1c1 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:ip -:27136 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:31:01 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53697 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:31:01 server local4:info ipsec_logd: #:-2010349502 R:d O:995:46f4:995:46d2:995:46f4:600:d1c1 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:ip -:12288 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:31:07 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53697 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:31:07 server local4:info ipsec_logd: #:0 R:d O:995:46f4:995:46d2:995:46f4:600:d1c1 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:ip -:27136 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:31:19 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53697 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:31:19 server local4:info ipsec_logd: #:1 R:d O:995:46f4:995:46d2:995:46f4:600:d1c1 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:(1) -:9216 -:61696 R:l I: F:n T:3935892 L:0 Jul 25 20:31:43 server local4:info ipsec_logd: #:0 R:d I:10.1.0.100 S:10.1.0.153 D:10.1.0.100 P:tcp/ack SP:53697 DP:23 R:l I:en1 F:n T:0 L:60 Jul 25 20:31:43 server local4:info ipsec_logd: #:0 R:d O:995:46f4:995:46d2:995:46f4:600:d1c1 S:17:0:0:1:: D:0:1::656e:3100:f100:500 P:ip -:27136 -:61696 R:l I: F:n T:3935892 L:0
Nyammm... ilyet linuxra is, thx.
VálaszTörlés