WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Крупные организации часто используют много разных операционных систем, и
им нужно объединять их в сеть для совместного использования файлов и
принтеров. Работники могут работать на рабочих станциях Linux, Microsoft
Windows 95/98/NT, OS/2 или Novel, и им необходим доступ к серверам для
повседневной работы. Linux-сервер с поддержкой Samba может быть использован
для этих целей. Samba это надежный сетевой сервис для организации совместного
использования файлов и принтеров, который работает на большинстве
операционных систем доступных сегодня. Когда он хорошо настроен
администратором, это более быстрый и безопасный файловый сервис, чем родная
реализация на машинах Microsoft Windows. Как описано в файле README для Samba: Samba это протокол, при помощи которого на большинстве PC-машин совместно
используются файлы, принтеры и другая информация такая, как списки доступных
файлов и принтеров. Встроенную поддержку этого протокола имеют Windows
95/98/NT, OS/2 и Linux, а с помощью дополнительного пакета DOS, Windows, VMS,
Unix всех других видов, MVS и многие другие. Apple Mac и некоторые
веб-браузеры также понимают его. Альтернативу SMB составляют Netware, NFS,
AppleTalk, Banyan Vines, Decnet и др., многие из них имеют большие
возможности, но ни один не имеет общедоступной спецификации и широкой
реализации на настольных машинах. Программное обеспечение Samba включает
SMB-сервер, предоставляющий файловый и принтерный сервис в стиле Windows NT и
LAN Manager SMB-клиентам (Windows 95, Warp Server, smbfs и др), NetBIOS
(rfc1001/1002) сервер имен, который среди многих других вещей, дает
возможность ftp-подобного просмотра ресурсов (дисков и принтеров) из Unix,
Netware и других ОС, и расширение tar для клиентов для
резервного копирования PC. Эти инструкции предполагают. Пакеты. Архивы. После инсталляции:
Для получения списка установленных файлов:
Раскройте архив:
Перейдите в каталог Samba, а затем в подкаталог source. Шаг 1.
Редактируйте файл smbsh.in (vi +3 smbwrapper/smbsh.in) и измените строку:
Это изменит месторасположение каталога lib Samba под каталог /usr/bin. Шаг 2.
Редактируйте файл Makefile.in (vi +28 Makefile.in) и измените строки:
Эти изменения определят каталог /usr/sbin для двоичных файлов Samba, и
каталог /var для файлов регистрации Samba (/var/log/samba). Шаг 3.
Редактируйте файл convert_smbpasswd (vi +10 script/convert_smbpasswd) и
измените в нем строку:
Это изменение определит использование версии GNU Linux утилиты обработки
текста awk, основанной на Bell Labs research версии программы awk
для программы smbpasswd. Шаг 4.
Редактируйте файл smbmount.c (vi +98 client/smbmount.c) и измените строку:
Этот шаг сделает файл smbmount.c совместимым с библиотекой
Red Hat glibc 2.1. Шаг 1.
Введите следующие команды на Вашем терминале:
ЗАМЕЧАНИЕ Опция --with-mmap может улучшить производительность на
некоторых машинах, на других ничего не изменится, ну а на третьих
она может упасть. Эти опции говорят Samba:
Шаг 2.
Сейчас мы должны инсталлировать Samba на нашем Linux-сервере:
Команда install инсталлирует скрипт mksmbpasswd.sh в каталог /usr/bin.
Этот скрипт нужен, чтобы пользователи Samba могли подключаться к серверу,
используя файл smbpasswd. О том, как использовать пароли Samba, читайте
дальше в этой книге. Команда rm удалит каталог /usr/share/swat и все файлы в нем, также она
удалит исполняемый файл swat из каталога /usr/sbin. SWAT это конфигурационная
утилита, имеющая веб-интерфейс, которая позволяет настраивать файл smb.conf
из веб-браузера. Она может открыть брешь в безопасности Вашего сервера
, поэтому я рекомендую удалить ее. Команда mkdir создаст каталог
/var/spool/samba, который используется при печати на принтере. Конечно, он
необходим, если Вы планируете использовать Samba для предоставление принтера
в совместное использование. Так как мы не настраиваем наш сервер Samba на
предоставление сервиса печати, нам не нужен этот каталог (/var/spool/samba),
и соответственно нет необходимости в команде chmod, устанавливающей
sticky-бит для /var/spool/samba, чтобы только владелец файла мог удалить
его из каталога. Команда rm будет удалять все файлы с исходными кодами, которые мы
использовали при компиляции и инсталляции Samba. Также будет удален
сжатый архив Samba из каталога /var/tmp. Конфигурационный файл для разных сервисов очень специфичен и сильно
зависит от того, что Вам нужно. Некоторые хотят инсталлировать сервер Samba,
рассчитывая на одно клиентское соединение, а некоторые на тысячу. Все
программное обеспечение, описанное в книге, имеет определенный каталог и
подкаталог в архиве floppy.tgz, включающем все конфигурационные файлы для
всех программ. Если Вы скачаете этот файл, то Вам не нужно будет вручную
воспроизводить файлы из книги, чтобы создать свои файлы конфигурации.
Скопируйте файлы, связанные с Samba, из архива, измените их под свои
требования и поместите в нужное место так, как это описано ниже. Файл с
конфигурациями Вы можете скачать с адреса:
http://www.openna.com/books/floppy.tgz. Для запуска веб-сервера Apache следующие файлы должны быть созданы или
скопированы на Ваш сервер. Копируйте файлы smb.conf и lmhosts в каталог /etc. Вы можете взять эти файлы из архива floppy.tgz. Файл /etc/smb.conf это основной конфигурационный файл сервера Samba, в
котором Вы можете определить каталоги, к которым предоставляете доступ, с
каких IP-адресов разрешен доступ и пр. Первые несколько строк в секции
[global] содержат глобальные конфигурационные директивы, которые являются
общими для всех разделяемых ресурсов (пока они не переписаны в конкретных
секциях для каждого ресурса), далее идут секции, отвечающие за конкретные
ресурсы. Существует множество опций, и нужно обязательно прочитать
документацию, поставляемую вместе с Samba, чтобы получить информацию о
каждой из них. Следующий пример представляет из себя минимальную рабочую конфигурацию для
Samba с поддержкой шифрованных паролей. Также, замечу, что мы прокомментируем
только те параметры, которые связаны с безопасностью и оптимизацией, а
остальные оставим для Вашего собственного последующего изучения. В нашем примере, мы создаем только один каталог, [tmp], и позволяем доступ
только машинам с IP-адресами из диапазона класса C. Также мы не
используем сервис печати. Редактируйте файл smb.conf (vi /etc/smb.conf) и
добавьте/измените следующие параметры:
Эта опции говорят Samba следующее:
workgroup = OPENNA server string = R&D of Open Network Architecture Samba Server encrypt passwords = True security = user smb passwd file = /etc/smbpasswd log file = /var/log/samba/log.%m socket options = IPTOS_LOWDELAY TCP_NODELAY domain master = Yes local master = Yes preferred master = Yes os level = 65 dns proxy = No name resolve order = lmhosts host bcast bind interfaces only = True interfaces = eth0 192.168.1.1 hosts deny = ALL hosts allow = 192.168.1.4 127.0.0.1 debug level = 1 create mask = 0644 directory mask = 0755 level2 oplocks = True read raw = no write cache size = 262144 [tmp] comment = Temporary File Space path = /tmp read only = No valid users = admin invalid users = root bin daemon nobody named sys tty disk
mem kmem users Настроим файл /etc/lmhosts. Он содержит соответствия между Samba Net BIOS
именами и IP-адресами. По формату этот файл подобен /etc/hosts, за
исключением того, что компоненты имени хоста соответствуют формату
имен Net BIOS. Создадим файл lmhosts (touch /etc/lmhosts) и внесем в
него клиентские компьютеры:
В нашем примере lmhots содержит три соответствия между IP и Net BIOS
именами. localhost (127.0.0.1), клиент с именем deep (192.168.1.1) и
клиент с именем win (192.168.1.4). Настроим файл /etc/pam.d/samba для использования pam-аутентификации.
Создайте файл samba (touch /etc/pam.d/samba) и добавьте в
него следующие строки:
Сконфигурируем файл /etc/logrotate.d/samba на автоматическую еженедельную
ротацию Ваших файлов регистрации. Создайте файл samba (touch
/etc/logrotate.d/samba) и добавьте в него следующие строки:
В файле /etc/smbpasswd хранятся шифрованные пароли Samba. Он хранит имя
пользователя, Unix UID, хешированный пароль SMB, информационный флаг учетной
записи и время последнего изменения пароля. Важно создать этот файл с
паролями и включить в него всех пользователей до того, как они будут
подключаться к Вашему серверу Samba. Без этого никто
не сможет подключиться к нему. Шаг 1.
Для создания учетной записи Samba, Вы должны, для начала, завести
пользователя Linux. Поэтому, вначале, создайте в файле /etc/passwd всех
пользователей, которые должны подключаться к серверу Samba. Добавьте нового
пользователя в файл /etc/passwd, используя следующую команду:
Определите пароль для этого пользователя, используя команду:
Шаг 2.
После того, как Вы внесли всех пользователей в файл /etc/passwd, Вы можете
создать файл smbpasswd, используя /etc/passwd. Для этого
введите следующую команду:
Шаг 3.
В заключении, на последнем шаге, мы должны создать пользователя в нашем
файле /etc/smbpasswd. Для создания учетной записи пользователя Samba:
Шаг 4.
Не забудьте изменить права доступа к Вашему новому файлу smbpasswd на
чтение-запись только для пользователя root (0600/-rw-------). Это делается
из соображения безопасности:
ЗАМЕЧАНИЕ. Смотрите файл ENCRYPTION.txt, находящийся в дистрибутиве
Samba в каталоге /doc/texts, для сбора большей информации. Настроим скрипт /etc/rc.d/init.d/smb, который отвечает за запуск и
остановку демонов Samba smbd и nmbd. Создайте скрипт smb (touch
/etc/rc.d/init.d/smb) и добавьте в него следующие строки:
Сейчас мы должны сделать этот скрипт исполняемым и изменить
права доступа к нему:
Создадим символическую ссылку в rc.d для Samba:
Скрипт Samba не будет автоматически стартовать демоны smbd и nmbd, когда
система перезагружена. Чтобы изменить это, выполните следующую команду:
Запустите сервер Samba вручную:
Бит постоянства используется для предотвращения случайного удаления или
переписывания файлов, которые защищаются. Он также не дает создавать
символические ссылки к этим файлам. Так как файлы smb.conf и lmhosts уже
настроены, хорошей идеей будет иммунизировать их:
Большой ошибкой будет установить параметр wide links в no в
конфигурационном файле Samba /etc/smb.conf. Эта опция, если установлена в
no, говорит Samba не следовать по символическим ссылкам вне экспортируемой
области. Чтобы определить, находится ли ссылка вне области, Samba следует по
символической ссылке, а затем выполняет directory path lookup, чтобы
определить, где на файловой системе символическая ссылка завершилась. Эта
операция добавляет шесть дополнительных системных вызовов на каждый файловый
lookup, а Samba просматривает имена файлов очень много раз. Тесты, которые
были опубликованы, показали, что установка этого параметра снижает
производительность Samba-сервера на 25-30 процентов. Настройка кэша буфера.
Модификация параметров, влияющих на настройку кэша файловой системы, может
значительно улучшить производительность файлового сервера Linux. Linux будет
пытаться использовать память, не используемую для других целей, для
кэширования файловой системы. Специальный демон, называемый bdflush, будет
периодически сбрасывать на диск содержимое "грязных" буферов (буфер, который
содержит модифицированные данные файловой системы или метаданные). Секрет хорошей производительности это сохранение в памяти так много
данных, как это возможно. Запись на диск является самой медленной операцией
при работе с любой файловой системой. Как и с большинством настраиваемых
параметров ядра, Вы можете изменять эти опции на лету, при помощи
специальных файлов /proc. Параметры по умолчанию для bdflush под Red Hat Linux:
Чтобы изменить значения bdflush, введите следующие
команды на Вашем терминале: Вы должны добавить вышеприведенную команду в скрипт /etc/rc.d/rc.local,
чтобы она выполнялась при каждой загрузке компьютера автоматически. Под Red Hat Linux 6.2 Вы должны перезагрузить сетевые настройки, чтобы изменения вступили в силу:
Эта строка говорит bdflush не беспокоиться о записи грязных блоков на
диск, пока кэш буферов файловой системы не заполнится на 80 процентов. Другое
значение определяют максимальное количество грязных буферов, которое может
быть записано за одну операцию (500), как долго разрешается грязному буферу
существовать (60*HZ) и т. д. Полное описание всех параметров Вы можете найти
в документации, поставляемой вместе с ядром 2.2, в файле
linux/Documentation/sysctl/vm.txt, и также, Вы можете прочитать главу 4,
"Общая системная оптимизация" этой книги. Настройка buffermem.
Другая полезная настройка должна сообщить Linux следующее: использовать
минимум 60 процентов памяти для кэширования буферов, сокращать только когда
процент используемой памяти для кэша буферов преодолеет 10 процентов (этот
параметр сейчас не используется), и позволять расти до 60 процентов всей
памяти (этот параметр сейчас тоже не используется). По умолчанию значения, установленные для buffermem в Red Hat Linux, равны:
Чтобы изменить значения buffermem, введите следующую команду
на Вашем терминале: Вы должны добавить вышеприведенную команду в скрипт /etc/rc.d/rc.local,
чтобы она выполнялась при каждой загрузке компьютера автоматически. Полное
описание всех параметров Вы можете найти в документации, поставляемой вместе
с ядром 2.2, в файле linux/Documentation/sysctl/vm.txt, и также, Вы можете
прочитать главу 4, "Общая системная
оптимизация" этой книги. Под Red Hat Linux 6.2 Вы должны перезагрузить сетевые настройки, чтобы
изменения вступили в силу:
Напоминаем, что последние два параметра (10 и 60) сейчас не используются,
поэтому мы не будем их изменять. Для получения большей информации Вы можете прочитать
следующие страницы руководства: $ man Samba (7) Файл-сервер Windows SMB/CIFS для UNIX Команды, описанные ниже, мы будем часто использовать, но на самом деле их
много больше, и Вы должны изучить страницы руководства (man) и документацию,
чтобы получить более подробную информацию. Утилита smbstatus это очень простая программа, показывающая
текущие соединения Samba:
Команды, описанные ниже, мы будем часто использовать, но на самом деле их
много больше, и Вы должны изучить страницы руководства (man) и документацию,
чтобы получить более подробную информацию. smbclient
Утилита smbclient работает подобно ftp-программам, но для Samba. Эта
небольшая программа позволяет Вам забирать файлы с сервера на локальную
машину, перекладывать файлы с локальной машины на сервер, передавать
информацию о каталогах с сервера и пр. Для соединения с Windows-машиной при помощи утилиты
smbclient, используйте команду:
где //sbmserver это имя сервера, к которому Вы хотите подключиться.
/sharename каталог на этом сервере, а smbclient это имя пользователя, под
которым Вы подключаетесь к серверу. Краткий обзор.
Несмотря на прошедшие годы, использование File Transfer Protocol (FTP)
является одним из самых популярных способов пересылки файлов с одной машины
на другую через сеть. Клиенты и серверы написаны для каждой из популярных
платформ, присутствующих на рынке, делая таким образом FTP наиболее удобным
способом пересылки файлов. Существует много различных путей настройки Вашего FTP-сервера. Один из них
приватный, только для пользователей системы, который является конфигурацией
по умолчанию FTP-сервера: приватный FTP-сервер позволяет пользователям
Linux-системы соединяться с сервером по протоколу FTP и получать
доступ к их файлам. Другой тип ftp сервера: анонимный FTP. Такой сервер позволяет кому угодно
соединяться с сервером и передавать файлы без получения учетной записи. Из-за
потенциального риска безопасности системы, должны быть приняты меры, чтобы
позволить доступ только к определенным каталогам системы. Конфигурация, которую мы охватываем здесь, предоставляет
FTP-полубезопасную область файловой системы (chroot, гостевой FTP-доступ).
Она позволит пользователю получить доступ к каталогу FTP-сервера, при этом он
не сможет перейти на более высокий уровень. Это наиболее безопасная
конфигурация для FTP-сервера. Эти инструкции предполагают. Пакеты. Раскройте архив: Перейдите в новый каталог Wu-ftpd и введите следующие команды
на Вашем терминале:
Шаг 1.
Редактируйте файл ftpcount.c (vi +241 src/ftpcount.c) и измените строку:
Шаг 2.
Редактируйте файл pathnames.h.in (vi +42 src/pathnames.h.in) и
измените в нем строку:
Мы изменили каталог /bin/ftp-exec на /usr/bin/ftp-exec для Red Hat Linux.
Шаг 3.
Введите следующие команды на Вашем терминале для конфигурирования Wu-ftpd:
Эти опции означают следующее:
Шаг 4.
Сейчас мы должны инсталлировать Wu-ftpd на Linux-сервер:
Команды make и make install настроят программное обеспечение под Вашу
систему и проверят ее функциональность на наличие необходимых библиотек,
скомпилируют все файлы с исходными кодами в исполняемые двоичные программы и
проинсталлируют их вместе с сопутствующими файлами в необходимые места. Команда install -m будет инсталлировать программу xferstats, используемую
для просмотра информации о переданных файлах. Команда touch создаст файл
регистрации для xferstats в каталоге /var/log. chmod изменит права доступа к
файлу xferlog на чтение-запись только пользователю root. Затем, мы создаем
символическую ссылку для исполняемого файла in.ftpd, и, в заключение, удаляем
отладочную информацию из всех исполняемых файлов, относящихся к Wu-ftpd. Команда rm будет удалять все файлы с исходными кодами, которые мы
использовали при компиляции и инсталляции Wu-ftpd. Также будет удален
сжатый архив Wu-ftpd из каталога /var/tmp. Чрезвычайно важно, чтобы Ваши пользователи FTP не имели реального
командного процессора. В этом случае, если они по каким-либо причинам смогут
покинуть chroot-окружение FTP, то не смогут выполнить никаких задач, так как
не имеют командного процессора. Первое, создайте нового пользователя, которому Вы планируете разрешить
подключаться к Вашему FTP-серверу. Это должна быть учетная запись независимая
от регулярно используемых, в связи с особенностями работы chroot-окружения.
Chroot создаст пользователю ощущение, будто каталог, в который его поместили,
находится на самом верху файловой системы. Шаг 1.
Используйте следующие команды для создания пользователя в файле
/etc/passwd. Этот шаг должен выполняться для каждого пользователя, кому
нужен доступ к FTP-серверу:
Команда mkdir создаст каталог ftp в /home для хранения всех домашних
каталогов FTP-пользователей. Команда useradd добавит нового пользователя с
именем ftpadmin в Вашей системе. В заключение, команда passwd установит
пароль для него. После того, как каталог /home/ftp создан, Вам не нужно
будет создавать его для каждого нового пользователя. Шаг 2.
Редактируйте файл /etc/shells (vi /etc/shells) и добавьте в него
несуществующий командный процессор, например, null. Этот ложный shell
ограничит доступ FTP-пользователям к системе:
ЗАМЕЧАНИЕ. В Red Hat Linux специальное имя устройства (/dev/null)
существует для подобных целей. Шаг 3.
Сейчас редактируйте Ваш файл /etc/passwd и вручную добавьте подстроку /./,
разделяющую каталоги /home/ftp и /ftpadmin, где ftpadmin должен автоматически
изменить каталог. Этот шаг должен быть выполнен для каждого FTP-пользователя,
добавляемого в файл passwd. Редактируйте файл passwd (vi /etc/passwd) и добавьте/измените строку
для пользователя ftpadmin:
Обратите внимание, что путь к домашнему каталогу пользователя ftpadmin
немного нечеткий. Первая часть /home/ftp показывает файловую систему, которая
должна стать новый корневым каталогом. Разделяющая точка . говорит, что из
текущего каталога необходимо автоматически переходить в /ftpadmin. Еще раз
отметим, что часть /dev/null отключает вход в систему как регулярного
пользователя. С этим изменением пользователь ftpadmin имеет ложный командный
процессор вместо реального, тем самым имея ограничения в доступе к системе.
Далее Вы должны создать основу корневой файловой системы с достаточным
количеством необходимых компонентов (исполняемые файлы, файлы парлей и т.д.),
чтобы позволить Unix выполнить chroot, когда пользователь входит в систему.
Заметим, что если Вы использовали опцию --enable-ls во время компиляции, как
мы предлагали выше, то каталоги /home/ftp/bin и /home/ftp/lib не нужны, так
как Wu-ftpd будет использовать собственную функцию ls. Мы остановимся на
демонстрации старого метода, при котором люди копируют /bin/ls в chroot
FTP-каталог (/home/ftp/bin) и создают соответствующие
библиотеки, связанные с ls. Необходимо выполнить следующие шаги, чтобы запустить
Wu-ftpd в chroot-окружении:
Шаг 1.
Создадим все каталоги chroot-окружения:
Шаг 2.
Измените права доступа к новым каталогам на 0511
из соображений безопасности:
Команда chmod изменит права доступа к chroot-каталогам dev, etc, bin и lib
на чтение и исполнение для root и исполнение для группы и
всех остальных пользователей. Шаг 3.
Копируйте исполняемый файл /bin/ls в каталог /home/ftp/bin и измените
права доступа к нему на 0111 (Вы не хотите позволять пользователям
модифицировать этот файл):
ЗАМЕЧАНИЕ. Этот шаг необходим только, если Вы не использовали при
конфигурировании опцию --enable-ls. Смотрите секцию "Компиляция и
оптимизация" в этой главе. Шаг 4.
Найдите разделяемые библиотеки, от которых зависит программа ls:
Копируйте их в новый каталог lib, расположенный в /home/ftp:
ЗАМЕЧНИЕ. Эти библиотеки нужны для работы команды ls. Также, как и
шаг 3, это необходимо сделать, если Вы во время конфигурирования Wu-ftpd не
указали опцию --enable-ls для использования внутренней команды ls. Шаг 5.
Создайте файл /home/ftp/dev/null:
Шаг 6.
Копируйте файлы group и passwd в каталог /home/ftp/etc. Они не должны быть
такими же, как оригиналы. Мы удалим из них всех не
FTP-пользователей, исключая root:
Редактируйте файл passwd (vi /home/ftp/etc/passwd) и удалите из него все
элементы, кроме root и Ваших FTP-пользователей. Файл должен
иметь следующий вид:
ЗАМЕЧАНИЕ. Мы отметим здесь две вещи: первое, домашний каталог всех
пользователей был изменен (например, /home/ftp/./ftpadmin на /ftpadmin), и
второе, командный процессор для пользователя root был изменен на /dev/null.
Редактируйте файл group (vi /home/ftp/etc/group) и удалите все элементы,
исключая root и всех FTP-пользователей. Файл group должен соответствовать
Вашему нормальному файлу групп:
Шаг 7.
Сейчас мы должны иммунизировать файлы passwd и group,
находящиеся в chroot-окружении. Установим бит постоянства на файл passwd:
Установим бит постоянства на файл group:
Все программное обеспечение, описанное в книге, имеет определенный каталог
и подкаталог в архиве floppy.tgz, включающем все конфигурационные файлы для
всех программ. Если Вы скачаете этот файл, то Вам не нужно будет вручную
воспроизводить файлы из книги, чтобы создать свои файлы конфигурации.
Скопируйте файлы, связанные с Wu-ftpd, из архива, измените их под свои
требования и поместите в нужное место так, как это описано ниже. Файл с
конфигурациями Вы можете скачать с адреса:
http://www.openna.com/books/floppy.tgz. Для запуска ftp-сервера следующие файлы должны быть созданы или
скопированы на Ваш сервер. Копируйте файлы ftpaccess в каталог /etc. Вы можете взять эти файлы из архива floppy.tgz. Файл /etc/ftpaccess это основной конфигурационный файл, используемый для
конфигурирования сервера Wu-ftpd. Этот файл первоначально предназначен для
определения того, какие пользователи, сколько пользователей, могут получить
доступ к Вашему серверу, и прочих важных элементов
настройки безопасности сервера. Шаг 1.
Редактируйте файл ftpaccess (vi /etc/ftpaccess) и добавьте/измените
в нем следующие строки:
Шаг 2.
Сейчас мы должны изменить права доступа на 600:
Эти параметры конфигурационного файла говорят следующее:
class openna guest 208.164.186.* limit openna 20 MoTuWeTh,Fr0000-1800 /home/ftp/.too_many.msg loginfails 3 readme README* login message /home/ftp/.welcome.msg login compress yes all log commands real,guest log transfers real,guest inbound,outbound guestgroup ftpadmin log security real,guest guest-root /home/ftp ftpadmin webmaster greeting terse keepalive yes Файл /etc/ftphosts используется для определения следующего: может ли
пользователь входить в систему с определенной машины или ему
будет запрещен доступ. Шаг 1.
Создайте файл ftphosts (touch /etc/ftphosts) и добавьте, например, в
него следующие строки:
В нашем примере мы разрешаем пользователю ftpadmin соединяться с
FTP-сервером из явно заданного списка адресов 208.164.186.1 208.164.186.2
208.164.186.4, и запрещаем пользователю ftpadmin соединяться с сервера
208.164.186.5. Шаг 2.
Измените права доступа на 600:
Файл /etc/ftpusers определяет пользователей, которым не разрешен доступ
на FTP-сервер. Шаг 1.
Создайте файл ftpusers (touch /etc/ftpusers) и добавьте в
него следующих пользователей:
Шаг 2.
Измените права доступа к файлу на 600:
Файл /etc/ftpconversions содержит инструкции, которые разрешают Вам по
требованию сжимать файлы перед пересылкой. Шаг 1.
Редактируйте файл ftpconversions (vi /etc/ftpconversions) и добавьте в
него следующие строки:
Шаг 2.
Измените права доступа на 600:
Сконфигурируйте файл /etc/pam.d/ftp для использования pam-аутентификации.
Создайте файл ftp (touch /etc/pam.d/ftp) и добавьте в
него следующие строки:
Настройте файл /etc/logrotate.d/ftpd на автоматическую ротацию файлов
регистрации каждую неделю. Создайте файл ftpd (touch /etc/logrotate.d/ftpd) и добавьте в
него следующие строки:
Tcp-wrappers должен быть включен на запуск и остановку ftpd-сервера. inetd
читает настроечную информацию из своего конфигурационного файла
/etc/inetd.conf. Для каждого поля этого файла должно обязательно
присутствовать его значение, поля разделяются пробелами
или символами табуляции. Шаг 1.
Редактируйте файл inetd.conf (vi /etc/inetd.conf) и добавьте или проверьте
на наличие следующие строки:
Чтобы изменения вступили в силу, пошлите демону inetd сигнал SIGHUP,
используя следующую команду:
Шаг 2.
Редактируйте файл hosts.allow (vi /etc/hosts.allow) и добавьте,
например, следующую строку:
Которая говорит, что клиенту с IP-адресом 192.168.1.4 и именем хоста
win.openna.com разрешен FTP-доступ на сервер. Программа ftpwho выводит всех активных пользователей ftp, и их текущие
процессы в системе. Выходные данные выдаются в формате, напоминающем
команду /bin/ps. Здесь Вы видите, что к системе подключен один пользователь с именем
ftpadmin, пришедший с хоста win.openna.com. Всего к серверу может
подключиться до 20 пользователей. Утилита ftpcount это упрощенная версия ftpwho. Она показывает только
количество пользователей, подключенных к системе в данный момент, и общее
количество, которое может подключиться:
Важно удостовериться, что Вы настроили файл /etc/ftpusers. В нем
определяются пользователи, которым не разрешено соединяться с Вашим
FTP-сервером. В него должны быть включены, как минимум, следующие
пользователи: root, bin, daemon, adm, lp, sync, shutdown, halt, mail, news,
uucp, operator, games, nobody и ВСЕ другие определенные по
умолчанию пользователи, доступные в Вашем файле /etc/passwd. Для отключения анонимного FTP, удалите пользователя ftp из Вашего файла
паролей и проверьте, что пакет anonftp-version.i386.rpm не инсталлирован.
Для удаления пользователя ftp выполните следующую команду:
Для проверки, что RPM пакет анонимного FTP не инсталлирован у Вас на
системе выполните следующую команду:
По умолчанию сервер Wu-ftpd разрешает upload всем пользователям. Параметр
upload позволяет удаленным пользователям загружать и размещать файлы на
FTP-сервере. Для оптимальной безопасности, мы не хотим разрешать
пользователям загружать файлы в подкаталоги bin, etc, dev и lib каталога
/home/ftp. В нашем файле /etc/ftpaccess мы уже сменили корневой каталог
(chroot) пользователей на /home/ftp, и поэтому они не имеют доступа к
другим областям файловой системы. Редактируйте файл ftpaccess (vi /etc/ftpaccess) и добавьте следующие
строки, которые запретят upload в определенные области:
Вышеприведенные строки запрещают upload в подкаталоги /, /etc, /dev, /bin
и /lib chroot-каталога /home/ftp. Хотите ли Вы разрешать упаковывать командой tar каталоги или нет, Вы
должны сделать так, чтобы нельзя было выполнить команду tar в областях,
где запрещен upload. Шаг 1.
Чтобы сделать это, создайте специальный файл .notar в каждом каталоге FTP:
Шаг 2.
Файл нулевой длины .notar может привести в замешательство некоторые
веб-клиенты и FTP-прокси, чтобы решить эту проблему, надо запретить
пересылку этого файла. Редактируйте файл ftpaccess (vi /etc/ftpaccess) и добавьте следующую
строку, чтобы промаркировать файл .notar как непересылаемый:
Параметр noretrieve сервера Wu-ftpd позволяет Вам запретить пересылку
выбранных каталогов или файлов. Хорошей идеей будет предотвращение передачи
некоторых подкаталогов (bin, etc, dev и lib) из каталога /home/ftp при помощи
команды noretrieve в файле /etc/ftpaccess. Редактируйте файл ftpaccess (vi
/etc/ftpaccess) и добавьте следующие строки для предотвращения
передачи ряда каталогов:
Глава 21. Серверное программное обеспечение (файловый сервис)
Linux Samba сервер
Краткий обзор.
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
Samba версии 2.0.7.
Домашняя страница Samba:
http://us1.samba.org/samba/samba.html,
FTP-сервер Samba: 63.238.153.11,
Вы должны скачать: samba-2.0.7.tar.gz.
Хорошей идеей будет создать список файлов, установленных в Вашей системе до
инсталляции Samba и после, в результате, с помощью утилиты diff, Вы сможете
узнать, какие файлы были установлены. Например, до инсталляции:
find /* > Samba1
find /* > Samba2
diff Samba1 Samba2 > Samba-Installed
[root@deep /]# cp samba-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf samba-version.tar.gz
Конфигурирование
SMBW_LIBDIR=${SMBW_LIBDIR-@builddir@/smbwrapper}
на:
SMBW_LIBDIR=${SMBW_LIBDIR-/usr/bin}
SBINDIR = @bindir@
На:
SBINDIR = @sbindir@
VARDIR = @localstadir@
на:
VARDIR = /var/log/samba
nawk 'BEGIN {FS=":"}
на:
gawk 'BEGIN {FS=":"}
static void close_our_files(int client_fd)
{
int i;
for (i = 0; i < 256; i++)
{
if (i == client_fd) continue;
close(i);
}
на:
static void close_our_files(int client_fd)
{
struct rlimit limits;
int i;
getrlimit(RLIMIT_NOFILE,&limits);
for (i = 0; i < limits.rlim_max; i++)
{
if (i == client_fd) continue;
close(i);
}
Компиляция и оптимизация
CC="egcs"
./configure --prefix=/usr --libdir=/etc --with-lockdir=/var/lock/samba \
--with-privatedir=/etc --with-swatdir=/usr/share/swat \
--with-pam --with-mmap --without-sambabook
[root@deep source]# make all
[root@deep source]# make install
[root@deep source]# install -m 755 script/mksmbpasswd.sh /usr/bin
[root@deep source]# rm -rf /usr/share/swat
(если Вы мне позволите совет, не позволяйте пользователям настраивать
Samba через браузер).
[root@deep source]# rm -f /usr/sbin/swat
[root@deep source]# rm -f /usr/man/man8/swat.8
[root@deep source]# mkdir -p /var/lock/samba
[root@deep source]# mkdir -p /var/spool/samba
(требуется только, если Вы планируете совместное использование принтера).
[root@deep source]# chmod 1777 /var/spool/samba
(требуется только, если Вы планируете совместное использование принтера).
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf samba-version/ samba-version.tar.gz
Конфигурации
Копируйте smb в каталог /etc/rc.d/init.d.
Копируйте samba в каталог /etc/logrotate.d.
Копируйте samba в каталог /etc/pam.d.Конфигурационный файл /etc/smb.conf
[global]
workgroup = OPENNA
server string = R&D of Open Network Architecture Samba Server
encrypt passwords = True
security = user
smb passwd file = /etc/smbpasswd
log file = /var/log/samba/log.%m
socket options = IPTOS_LOWDELAY TCP_NODELAY
domain master = Yes
local master = Yes
preferred master = Yes
os level = 65
dns proxy = No
name resolve order = lmhosts host bcast
bind interfaces only = True
interfaces = eth0 192.168.1.1
hosts deny = ALL
hosts allow = 192.168.1.4 127.0.0.1
debug level = 1
create mask = 0644
directory mask = 0755
level2 oplocks = True
read raw = no
write cache size = 262144
[homes]
comment = Home Directories
browseable = no
read only = no
invalid users = root bin daemon nobody named sys tty disk mem kmem users
[tmp]
comment = Temporary File Space
path = /tmp
read only = No
valid users = admin
invalid users = root bin daemon nobody named sys tty disk mem kmem users
[global]
Опция workgroup определяет рабочую группу, в которую входит Ваш сервер.
Важно, чтобы клиенты и сервер входили в одну и ту же группу.
Опция server string определяет строку, которую получат пользователи в блоке
комментария к принтеру в менеджере принтеров, или при IPC-соединении
по команде net view на Windows-машинах.
Опция encrypt passwords, если установлена в True, инструктирует Samba
использовать шифрованные пароли вместо паролей с открытым текстом. Снифферы
не смогут определить Ваш пароль, если он зашифрован. Эту опцию из соображений
безопасности нужно установить в True.
Опция security, если установлена в user, определяет, что клиент должен
вначале пройти аутентификацию по правильному имени и паролю, или соединение
будет разорвано. При этом способе имя пользователя и пароль должны
существовать в файле /etc/passwd Linux-сервера и в файле /etc/smbpasswd
Samba-сервера, или соединение с клиентом не состоится. Смотрите "Безопасность
samba" в этой главе для получения большей информации о файле smbpasswd.
Опция smb passwd file определяет путь к файлу с шифрованными паролями
smbpasswd. Файл smbpasswd это копия файла /etc/passwd Linux-системы,
содержащий разрешенные имена и пароли клиентов, которым разрешен доступ к
серверу Samba. Samba читает этот файл, когда получает запрос на соединение.
Опция log file определяет месторасположение и имена файлов регистрации Samba.
С расширением %m у Вас будут создаваться независимые файлы регистрации для
каждого пользователя или машины, присоединяющихся к Вашему Samba-серверу
(например, log.machine1).
Опция socket options определяет параметры, которые Вы можете включить в Вашу
конфигурацию Samba для настройки и улучшения сервера samba на оптимальную
производительность. По умолчанию, мы выбрали настройку сервера на локальную
сеть и улучшили производительность сервера Samba при пересылке файлов.
Опция domain master определяет, что один из демонов Samba, nmbd, будет
установлен как домен мастер-браузер для данной рабочей группы. Эта опция
обычно устанавливается в Yes только на одном сервере Samba в некоторой
сети и рабочей группе.
Опция local master позволяет nmbd становится локальным мастер-браузером в
подсети. Подобно предыдущей опции, эта опция должна быть установлена в
Yes только на одном Samba-сервере в подсети.
Опция preferred master определяет и контролирует является ли nmbd
привилегированным (preferred) мастер-браузером рабочей группы. Опять же, эта
опция обычно выставляется в Yes на одном сервере на Вашей сети.
Опция os level определяет значение, имеет ли nmbd шанс стать локальным
мастер-браузером для рабочей группы в локальной широковещательной области.
Число 65 позволит победить любой NT-сервер. Если в Вашей сети есть NT-сервер,
и Вы хотите, чтобы Linux Samba-сервер стал локальным мастер-браузером, Вы
должны установить этот параметр равным 65. Эта опция должна быть определена
только на одном Linux Samba-сервере в сети, а на остальных ее надо отключить.
Опция dns proxy, если установлена в Yes, определяет, что nmbd, когда
выступает как WINS-сервер и определяет, что Net BIOS имя не было
зарегистрировано, должен интерпретировать Net BIOS имя слово в слово как
DNS-имя и делает lookup на DNS-сервер, действуя от имени клиента,
запрашивающего данное имя. Так как мы не настраиваем Samba-сервер как
WINS-сервер, нам не нужно устанавливать эту опцию в Yes. Устанавливая
эту опцию в Yes мы ухудшим производительность Samba.
Опция name resolve order определяет, в каком порядке используются сервисы
имен для преобразования имени хоста в IP-адрес. Параметр, который мы выбрали,
говорит использовать в первую очередь локальный lmhosts-файл.
Опция bind interfaces only, если установлена в True, позволяет Вам
ограничивать интерфейсы, на которых будет принимать запросы smb. Это
возможность улучшающая безопасность системы. Опция interfaces = eth0
192.168.1.1 дополняет данную опцию.
Опция interfaces позволяет Вам переписать список интерфейсов по умолчанию, на
которых Samba будет обрабатывать запросы. По умолчанию, Samba принимает
список из всех активных интерфейсов и любые интерфейсы (исключая 127.0.0.1),
на которых поддерживается возможность широковещательных запросов. С этой
опцией, Samba будет слушать только интерфейс eth0 с IP-адресом 192.168.1.1.
Это возможность улучшающая безопасность, и дополняет ранее приведенную опцию
bind interfaces only = True.
Опция hosts deny определяет список хостов, которым запрещен доступ к сервису
Samba, если определенные сервисы не имеют собственных списков доступа. Для
простоты, мы запрещаем доступ всем хостам по умолчанию, и разрешаем доступ
некоторым компьютерам в опции hosts allow =, приведенной ниже.
Опция hosts allow определяет, каким хостам разрешен доступ к Samba-сервису.
По умолчанию, мы пускаем компьютер с IP-адресом класса C 192.168.1.4 и наш
localhost 127.0.0.1. Заметим, что доступ с localhost должен быть всегда
разрешен, иначе Вы будете получать сообщения об ошибках.
Опция debug level позволяет Вам определить уровень регистрации. Если Вы
установите уровень отладки больше, чем 2, то это приведет к падению
производительности. Это связано с тем, что сервер сбрасывает информацию в
файл регистрации после каждой операции, которые могут
быть очень интенсивными.
Опция create mask определяет и устанавливает нужные права доступа, связывая
таким образом режимы DOS с правами UNIX. С этой опцией, установленной в 0644,
все файлы копируемые или создаваемые из Windows-систем на Unix будут
иметь права доступа 0644.
Опция directory mask определяет и устанавливает режим, который используется
для конвертирования DOS-режимов в UNIX-режимы, когда создается UNIX-каталог.
С этой опцией, установленной в 0755, все каталоги копируемые или создаваемые
из Windows-систем на Unix будут иметь права доступа 0755.
Опция level2 oplocks, если установлена в True, увеличит производительность
множественного доступа к файлам, которые обычно не записываются (такие, как
файлы приложений .EXE).
Опция read raw контролирует, будет или нет сервер осуществлять необработанное
(raw) чтение SMB-запросов, когда пересылает данные клиенту. Заметим, что
распределение памяти не использует операцию "read raw". Таким образом, Вы
можете обнаружить, что распределение памяти более эффективно, если Вы
отключите "read raw", используя параметр "read raw = no".
Опция write cache size позволяет Samba улучшить производительность систем, у
которых дисковая подсистема является узким местом. Значение этой опции
определяется в байтах, следовательно, 262144 представляет 256k кэш на файл.
Опция comment позволяет Вам определить комментарии, которые появляются,
когда клиент организует запросы на сервер.
Опция path определяет каталог, в который пользователю разрешается доступ.
В нашем примере, это каталог tmp.
Опция read only определяет, должен ли пользователь иметь доступ только на
чтение или нет. В нашем примере, так как это конфигурация для каталога tmp,
пользователь может иметь больший доступ, чем только на чтение.
Опция valid users определяет список пользователей, которые могут подключаться
к этому сервису. В нашем примере, только пользователю admin разрешен
доступ к каталогу /tmp.
Опция invalid users определяет список пользователей, которым не разрешается
подключаться к этому сервису. Это абсолютно "параноидальная" проверка,
которая гарантирует, что неправильные установки не нарушат безопасность
системы. Рекомендуется, чтобы Вы включили в эту строку всех пользователей,
созданных в системе по умолчанию, от имени которых запускаются
демоны на сервере.Конфигурация файла /etc/lmhosts
# Пример Samba файла lmhosts.
127.0.0.1 localhost
192.168.1.1 deep
192.168.1.4 win
Конфигурация файла /etc/pam.d/samba
Auth required /lib/security/pam_pwdb.so nullok shadow
Account required /lib/security/pam_pwdb.so
Конфигурация файла /etc/logrotate.d/samba
/var/log/samba/log.nmb
{
notifempty
missingok
postrotate
/usr/bin/killall -HUP nmbd
endrotate
}
/var/log/samba/log.smb
{
notifempty
missingok
postrotate
/usr/bin/killall -HUP smbd
endrotate
}
Создание файла с шифрованными паролями Samba
[root@deep /]# useradd smbclient
[root@deep /]# passwd smbclient
Changing password for user smbclient
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
[root@deep /]# cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
[root@deep /]# smbpasswd -a smbclient
(помните, что smbclient должен быть реальным пользователем Linux).
New SMB password:
Retype new SMB password:
Added user smbclient.
Password changed for user smbclient.
[root@deep /]# chmod 600 /etc/smbpasswd
[root@deep /]# testparm
(Эта команда проверит файл smb.conf на наличие ошибок).
Конфигурация скрипта /etc/rc.d/init.d/smb
#!/bin/sh
#
# chkconfig: - 91 35
# описание: запуск и остановка демонов Samba smbd и nmbd \
# используемых для предоставления сетевого сервиса SMB.
# Библиотека исходных функций.
. /etc/rc.d/init.d/functions
# Исходная сетевая конфигурация.
. /etc/sysconfig/network
# Проверки наличия сети.
[ ${NETWORKING} = "no" ] && exit 0
# Проверка наличия файла smb.conf.
[ -f /etc/smb.conf ] || exit 0
RETVAL=0
# See how we were called.
case "$1" in
start)
echo -n "Starting SMB services: "
daemon smbd -D
RETVAL=$?
echo
echo -n "Starting NMB services: "
daemon nmbd -D
RETVAL2=$?
echo
[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /var/lock/subsys/smb || \
RETVAL=1
;;
stop)
echo -n "Shutting down SMB services: "
killproc smbd
RETVAL=$?
echo
echo -n "Shutting down NMB services: "
killproc nmbd
RETVAL2=$?
[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f /var/lock/subsys/smb
echo ""
;;
restart)
$0 stop
$0 start
RETVAL=$?
;;
reload)
echo -n "Reloading smb.conf file: "
killproc -HUP smbd
RETVAL=$?
echo
;;
status)
status smbd
status nmbd
RETVAL=$?
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL
[root@deep /]# chmod 700 /etc/rc.d/init.d/smb
[root@deep /]# chkconfig --add smb
[root@deep /]# chkconfig --level 345 smb on
[root@deep /]# /etc/rc.d/init.d/smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
Организация защиты Samba
Иммунизация важных конфигурационных файлов
[root@deep /]# chattr +i /etc/smb.conf
[root@deep /]# chattr +i /etc/lmhosts
Оптимизация Samba
Установка параметра wide links= в конфигурационном файле Samba.
"40 500 64 256 500 3000 500 1884 2"
Под Red Hat Linux 6.1
[root@deep /]# echo "80 500 64 64 15 6000 6000 1884 2" >/proc/sys/vm/bdflush
Редактируйте файл /etc/sysctl.conf и добавьте следующие строки:
# Улучшение производительности файловой системы
vm.bdflush = 80 500 64 64 15 6000 6000 1884 2
[root@deep /]# /etc/rc.d/init.d/network restart
Setting network parameters [ OK ]
Bringing up interface lo [ OK ]
Bringing up interface eth0 [ OK ]
Bringing up interface eth1 [ OK ]
"2 10 60"
Под Red Hat Linux 6.1
[root@deep /]# echo "60 10 60" >/proc/sys/vm/buffermem
Редактируйте файл /etc/sysctl.conf и добавьте следующую строку:
# Улучшение производительности виртуальной памяти
vm.buffermem = 60 10 60
[root@deep /]# /etc/rc.d/init.d/network restart
Setting network parameters [ OK ]
Bringing up interface lo [ OK ]
Bringing up interface eth0 [ OK ]
Bringing up interface eth1 [ OK ]
Дополнительная документация
$ man smb.conf (5) Конфигурационный файл для Samba
$ man smbclient (1) ftp-подобный клиент для доступа к SMB/CIFS ресурсам
$ man smbd (8) сервер, предоставляющий SMB/CIFS сервисы клиентам
$ man smbmnt (8) mount smb file system
$ man smbmount (8) монтирование файловой системе smb
$ man smbpasswd (5) файл с шифрованными паролями Samba
$ man smbpasswd (8) изменение SMB-пароля пользователя
$ man smbrun (1) интерфейсная программа между smbd и внешними программами
$ man smbsh (1) Позволяет доступ к файловой системе Windows NT,
используя UNIX-команды
$ man smbstatus (1) отчет о текущих соединениях Samba
$ man smbtar (1) shell-скрипт для резервного копирования совместных ресурсов
SMB напрямую на накопители на магнитной ленте UNIX
$ man smbumount (8) размонтирование для нормальных пользователей
$ man testparm (1) проверка конфигурационного файла smb.conf
на внутренние ошибки
$ man testprns (1) проверка имени принтера на соответствие правилам smbd.Административные утилиты Samba
[root@deep /]# smbstatus
Samba version 2.0.7
Service uid gid pid machine
----------------------------------------------
tmp webmaster webmaster 3995 gate (192.168.1.3) Sat Sep 25 19:40:54 1999
No locked files
Share mode memory usage (bytes):
1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%) total
Утилиты пользователя Samba
[root@deep /]# smbclient //sbmserver/sharename -U smbclient
[root@deep /]# smbclient //gate/tmp -U smbclient
Password:
Domain=[OPENNA] OS=[Windows NT 4.0] Server=[NT LAN Manager 4.0]
smb: \> ls
. D 0 Tue Mar 14 15:31:50 2000
.. D 0 Tue Mar 14 15:31:50 2000
PostgreSQL D 0 Tue Mar 14 15:32:22 2000
Squid D 0 Tue Mar 14 15:32:28 2000
Imap D 0 Tue Mar 14 15:32:38 2000
E_comm D 0 Tue Mar 14 15:32:42 2000
StackGuard.pdf A 61440 Tue Dec 21 20:41:34 1999
installation-without-XFree86 A 448 Tue Dec 21 20:41:28 1999
lcap-0_0_3-2_src.rpm A 13481 Thu Jan 13 01:50:12 2000
mirc561t.exe A 948224 Tue Dec 21 20:41:54 1999
65510 blocks of size 32768. 5295 blocks available
smb: \>
Инсталлированные файлы
> /etc/rc.d/init.d/smb
> /etc/rc.d/rc0.d/K35smb
> /etc/rc.d/rc1.d/K35smb
> /etc/rc.d/rc2.d/K35smb
> /etc/rc.d/rc3.d/S91smb
> /etc/rc.d/rc4.d/S91smb
> /etc/rc.d/rc5.d/S91smb
> /etc/rc.d/rc6.d/K35smb
> /etc/pam.d/samba
> /etc/logrotate.d/samba
> /etc/codepages
> /etc/codepages/codepage.437
> /etc/codepages/unicode_map.437
> /etc/codepages/codepage.737
> /etc/codepages/unicode_map.737
> /etc/codepages/codepage.775
> /etc/codepages/codepage.850
> /etc/codepages/unicode_map.850
> /etc/codepages/codepage.852
> /etc/codepages/unicode_map.852
> /etc/codepages/codepage.861
> /etc/codepages/unicode_map.861
> /etc/codepages/codepage.932
> /etc/gshadow-
> /usr/bin/smbclient
> /usr/bin/smbspool
> /usr/bin/testparm
> /usr/bin/testprns
> /usr/bin/smbstatus
> /usr/bin/rpcclient
> /usr/bin/smbpasswd
> /usr/bin/make_smbcodepage
> /usr/bin/make_unicodemap
> /usr/bin/nmblookup
> /usr/bin/make_printerdef
> /usr/bin/smbtar
> /usr/bin/addtosmbpass
> /usr/bin/convert_smbpasswd
> /usr/bin/mksmbpasswd.sh
> /usr/man/man1/make_smbcodepage.1
> /usr/man/man1/make_unicodemap.1
> /usr/man/man1/nmblookup.1
> /usr/man/man1/smbclient.1
> /usr/man/man1/smbrun.1
> /usr/man/man1/smbsh.1
> /usr/man/man1/smbstatus.1
> /etc/codepages/unicode_map.932
> /etc/codepages/codepage.866
> /etc/codepages/unicode_map.866
> /etc/codepages/codepage.949
> /etc/codepages/unicode_map.949
> /etc/codepages/codepage.950
> /etc/codepages/unicode_map.950
> /etc/codepages/codepage.936
> /etc/codepages/unicode_map.936
> /etc/codepages/codepage.1251
> /etc/codepages/unicode_map.ISO8859-1
> /etc/codepages/unicode_map.ISO8859-2
> /etc/codepages/unicode_map.ISO8859-5
> /etc/codepages/unicode_map.ISO8859-7
> /etc/codepages/unicode_map.KOI8-R
> /etc/lmhosts
> /etc/smb.conf
> /etc/smbpasswd
> /usr/man/man1/smbtar.1
> /usr/man/man1/testparm.1
> /usr/man/man1/testprns.1
> /usr/man/man5/lmhosts.5
> /usr/man/man5/smb.conf.5
> /usr/man/man5/smbpasswd.5
> /usr/man/man7/samba.7
> /usr/man/man8/nmbd.8
> /usr/man/man8/smbd.8
> /usr/man/man8/smbmnt.8
> /usr/man/man8/smbmount.8
> /usr/man/man8/smbpasswd.8
> /usr/man/man8/smbspool.8
> /usr/man/man8/smbumount.8
> /usr/sbin/smbd
> /usr/sbin/nmbd
> /var/log/samba
> /var/lock/samba
Linux FTP сервер
Unix-совместимые команды.
Путь к исходным кодам /var/tmp (возможны другие варианты).
Инсталляция была проверена на Red Hat Linux 6.1 и 6.2.
Все шаги инсталляции осуществляются суперпользователем root.
wu-ftpd версии 2.6.0.
Домашняя страница Wu-ftpd:
http://www.wu-ftpd.org,
FTP-сервер Wu-ftpd: 205.133.13.68,
Вы должны скачать: wu-ftpd-2.6.0.tar.gz.
[root@deep /]# cp wu-ftpd-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf wu-ftpd-version.tar.gz
Компиляция и оптмизация
#if defined (LINUX)
на:
#if defined (LINUX_BUT_NOT_REDHAT_6_0)
#define _PATH_EXECPATH "/bin/ftp-exec"
на:
#define _PATH_EXECPATH "/usr/bin/ftp-exec"
CC="egcs"
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro \
-march=pentiumpro -fomit-frame-pointer -fno-exceptions"
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
--disable-dnsretry --enable-quota --enable-pam \
--disable-daemon --disable-newlines --disable-virtual \
--disable-plsm --disable-pasvip --disable-anonymous \
--enable-ls --enable-numericuid
[root@deep wu-ftpd-2.6.0]# make
[root@deep wu-ftpd-2.6.0]# make install
[root@deep wu-ftpd-2.6.0]# install -m 755 util/xferstats /usr/sbin
[root@deep wu-ftpd-2.6.0]# touch /var/log/xferlog
[root@deep wu-ftpd-2.6.0]# chmod 600 /var/log/xferlog
[root@deep wu-ftpd-2.6.0]# cd /usr/sbin
[root@deep sbin]# ln -sf in.ftpd /usr/sbin/wu.ftpd
[root@deep sbin]# ln -sf in.ftpd /usr/sbin/in.wuftpd
[root@deep sbin]# strip /usr/bin/ftpcount
[root@deep sbin]# strip /usr/bin/ftpwho
[root@deep sbin]# strip /usr/sbin/in.ftpd
[root@deep sbin]# strip /usr/sbin/ftpshut
[root@deep sbin]# strip /usr/sbin/ckconfig
[root@deep sbin]# strip /usr/sbin/ftprestart
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf wu-ftpd-version/ wu-ftpd-version.tar.gz
Настройка пользователя FTP без командного процессора (shell)
[root@deep /]# mkdir /home/ftp
[root@deep /]# useradd -d /home/ftp/ftpadmin/ -s /dev/null ftpadmin > \
/dev/null 2>&1
[root@deep /]# passwd ftpadmin
Changing password for user ftpadmin
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully
[root@deep /]# vi /etc/shells
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
/dev/null
(это Ваш несуществующий командный процессор)
ftpadmin:x:502:502::/home/ftp/ftpadmin/:/dev/null
на:
ftpadmin:x:502:502::/home/ftp/./ftpadmin/:/dev/null
Установка пользовательского окружения chroot
[root@deep /]# mkdir /home/ftp/dev
[root@deep /]# mkdir /home/ftp/etc
[root@deep /]# mkdir /home/ftp/bin
(требуется, если Вы не использовали опцию --enable-ls)
[root@deep /]# mkdir /home/ftp/lib
(требуется, если Вы не использовали опцию --enable-ls)
[root@deep /]# chmod 0511 /home/ftp/dev
[root@deep /]# chmod 0511 /home/ftp/etc
[root@deep /]# chmod 0511 /home/ftp/bin
(требуется, если Вы не использовали опцию --enable-ls)
[root@deep /]# chmod 0511 /home/ftp/lib
(требуется, если Вы не использовали опцию --enable-ls)
[root@deep /]# cp /bin/ls /home/ftp/bin
(требуется, если Вы не использовали опцию --enable-ls)
[root@deep /]# chmod 0111 /bin/ls /home/ftp/bin/ls
(требуется, если Вы не использовали опцию --enable-ls)
[root@deep /]# ldd /bin/ls
(требуется, если Вы не использовали опцию --enable-ls)
libc.so.6 => /lib/libc.so.6 (0x00125000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00110000)
[root@deep /]# cp /lib/libc.so.6 /home/ftp/lib
(требуется, если Вы не использовали опцию --enable-ls)
[root@deep /]# cp /lib/ld-linux.so.2 /home/ftp/lib
(требуется, если Вы не использовали опцию --enable-ls)
[root@deep /]# mknod /home/ftp/dev/null c 1 3
[root@deep /]# chmod 666 /home/ftp/dev/null
[root@deep /]# cp /etc/passwd /home/ftp/etc
[root@deep /]# cp /etc/group /home/ftp/etc
root:x:0:0:root:/:/dev/null
ftpadmin:x:502:502::/ftpadmin/:/dev/null
root:x:0:root
ftpadmin:x:502:
[root@deep /]# cd /home/ftp/etc
[root@deep /]# chattr +i passwd
[root@deep /]# cd /home/ftp/etc
[root@deep /]# chattr +i group
Конфигурации
Копируйте файлы ftpusers в каталог /etc.
Копируйте файлы ftphosts в каталог /etc.
Копируйте файлы ftpgroups в каталог /etc.
Копируйте файлы ftpconversion в каталог /etc.
Копируйте ftpd в каталог /etc/logrotate.d.
Копируйте ftp в каталог /etc/pam.d.Конфигурация файла /etc/ftpaccess
class openna guest 208.164.186.*
limit openna 20 MoTuWeTh,Fr0000-1800 /home/ftp/.too_many.msg
email admin@openna.com
loginfails 3
readme README* login
readme README* cwd=*
message /home/ftp/.welcome.msg login
message .message cwd=*
compress yes all
tar yes all
chmod yes guest
delete yes guest
overwrite yes guest
rename yes guest
log commands real,guest
log transfers real,guest inbound,outbound
guestgroup ftpadmin
guestgroup webmaster
# We don't want users being able to upload into these areas.
upload /home/ftp/* / no
upload /home/ftp/* /etc no
upload /home/ftp/* /dev no
# We'll prevent downloads with noretrieve.
noretrieve /home/ftp/etc
noretrieve /home/ftp/dev
log security real,guest
guest-root /home/ftp ftpadmin webmaster
restricted-uid ftpadmin webmaster
restricted-gid ftpadmin webmaster
greeting terse
keepalive yes
noretrieve .notar
[root@deep /]# chmod 600 /etc/ftpaccess
Опция class определяет классы пользователей, которые имеют доступ к Вашему
FTP-серверу. Вы можете определить столько классов, сколько хотите. В нашем
случае, например, мы определяем класс с именем openna, и позволяем
пользователю guest с учетными записями на ftp-сервере доступ к их домашним
каталогам через FTP, если они заходят с адреса 208.164.186.*. Важно заметить,
что существует три различных типа пользователей: anonymous, guest и real.
Пользователи Anonymous это любой пользователь сети, который подключается к
серверу и пересылает файлы, не имея учетной записи на нем. Пользователь Guest
это реальный пользователь системы, для которых сессии настроены также, как и
для анонимных пользователей FTP (это то, что мы определили в нашем примере),
и пользователь Real должен иметь учетную запись и командный процессор (shell)
(это может приводить к риску для безопасности) на сервере для доступа к нему.
Опция limit определяет число пользователей данного класса, которым
разрешается подключаться к серверу, и разрешенное время суток. В нашем
примере к FTP-серверу из класса openna может подключаться максимум 20
пользователей, в понедельник, вторник, среду и четверг целый день, а в
пятницу с полуночи до 6:00 вечера Fr0000-1800. Также, если количество
пользователей достигло предела (20), то вновь подключаемым пользователям
будет выдаваться сообщение из файла /home/ftp/.too_many.msg. Это очень
полезный параметр для контроля за ресурсами сервера.
Опция loginfails определяет число ошибочных попыток подключений к серверу,
которое может осуществить пользователь до того, как будет отсоединен от
сервера. В нашем примере мы отключаем пользователя от FTP-сервера
после трех попыток.
readme README* cwd=*
Опция readme определяет сообщение, выдаваемое клиенту во время регистрации на
сервере, или во время использования команды смены каталога, которая
определяет файлы в текущем каталоге, измененные в последнее время. В нашем
примере мы устанавливаем имя файла README* относительно каталога FTP, и
условия вывода сообщения: при успешном входе в систему login или входе в
новый каталог cwd=*.
message .message cwd=*
Опция message определяет специальные сообщения, отображаемые клиентам, когда
они либо вошли в систему, либо используют команду смены рабочего каталога. В
нашем примере мы показываем месторасположение и имя выводимых файлов
/home/ftp/.welcome.msg или .message, и условия при которых они выводятся: при
успешной регистрации в системе login, или когда клиент входит в новый каталог
cwd=*. Для опций readme и message, когда Вы определяете путь для анонимных
пользователей, Вы должны использовать абсолютный путь относительно
анонимного FTP-каталога.
tar yes all
chmod yes guest
delete yes guest
overwrite yes guest
rename yes guest
Опции compress, tar, chmod, delete, overwrite и rename определяют права,
которые Вы хотите дать Вашим пользователям на выполнение этих команд. В нашем
примере мы даем права группе guest на команды chmod, delete, overwrite и
rename и позволяем всем пользователям сервера (all) использовать команды
compress и tar. Если Вы не определите следующие директивы, они по умолчанию
будут выставлены в yes для всех.
Опция log commands включает регистрацию команд пользователей из соображений
безопасности. В нашем примере мы регистрируем все индивидуальные команды
пользователей классов real и guest (real,guest). Результаты регистрации
сохраняются в файле /var/log/message.
Опция log transfers включает регистрацию всех FTP-пересылок из соображения
безопасности. В нашем примере мы регистрируем все пересылки пользователей
классов real и guest (real,guest), параметры inbound и outbound (inbound,
outbound) определяют направления пересылки, в нашем случае входящие и
исходящие. Результаты сохраняются в файле /var/log/xferlog.
guestgroup webmaster
Опция guestgroup определяет всех реальных пользователей, относящихся к группе
гостей, сессии которых настроены также, как и в анонимном FTP (ftpadmin и
webmaster). Файл /home/ftp/etc/group имеет входы для каждой из этих групп,
каждая из которых имеет только одного члена. Важно, что в конфигурационном
файле в одной строке должна быть записана одна гостевая группа.
Опция log security включает регистрацию нарушений правил безопасности для
реальных, гостевых и/или анонимных FTP-клиентов. В нашем примере мы разрешаем
регистрацию нарушений для пользователей, использующих FTP-сервер для доступа
с реальных учетных записей и гостевых логинов (real, guest).
restricted-uid ftpadmin webmaster
restricted-gid ftpadmin webmaster
Эти опции, guest-root, restricted-uid, restricted-gid, определяют и
контролируют могут или нет пользователи guest получить доступ к области
FTP-сервера вне их домашних каталогов (это важная функция повышения
безопасности). В нашем примере мы определяем chroot-путь для пользователей
ftpadmin и webmaster в /home/ftp, и они не могут получить доступа к другим
файлам, потому что ограничены своими домашними каталогами (restricted-uid
ftpadmin webmaster, restricted-gid ftpadmin webmaster). Несколько диапазонов
UID может задаваться в этой строке. Если для пользователя выбран guest-root,
то домашний каталог пользователя из файла root-dir/etc/passwd используется
для определения начального каталога, а их домашний каталог в масштабе всей
системы из файла /etc/passwd не используется.
Опция greeting определяет, как много системной информации будет выводится до
того, как удаленный пользователь войдет в систему. Здесь Вы можете
использовать три значения: full используется по умолчанию, показывает имя
хоста и версию демона, brief только имя хоста и terse просто сообщает
"FTP server ready".
Опция keepalive определяет, должна ли система посылать сообщения keep alive
на удаленный FTP-сервер. Если установлена в yes, то сервер получит
необходимое предупреждение о разрыве соединения или падении удаленной машины.
Конфигурация файла /etc/ftphosts
# Пример файла host access
#
# Все, что после '#', это комментарии, пустые строки игнорируются
allow ftpadmin 208.164.186.1 208.164.186.2 208.164.186.4
deny ftpadmin 208.164.186.5
[root@deep /]# chmod 600 /etc/ftphosts
Конфигурация файла /etc/ftpusers
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
[root@deep /]# chmod 600 /etc/ftpusers
Конфигурация файла /etc/ftpconversions
:.Z : : :/bin/compress -d -c %s:T_REG|T_ASCII:O_UNCOMPRESS:UNCOMPRESS
: : :.Z:/bin/compress -c %s:T_REG:O_COMPRESS:COMPRESS
:.gz: : :/bin/gzip -cd %s:T_REG|T_ASCII:O_UNCOMPRESS:GUNZIP
: : :.gz:/bin/gzip -9 -c %s:T_REG:O_COMPRESS:GZIP
: : :.tar:/bin/tar -c -f - %s:T_REG|T_DIR:O_TAR:TAR
: : :.tar.Z:/bin/tar -c -Z -f
-%s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+COMPRESS
: : :.tar.gz:/bin/tar -c -z -f
-%s:T_REG|T_DIR:O_COMPRESS|O_TAR:TAR+GZIP
: : :.crc:/bin/cksum %s:T_REG::CKSUM
: : :.md5:/bin/md5sum %s:T_REG::MD5SUM
[root@deep /]# chmod 600 /etc/ftpconversions
Конфигурация файла /etc/pam.d/ftp
#%PAM-1.0
auth required /lib/security/pam_listfile.so item=user sense=deny
file=/etc/ftpusers onerr=succeed
auth required /lib/security/pam_pwdb.so shadow nullok
auth required /lib/security/pam_shells.so
account required /lib/security/pam_pwdb.so
session required /lib/security/pam_pwdb.so
Конфигурация файла /etc/logrotate.d/ftpd
/var/log/xferlog
{
# ftpd должным образом не обрабатывает SIGHUP
nocompress
}
Настройка ftpd на использование tcp-wrappers
из суперсервера inetd
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a
[root@deep /]# killall -HUP inetd
in.ftpd: 192.168.1.4 win.openna.com
Административные утилиты FTP
ftpwho
[root@deep /]# ftpwho
Service class openna:
5443 ? S 0:00 ftpd: win.openna.com: ftpadmin: IDLE
- 1 users (20 maximum)
[root@deep /]# ftpcount
Service class openna - 1 users ( 20 maximum)
Организация защиты FTP
Файл ftpusers
[root@deep /]# userdel ftp
[root@deep /]# rpm -q anonftp
package anonftp is not installed
Команда upload
# Мы не хотим, чтобы пользователи могли закачивать файлы в эти области.
upload /home/ftp/* / no
upload /home/ftp/* /etc no
upload /home/ftp/* /dev no
upload /home/ftp/* /bin no
(требуется только, если Вы не использовали опцию --enable-ls)
upload /home/ftp/* /lib no
(требуется только, если Вы не использовали опцию --enable-ls)
[root@deep /]# touch /home/ftp/.notar
[root@deep /]# touch /home/ftp/etc/.notar
[root@deep /]# touch /home/ftp/dev/.notar
[root@deep /]# touch /home/ftp/bin/.notar
(требуется только, если Вы не использовали опцию --enable-ls)
[root@deep /]# touch /home/ftp/lib/.notar
(требуется только, если Вы не использовали опцию --enable-ls)
[root@deep /]# chmod 0 /home/ftp/.notar
[root@deep /]# chmod 0 /home/ftp/etc/.notar
[root@deep /]# chmod 0 /home/ftp/dev/.notar
[root@deep /]# chmod 0 /home/ftp/bin/.notar
(требуется только, если Вы не использовали опцию --enable-ls)
[root@deep /]# chmod 0 /home/ftp/lib/.notar
(требуется только, если Вы не использовали опцию --enable-ls)
noretrieve .notar
Команда noretrieve.
# Мы предотвращаем перекачку при помощи noretrieve.
noretrieve /home/ftp/etc
noretrieve /home/ftp/dev
noretrieve /home/ftp/bin
(требуется только, если Вы не использовали опцию --enable-ls)
noretrieve /home/ftp/lib
(требуется только, если Вы не использовали опцию --enable-ls)
Инсталлированные файлы
> /etc/pam.d/ftp
> /etc/logrotate.d/ftpd
> /etc/ftpaccess
> /etc/ftpconversions
> /etc/ftpgroups
> /etc/ftphosts
> /etc/ftpusers
> /home/ftp/
> /usr/man/man5/ftpconversions.5
> /usr/man/man5/xferlog.5
> /usr/man/man8/ftpd.8
> /usr/man/man8/ftpshut.8
> /usr/man/man8/ftprestart.8
> /usr/sbin/in.ftpd
> /usr/sbin/ftpshut
> /usr/sbin/ckconfig
> /usr/bin/ftpcount
> /usr/bin/ftpwho
> /usr/man/man1/ftpcount.1
> /usr/man/man1/ftpwho.1
> /usr/man/man5/ftpaccess.5
> /usr/man/man5/ftphosts.5
> /usr/sbin/ftprestart
> /usr/sbin/xferstats
> /usr/sbin/wu.ftpd
> /usr/sbin/in.wuftpd
> /var/log/xferlog
Найди своих коллег! |