Реклама: |
Данная статья была изначально
написана для |
SAMBA в подробностях |
При написании данного документа была использована одна из последних версий пакета SAMBA (2.0.6). Данный пакет (samba-2.0.6.tar.gz) можно получить на домашней странице SAMBA. После получения данного пакета извлекаем все то, что находится под "грифом" *.tar.gz, например, в директорию /tmp (причем, для этого не обязательно быть root'ом :), т.е: $ tar -zxvf samba-2.0.6.tar.gz Если у вас не возникло никаких проблем при извлечении данного пакета, вы обнаружите новую директорию samba-2.0.6 и в ней извлеченные файлы. Если же у вас не все так хорошо, как хотелось бы, тогда придется созерцать другие надписи, например, error... Такое случается (у меня, например), но не отчаивайтесь. Нужно просто немного почитать и англоязычных доков по данному продукту. В директории samba-2.0.6 находятся пакеты со скриптами. Нас больше всего интересует тот пакет, который позволит нам сделать RPM-пакет, чтобы инсталлировать Самбу как RPM. Для этого делаем следующие шаги (вот здесь вам уже понадобится проявить себя в роли root'а): $ su # chown -R root:root samba-2.0.6 # cd samba-2.0.6/packaging/RedHat # sh makerpms.sh Вряд ли это займет много времени (смотря, какая у вас конфигурация ПК). Если все прошло успешно, тогда будут созданы следующие файлы: /usr/src/redhat/RPMS/i386/samba-2.0.6-19990228.i386.rpm /usr/src/redhat/SRPMS/samba-2.0.6-19990228.src.rpm Если все нормально и никаких ошибок нет, тогда остается только проинсталлировать этот пакет: # rpm -Uvh /usr/src/redhat/RPMS/i386/samba-2.0.6*.i386.rpm Если же у вас возникли проблемы при создании RPM-пакета (это наблюдалось при установке Самбы 2.0.6 на Slackware 7.0), тогда придется обойтись без него и, как говорится "пойти другим путем". Извлекаем файлы из архива samba-2.0.6.tar.gz: tar -zxvf samba-2.0.6.tar.gz переходим в созданную директорию: cd samba-2.0.6 переходим в директорию с документацией: cd /docs/textdocs читаем (посредством редактора ViM) данный файл (который прольет свет на наши дальнейшие действия): vi UNIX_INSTALL.txt возвращаемся к директории samba-2.0.6: cd samba-2.0.6 набираем (сначала можно это делать как простой пользователь (user), а перед использованием команды make install придется набрать su, чтобы "стать" root'ом): $ ./configure $ make $ su # make install Дальше мы рассмотрим создание нового пользователя и группы, а также некоторых каталогов. Кроме этого, мы изменим пару файлов, чтобы можно было использовать Samba Web Administration Tool (SWAT). Так как наш уровень секретности (security level) равен shares, создадим определенную учетную запись нашего гостя (guest). Нового пользователя будем именовать smbuser, а группу, к которой он будет принадлежать - smb group. Кроме этого, имеем еще несколько пользователей, например, "ika" и "serg". Все файлы, которые доступны посредством записи в smb.config public share=yes будут доступны пользователю "smbuser" и принадлежать группе "smb group". Если у вас есть Linuxconf (очень нужная программа!), то создание пользователя и группы покажется вам сказкой. Работать в ней очень просто и, главное, все понятно. РЕКОМЕНДУЮ использовать ЕЕ при создании пользователя и группы. Если же у вас возникнут какие-нибудь проблемы или окажется, что данной программы у вас нет (в это с трудом верится), тогда создайте пользователя с помощью консольной команды useradd и аналогично группу командой groupadd. Создали группу "smb group" и пользователя "smbuser" (домашняя директория новосозданного пользователя должна находится в /home/public). Теперь можете отключить вход в систему пользователю "smbuser", так как он нам фактически не понадобится. Public Directory Итак, директорию public мы уже имеем (в каталоге /home). Данная директория должна принадлежать пользователю "smbuser" и группе "smb group". Так как файлы в директории должны ВСЕГДА принадлежать группе "smb group", то нам придется установить соответствующий SGID для данной группы. Так же при прописке SGID'а стоит обратить внимание на то, что директория /home/public должна иметь открытый доступ для чтения и для записи. Сделав выводы из вышеперечисленного, устанавливаем SGID: chown smbuser:smb /home/public # chmod 2777 /home/public Что у нас получилось? Теперь каждый файл, который создается в /home/public будет принадлежать группе "smb group" в независимости от того, кто создал этот файл. Data Directory Моя "data directory" /home/samba/data. Данная директория должна быть доступна только некоторым пользователям (тем, которые принадлежат группе "smb group"). Исходя из этого, делаем следующие действия: # mkdir /home/samba # chown smbuser:smb /home/samba # chmod 2770 /home/samba # mkdir /home/samba/data # chown smbuser:smb /home/samba/data # chmod 2770 /home/samba/data Обратите внимание, что я устанавливаю SGID таким образом, чтобы те файлы, которые будут создаваться в данных каталогах принадлежали группе "smb group". Чтобы более красочно привести пример настройки SAMB'ы и получить доступ к созданным каталогам, я добавляю себя к "smb group". Делаю я все это через уже упоминавшуюся программу Linuxconf. Если у вас с ней проблемы, тогда вам остается только использовать команду usermod или же все прописывать "ручками" в файле /etc/group (последнее НЕ РЕКОМЕНДУЕТСЯ, хотя если вы уверены в том, что делаете, тогда...). Теперь проверьте ваш файл hosts (/etc/hosts). В нем должны быть следующие записи (здесь приведится пример для моей машины): /etc/hosts 127.0.0.1 localhost localhost.localdomain 192.168.0.1 elk 192.168.0.2 ika 192.168.0.3 serg Теперь создайте lmhosts-конфигурационный файл. Данный файл будет отображать hostnames (или IP-адреса) к NetBIOS-компьютерам. Данный файл будет выглядеть примерно так: # /etc/lmhosts # здесь слева hostname (можно указывать IP-адресом), # а справа NetBIOS-имя localhost elk ika ika serg serg Использование SWAT Для использования SWAT'а проверим два конфигурационных файла: services (/etc/services) и inetd.conf (/etc/inetd.conf). По умолчанию SWAT запускается с 901-го порта. Это можно изменить, но в данном документе приводится пример использования SWAT'а именно на этом порту, поэтому пока оставьте все так как есть. Итак, проверяем вышеуказанные конфигурационные файлы: >/etc/service swat 901/tcp # в данном случае SWAT-service # используется через inetd Если эта строка присутствует в /etc/service, тогда все ОК. Если строки нет, тогда добавьте ее в конец данного файла. Данная строка говорит нам о том, что SWAT запускается на 901-м порту. Теперь в файл inetd.conf (/etc/inetd.conf) добавляем следующую строку: swat stream tcp nowait.400 root /usr/sbin/swat swat Securing SWAT Для усиления безопасной работы посредством SWAT'а не помешает изменить строку выше на (использование TCP wrappers): swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat Обсуждение TCP wrappers выходит за рамки данной статьи, поэтому я рекомендую вам # man hosts.allow. Теперь переходим в файл /etc/hosts.deny и просматриваем его. Он должен иметь запись: ALL: ALL Добавим в /etc/hosts.allow следующие строки: swat: 127.0.0.1 192.168.0. Это позволит нашим пользователям (elk, ika, serg) обращаться к SWAT. Запуск SWAT Сначала перезапустим inetd: # killall -HUP inetd Теперь в браузере (какой вам больше нравится, мне, например, Lynx) набираем: http://192.168.0.1:901 Если все правильно настроено, то вы увидите форму, в которой нужно будет ввести имя пользователя (username) и пароль (password). Здесь введите имя пользователя "root" и соответственно пароль суперпользователя (root'a). Конфигурирование Самбы (Configuring Samba) Итак, SWAT запущен, и теперь вы можете ознакомить себя с его работой. Как вы видите, SWAT - это программа с прекрасным интерфейсом, которая создает /etc/smb.conf конфигурационный файл. ВНИМАНИЕ! Если вы уже имеете /etc/smb.conf, то SWAT затрет форматирование и комментарии в нем. Но в то же время, SWAT создаст для вас хороший конфигурационный файл. Вот пример моего /etc/smb.conf файла: # Samba config file created using SWAT # from elk (192.168.0.1) # Date: 1999/10/22 20:12:11 # Global parameters workgroup = elk@net server string = Samba SMB Server nterfaces = 192.168.0.1/24 127.0.0.1/24 bind interfaces only = Yes security = SHARE log file = /var/log/samba/log.%m max log size = 50 read bmpx = No time server = Yes socket options = TCP_NODELAY os level = 65 preferred master = Yes dns proxy = No wins support = Yes guest account = smbuser hide dot files = No [public] comment = Public path = /home/public read only = No create mask = 0664 directory mask = 0775 guest ok = Yes [data] comment = Data path = /home/samba/data read only = No create mask = 0660 directory mask = 0770 guest ok = Yes Starting Samba Теперь вы можете запустить SAMB'у. Это можно сделать или посредством SWAT'a или же из командной строки. Если вы хотите использовать SWAT, тогда идите на "Status page" и запускайте SMBD и NMBD. Если это уже было запущено, тогда просто остановите и перезапустите вышеуказанные демоны, чтобы увидеть ваш новый конфигурационный файл. С командной строки запуск данных демонов выглядит так: # /etc/rc.d/init.d/smb stop # /etc/rc.d/init.d/smb start У вас все работает? Чудесно. Теперь протестируем нашу SAMB'у. Testing Samba Посмотрим, работает ли это реально: # smbclient -L localhost Выполняющаяся программа попросит вас ввести пароль. Здесь можете просто нажать ENTER. Потом вы увидите примерно следующее: Domain=[HOROSHO] OS=[Unix] Server=[Samba 2.0.6] Sharename Type Comment --------- ---- ------- public Disk Public data Disk Data IPC$ IPC IPC Service (Samba SMB Server) Server Comment --------- ------- elk Samba SMB Server Workgroup Master --------- ------- HOROSHO elk Если вам удалось все это увидеть (примерно это, потому что данный пример приведен для моей машины), тогда все ОК. Нам остается только внести некоторые изменения в ПК, которые работают под Windows OS. Configuring Windows На ПК elk (это я) запущен SAMBA-сервер. ПК serg и ika работают под Windows. Сейчас самое время уделить внимание машинам под Windows. На мой взгляд, доступ к SAMBA серверу из под Windows не представляет ничего сложного. Попробую вас в этом убедить на конкретных примерах. Сначала удостоверимся, что свойства сети настроены так, как нам надо. Для этого, заходим в свойства сети (щелкаем правой клавишей на значке рабочего стола "Сетевое окружение" ("Network Neighborhood") и выбираем "Свойства"). Далее заходим на закладку "Компьютер" ("Identification"). В поле "Имя компьютера" ("Computer name") прописываем ika, в закладке "Рабочая группа" ("Workgroup") прописываем HOROSHO, ну а в закладке "Описание компьютера" ("Computer Description") можете прописать что угодно. Дальше переходите на закладку "Управление доступом" ("Access Control") и поставьте флажок в поле "На уровне ресурсов" ("Share-level access control"). Теперь переходите в самую первую закладку "Конфигурация" ("Configuration") и нажмите на кнопке "Доступ к файлам и принтерам" ("File and print sharing"). В появившемся окне необходимо поставить флажки в поле "Файлы этого компьютера можно сделать общими" ("I want to be able to give others access to my files") и "Принтеры этого компьютера можно сделать общими" ("I want to be able to allow others to print to my printer(s)"). И, наконец, мы указываем Windows, что elk является сервером WINS и именно он будет browse master'ом. Для этого переходим в свойства TCP/IP протокола. В появившемся окне выбираем "Конфигурация WINS" ("WINS Configuration"). Ставим флажок в поле "Включить распознавание WINS" ("Enable WINS Resolution"). В появившемся поле "Основной сервер WINS" ("WINS Server Search Order") прописываем IP-адрес сервера (elk'a) - 192.168.0.1 и нажимаем "Добавить" ("Add") или просто [ENTER]. Переходим на закладку "Дополнительно" ("Advanced") и кликаем на "Browse Master" в левом окне, а в правом устанавливаем значение "Disabled". Вот и все. Теперь остается только несколько раз нажать кнопку "ОК" и перезагрузить Windows. В Windows NT экраны свойств сети немножко отличаются, но главной концепции построения они не меняют. После перезагрузки Windows смело жмите на "Сетевое окружение" ("Network Neighborhood") и вы сможете увидеть SAMBA-сервер, а также зашаренные ресурсы: "public" и "data". Теперь вы можете просто подключить данные ресурсы как сетевые диски и присвоить им drive letters. Вот и все. Остается только ввести вас в краткий курс секретности SAMB'ы. Securing Samba Чем больше вы прибавляете сервисов на вашей машине, тем больше дырок у вас возникает. Это не секрет. Сейчас вы добавили SMB-сервис. Как его защитить? Вариант љ 1. В файл smb.conf (/etc/smb.conf) можно ввести следующие строки: interfaces = 192.168.0.1/24 127.0.0.1/24 bind interfaces only = Yes Вариант љ 2 (более параноидальный). Фильтрация портов SAMBA использует 137-139 порты. Есть смысл просто заблокировать их из TCP и UDP. Если у вас стоит ядро версии 2.0 (это можно легко узнать набрав в консоли uname -a), тогда для фильтрации используйте ipfwadm, а если ядро версии 2.1 или 2.2 - ipchains. Вот как это делается с помощью ipfwadm: # Добавляем нижеприведенные записи в /etc/rc.local: ipfwadm -I -P tcp -a deny -S any/0 137:139 -W eth0 ipfwadm -I -P udp -a deny -S any/0 137:139 -W eth0 ipfwadm -O -P tcp -a deny -S any/0 137:139 -W eth0 ipfwadm -O -P udp -a deny -S any/0 137:139 -W eth0 Это запретит (deny) все входящие и исходящие TCP и UDP пакеты для 137-139 портов на интерфейсе eth0. Для более подробной информации рекомендую вам почитать man ipfwadm. При наличии ядер 2.1-2.2 вы сможете сделать это с помощью ipchains: # Добавляем нижеприведенные записи в /etc/rc.local: ipchains -A input -p tcp -j DENY --destination-port 137:139 -i eth0 ipchains -A input -p udp -j DENY --destination-port 137:139 -i eth0 ipchains -A output -p tcp -j DENY --destination-port 137:139 -i eth0 ipchains -A output -p udp -j DENY --destination-port 137:139 -i eth0 Как видите, ничего нового и сложного вы не увидели. И ipfwadm и ipchains выполняют одно и тоже, только для разных версий ядер. Вы можете также установить один из трех уровней секретности при входе на ваш SAMBA сервер (user-level security, share level security, domain level security). О назначении каждого из них вы можете прочитать в предыдущей моей статье о SAMB'е на сайте LinuxRSP . Также рекомендую вам не лениться и хоть изредка заглядывать в HOWTO, и, кроме этого, иногда заглядывайте на домашнюю страничку SAMB'ы. Со времени публикации статьи "Файловый сервер под SAMBA? Без проблем" на мой адрес пришло множество писем с просьбой помочь в тех или иных вопросах, связанных с работой SAMB'ы. К сожалению, из-за отсутствия времени, я решил отвести ответам отдельный материал (статью), который (возможно) в скором времени появится на сайте LinuxRSP. Все предложения и замечания принимаются по этому адресу |