Показаны сообщения с ярлыком linux. Показать все сообщения
Показаны сообщения с ярлыком linux. Показать все сообщения

понедельник, 20 июля 2009 г.

Аудит самбы против вирусов

Создав на своем ноуте (OS=Ubuntu 8.10) расшаренную папку incoming, доступную гостям для записи, я через некоторое время обнаружил там два совершенно чужих файла: khs и omstc.exe. Я сразу понял, что это вирусы.
Мне стало интересно, с какого компьютера они ко мне попали, и я захотел посмотреть логи самбы, чтобы увидеть там заветный IP адрес зомби-машины, но логи эти были скудны и неинформативны.

После получасового секса с конфигами самбы, на свет появилось элегантное решение. Итак:


dude@ubuntu:~$ sudo nano /etc/samba/smb.conf

....в конце создаем и настраиваем ресурс


[incoming]
writable = yes
locking = no
path = /home/dude/smbincoming
public = yes
browseable = yes
only guest = yes
vfs objects = full_audit
full_audit:prefix = %u|%I
full_audit:failure = none
full_audit:success = connect disconnect opendir mkdir rmdir closedir open close read pread write pwrite sendfile rename unlink chmod fchmod chown fchown chdir ftruncate lock symlink readlink link mknod realpath
full_audit:facility = local5
full_audit:priority = notice


Дальше перезапускаем самбу:

dude@ubuntu:~$ sudo service samba restart

Теперь можно ждать, когда вирусы начнут закидываться в наш расшаренный каталог (кстати, не забываем дать ему права 0777). После того, как это случится, читаем лог (например к нам прилетел вирус с именем omсstc.exe):

dude@ubuntu:~$ cat /var/log/syslog | grep smbd_audit | grep omcstc | less

пятница, 12 июня 2009 г.

Ротация бекапов. Оставить только семь последних бекапов. Скрипт на bash

Скрипт удаляет в целевой директории все файлы (и директории), кроме семи самых новых.

Полезно для того, чтобы например оставлять только семь последних бекапов на сервере.
Не забудьте подставить свои значения в $target и $limit


#!/bin/bash

#целевой каталог
target_dir=target

#сколько файлов оставить в живых
limit=7

################################
n=1
for i in `ls $target_dir -t`
do
if [ $n -gt $limit ]
then
rm -Rvf $target_dir/$i
fi
n=$(($n+1))
done