CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
24.03.2017

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки

Танцующий Медведь

При всём своём интересе к естествознанию вообще и биологии, в частности, в данном случае речь всё-таки не об этологии медведей, а об использовании SFTP, HTTP и SMB-серверов с файрволами SmoothWall Express 3.0. Этот скромный (по размерам и требованиям к ресурсам) файрвол достаточно хорош в своём качестве, о чём я уже писал раньше здесь и здесь. И — популярен. В узких кругах, по меньшей мере. У меня, например, он работает у двух третей корпоративных клиентов, а это под двадцать машин.

И клиенты, и машины, на которых работает SmoothWall, бывают разные. В офисе с десятком станций и P-III/350/128/1.2G в качестве файрвола, от SmoothWall, обычно, ничего, кроме "заградительных" функций и не требуется. Но рано или поздно рачительный хозяин задумывается: а не может ли машинка (пусть даже лишённая монитора, клавиатуры и мыши, и со стоимостью, стремящейся к нулю) пригодиться для чего-нибудь ещё? Прямо скажем: может.

SFTP

Во-первых, вместе с файрволом в составе SmoothWall вы имеете SFTP-сервер. Заводим специального пользователя:

 $ useradd -m -d /httpd/html/sftp sftp-client
 $ passwd sftp-client 
Комментарий: в данном случае сразу создаётся и домашний каталог пользователя (-m -d /httpd/html/sftp).

Открываем в Networking -> external access 222-й порт (если это не было сделано раньше) и сообщаем заинтересованным лицам, что они могут выкладывать/забирать нужные файлы по протоколу SFTP, порт 222, адрес — в зависимости от того, из локальной сети они обращаются к серверу, или из Интернет, login/password — прилагаются. Благо стараниями FileZilla даже под windows протокол SFTP — доступен.

Есть неудобство: подключающийся к SmoothWall SFTP-клиент будет "видеть" файловую систему файрвола настолько, насколько это позволяют его права доступа. А права у него хоть и не администраторские (так уж существенно навредить файрволу ему вряд ли удастся), но достаточные, чтобы видеть почти всё. Непорядок...

Решений имеется три:

  • про-upgrade-ить OpenSSH в составе SmoothWall. Начиная от версии 4.3-stable OpenSSH обеспечивает chrooted environment (изолированное окружение). Это — правильно, но... не всем под силу. Не Ubuntu, чай. Список репозиториев не прилагается;
  • "расставить" правильные права доступа. Можно, но — утомительно;
  • и, наконец, отказаться от SFTP-доступа снаружи. Это вполне возможно, поскольку на SFTP-сервере "свет клином не сошёлся". Последнее — проще всего.

Если хочется защититься также от любопытства пользователей локальной сети, то можно использовать File Upload MOD V1.0 KrisTof-а. С моими изменениями, если угодно. При наличии трудностей с редактированием текстового файла, можно сразу загрузить вариант fileupload.cgi. Только если ваш разделяемый каталог не /httpd/html/sftp/, то, по крайней мере, его имя отредактировать придётся.

HTTP/HTTPS

Альтернативой SFTP-доступу к каталогу разделяемых файлов файрвола может быть доступ по протоколам HTTP/HTTPS. Разумеется, http-сервер в составе SmoothWall уже есть (через него, собственно, вы с файрволом и общаетесь) и это, конечно, apache.

Интересующим предлагается почитать документацию к apache, а ниже будут перечислены только возможности, которые уже предоставляются http-сервером SmoothWall или требуют минимального изменения конфигурации. Итак...

