Kontrol ettiğiniz bir sisteminiz olduğunu düşünün. Fakat yanlız değilsiniz. Sisteme sizin haberiniz olmadan başkaları bağlanıp istemediğiniz işlemler yapabilirler. İşte tam da bu noktada;
- Sisteme kimler bağlandı?
- Hangi komutları ne zaman çalıştırdı?
- Hangi kullanıcı hangi komutları çalıştırdı?
- Çalıştırılan komutların çalışması ne kadar sürdü?
- Komutlar hangi kabuktan çalıştırıldı?
Sorularına cevap aramanız geri dönüşüm veya bir sonuca varmak amacıyla ilk yapmanız gereken şeydir. Peki bu soruları nasıl cevaplandıracağız?
İşte size bu soruların cevapları;
1- history komutuna zaman parametresi ekleyin
Salt history komutunu kullanırsanız login olduğunuz kullanıcının geriye dönük çalıştırmış olduğu komutları sıra numarası ile görürsünüz. Fakat bir de bu çalıştırılan komutların çalıştırılma zamanlarının da history çıktısında gösterilmesi geriye dönük iz sürme noktasında işimize yarayacağı kesin. O halde ilk login olduğumuzdaki home dizinimizin altında bulunan .bash_profile dosyasına veya unix sistemlerde sh kullananlar için .profile dosyasına aşağıdaki değişkeni ekleyelim.
$ HISTTIMEFORMAT="%d/%m/%y %T "
veya
$ echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bash_profile
komutunu çalıştırdıktan sonra kabuktan logout login olup veya .profile dosyasını environment değişkenleri için kullananlar (. .profile) komutunu kullanarak ve env. değişkenlerini .bash_profile dosyasında kullananlar için de (. .bash_profile) komutunu kullanma sonrasında history çıktısını inceleyelim.
$ history <pre>.... .. 986 11/03/10 04:31:36 memcached-tool 10.10.28.22:11211 stats 987 11/03/10 04:31:36 w 988 11/03/10 04:31:37 iostat 989 11/03/10 04:31:37 top 990 11/03/10 04:31:37 at 991 11/03/10 04:31:38 atop 992 11/03/10 04:31:40 collectl 993 11/03/10 04:31:41 grep CPU /proc/cpuinfo 994 11/03/10 04:31:45 vmstat 3 100 995 11/03/10 04:31:55 sar -W -f /var/log/sa/sa12 .... ..
2- last komutu çıktısı yorumu
last komutu ile sisteme kimlerin ne zaman bağlandığı ve hangi ip veya domainler üzerinden sistem login olduklarını görebilirsiniz. Bu komut ile aynı zamanda sisteme kimlerin, ne zaman restart attığı ve ne kadar süre ile sistemde login kaldıkları bilgisini de öğrenebilirsiniz.
>last root pts/2 192.168.5.2 Sat Feb 26 21:43 still logged in root sshd 192.168.5.2 Sat Feb 26 21:43 still logged in root pts/3 192.168.5.8 Sat Feb 26 13:24 - 13:44 (00:19) root sshd 192.168.5.8 Sat Feb 26 13:24 - 13:28 (00:03) root pts/2 192.168.5.3 Sat Feb 26 11:17 - 13:28 (02:11) root sshd 192.168.5.3 Sat Feb 26 11:17 - 13:24 (02:07) root pts/2 192.168.2.129 Tue Feb 22 17:40 - 17:52 (00:11) root sshd 192.168.2.129 Tue Feb 22 17:40 - 17:52 (00:11) root pts/2 192.168.5.4 Mon Feb 21 22:56 - 23:21 (00:24) root sshd 192.168.5.4 Mon Feb 21 22:56 - 23:21 (00:24) root pts/2 192.168.2.129 Wed Feb 16 14:45 - 17:48 (03:03) root sshd 192.168.2.129 Wed Feb 16 14:45 - 17:48 (03:03) root pts/2 192.168.5.8 Sun Jan 30 15:17 - 15:19 (00:01) root sshd 192.168.5.8 Sun Jan 30 15:17 - 15:19 (00:01)
3-lastcomm komutu ile detaylı loglama
lastcomm komutunun en güzel tarafı kullanıcıların çalıştırdığı komutları göstermesinin yanında sistem süreçlerinin de çalıştırdığı komutları göstermesidir. Bununla kalmayıp komutların çalıştırılması süresini de göstermektedir. Bu özellik sayesinde sisteminizde uzun süre çalışan komutları belirleyip gereksiz ise bu komutları sonlandırabilirsiniz.
Solaris sistemlerde lastcomm komutu default olarak aktif değildir. Bu komutu aktif hale getirmek için;
lastcomm aktif olmadığı zaman ki komut çıktısı
>lastcomm /var/adm/pacct: No such file or directory
accounting servisini başlatarak lastcomm dan çıktı alabilmek için;
>/usr/lib/acct/turnacct on
startup ta accounting servisinin default çalışması isteniyorsa;
>/usr/lib/acct/startup
artık lastcomm çıktısında istediğimiz bilgilere ulaşabiliriz. Aşağıdaki çıktıda dikkat edilirse kabuktan bağlanan kullanıcılar için kabuk bilgisi (ör: pts/2) gösterilmektedir. Kabuk bilgisi gösterilmeyen komutlar sistemin kendi çalıştırdığı komutlardır.
>lastcomm postgres F postgres __ 0.00 secs Sun Feb 27 01:03 lastcomm root pts/2 0.00 secs Sun Feb 27 01:03 postgres F postgres __ 0.00 secs Sun Feb 27 01:03 hatimeru root __ 0.00 secs Sun Feb 27 01:03 sh root __ 0.00 secs Sun Feb 27 01:03 control_ S root __ 0.00 secs Sun Feb 27 01:03 grep root __ 0.00 secs Sun Feb 27 01:03 postgres F postgres __ 0.00 secs Sun Feb 27 01:03 psql S postgres __ 0.00 secs Sun Feb 27 01:03 egrep root __ 0.00 secs Sun Feb 27 01:03 postgres F postgres __ 0.00 secs Sun Feb 27 01:03 psql S postgres __ 0.00 secs Sun Feb 27 01:03 rm S root __ 0.00 secs Sun Feb 27 01:03
* rm komutu çalıştırma geçmişi sorgulama;
>lastcomm rm rm root pts/2 0.00 secs Sun Feb 27 00:16 rm root pts/2 0.00 secs Sun Feb 27 00:16 rm root pts/2 0.00 secs Sun Feb 27 00:16 rm root pts/2 0.00 secs Sun Feb 27 00:16 rm root pts/2 0.00 secs Sun Feb 27 00:16 rm root pts/2 0.00 secs Sun Feb 27 00:16 rm root pts/2 0.00 secs Sun Feb 27 00:16 rm root pts/2 0.00 secs Sun Feb 27 00:16 rm root pts/2 0.00 secs Sun Feb 27 00:16
* oracle userının çalıştırdığı perl komutlarının geriye dönük bilgileri;
>lastcomm perl oracle perl oracle __ 0.16 secs Sun Feb 27 00:19 perl F oracle __ 0.00 secs Sun Feb 27 00:19 perl F oracle __ 0.00 secs Sun Feb 27 00:19 perl oracle __ 0.10 secs Sun Feb 27 00:19 perl F oracle __ 0.00 secs Sun Feb 27 00:18 perl F oracle __ 0.00 secs Sun Feb 27 00:18 perl oracle __ 0.09 secs Sun Feb 27 00:18
bu komutun tek eksik yanı çıktısında kullanılan komutlar için sadece ana komuta yer verip komuta eklenen parametreleri göstermemesidir. Ama history komutu çıktısı da bunu bir nebze olsun hafifletiyor diyebiliriz.
Bu yöntemler güzel ama daha iyisi yok mu derseniz cevap olarak visudo ile ayrı ayrı kullanıcılar için özel haklar atayarak tüm kullanıcıların çalıştırdığı komutları loglamanızı tavsiye ederim. Bu konuyla alakalı daha önce yazmış olduğum yazıma buradan ulaşabilirsiniz.
KAYNAKLAR;
http://www.cyberciti.biz/tips/freebsd-process-accounting-tutorial.html
http://www.tek-tips.com/viewthread.cfm?qid=542324&page=242
http://www.cyberciti.biz/faq/unix-linux-bash-history-display-date-time/







