Linux mini-howto? Krátce o nástrojích ze života sysadmina.
Nástroj tcpkill
Přijde čas od času k duhu, vytvořit TCP spojení je snadné a umí to každý, ale co dělat pokud chceme konkrétní spojení zabít? Trochu Nerudovská otázka: „Kam s ní“, že? Na procesy máme kill, ale co s tcp, navazané je, firewall jsem opravili a teď ho ukončeme.
Tak jednoduché to zas není, k uzavření socketu je potřeba znát TCP ACK(Acknowlegment) a SEQ(Sequence numbers), je nutné tyto informace extrahovat z paketu spojení (odposlechnout, spoof) a zaslat TCP RST(reset).
Nástroj tcpkill funguje přesně popsaným mechanismem, syntax je shodný s nástrojem tcpdump, autorem tcpkill je Dug Song.
# tcpkill -i eth0 { expression } # tcpkill -i eth0 port 21 // zabije odchozí spojení na port 21(FTP) # tcpkill host 192.168.1.42 // zabije odchozí spojení na host 192.168.1.42
Hotovo!
Vypadá to jednoduše, popsaný mechanismus ukončení tcp spojení (tzv. passive, pasivní) má jeden drobný neduh, v případě tcp spojení ve stavu idle(wait, keepalive) není co ochytit (nejsou data, není co spoofovat), takové spojení se Vám tímto nástrojem nepodaří zabít.
Příště se podíváme na nástroje killcx, cutter a bude-li čas i low-level hack s netstat,lsof a kill.
Užívejte moudře, díky za pozornost. František Havel.