Как обращаться к web-интерфейсу файрвола из Интернет и локальной сети вы, очевидно, уже знаете. Поскольку DocumentRoot сервера определён в /etc/httpd/conf/httpd.conf как "/httpd/html", то любой его подкаталог может быть доступен по http-запросу. Так, создав каталог /httpd/html/download/ вы можете получить доступ к нему посредством браузера из локальной сети по протоколу http, порт 81 (http://адрес_сервера_в_лок_сети:81/download/) или https, порт 441 (https://адрес_сервера_в_лок_сети:441/download/). Из Интернет же — только по https, порт 441 (https://адрес_сервера_в_инет:441/download/. Разумеется, доступ этот только на чтение.

Возможно, вскоре вы придёте к выводу, что доступ к этому каталогу без пароля — излишество. Доступ к файлам в apache, как известно, задаётся файлами .htaccess. Для начала можно просто скопировать файл /httpd/html/.htacces в каталог, доступ к которому вы собираетесь регламентировать. Простейшее редактирование этого файла сводится к замене в нём имени applet.conf на "звёздочку" (*). Таким образом, файлы мы защищаем "все", а за паролями отправляем к общему для SmoothWall-а файлу паролей (/var/smoothwall/auth/users). Строка 'require user admin', как нетрудно догадаться, предоставляет доступ только admin-у. Заменив её на 'require valid-user', обеспечиваем доступ ещё и пользователю dial (изначально у http-сервера SmoothWall описано только два пользователя: admin и dial).

Этим, однако, необходимые операции не исчерпываются. Чтобы ваш .htaccess "заработал", он должен иметь на это разрешение в форме директивы AllowOverride. А как раз для этой директивы в соответствии с /etc/httpd/conf/httpd.conf для всех, не описанных явно подкаталогов, будем иметь значение None. Поступаем просто: в вышеназванном файле создаём секцию примерно такого вида:

<Directory "/httpd/html/download">
  Options Indexes
  AllowOverride AuthConfig
</Directory>

Хотите иметь больше аутентифицированных пользователей apache? Расширяете соответствующий файл паролей командой htpasswd passwordfile username. Трудности с командной строкой? Отправляемся на страничку Maintance -> passwords и вводим новый пароль для пользователя dial. После чего в файле /var/smoothwall/auth/users, в последней строке, меняем dial на желаемое имя (всё, что до двоеточия — имя). И так столько раз, сколько пользователей хочется иметь: каждый новый ввод пароля для отсутствующего dial — новая строка с паролем.

Этим, разумеется, возможности apache не исчерпываются. Можно организовать на том же сервере несколько виртуальных хостов: сервер обновлений антивирусной программы, CRM-сервер и т.д. и т.п. Только для этого нужно познакомиться с apache уже поближе. Здесь, например.

SMB

Третий из потенциальных партнёров в "танцах" полярного медведя с другими хостами — SMB/CIFS сервер для *-nix систем, известный "в миру" как SAMBA. SMB-протокол, совершенно бесперспективный для Интернет, усилиями MicroSoft таки является наиболее распространённым в локальных сетях. Ну, SAMBA, так SAMBA...

В отличие от двух названных выше, SMB-сервер в состав SmoothWall не входит. Ничто и ранее не мешало загрузить исходники SAMBA с одного из многочисленных зеркал, транслировать их и использовать под SmoothWall. По этому поводу даже существовала подробная инструкция. Но в последнее время проще воспользоваться mod-ой, представленной сообществу Паскалем (Pascal aka nanouk). Искать, как и все прочие mod-ы, нужно среди Express 3.0 HomeBrew Customizations, подробнее — здесь, загружать — отсюда.

За исключением своего беспрецедентного для mod-ы размера (свыше 27 MiB), никаких неожиданностей mod-а не сулит: инсталлируется стандартно, вопросов лишних не задаёт, к использованию готова сразу после инсталляции. Скрипт инсталляции заканчивается предложением создать пользователей и разделяемые ресурсы.

Создание пользователей сводится к добавлению unix-пользователей (с паролями, но без доступа к системе (--shell /sbin/nologin)) и объявлению их же легальными пользователями SAMBA. В принципе, эти два этапа разделяемы. Использование их порознь может потребоваться, если вы, например, захотите объявить легальными пользователями SAMBA уже существующего unix-пользователя. При наличии минимальных познаний в *-nix разобраться в этом не сложно, для неофитов же я посоветовал бы всегда заводить для работы с SMB-сервером новых пользователей и делать это с помощью скрипта /var/smoothwall/mods/samba/phase2.pl. Только так вы будете избавлены от необходимости знакомиться с назначением и структурой файлов, описывающих пользователей хоста и SMB-сервера.

Под созданием разделяемых ресурсов понимается отнюдь не создание соответствующих каталогов, а лишь изменение прав доступа к каталогам уже существующим. Так что если у вас уже есть план создания таких каталогов, то лучше это сделать до запуска инсталляции SAMBA или, по крайней мере, до запуска вышеупомянутого phase2.pl.

При настройке сервера посредством web-интерфейса SmoothWall, не лишним будет хотя бы в общих чертах представлять себе его работу. Так, кнопка save секции Samba global options, лишь приводит промежуточные конфигурационные файлы в соответствие с введёнными данными. Кнопка add share создаёт конфигурационный файл ресурса (но не сам ресурс, а, тем более, соответствующий каталог). Кнопка update каждой секции отдельного ресурса, изменяет конфигурационный файл ресурса в соответствии с введёнными данными. И лишь кнопка save config and restart server формирует окончательные файлы конфигурации, после чего перезапускает SMB-сервер. Таким образом, только нажатие этой кнопки действительно сохраняет новые конфигурационные файлы и делает доступным результат изменения конфигурации.

И всё бы хорошо... Да только SAMBA имеет много больше возможностей конфигурирования, чем предоставляет web-интерфейс Паскаля. Достаточно сказать, что стандартный SWAT (SAMBA Web Administration Tool), имеет раз в пять больше редактируемых позиций. Сам по себе протокол SMB/CIFS не так уж прост (не его вина, что абсолютное большинство пользователей windows не имеют об этом представления), и в исполнении создателей SAMBA проще он не стал. На основании одного и того же протокола MS Windows по умолчанию предлагает настройки сети, устраивающие некомпетентного пользователя, а SAMBA — нет. Собственно, ни о каких настройках SAMBA "по умолчанию" речь вообще не идёт. Настройки "по умолчанию" — этот просто тот вариант smb.conf, который авторы дистрибутива или пакета посчитали наиболее приемлемым.

Вот, и мои представления о том, каким должен быть smb.conf, несколько разошлись с представлениями Паскаля. Казалось бы: ничего страшного. Web-интерфейс предоставляет возможность непосредственного редактирования smb.conf... Если бы упомянутые выше кнопки save и save config and restart server не переписывали smb.conf "начисто", прчём: исключительно в соответствии с замыслом Паскаля. Столкнувшись пару раз с таким "несанкционированным" сохранением конфигурации (выполненным моими же коллегами), я был вынужден написать update mod-ы. Доработки сводятся к двум моментам:

  • кнопки save и save config and restart server изменяют только параметры smb.conf, вынесенные в web-интерфейс;
  • вводится кнопка sync config files, выполняющая операцию, обратную сохранению: значения параметров smb.conf и файлов описания разделяемых ресурсов присваиваются соответствующим полям формы web-интерфейса. Последнее мне потребовалось в связи с тем, что переписать конфигурационные файлы бывает подчас много проще, чем исправить несколько десятков полей формы.

Изменённая mod-а сюрпризов больше не преподносила: ключевые параметры конфигурации оставались неизменными, а местный администратор получил возможность менять Workgroup, Netbios name и Server string хоть каждый час. Описание изменений было приведено здесь, а загрузить предлагаемый update можно отсюда.

smb.conf

Выслушав мнение Паскаля о том, каким должен быть smb.conf, я согласился, что для большинства "домашних" пользователей SmoothWall, его вариант является вполне приемлемым. Меня же больше заботили пользователи преимущественно небольших офисов. Их потребности обычно сводятся к трём типам разделяемых ресурсов:

  • общий ресурс, открытый для записи/чтения. Так называемый "файлообменник";
  • общий ресурс, открытый только для чтения. Обычно "Install";
  • индивидуальные ресурсы пользователей, открытые только их хозяевам, администратору или ограниченному списку пользователей.

Поскольку для первых двух желателен доступ без пароля, то необходимыми параметрами smb.conf становятся следующие:

map to guest = bad user
guest account = nobody
guest ok = yes

В переводе на "человеческий" это означает, что всякий пользователь, не прошедший аутентификацию, будет рассматриваться как guest. В системе ему будет соответствовать учётная запись nobody (учётной записи guest в Linux, обычно, не существует), и, по умолчанию, доступ к разделяемым ресурсам для этого самого guest — разрешён.

Ещё два параметра обеспечивают "читабельность" в консоли Lunux имён файлов и каталогов, набранных в windows в кириллице:

unix charset = koi8-r
dos charset = 866

При этом предполагается, что консоль Linux (у меня в 100% случаев это удалённая консоль) работает в кодировке koi8-r. Не забудьте позаботиться о том, чтобы ваши xterm, rxvt или putty так и были настроены.

Не трудно заметить, что ни один из перечисленных параметров в smb.conf Паскаля не фигурировал.

Все остальные параметры либо соответствуют заданным Паскалем "по умолчанию", либо отражают настройки конкретной локальной сети. В целом файл smb.conf выглядит следующим образом:

[global]
load printers = no
dns proxy = yes
wins support = no
time server = no
encrypt passwords = yes
server string = SAMBA
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
workgroup = OFFICE
netbios name = SmoothWall
unix charset = koi8-r
dos charset = 866
security = user
guest ok = yes
guest account = nobody
map to guest = bad user
max log size = 5000
lock directory = /var/lock/samba
domain master = auto
local master = yes
preferred master = yes
os level = 20
interfaces = 127.0.0., 192.168.0.1/24

include = /var/smoothwall/mods/samba/etc/smb.conf.admin include = /var/smoothwall/mods/samba/etc/smb.conf.commonrw include = /var/smoothwall/mods/samba/etc/smb.conf.commonro include = /var/smoothwall/mods/samba/etc/smb.conf.user1

Как видим, для описания настроек ресурсов в данном случае используются директивы include, появившиеся в SAMBA 3.X. Это значит, что каждый из ресурсов конфигурируется отдельным файлом. Файл smb.conf.admin, например, выглядит следующим образом:

[admin]
path = /home
comment = Admin Share
available = yes
max connections = 0
valid users = smb-admin
browseable = yes
read list = smb-admin
write list = smb-admin
read only = no
Назначение параметров path и comment — очевидно. Наличие параметра 'valid users' делает ресурс недоступным для guest (доступным только для smb-admin в данном случае). Параметры 'read list', 'write list' и 'read only' определяют способ доступа.

Для ресурса "запись/чтение всем" (файл smb.conf.commonrw) излишними будут параметры 'valid users', 'read list', 'write list', но рекомендуется параметр 'force user', т.к. учётная запись nobody, под которой действует наш guest — не лучшая для выполнения операций записи. Общий вид файла следующий:

[Пересылка]
path = /home/FileExchange
comment = Read Write dir
available = yes
max connections = 0
browseable = yes
read only = no
force user = smb-admin

Файл smb.conf.commonro, конфигурирующий ресурс "только чтение всем" — самый маленький. От предыдущего он отличается тем, что параметр 'force user' не требуется (nobody с чтением справляется вполне успешно), а параметр'read only' имеет значение yes.

Файл smb.conf.user1, конфигурирующий индивидуальный ресурс пользователя user1, отличается от файла smb.conf.admin только тем, что path указывает на каталог /home/user1, а в параметрах 'read list' и 'write list' указан не smb-admin, а user1.

Всё, сказанное выше в связи с smb.conf, вполне соответствует только SAMBA 3.X. Вообще, описывать конфигурацию SAMBA — неблагодарное занятие. Большая часть материалов в Сети написаны для версий 2.X. Они ещё не вытеснены материалами, учитывающими особенности версий 3.Х, а на подходе уже 4.0. Так что, "ты — проверяй, какого полу твой сосед", как справедливо отметил Владимир Высоцкий.

Всё, собственно.

Экспериментируя с подключением к разным ресурсам одного сервера с одной win-станции, не забывайте, что после первого подключения, имя пользователя, прошедшего аутентификацию, будет использоваться при всех последующих попытках. Прежде чем подключаться к какому-либо ресурсу под другим именем пользователя, сначала разорвите соединение с предыдущим ресурсом. Например, с помощью команды net use * /delete. Добро пожаловать в мир windows: мир ничем не обоснованных ограничений.




Комментарии

rest-less, Sun May 10 19:59:03 2009:
почему бы не рассказать как обстоит дело с php/mysql? или с квотированием траффика ?
Dilemma, Fri May 8 13:31:38 2009:
Спасиьо, немного проясняется ,я не волшебница,а только учусь :)

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds