Hlavní menu:

Kontakt

Telefony:

Objednávky: +420 267 314 267
Technická podpora:
+420 267 314 267

Reklamace, servis:
+420 272 732 827
Zakázkový vývoj: +420 272 732 827

Fax:

+420 267 314 269

Objednávky: obchod@papouch.com
Dotazy: papouch@papouch.com

V našem e-shopu můžete platit také kartami MasterCard®, Maestro®, VISA® a VISA Electron®.

Jak na to? > Linux > Firewall - díl 3. - práce s logy >

Firewall - díl 3. - práce s logy


V minulém díle jsem slíbil, že se podíváme na nějakou tu šikovnou utilitku, která nám zpříjemní (a hlavně

tucnak_button.gif
zpřehlední) procházení logu našeho paketového filtru. Jak jsme si řekli, zápisy se provádějí do souboru /var/log/messages. Nicméně v tomto souboru narazíte na řadu jiných zápisů, které s činností našeho paketového filtru nesouvisejí a "lovení" toho, kterého záznamu o paketech se může stát noční můrou. Rozumné tedy bude použít nějaký nástroj, který tyto záznamy "vytřídí" a poskytne nám ucelený výstup, nejlépe v html formátu. Velice šikovná utilitka, splňující tyto podmínky, se jmenuje fire-waller a naleznete ji zde:
http://www.saunalahti.fi/~mikpija/unix/fire-waller/

 

Nebo vejděte na www.google.com a jako vyhledávaný řetězec zadejte firewaller, případně fire-waller.

Fire-waller je velice šikovný perlový skriptík (ano, budete potřebovat perl), který "vyzobe" ze souboru /var/log/messages zápisy našeho paketového filtru a "připraví" nám z nich html výstup v podobě souborufirewall.log
Co se perlu týče, já jsem použil (rpm -qa | grep perl) verzi
perl-5.6.0-12 (balíček rpm pro mou distribuci linuxu). Ale myslím, že firewaller není příliš vybíravý:-)

Jak jsem již uváděl minule, náš skript (firewall) "ukládá" své zápisy (logy) do souboru/var/log/messages. Zmíněný log může vypadat třeba takto:

Příklad 1
Apr 7 13:52:09 michal kernel: Packet log: input - ppp0 PROTO=17 195.250.128.34:53 212.20.104.66:1024 L=155 S=0x00 I=19019 F=0x0000 T=62 (#2)

Výpis ze skriptu firewaller bude vypadat takto a je značně přehlednější:

DATE INPUTCHAIN INTERFACE ACTION FROM HOST TO HOST TO PORT PROTOCOL
Apr 7 14:17:42 input ppp0 - 195.250.128.34 212.20.104.40 1024 udp

Z výpisu je patrné, že se jedná o "povolenou" odpověď nameserveru (zkontrolujte si adresu 195.250.128.34) na IP adresu našeho vzdáleného rozhraní (protějšek k ppp0). Zde se jednalo o "akci" našeho www prohlížeče, v daném případě Mozilla.

Příklad 2
Následující případ již tak nevinný není, patrně se jednalo o "vyhledávací proces" nějakého automatu. Podívejte se sami:

Jan 17 23:26:09 michal kernel: Packet log: input DENY ppp0 PROTO=17 63.98.99.130:137 212.20.97.6:137 L=78 S=0x00 I=50949 F=0x0000 T=109 (#24)
Jan 17 23:26:10 michal kernel: Packet log: input DENY ppp0 PROTO=17 63.98.99.130:137 212.20.97.6:137 L=78 S=0x00 I=50977 F=0x0000 T=109 (#24)
Jan 17 23:26:12 michal kernel: Packet log: input DENY ppp0 PROTO=17 63.98.99.130:137 212.20.97.6:137 L=78 S=0x00 I=51002 F=0x0000 T=109 (#24)

A tentýž zápis v podání skriptu firewaller:
DATE INPUTCHAIN INTERFACE ACTION FROM HOST TO HOST TO PORT PROTOCOL
Jan 17 23:26:09 input ppp0 DENY 63.98.99.130 212.20.97.6 netbios-ns udp

Jan 17 23:26:10 input ppp0 DENY 63.98.99.130 212.20.97.6 netbios-ns udp

Jan 17 23:26:12 input ppp0 DENY 63.98.99.130 212.20.97.6 netbios-ns udp

Příklad 3
Ani toto nebyla "korektní" komunikace:

Jan 21 13:33:57 michal kernel: Packet log: input - ppp0 PROTO=6 24.30.250.88:4272 212.20.104.194:8080 L=48 S=0x00 I=6146 F=0x4000 T=102 SYN (#1)
Jan 21 13:33:57 michal kernel: Packet log: input DENY ppp0 PROTO=6 24.30.250.88:4272 212.20.104.194:8080 L=48 S=0x00 I=6146 F=0x4000 T=102 SYN (#26)
Jan 21 13:34:00 michal kernel: Packet log: input - ppp0 PROTO=6 24.30.250.88:4272 212.20.104.194:8080 L=48 S=0x00 I=55042 F=0x4000 T=102 SYN (#1)
Jan 21 13:34:00 michal kernel: Packet log: input DENY ppp0 PROTO=6 24.30.250.88:4272 212.20.104.194:8080 L=48 S=0x00 I=55042 F=0x4000 T=102 SYN (#26)

A opět v podání skriptu firewaller:
DATE INPUTCHAIN INTERFACE ACTION FROM HOST TO HOST TO PORT PROTOCOL
Jan 21 13:33:57 input ppp0 - 24.30.250.88 212.20.104.194 webcache tcp

Jan 21 13:33:57 input ppp0 DENY 24.30.250.88 212.20.104.194 webcache tcp

Jan 21 13:34:00 input ppp0 - 24.30.250.88 212.20.104.194 webcache tcp

Jan 21 13:34:00 input ppp0 DENY 24.30.250.88 212.20.104.194 webcache tcp

Z výpisů vidíte, že příklad 1 je ukázkou korektní komunikace našeho www prohlížeče (odpověď od nameserveru) a příklady 2 a 3 lze naopak hodnotit jako pokusy "nenechavců", kteří se snažili náš stroj prohlížet zvenčí. Příklad 3 je vyložená drzost, útočník se zřejmě snažil na portu 8080 (webcache) nalézt cosi jako http démona z případu Brown Orifice http://www.brumleve.com/BrownOrifice/

Pokud se ptáte, proč jsou pakety z příkladu 2 logovány jen jednou a v příkladu 3 dvakrát, je to proto, že jsme to skriptu firewall sami nařídili. Příklad 2 je totiž pokus o přístup na privilegovaný port a to v době, kdy byl v našem skriptu řádek pro logování všech příchozích paketů vypnut. Lépe řečeno, ještě tam nebyl - z poznámek vidíte, že jsem jej přidal až 21.01.2001 a zápis je z 17.01.2001. Vidíte, k čemu jsou dobré poznámky?


/etc/rc.d/init.d/firewall

# LOGOVANI PRICHOZICH PAKETU
# Logovat vsechny prichozi SYN pakety
# (SYN plati pouze pro TCP)
#ipchains -A input -p TCP -i $EXTERNAL_INTERFACE -s ! $LOOPBACK_INTERFACE -d 0.0.0.0/0 -y -l
# Jen pro externi rozhrani
#
ipchains -A input -p TCP -s ! $LOOPBACK_INTERFACE -d 0.0.0.0/0 -y -l
# Pro vsechna rozhrani
#
# Moje uprava 21.01.2001
# logovat vsechny prichozi UDP pakety z externiho rozhrani
ipchains -A input -p UDP -i $EXTERNAL_INTERFACE -s ! $LOOPBACK_INTERFACE -d 0.0.0.0/0 –l


Soubor /var/log/messages
Ano, na ten se často zapomíná. V zásadě byste neměli zapomenout na dvě věci a to na rotace a na archivaci tohoto souboru. Třetí bod je vlastně "vylepšení". Totiž, tak jak /var/log/messages narůstá, bude muset skript firewaller analyzovat stále více a více dat a bude tedy "pomalejší". Tomu lze napomoci tak, že před zavoláním skriptu firewaller napřed vytvoříme jakýsi pomocný soubor (já mu říkám messages500) a do tohoto souboru zkopírujeme posledních 500 řádků ze souboru /var/log/messages. V praxi to může vypadat třeba následovně:

Napoprvé vytvořte "prázdný" soubor /firewall/messages500 třeba takto:
touch /firewall/messages500

A nyní náš vlastní pomocný skript, který zkopíruje oněch posledních 500 řádků.

skript /firewall/fwlogger


#!/bin/sh
tail -500 /var/log/messages >/firewall/messages500
/firewall/fwlog.pl


Perlový skript /firewall/fwlog.pl je vlastně náš firewaller.pl, který se ovšem místo do /var/log/messages "dívá" do /firewall/messages500
Nebojte se, tu "ruční" úpravu skriptu fire-waller.pl hravě zvládnete.

Rotace /var/log/messages
Prostě, buď používáte cron a ten v daných časových intervalech spouští příkaz logrotate s příslušnými parametry, nebo spusťte čas od času logrotate "ručně". Budete si muset napsat "ruční" parametrický soubor pro logrotate, který může vypadat třeba takto:

logrotate.rucne


compress
create

/var/log/messages {
rotate 5
weekly
# endscript
}


Příklad 4

Následující obrázek "mluví" patrně sám za sebe. Je to zcela zřejmý pokus o skenování portů na mém počítači (původce mi tak vlastně ušetřil čas s generováním něčeho podobného pro tento článek). Typuji, že jako portscanner byl použit buď nmap (www.insecure.org/nmap) nebo nessus (www.nessus.org). Mohu jen dodat: Hezký pokus "sousede".

 

firewall3.gif
Vlastní zálohování systému, skript plbackitup.pl

 

Tentokrát jsem se podíval na freshmeat.net a našel jsem tento skript:
http://freshmeat.net/projects/plbackitup/?highlight=backup

Author:
Brian Tuchten <btuchten at xo dot com>
Homepage:
http://www.glandrake.com/scripts.html
Tar/GZ:
http://www.glandrake.com/scripts/plbackitup/plbackitup-0.7.0.tar.gz
Changelog:
http://www.glandrake.com/scripts/plbackitup/README.changelog

Dovolil jsem si celý výstup přetisknout, snad se na freshmeatu nebudou zlobit:-)
Opět se jedná o perlový skript, který spolupracuje s řadou dalších (konzolových)utilit.

Poněkud jsem mu upravil pár řádků (zkráceno)

Úpravy v skriptu plbackitup.pl


#use Net::FTP; Nepoužívám ftp pro zálohování
...
################
## Backup Vars
################
$backup_dir = "/diskhda3/linux.zaloha/backup/";
#$backup_dir = "/tmp/backup/";# path to dir to save your
# backed up files to (end with /)

...
###############
## Log Vars
################
$backup_log = "/diskhda3/linux.zaloha/backup/.plbackitup.log";
#$backup_log = "/tmp/backup/.plbackitup.log";
# path to the log file


Volám jej takto:

Skript /opt/plbackitup/plbackitup.run


#!/bin/sh
/opt/plbackitup/plbackitup-0.7.0/plbackitup.pl /diskhda3/linux.zaloha/backup/plbackitup_list


A konečně, soubor plbackitup_list vypadá takto:
U mne se nachází v adresáři /diskhda3/linux.zaloha/backup

/diskhda3/linux.zaloha/backup/plbackitup_list
#
# backuplist for plbackup.pl
#
# format is PartialFileName:/path:exclude exclude etc...
# if you don't want to exclude, leave blank
# add or delete lines, below are some examples

etc:/etc:
#home:/home:ftp
root:/root:
boot:/boot:
var-log:/var/log:
var-lib:/var/lib:
#texty:/windows/texty


Pokud jste příznivci X-Windows (já ano, a používám KDE), udělejte si na pracovní plochu simlink na skript /opt/plbackitup/plbackitup.run (nezapomněli jste mu nastavit executable atribut, že ne?) a dílo je dokonáno.

Umístěte na pracovní plochu i odkaz na skripty /firewall/fwlogger
a /firewall/firewall_log.html a situace bude rázem přehlednější.

Tak, to je pro dnešek všechno. Doufám, že se vám váš nový paketový filtr líbí (příjemné čtení logu, je to poučné). Nezapomeňte na rotaci /var/log/messages a nezapomeňte zálohovat.

Zálohu si čas od času vypalte na CD a za domácí úkol se podívejte třeba na tripwire (tahle utilitka se vám bude časem také hodit).
Popis tripwire najdete zde:
http://www.linux.cz/noviny/2001-04/clanek04.html

P.S. Málem bych zapomněl. Skript fwlogger spouštím po každém připojení na internet (před odpojením modemu) a následně prohlížím firewall_log.html. Skript plbackitup.pl spouštím tak dvakrát do týdne, soubor /var/log/messages rotuji tak jednou do měsíce a zálohy na CD pálím podle potřeby (ale alespoň jednou do měsíce).

Michal Vymazal
www.linuxservices.cz






Akce: Otevřít verzi pro tisk Otevřít verzi pro tisk


Soubory: