Netstat
(→Kapcsolók (csak a fontosabbak):) |
|||
2. sor: | 2. sor: | ||
A netstat egy minden Linux-rendszercsomagban megtalálható, parancssori, hálózati program arra, hogy megnézzük a hálózati konfigurációt és annak aktivitását. Képes mind a kimenő, mind a bejövő hálózati forgalom, a routing táblák és a hálózati interfészek statisztikájának megjelenítésére. Képesek lehetünk vele például egy DoS támadás felderítésére és manuálisan letilthatjuk a támadó IP címét, vagy szkriptet írhatunk a napi, heti, havi forgalom kijelzésére. |
A netstat egy minden Linux-rendszercsomagban megtalálható, parancssori, hálózati program arra, hogy megnézzük a hálózati konfigurációt és annak aktivitását. Képes mind a kimenő, mind a bejövő hálózati forgalom, a routing táblák és a hálózati interfészek statisztikájának megjelenítésére. Képesek lehetünk vele például egy DoS támadás felderítésére és manuálisan letilthatjuk a támadó IP címét, vagy szkriptet írhatunk a napi, heti, havi forgalom kijelzésére. |
||
− | =='' Kapcsolók (csak a fontosabbak):''== |
+ | =='' Kapcsolók ''== |
-nr routing táblák kiíratása, |
-nr routing táblák kiíratása, |
||
141. sor: | 141. sor: | ||
Jelen pillanatban 2 kapcsolat jött létre és pl. 14-re vár. |
Jelen pillanatban 2 kapcsolat jött létre és pl. 14-re vár. |
||
− | =='''DoS támadás kivédése'''== |
+ | =='''DoS támadás kivédése Netstat-tal'''== |
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr |
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr |
||
iptables -I INPUT -s 45.165.30.20 -j DROP |
iptables -I INPUT -s 45.165.30.20 -j DROP |
||
− | ==''' script'''== |
+ | ==''' Forgalom mérő script írása Netstat felhasználásával '''== |
#!/usr/local/bin/bash |
#!/usr/local/bin/bash |
||
# |
# |
A lap 2010. december 1., 21:38-kori változata
A netstat egy minden Linux-rendszercsomagban megtalálható, parancssori, hálózati program arra, hogy megnézzük a hálózati konfigurációt és annak aktivitását. Képes mind a kimenő, mind a bejövő hálózati forgalom, a routing táblák és a hálózati interfészek statisztikájának megjelenítésére. Képesek lehetünk vele például egy DoS támadás felderítésére és manuálisan letilthatjuk a támadó IP címét, vagy szkriptet írhatunk a napi, heti, havi forgalom kijelzésére.
1 Kapcsolók
-nr routing táblák kiíratása, –n Az IP-címeket szimbolikus címekké alakítja. Ez egy kicsit gyorsítja a program futását, mert így nem hajt végre névfeloldást. -i a felkonfigurált hálózati interfészekről jelenít meg információt -g IPv4 és IPv6 multicast csoporttagságról jelenít meg információt, -s Minden egyes protokollról (IP, TCP, SNMP stb.)készít egy összefoglalót -M a maszkolt kapcsolatok kilistázása(Ip maszkolás például), az álcázott (masqueraded) kapcsolatok IP-táblái a Netstat számára nem láthatóak, ezek a/proc/net/ip_conntrack fájlban találhatóak meg. -l a „hallgatózó” szerver socketek kilistázása, -ta, Ezek a kapcsolók megmutatják az aktív TCP socket kapcsolatokat. Ha „a”-t írunk utána akkor a kapcsolatra váró socketeket is megjeleníti. -ua, aktív UDP socketeket -wa, aktív RAW socketeket -xa aktív Unix socketeket
Néhány kapcsoló hatása
Nézzük meg mikre lehet felhasználni a netstat programot:
- Írassuk ki a routing táblákat netstat -nr parancs felhasználásával:
Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 192.168.4.199 0.0.0.0 UG 0 0 0 eth1
Az eredmény egyértelmű adott két routing bejegyzés a gépünkben és egy default route amely egy gateway-re küld minden olyan adatot aminek a cél címzettje nem ebben a hálózatban található. Minden csomagot az eth1 interfészen kell küldeni.
- Most, hogy már láttuk a gépünk router tábláját és azt is milyen interfészen történik az adattovábbítás írassunk ki az interfészekről is információkat! Ehhez a netstat -i parancsot hívjuk segítségül:
Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 0 0 0 0 0 0 0 0 BMRU eth1 1500 0 5635 3 3 0 4725 0 5 0 BMRU lo 16436 0 12 0 0 0 12 0 0 0 LRU
Így megtudtuk, hogy az eth0-án 1500byte az MTU például.
- A netstat -g kiírja a szerverünk IPv4, IPv6 csoporttagságait:
IPv6/IPv4 Group Memberships Interface RefCnt Group --------------- ------ --------------------- lo 1 ALL-SYSTEMS.MCAST.NET eth0 1 ALL-SYSTEMS.MCAST.NET ppp0 1 ALL-SYSTEMS.MCAST.NET lo 1 ipv6-allnodes eth0 1 ipv6-allnodes ppp0 1 ipv6-allnodes
- Írassuk ki az TCP kapcsolatokat anetstat -ant parancs kiadásával:
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 192.168.4.113:58559 209.85.148.120:443 TIME_WAIT tcp 0 0 192.168.4.113:46239 92.123.69.89:80 TIME_WAIT tcp 0 0 192.168.4.113:56160 209.85.148.113:80 TIME_WAIT tcp 0 0 192.168.4.113:37633 74.125.87.83:80 ESTABLISHED tcp 0 0 192.168.4.113:37823 95.101.176.74:80 TIME_WAIT tcp 0 0 192.168.4.113:35738 74.125.87.104:80 TIME_WAIT tcp 0 0 192.168.4.113:33126 74.125.87.19:80 ESTABLISHED tcp 0 0 192.168.4.113:36680 92.123.72.89:80 TIME_WAIT tcp 0 0 192.168.4.113:46241 92.123.69.89:80 TIME_WAIT tcp 0 0 192.168.4.113:36672 92.123.72.89:80 TIME_WAIT tcp 0 0 192.168.4.113:46240 92.123.69.89:80 TIME_WAIT tcp 0 0 192.168.4.113:60555 204.11.109.22:80 TIME_WAIT tcp 0 0 192.168.4.113:50016 66.220.153.11:80 TIME_WAIT tcp 0 0 192.168.4.113:54156 74.125.87.149:80 TIME_WAIT tcp 0 0 192.168.4.113:60556 204.11.109.22:80 TIME_WAIT tcp 0 0 192.168.4.113:39421 88.221.61.115:80 TIME_WAIT tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 :::445 :::* LISTEN tcp6 0 0 :::139 :::* LISTEN
Most szűrjük le azokat amiknek 80-as a portszáma, mert csak a TCP kapcsolatokra vagyunk kíváncsiak:
netstat -ant | grep 80
Az eredmény:
tcp 0 0 192.168.4.113:37633 74.125.87.83:80 ESTABLISHED tcp 0 0 192.168.4.113:33126 74.125.87.19:80 TIME_WAIT tcp 0 0 192.168.4.113:49028 74.125.87.83:80 ESTABLISHED
- netstat -l a „hallgatózó” szerver socketek listázza ki:
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 *:smtp *:* LISTEN tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 *:smtp *:* LISTEN udp 0 0 *:820 *:* udp 0 0 *:53437 *:* udp 0 0 *:bootpc *:* udp 0 0 *:mdns *:* udp 0 0 *:sunrpc *:* udp 0 0 *:ipp *:* udp 0 0 *:820 *:* udp 0 0 *:sunrpc *:* Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 6474 @/var/run/hald/dbus-5xGa2LPKv8 unix 2 [ ACC ] STREAM LISTENING 11508 private/bounce unix 2 [ ACC ] STREAM LISTENING 11512 private/defer unix 2 [ ACC ] STREAM LISTENING 11516 private/trace unix 2 [ ACC ] STREAM LISTENING 7598 @/tmp/dbus-tp88b9tqUu
netstat -ta aktív TCP socketek kilistázása:
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 *:smtp *:* LISTEN tcp 0 0 91.83.125.55.pool:39195 OCSP.IAD3.VERI:www-http TIME_WAIT tcp 0 0 91.83.125.55.pool:55886 hb-in-f83.1e100.n:https ESTABLISHED tcp 0 0 91.83.125.55.pool:46471 hb-in-f104.1e100.:https ESTABLISHED tcp 1 0 91.83.125.55.pool:40777 184-106-213-18:www-http CLOSE_WAIT tcp 38 0 91.83.125.55.pool:51176 elan.rulez.org:https CLOSE_WAIT tcp 0 0 *:sunrpc *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 *:smtp *:* LISTEN
Ha teljes képet szeretnénk kapni mi folyik a szerverünkön a következő paranccsal tehetjük meg, az awk program pedig segít az eredményeket csoportosítani:
netstat -ant | awk ‘{print $6}’ | sort | uniq -c | sort -n
jelenleg:
0 Foreign 1 FIN_WAIT 4 LISTEN 0 CLOSE_WAIT 2 ESTABLISHED 14 TIME_WAIT
Jelen pillanatban 2 kapcsolat jött létre és pl. 14-re vár.
2 DoS támadás kivédése Netstat-tal
netstat -ntu | awk ‘{print $5}’ | cut -d: -f1 | sort | uniq -c | sort -nr iptables -I INPUT -s 45.165.30.20 -j DROP
3 Forgalom mérő script írása Netstat felhasználásával
#!/usr/local/bin/bash # # SECS=`uptime | awk '{ if ($3 ~ /:/) { split($3,a,":"); print (a[1]*60+a[2])*60} else { split($3,b,":"); split($5,a,":"); print b[1]*86400+ (a[1]*60+a[2])*60} }'` EXT_IN=`netstat -n -i eth0 | grep eth0 | tail -1 | awk '{print $5}'` EXT_OUT=`netstat -n -I em0 | grep eth0 | tail -1 | awk '{print $6}'` echo " " echo "External interface bandwidth usage:" echo " uptime " $(($SECS/86400)) "days" echo " ExtIf in total " $(($EXT_IN/1000000000)) "GBytes" echo " ExtIf out total " $(($EXT_OUT/1000000000)) "GBytes" echo " ExtIf in/day " $(($EXT_IN*86400/$SECS/1000000)) "MBytes/day" echo " ExtIf out/day " $(($EXT_OUT*86400/$SECS/1000000)) "MBytes/day" echo " ExtIf in/30day " $(($EXT_IN*86400*30/$SECS/1000000000)) "GBytes/month" echo " ExtIf out/30day " $(($EXT_OUT*86400*30/$SECS/1000000000)) "GBytes/month" echo " ExtIf in+out/30day " $((($EXT_OUT+$EXT_IN)*86400*30/$SECS/1000000000)) "GBytes/month"