Развертывание простой samba-шары, борьба с autorun.inf на samba-сервере или сисадмину на заметку

Пока писал еще один пост про Гринпис, подошел один из инженеров и пожаловался, что какой-то из классов заела эпидемия «авторанов». Причем, авторанов, распространяющихся через сервер. Я насторожился, поскольку сервером у нас работает (с моей подачи) уютненький Debian GNU Linux.

Года два назад я сознательно снес виндовый сервер (дырявый как решето) и чтобы народ не бегал с флэшками и прочим барахлом завел систему папок — по одной на каждый компьютерный класс

Выглядело это примерно так. Раз уж зашла речь — опишу процесс развертывания самбы в классах (у меня все это лежит в заметках, поэтому просто копирую сюда с небольшими комментариями).

Сначала я завел нового пользователя:

md@serv:~$ sudo su
[sudo] password for md: 

root@serv:/home/md# useradd -m sambauser -p 111

Проверил, что он таки да завелся:

root@serv:/home/md# cat /etc/passwd
...
root:x:0:0:root:/root:/bin/bash
sambauser:x:1002:1002::/home/sambauser:/bin/sh

Поставил саму самбу:

root@serv:/home/md# apt-get install samba
Чтение списков пакетов... Готово
...
Importing account for sambauser...ok
update-alternatives: используется `/usr/bin/smbstatus.samba3' для предоставления `/usr/bin/smbstatus' (smbstatus) в автоматический режим.
smbd start/running, process 23129
nmbd start/running, process 23136

Выделил папку под общий ресурс и дал ей права

root@serv:/home# ls
guest  lost+found  md  sambauser
root@serv:/home# mkdir share
root@serv:/home# cd share/
root@serv:/home/share# mkdir students
root@serv:/home/share# sudo chmod 777 students/

Поправил конфиги:

root@serv:/home/share# cd /etc/samba
root@serv:/etc/samba# ls
gdbcommands  smb.conf
root@serv:/etc/samba# cp smb.conf smb.conf.bak
root@serv:/etc/samba# vim smb.conf

В конец файла smb.conf дописал:

[upload]
comment = All users upload
path = /home/share/students/
create mode = 0777
directory mask = 0777
available = yes
browsable = yes
public = yes
writable = yes

После чего еще добавил разных папок — по папке на класс:

[405]
comment = 405 
path = /home/share/students/405/
create mode = 0777
directory mask = 0777
available = yes
browsable = yes
public = yes
writable = yes

[407]
comment = 407 
path = /home/share/students/407/
create mode = 0777
directory mask = 0777
available = yes
browsable = yes
public = yes
writable = yes

[409]
comment = 409 
path = /home/share/students/409/
create mode = 0777
directory mask = 0777
available = yes
browsable = yes
public = yes
writable = yes

Сохранил файл и перезагрузил самбу:

root@serv:/etc/samba# service smbd stop
smbd stop/waiting
root@serv:/etc/samba# service smbd start
smbd start/running, process 9849

Все. Расшарено.

Чтобы это все запускалось автоматом — в винде делаем netshare.cmd, куда прописываем:

@Echo Off

Rem по материалам
Rem http://www.levik.info/windows-net-use-share-as-other-user.htm

Rem получаем доступ к ErrorLevel
SetLocal EnableExtensions EnableDelayedExpansion

Rem Удаляем существующие сетевые подключения
net use /delete * /yes

Rem пытаемся получить ответ от сервера - иначе сетевой диск недоступен
Rem our_server_name заменить на имя компьютера или IP-адрес
:Loop
Ping -n 1 -l 1 -w 1000 172.20.0.21
If Not "!ErrorLevel!"=="0" GoTo :Loop

Rem собственно подключаем сетевой диск
Rem следует указать верные данные!
NET USE Z: \\172.20.0.21\upload\407 /PERSISTENT:NO /User:STUDENTS\admin111 password

Rem завершаем bat-файл, закрываем окно CMD
Exit

Здесь — конфиг для (ныне мертвой) машины 172.20.0.21 и класса 407.

Этот файлик добавляем в автозагрузку (перетаскиваем ярлычок на Пуск -> Программы -> Автозагрузка) и на загрузке машина сама подключает себе сетевой диск. Для каждого класса выдается один файлик, который лаборант самостоятельно распределяет по машинам, если машина переставляется в другой класс — достаточно поменять номер в netshare.cmd, если меняется сервер — тоже просто меняется ip в netshare.

Конечно, конструкция получилась коленно-локтевая :) Но. Эта система обслуживала около пяти сотен машин, пережила два переезда на разные сервера и ей легко обучались лаборанты обслуживающие классы. Примитивно, но дешево, надежно и практично. Кроме того, это позволило мне спокойно писать Неназываемое — не заморачиваясь на сетевые проблемы.

Народ очень доволен — я с удивлением узнал, что все потихоньку перешли к схеме «один диск — все классы» без моего участия и вообще гоняют систему в хвост и в гриву. Поскольку расшареная папка лежит на линуксовом сервере, вирусы, рассчитанные на дырки в виндовой защите, сквозь него не просачиваются, в то время как общеуниверситетская сеть полна живности.

Однако, давеча завелся вирус. Небльшое расследование показало, что это — авторан, который додумался скопировать на сетевой диск z: файл Autorun.inf — и всю требуху вместе с ним. И заходя на сетевой диск глупая Винда (никак не приучу инженеров и лаборантов отключать автозапуск в системе после установки) запускает Autorun.inf и заражает себя.

Узнав об этом — зашел на сервер и первым делом я прибил Autorun.inf в окрестных папках:

find /home/share/students/ -maxdepth 2 -name 'autorun.inf' -exec mv {} {}.bak \;

Точнее не прибил, а скопировал в autorun.inf.bak для дальнейшего изучения.

Вторым движением было желание скопировать этот однострочник в crontab, чтобы он ежечасно вычищал возможные автораны, но после непродолжительного гугления, оказалось, что есть способ проще. В Samba есть возможность задать veto files список имен файлов которые не будут ни видимы, ни доступны.

Соответственно, в smb.conf, в секцию [global] я добавил строчку, блокирующую создание или запуск авторанов:

veto files = /autorun.inf/AUTORUN.INF/Autorun.inf/

Сработало как часы. Теперь вирус просто не способен физически создать файл на диске. Уже протестировали на нескольких зараженных компьютерах — эпидемия дальше не распространяется.

Как всегда буду благодарен за замечания и дополнения :) Конструкция, как упоминалось выше, примитивная, так что…

Реклама

13 Responses to Развертывание простой samba-шары, борьба с autorun.inf на samba-сервере или сисадмину на заметку

  1. Пара копеек старого параноика: chmod 777 есть очень плохо. ;) Я делал 775 или вообще 770 и форсил группу всем файлам. Подробно тут не напишу, давно было, а рабочих конфигов давно нет, так как слава богу уже даже на уровне самбы «win не нужен» :)) Хотя конечно твой вариант исключает внесение в группу нужных пользователей.

  2. Я вот сейчас тоже задумался — нафига оставлять x-бит? Видимо спешил и не подумал. А что значит форсить группу?

    В принципе я рассчитывал (и рассчитываю), что эти папки будут свалкой куда можно свободно сливать информацию. И дважды в год в конце семестра — вычищать все оттуда нафиг :)

  3. Не, дело не в x-бите, а в бите w, то есть права на запись всем, а это не хорошо по любому. А форсил группу — там есть force group или как то так. Все создаваемые там файлы будут принудительно получать заданную группу в не зависимости от того, кем были созданы.

  4. Угумс. Тогда понятно. В принципе можно держать группу юзеров и действительно им форсить.

    Забыл спросить — как получилось уйти от винды? :)

  5. Хм… Не знаю даже что сказать. :) Даже напрягаться особо не пришлось. ;) На самом деле мне на много порядков удобнее работать под линуксом. Поэтому снес нафиг везде винду, поставил линукс и сижу вот. Офисные документы в принципе сейчас открываются нормально. С макросами у меня доков нет… Визио не использую. На самый крайний случай стоит под kvm винда. Это уж если на работе припрут так, что уж ни чем другим не попользоваться. :) Жена пересела на линукс еще проще: я ей поставил и показал куда жать. Она сейчас тоже когда с девченками говорит и те жалуются на глюки удивленно спрашивает: «А чего вы линукс не поставите???» :)))

  6. Я неточно выразился :) Я сам под виндой уже давно не работаю :) Меня даже агитировать не надо :) У меня винда вычищена отовсюду. Будь у провайдера возможность сделать static IP вообще ходил бы домой по ssh :)))

    Я имел в виду — как получилось уйти на работе? У меня просто скажем рабочий компьютер и рабочий же сервер — это дебиан, а все прочие компы — винда (ибо студенты и преподаватели :( Отсюда и возня с самбой (уже давно nfs поставил бы).

    Кстати, спасибо за идею с kvm — мне сейчас надо будет читать курс по ассемблеру, а для него нужна именно винда :(

  7. На работе у меня только свой комп, серверов нету. Для саппорта, где ну очень нужна винда — опять же kvm. Почта — есть родной lotus клиент, хотя я пользуюсь связкой iNotes (буржуи написали гейт между лотусом и pop3) + mutt. Как то так вот.

    kvm стал недавно юзать, до этого virtualbox. Но он медленнее kvm-а работает.

  8. Угумс. Счастливый человек :)

    Раз уж зашла речь — насколько kvm стабилен? Полез в доки — наткнулся на заметку на Хабре в которой жаловались, что WinXP часто вылетает с BSOD.

  9. Честно говоря не могу сказать на сколько он стабилен, но у меня стоит под ним XP. Ни одного падения и вылета в BSOD еще не было. Причем периодически приходится на эту винду пробрасывать всякую аппаратную фигню. Например купили режущий принтер, дров под линукс к нему я не купил. Пробросил usb в kvm — работает без вопросов. Где-то читал ребята даже прокидывали nvidia видюшник туда и запускали на нем винду с дровами. 3D вроде нормально крутили. Ну конечно же при этом ни каких X-ов быть не может. ;)

  10. Ага. Спасибо огромное. Я бы так сейчас полез на virtualbox — а тут повод попробовать новенькое :)) Буду курить доки и экспериментировать.

    Что значит не может быть иксов? Она запускается из консоли?

  11. ППЦ колонки вообще уплыли вправо :) Отвечу тут.

    Ты отдаешь в kvm видеоадаптер. Полностью. Хост системе он по сути становится полностью недоступен. Вся железка. Соответственно хост остается без видеоадамтера совсем. :) А гостевая OS наоборот получает железку. И выводит все не как раньше на виртуальную карту, а на реальную железку. Управлять этим все добром (имеется ввиду хост) конечно же можно в этом случае только по сети.

  12. Недостаток вордпресса, да :) Но я тебя все равно читаю в вордпрессовой админке :) И отвечаю там же :) А стиль не хочу менять, потому, что мне этот нравится.

    Угумс. Теперь сообразил :) Нет железки — нет иксов :))) Вообще, я зело благодарен — потому, что как раз собирался спрашивать, какая из виртуальных машин для линукса нативнее — я бы сейчас копал виртуалбокс, просто потому, что умею им пользоваться, но чисто интуитивно понимал, что есть какие-то более нативные и более экономичные варианты :) А тут ты подсказал kvm :)

  13. […] Все хорошо. Но. Я понял, что на сервере до сих пор крутится наколенная система бэкапов, которую я запустил полтора года назад. Да, я не сисадмин и вообще это не мой фронт работ, но если не я то, кто — и дальше следуют стандартные оправдания и дисклэймеры. […]

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: