.mrt memo

tail -f /dev/mind > blog

Logide roteerimine Logrotatega

leave a comment »

Alati võib ise skripte kribada, kuid kui sul on puur juba olemas, siis pole augu tegemiseks enam ise näpuga surkida vaja. Lihtsalt õpi puuri kasutama.

Logrotate võiks igas kaasaegsemas pingviinis olemas olla. Leidsin netist vihje, et Suse 7.1-s veel polnud. Aga see vihje näib pärinevat eelmisest sajandist, mistõttu ka sõna “kaasaegne”. Logrotatel on konfamiseks mõned oma direktiivid, kuid üldiselt on asi suht lihtne. Kuna mul oli siin selle asjaga vaja tegeleda, siis panin mõne mõtte kirja kah apache2 näitel SLES10 peal.

Konfamine

/etc/crontab sisaldab viidet skriptile /usr/lib/cron/run-crons, mida kontrollitakse iga 15 minuti tagant:

-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1

Suses sõltub logrotate käima mineku aeg /etc/sysconfig/cron all defineeritud parameetrist DAILY_TIME=”4:15″. See sätestab, millal /etc/cron.daily/ sees defineeritud cronjobid käima lähevad, nende hulgas ka /etc/cron.daily/logrotate.
Konf asub /etc/logrotate.conf, milles on direktiiv “include /etc/logrotate.d”. Selles kataloogis on iga teenuse, mille logi peaks roteerima, kohta eraldi konfifail. Ntx /etc/logrotate.d/apache2:

/var/log/apache2/*log /var/log/apache2/spetsfail {
compress
dateext
maxage 365
rotate 99
size=+1024k
notifempty
missingok
create 644 root root
postrotate
/etc/init.d/apache2 reload
endscript
lastaction
scp /var/log/apache2/*.bz2 arhiiv@arhiiviserver:~/logs/
rm /var/log/apache2/*.bz2
endscript
}

Suse oli automaatselt koostanud apache2 jaoks pika logiroteerimise skripti, milles oli iga faili jaoks oma loogeliste sulgudega konfi sektsioon, kuid ma tõstsin nad kõik ühte sektsiooni. Nagu eelnenud näitest näha, võib enne loogeliste sulgude algust defineerida kõik failid eraldi või kirjutada *log moodi mustri sinna. Kusjuures failinimede või mustrite eraldajaks on tühik. Edasi järgnevad mõned (rohkem või vähem) iseenesest mõistetavad direktiivid nagu:

  • compress – paki kokku logi pärast roteerimist ja postrotatet
  • dateext – pane logifailile lõppu kuupäev (vaikimisi -YYYYMMDD)
  • maxage <päevi> – kustutatakse <päevi> vanemad logid, kui maillast või mail on konfatud, siis oskab neid kustutatavaid logisid ka ennem postiga saata
  • rotate <kordi> – faili roteeritakse <kordi> enne kui ta kustutatakse või mailitakse kuhugile. 0 korda tähendab logi faili kustutamist ja tühjana uuesti loomist
  • size [+]<suurus>[|k|M] – logifaili roteeritakse, kui ta on suurem kui <suurus>. “k” on kilobaiti ja M megabaiti, ilma on lihtsalt baitides.
  • noifempty – ära tee midagi, kui logifail on tühi
  • missingok – ära erutu, kui logifaili polegi
  • create <õigused> <kasutaja> <grupp> – loo logifailid vastavates õigustes
  • postrotate/endscirpt – siia vahele võid kirjutada tegevuse, mida pärast iga faili roteerimist teha. Antud juhul siis graceful restart Apachele.
  • lastaction/encscrpit – see skript käivitatakse pärast kõikide failide roteerimist, ümber nimetamist ja pakkimist. Siia olen pannud failide kopeerimise arhiiviserverisse ning enda järelt ka puhastamise

Veel üks mõistlik asi imho on logide pakkimine bzip2-ga, mis on tunduvalt efektiivsema algoritmiga, kui default gzip. Selleks tuleb mudida /etc/logrotate.conf failis kahte rida:

compresscmd /usr/bin/bzip2
uncompresscmd /usr/bin/bunzip2

Tee võib teistes kohtades erineda (Debian/Ubuntu /bin/bzip2), kuid sisu jääb samaks.

Debugimine

Nüüd kui mingi esialgne näide on valmis, võib konfi debugida -d võtmega, mis logifaile ei puudu, kuid kirjutab kõik tegevused lahti. Kuna me tahame debugida ainult ühte konfi, siis on kasulik /etc/logrotate.conf-is includeda ainult see üks apache2 konfifail, mitte kogu kataloom. Selleks väike muudatus:

#include /etc/logrotate.d
include /etc/logrotate.d/apache2

Ja nüüd debugima:

# logrotate -d /etc/logrotate.conf
reading config file /etc/logrotate.conf
compress_prog is now /usr/bin/bzip2
compress_ext was changed to .bz2
uncompress_prog is now /usr/bin/bunzip2
including /etc/logrotate.d/apache2
reading config file /etc/logrotate.d/apache2
reading config info for /var/log/apache2/*log

Handling 1 logs

rotating pattern: /var/log/apache2/*log 1048576 bytes (99 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apache2/access_log
log does not need rotating
considering log /var/log/apache2/error_log
log does not need rotating
considering log /var/log/apache2/ssl_request_log
log needs rotating
running postrotate script
running script with arg /var/log/apache2/*log : ”
/etc/init.d/apache2 reload

running postrotate script
running script with arg /var/log/apache2/*log : ”
/etc/init.d/apache2 reload

rotating log /var/log/apache2/ssl_request_log, log->rotateCount is 99
glob finding old rotated logs failed
renaming /var/log/apache2/ssl_request_log to /var/log/apache2/ssl_request_log-20081008
creating new log mode = 0644 uid = 0 gid = 0
running postrotate script
running script with arg /var/log/apache2/*log : ”
/etc/init.d/apache2 reload

compressing log with: /usr/bin/bzip2
running last action script
running script with arg /var/log/apache2/*log : ”
scp /var/log/apache2/*.bz2 arhiiv@arhiiviservu:~/logs/
rm /var/log/apache2/*.bz2

Apache-t võib niimoodi reloadida, kuna see on lühiajaline tegevus, kuid niimoodi mitu korda teha pole tegelikult ju eriti ilus. Võibolla saaks ka kuidagi paremini.

Käivitus

Ja lõpuks käima saab asja lasta (ilma cronjobi käivitamist ära ootamata) logrotate -v /etc/logrotate.conf. -v on jutukas väljund, mis võimaldab kohe näha, mis tegelikult tehti.

Written by dotmrt

2008/10/16 at 00:22:37

Posted in linux

Tagged with , , ,

Turvaline kõvaketta kustutamine Linuxiga

leave a comment »

Kui läpparit edasi müüa/anda, siis oleks mõistlik eelnevalt oma sensitiivsed andmed kettalt hävitada. Uurisin natuke, mis moodi oleks seda turvaline ja taastamiskindel teha. A, ja ma ei taha kuulda mingit hala teemadel, et “mida mul ikka kaitsta on” või “keda mu brauserisessioonid või emailid ikka huvitavad” – see poleemika pole antud artikli teemaks.

Aga tagasi teemasse – tavalisel meetodil kustutatud faile on võimalik suhteliselt kerge vaevaga taastada, mistõttu oleks mõistlik taastamise vältimiseks arvutisse sisse pista mingi Linuxi LiveCD/DVD ja lasta kogu vint üle mingi turvalise kustutamise tööriistaga. Live distro on hea lahendus seetõttu, et sa ei saa ju sama ketast kustutada, mille pealt sa ise töötad.

Eesmärk: andmete hävitamine kõvakettalt nii, et nende taastamine oleks väga keeruline (“võimatu” on liiga tugev sõna, mida ma üritaks vältida).

Shred

Shred kirjutab faili või siis kogu kettaseadme (ntx /dev/hda) üle juhuslike andmetega ette antud arv kordi (-n <KORDI>), kuid soovitatav on lõpus kirjutada viimane kord fail/ketas üle nullidega (-z), kuna see varjab shreddimist. Ülejäänud võtmed on soovituslikud: -f kirjutab faili/ketta jõuga üle, küsimata kinnitust, ja -v on verbose ehk siis shred jutustab väljundisse, mis ta teeb. Esimese (ehk põhilise) IDE kettaga talitleks mina järgmiselt:

# shred -vfz -n 7 /dev/hda

Faili rebimise puhul oleks kasulik kasutada võtit -u, mis kustutab faili ka failisüsteemi kirjetest ära, pärast shreddimist. Muidu saab failidega samamoodi hakkama:

# shred -vfuz -n 26 ylisala.txt

Üks põhilisi küsimusi siin kohal on kindlasti – mitu korda andmeid üle kirjutada? Väidetavalt olla USA valituses standard 7, kuid räägitakse edukatest taastamistest pärast 14x “rebimist” (oletan, et siin räägitakse kogu kettaseadme shreddimisest). Tavainimesele pole aga sellised kõvaketta analüüsi vahendid niikuinii kättesaadavad ning tavainimesel pole ka tõenäoliselt selliseid andmeid, mida nii kiivalt varjata. Eks igaüks oma sisetunde järgi.

Vaata fscking /w linux videot välkmälupulga rebimisest.

Secure-delete

Mõnede failisüsteemide puhul ei ole see moodus faili kustutamiseks turvaline (muuhulgas ka ext3, ReiserFS). Failide turvalisemaks kustutamiseks tuleks vaadata Debiani/Ubuntu paki secure-delete poole ehk utiliidid srm, smem, sfill ja sswap.

DBAN

Ühed tegelased on teinud lausa eraldi live distroDarik’s Boot and Nuke, mille ülesanne ongi kõik raalis leiduvad kõvakettad nuke‘da ehk andmetest ära puhastada.

Wipe

Siis on olemas veel selline riist nagu wipe, mis teeb enamvähem sama asja, mis shred, kuid väidetavalt paremini. Nimelt siin kasutatakse turvaekspert Peter Gutmanni poolt pakutud mustreid päris random data asemel, mis väidetavalt tekitavad rohkem segadust ilma kõvaketast hävitamata ning muudavad andmed seega kindlamini taastamatuks. Wipe ei pruugi suvaliste live distrotega kaasas kohe olla ning kui interneedust pole käepärast, võib probleem olla, kuid mina leidsin wipe Knoppixi LiveDVD (ver 5.3) pealt üles küll. -i on informational ehk jutukas väljund, -q on quick wipe ehk vaikimisi 4 juhusliku mustriga ülekirjutamist ja -Q <KORDUSI> on ketta pühimise kordade arv quick wipe puhul (NB!). Mitte-quick wipe puhul tehakse hoolimata -Q väärtusest 34 ülekirjutust Gutmanni mustritega, millest 8 on juhuslikud jadad. Kusjuures niipalju kui mina aru sain, siis ka mustrite järjekord on random. (Määrasin ise -Q ära ilma -q võtmeta ja sattusin hämmingusse, kui asi näitas õhtul käiva rebimise arvuks juba 31.)

# sudo wipe -ifq -Q 7 /dev/hda
# sudo wipe -if /dev/hda

Linke:

Written by dotmrt

2008/10/02 at 07:12:31

Posted in it, linux

Tagged with , ,

Wifi-Router firmware – Tomato on Buffalo WHR-HP-54G

with 2 comments

So you’ve got a Wifi-router. That don’t impress me much.
In fact, nobody could give a rats ass and less notice of the brick you have under the table/hanging from the wall/on the floor. When somebody comes to visit you, the only concern is “have got wifi?”

I’ve had my Buffalo AP for ages by now (speaking in tech it’s about 2+ years) and one day (well, it was yesterday) I found that there are loads of “3rd party firmware” out there for these little cheap boxes. The most popular to modders is the Linksys WRT54G series (nowdays WRT54GL – “L” standing for Linux), but Buffalo WHR-54G series seems to be also popular.

Not to get into too much detail, then couple of great guys have written their own firmware and put it up for others to download and install. Usually this modding changes the admin console and unlocks some “restricted” features you may have not been aware of. I don’t want to brake the law here in Estonia, but it seems that Buffalo’s “HP” aka “High Power” might very well be able to exceed the regulations in this part of the world when correctly set up. But that’s for another time.

The procedure – tftp

So I thought, why not to do something I really don’t need and what might utterly destroy my router and installed Tomato Firmware on my Buffalo WHR-HP-54g. They’ve got great wiki which provided me all the information I can cope with right now, but to make the long story short, I’ll memorize it here as you need to do exactly as the manual says:

  • install Trivial File Transfer Protocol if not already installed – tftp (ubuntu package)
  • download the latest firmware
  • plug your computer via wired connection to the router
  • find the reset button on the bottom of the WHR and hold it for at least 30 seconst, the diagnostics led will blink
  • then unplug it for 10 secs
  • after plugging it in, set your IP to static in the 192.168.11.2 and gateway 192.168.11.1
  • in one terminal window “ping 192.168.11.1” continually
  • unplug the router and see how ping timeouts
  • open second terminal and write following commands
  1. tftp
  2. binary
  3. rexmt 1
  4. trace
  5. connect 192.168.11.1 (Even though the router is still powered down, tftp doesn’t actually “connect” when you execute. So relax)
  6. put tomato.trx
  • Do not press enter yet on the last command
  • Plug the router in again and be ALERT for the first ping
  • When ping gets it’s first response, push enter in the tftp window (you’ll see data transfer “sent DATA <block=5425, 512 bytes>” “received ACK <block=5425>”…)
  • when done wait for at least 2 minutes, then unplug the router for 10 seconds and after plugging in, you should be ready
  • Your “refreshed” router is now 192.168.1.1 with default user/pass being root/admin. Log into admin console and change it – http://192.168.1.1/

I suggest you read the Wiki for more thorough guide.

Loads of mods out there

That’s the procedure to follow when you want to flash your router. Some possible firmware to check out (got them from Tomato wiki):

  • dd-wrt – probably the most famous one. “Supported hardware” list is quite impressive.
  • FreeWRT – supports some Linksys, Asus and Netgear boxes
  • Tarifa – seems to be exclusively for WRT54GL
  • OpenWRT – not very user friendly, but boasts a packaging system to manage software installed and also is named to be the “leanest and meanest” of all router firmware. Also the “supported hardware” list is quite long.
  • X-WRT – project to make a decent webUI for OpenWRT
  • Tomato – based on formes HyperWRT project with nice clean and 21st century webUI using AJAX and SVG

All are based on Linux in some way or the other, to my knowledge.

Also I learned a new term – “to brick“, you have just brick’d your router. Means you have just managed to do something wrong and your router is nothing more than a brick. Fubar, so to speak. (Although I found some advice on de-bricking your box, not that I needed it, yet.)

Final thoughts

Finally, I need to say, that I really had no real need to do all this. I just thought it would be cool to see statistics about my router clients, their net usage and such little stuff which Tomato provides with nice AJAX interface. Also there are some little things you might think are quite logical, but big manufacturers just don’t care. Like when you need to define a channel to use, it would be logical to scan the vicinity for other networks and then assign the channel. You can do that directly in Tomato’s UI. There are such little things all around.

But I know 3rd party firmware to be actually really useful for Wireless Repeaters, Wireless Distribution System and Wireless EThernet/Ethernet Bridge or whatever term you can find, which basically let you enhance your IEEE 802.11 network’s range with additional routers. I got lost searching for differences between those terms, but it seems in one case you MUST have different channels and you CAN have different SSID’s and such. Didn’t go further from there.

Further study:

  • is there some difference in WPA/WPA2 encryption support in different repeating/bridgeing ways (WDS,WET) (some tutorials I found mentioned WEP – don’t really understand if they are imbecilles or perpahs just WPA is not supported and they wanted to market the firmware bridging possebilities as “sure, we have encryption”)
  • are both routers still functioning as AP-s also when using WDS and/or WET (found some controversy on that)
  • is there difference in datagram forwarding between WDS and WET (all forwarded vs only those datagrams forwarded which destinations reside in the view of that router)
  • what are the methods used by available commercial repeaters sold in the stores
  • find some cool projects done with 3rd party firmware for routers
  • some feature difference table of all the firmwares would be helpful

PS

I discovered, that Buffalo is actually selling their WHR-HP-54G with DD-WRT preinstalled (link), which is kinda cool.

Written by dotmrt

2008/07/03 at 23:17:46

Posted in it, linux

Tagged with , , , , , , , ,