вівторок, 27 січня 2009 р.

vsftpd переведений конфіг

#Пример файла конфигурации /etc/vsftpd.conf
#
# По умолчанию в настройках составлен довольно параноиком. Это образец файла
# Loosens вещи немного вверх, чтобы сделать FTP-демон, более удобным для использования.
# См. vsftpd.conf.5 все воедино в значения по умолчанию.
#
# ПРОЧИТАЙТЕ ЭТО: В данном примере файл не является исчерпывающим перечнем vsftpd вариантов.
# Пожалуйста, прочитайте страницу руководства vsftpd.conf.5 чтобы получить больше идей по vsftpd
# возможностям.
#
#
#Если опция включена сервер стартует в независимом от inetd/xinetd режиме
#"standalone mode". В этом случае он сам заботится о прослушивании и
#определении входящих соединений.
listen=YES
#
#Тоже самое что listen, за исключением того что vsftpd слушает IPv6 протокол включительно.
#Этот параметр и listen взаимно исключаемые.
#listen_ipv6=YES
#
# Разрешает или запрещает вход анонимных пользователей. Если разрешено, пользователи
#с именами ftp и anonymous распознаются как анонимные пользователи.
anonymous_enable=YES
#
# Разрешает или запрещает вход для локальных пользователей. Если включено
#обычные пользовательские акаунты в /etc/passwd могут быть использованы для входа.
#Должно быть включено для разрешения любых не анонимных входов, включая вход
#виртуальных пользователей.
#local_enable=YES
#
# Разрешает FTP команды изменяющие файловую систему. Такие команды как:
#STOR, DELE, RNFR, RNTO, MKD, RMD, APPE, SITE.
write_enable=YES
#
#Значение маски назначения прав доступа к файлам созданным локальными
#пользователями. Помните! Если вы хотите указать параметр в качестве
#цифрового значения, указывайте "0" (нулевую) приставку, иначе
#значение будет определено как целое десятизначное.
#local_umask=022
#
#Включение этой опции позволяет анонимным пользователям загружать файлы на сервер, в
#соответствии с определенными для этого условиями. Для того чтобы это работало опция
#write_enable должна быть активирована, и анонимный ftp пользователь должен иметь права
#на запись в каталоге для загрузки. Включение опции также необходимо для предоставления
#возможности загружать на сервер файлы виртуальным пользователям; по умолчанию виртуальные
#пользователи имеют одинаковые привилегии с анонимными пользователями
#(т.е. максимально ограниченные привилегии).
anon_upload_enable=YES
#
# Включение этой опции, позволяет анонимным пользователям создавать новые каталоги в
#соответствии с определенными для этого условиями. Для того чтобы это работало опция
#write_enable должна быть включена, и анонимный пользователь должен иметь права на
#запись в данном каталоге.
anon_mkdir_write_enable=YES
#
#Если разрешено, при входе в каталог пользователям показывается сообщение
#из файла .message. По умолчанию, директория сканируется на наличие
#сообщения в файле .message, что можно изменить задав имя другого файла
#параметром message_file..
dirmessage_enable=YES
#
#Если включено, журнал будет включать детальные отчеты о закачках на сервер,
#и закачках с сервера (uploads, downloads). По умолчанию, этот файл будет
#располагаться в /var/log/vsftpd.log, но расположение может быть изменено
#используя опцию vsftpd_log_file.
xferlog_enable=YES
#
#Включение этой опции указывает исходящим с сервера соединениям использовать
#20 порт. Из соображений безопасности, некоторые клиенты могут настаивать
#на этом значении. Отключение этой опции позволяет vsftpd стартовать с немного
#меньшими привилегиями.
connect_from_port_20=YES
#
#Если включить, у всех анонимно закачанных файлов на сервер будут
#изменены владельцы на пользователя в указанного в chown_username.
#Это может быть полезно при администрировании, и возможно из соображений
#безопасности.
#chown_uploads=YES
#chown_username=whoever
#
#В параметре этой опции можно указать альтернативный путь к файлу
#журнала записываемому в стиле wu-ftpd. Запись в этот журнал производится
#только при включенной xferlog_eneble опции, включительно с xferlog_std_format.
#Также журнал ведется если включена опция dual_log_enable.
#xferlog_file=/var/log/vsftpd.log
#
#Если включено, запись в журнал производится в стандартном wu-ftpd стиле,
#xferlog формата. Полезно при желании использования уже существующих
#привычных способов генерации статистики. Однако с другой стороны,
#формат используемый по умолчанию лучше читается. Расположение журнала
#по умолчанию /var/log/xferlog, что может быть изменено при
#помощи опции xferlog_file.
#xferlog_std_format=YES
#
#Временной промежуток в секундах указывающий для удаленного клиента
#максимальное время которое он может бездействовать не выполняя FTP команды.
#Если время исчерпано, соединение отбрасывается.
#idle_session_timeout=600
#
# Максимальный временной промежуток в секундах, разрешенного замирания процесса
#передачи данных. Если перерыв превышен, соединение с удаленным клиентом отбрасывается.
#data_connection_timeout=120
#
#Указывает имя пользователя под которым работает сервер, когда ему не нужны привилегии.
#Для этого предпочтительней выделить отдельного пользователя, чем использовать nobody
#nopriv_user=ftpsecure
#
#При включении, специальные FTP команды известные как "async ABOR"
#будут разрешены. Только плохо продуманные FTP клиенты используют эту функцию.
#В добавок эта функция неудобна в управлении, поэтому отключена по умолчанию.
#К сожалению, некоторые FTP клиенты могут зависать в момент отмены передачи,
#если эта функция выключена. Если это происходит можно попробовать включить
#эту функцию.
#async_abor_enable=YES
#
#При включёном ASCII режиме возможна DDOS атака с использованием
#"SIZE / большой / файл".
# Если включить, ASCII режим передачи будет разрешен при uploads.
#ascii_upload_enable=YES
#Если включить, ASCII режим передачи данных будет разрешен при download.
#ascii_download_enable=YES
#
# В этой опции можно указать банер-строку выводимую на экран клиента при подключении к серверу
#ftpd_banner=Welcome to blah FTP service.
#
#Активация опции, позволяет использовать список анонимных паролей типа e-mail, при
#использовании которых попытки подключения будут отвергнуты. По умолчанию, файл содержащий
#этот список располагается в /etc/vsftpd.banned_emails, но имеется возможность изменить путь,
#указав альтернативный путь в banned_email_file.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
#Если выбрано локальные пользователи будут (по умолчанию) перенесены в chroot () "заточение"
#в их домашнем каталоге после входа. Внимание: эта опция имеет смысл быть включенной из
#соображений безопасности, особенно если пользователи имеют права позволяющие загрузку
#файлов на сервер, или shell доступ. Включать только если вы действительно уверены что
#знаете зачем вам это нужно. Заметим что эта опция безопасности в системах класса unix,
#характерна не только для vsftpd, используется и в других FTP серверах.
#chroot_local_user=YES
#
#Если включить, вы можете использовать список локальных пользователей помещаемых в
#chroot() заточение в их домашнем каталоге после входа. Если используется совместно
#с включенным chroot_local_user означает список пользователей которые не помещаются
#в chroot() заточение. По умолчанию список содержится в файле /etc/vsftpd.chroot_list,
#но можно указать любой другой путь к файлу используя опцию chroot_list_file.
#chroot_list_enable=YES
# (default follows)
#Опция является дополнением к chroot_list_enable указывает альтернативный путь
#к файлу содержащему список локальных пользователей которые будут перемещены в chroot()
#заточение в их домашние каталоги при входе. Эта опция уместна только при разрешенной
#chroot_list_enable. Если опция chroot_local_user включена, наоборот указывает
#файл списка пользователей не помещаемых в chroot() заточение.
#chroot_list_file=/etc/vsftpd.chroot_list
#
#При включении, разрешает рекурсивный листинг "ls -R". Включение немного
#рискованно исходя из соображений безопасности, так как выполнение "ls -R" в
#верхнем уровне большого сайта может поглощать много ресурсов.
#ls_recurse_enable=YES
#
#
# настройки Debian
#
# Some of vsftpd's settings don't fit the Debian filesystem layout by
# default. These settings are more Debian-friendly.
#
№Эта опция указывает на имя пустого каталога. Также, каталог не должен быть записываемый
№для ftp пользователя. Этот каталог используется как безопасный chroot(), когда vsftpd не
№нужен доступ к файловой системе.
secure_chroot_dir=/var/run/vsftpd
#
#В этой строке можно указать имя PAM сервиса который будет использоваться для vsftpd.
pam_service_name=vsftpd
#
#Эта опция задает расположения RSA сертификата для использования в
#SSL зашифрованных соединениях.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
#Эта опция задает расположения личного RSA ключа для использования в
#SSL зашифрованных соединениях.
#Если эта опция не выбрана, сертификат предусматривается как личный ключ.
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

то, что в спойлере, можете смело закидывать в файл /etc/vsftpd.conf

файл русифицирован с помощью http://www.opennet.ru/base/net/vsftpd_overview.txt.html этой статьи по настройке vsftpd

понеділок, 26 січня 2009 р.

bind 9

Этот документ описывает установку и начальную конфигурацию пакета BIND 9 для работы в качестве кэширующего DNS сервера для локальной сети.


Было решено использовать 9-ю версию пакета BIND, так как она наименее уязвима для внешних атак. BIND 9 поддерживает списки управления доступом для запросов, передачи зоны, а также динамических обновлений. Кроме того, этой версией поддерживается стандарт динамических обновлений и уведомления об изменениях зоны, она может использовать механизм инкрементальной передачи зоны, позволяющий вторичным DNS серверам запрашивать у первичных серверов только изменения зональных данных. Это позволяет ускорить передачу зон.
В качестве ОС на сервере установлена FreeBSD 4.10.

Получение, сборка и установка пакета BIND из исходных кодов

На момент написания статьи последней стабильной версией BIND 9 являлась 9.2.3.
Исходные коды BIND 9.2.3 доступны для загрузки с публичного FTP сервера: ftp://ftp.isc.org/isc/BIND9/9.2.3/bind-9.2.3.tar.gz.
Итак.

Создаем директорию, где будет проходить весь процесс:

# mkdir /usr/local/src
# cd /usr/local/src
Скачиваем дистрибутив с FTP сервера ftp.isc.org:

# fetch ftp://ftp.isc.org/isc/BIND9/9.2.3/bind-9.2.3.tar.gz
Распаковываем, и заходим в полученную папку:

# tar -xzf bind-9.2.3.tar.gz
# cd bind-9.2.3
Мы хотим что бы наш BIND 9 стал вместо штатного BIND 8.

# ./configure --prefix=/usr --sysconfdir=/etc/namedb
Далее, если конфигурация прошла успешно, приступаем к сборке пакета:

# make
# make install
На моей системе (FreeBSD 4.10) все собралось и установилось без каких-либо проблем.

Проверяем версию named которая у нас теперь стоит:

# named -v
BIND 9.2.3
Пусть вас не пугает, что мы устанавливаем BIND, а для проверки запускаем named. Так называется исполняемый файл, который, собственно говоря, и выполняет роль DNS сервера.

На этом первый этап нашей затеи окончен, BIND 9 скомпилирован и установлен в вашей системе, можно порадоваться за себя. :)

Установка BIND 9 из портов FreeBSD

Если порты у вас обновляются регулярно, то переходим в соответствующую директорию:
# cd /usr/ports/dns/bind9
Если не регулярно, то, вероятно, ваш BIND 9 нужно искать здесь:

# cd /usr/ports/net/bind9
Если портов у вас совсем нет, то устанавливайте BIND 9 из исходных кодов (см. выше).

Итак делаем следующие шаги.
Переходим в каталог BIND9 в ваших портах и компиллируем BIND 9:

# cd /usr/ports/dns/bind9
# make PORT_REPLACES_BASE_BIND9=yes install
Данная операция необходима для того, чтобы BIND 9 был установлен вместо штатного BIND 8.
Система сама скачает дистрибутив, распакует, сконфигурирует и установит.
После того, как закончится установка, предлагаю убедиться, что теперь у вас установлен именно BIND 9:

# named -v
BIND 9.2.3
На этом установка BIND 9 закончена, теперь можно переходить к конфигурированию и запуску. :)

Маленькая ремарка: я предпочитаю установку из портов, потому что в дальнейшем очень удобно обновлять пакет при помощи portupgrade, например, и потому, что устанавливать из портов просто удобнее.

Начальное конфигурирование и запуск BIND 9

Если у вас был установлен BIND 8, который идет в поставке с системой, то, вероятно, в папке /etc/namedb вы найдете файл конфигурации bind и некоторые дополнительные файлы, которые могут понадобиться для работы BIND. Если таких файлов у вас нет, никогда не было, и вы не знаете, где их взять, придется писать их с нуля. Я, например, нашел эти файлы в исходных кодах системы /usr/src/etc/namedb/.
Если вы обнаружили у себя соответствующие файлы, внимательно делайте необходимые правки в них. Будьте особенно осторожны, если вы решились писать конфигурационные файлы с нуля.
Итак, сначала создадим самый главный файл - файл конфигурации. Возьмите свой любимый текстовый редактор и создайте новый файл с именем named.conf. Содержание у него будет примерно такое:

# cat named.conf

// Первой строкой задаем сети, которым будет разрешено
//посылать запросы через наш DNS-сервер:
acl "corpnets" { 192.168.1.0/24; 192.168.2.0/24; 127.0.0.1; };
options {
// Рабочая директория:
directory "/etc/namedb";
// Pid файл создавать тоже в рабочей директории, хотя можно
// написать любую другую, например /var/run/named/named.pid:
pid-file "named.pid";
// Разрешаем посылать запросы только от тех сетей, которые мы
// указали выше:
allow-query { "corpnets"; };
};
// Указатели корневых серверов:
zone "." {
type hint;
file "named.root"; };
// Настраиваем обратное отображение
// для адреса 127.0.0.1:
zone "0.0.127.in-addr.arpa" {
type master;
file "localhost.rev";
notify no; };
С файлом named.conf пока все. Теперь нужно создать файлы, на которые мы ссылаемся в named.conf, а именно: named.root и localhost.rev.
Файл named.root скачиваем c FTP-сервера ftp.internic.net:

# fetch ftp://ftp.internic.net/domain/named.root
Желательно периодически повторять эту процедуру или настроить на автоматическое обновление через cron.

Файл localhost.rev можно написать вручную, а можно воспользоваться специальной утилитой make-localhost, которая находится в исходных кодах системы: /usr/src/etc/namedb/make-localhost.

Выглядит он примерно так:

# cat localhost.rev

; From: @(#)localhost.rev 5.1 (Berkeley) 6/30/90
; $FreeBSD: src/etc/namedb/PROTO.localhost.rev,v 1.6 2000/01/10 15:31:40 peter Exp $
;
; This file is automatically edited by the 'make-localhost' script in
; the /etc/namedb directory.
;

$TTL 3600

@ IN SOA zm.domain.com. root.zm.domain.com. (
20040603 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS zm.domain.com.
1 IN PTR localhost.domain.com.

С файлом localhost.rev тоже закончили.

Теперь можно попробовать запустить и проверить наш bind:

# named
# ps -ax|grep named
Если процес запущен и работает, пробуем послать запрос через наш DNS-сервер:

# dig @127.0.0.1 ya.ru
В ответ на этот запрос мы должны получить некий положительный ответ, например:

# dig @127.0.0.1 ya.ru

; <<>> DiG 9.2.1 <<>> @127.0.0.1 ya.ru
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36843
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;ya.ru. IN A

;; ANSWER SECTION:
ya.ru. 36000 IN A 213.180.193.123

;; AUTHORITY SECTION:
ya.ru. 36000 IN NS ns1.yandex.ru.
ya.ru. 36000 IN NS ns2.yandex.ru.
ya.ru. 36000 IN NS ns3.yandex.ru.
ya.ru. 36000 IN NS ns.ispm.ru.

;; Query time: 2639 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jun 13 22:28:50 2004
;; MSG SIZE rcvd: 122
Если ответа нет, идем смотреть логи системы в /var/log/messages, читаем, что нам пишет наш bind, и пытаемся понять, с чем это может быть связано.
Надеюсь, вы догадаетесь при необходимости настроить соответствующим образом ваш фаервол для работы DNS-сервера.

Если положительный ответ получен, значит ваш DNS-сервер работает и теоретически может обслуживать вашу сеть :)

Теперь давайте настроим ваш компьютер на работу с установленным DNS-сервером. Для этого необходимо внести изменения в файл /etc/resolv.conf. Выглядеть он будет примерно следующим образом:

# cat /etc/resolv.conf
# Ваш домен
domain domain.com
# IP адрес либо 127.0.0.1 либо адрес вашей машины
nameserver 127.0.0.1
Проверяем, обращается ли ваша машина к установленному DNS-серверу:

# nslookup yandex.ru
Server: localhost.domain.com
Address: 127.0.0.1
Non-authoritative answer:
Name: yandex.ru
Address: 213.180.216.200
Если получен ответ, аналогичный тому, что вы видите выше, значит, обращение происходит успешно.

С целью уменьшения трафика от вашего DNS сервера имеет смысл указать ему адреса DNS серверов вашего провайдера. В этом случае при попытке резольвинга DNS имени ваш DNS сервер будет сначала обращаться к кэшу на сервере провайдера.

Для этого необходимо добавить в наш файл конфигурации (named.conf) опцию forwarders.
В секции options добавляем следующую строку:

forwarders { 195.5.45.17; };
Не забудьте изменить IP адрес на адрес DNS сервера вашего провайдера.

Секция options в файле конфигурации должна выглядеть вот так:

options {
directory "/etc/namedb"; // Working directory
pid-file "named.pid"; // Put pid file in working dir
allow-query { "corpnets"; };
forwarders { 195.5.45.17; };
};
После изменения файла конфигурации необходимо перестартовать named, для чего можно воспользоваться командой:

# killall -HUP named


Настройка DNS-сервера для работы с утилитой удаленного администрирования rdnc

Теперь настроим наш DNS сервер для работы с утилитой удаленного администрирования rndc, которая в дальнейшем вам очень пригодится.

Чтобы решить эту задачу, нам необходимо создать файл конфигурации для утилиты rndc.conf и добавить несколько строк в конфигурационный файл нашего сервера.
Копируем содержимое файла /usr/sbin/rndc-confgen в файл /etc/namedb/rndc.conf, который будет служить конфигурационным файлом для утилиты rndc:

# /usr/sbin/rndc-confgen > /etc/namedb/rndc.conf
В результате выполнения этой команды мы получим файл rndc.conf примерно следующего содержания:

# Начало файла rndc.conf
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "SW8ldl5IOMfhvlqxyRuRVw==";
};
options {
default-key "rndc-key";
default-server 127.0.0.1;
default-port 953;
};
# Конец файла rndc.conf
# Начало секции для named.conf
# Для использования ключа авторизации необходимо добавить следующие строки в файл
# named.conf, при необходимости исправив список разрешенных для авторизации хостов:
key "rndc-key" {
algorithm hmac-md5;
secret "SW8ldl5IOMfhvlqxyRuRVw==";
};

controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
#Конец секции для named.conf
Теперь нужно добавить в самое начало файла конфигурации DNS сервера (named.conf) следующую секцию файла rndc.conf:
key "rndc-key" {
algorithm hmac-md5;
secret "SW8ldl5IOMfhvlqxyRuRVw==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
После этого можно перезапустить named:
# killall -HUP named
Давайте проверим, работает ли наша утилита для удаленного администрирования DNS сервера:

# rndc status
number of zones: 3
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
server is up and running
Если выполнение данной команды прошло успешно, и вы получили примерно то, что получилось выше, значит утилита смогла подключиться к вашему named, успешно авторизовалась при помощи ключа, который мы создали, и попросила показать статус DNS сервера.

При помощи утилиты rndc можно делать очень много различных операций с вашим DNS сервером. Запустите ее без аргументов и увидите список доступных команд. :)



На этом установка и конфигурация вашего DNS сервера закончена. После ее окончания должен получиться DNS сервер, который может обслуживать вашу локальную сеть, использовать кэш DNS-сервера провайдера для оптимизации распознания имен Интернет и поддерживает удаленное управление при помощи утилиты rndc.



В следующей части статьи мы рассмотрим такие темы, как:

1. Настройка DNS сервера для поддержки домена.
2. Повышение безопасности DNS сервера.
3. Параметры в файле доменной зоны.

Автор: Дмитрий Донченко.
Огромное спасибо всем кто помогал написать эту статью. Отдельное спасибо bm-у, моему лучшему другу и коллеге, который высматривал очепятки и неправильности в том, что я тут насочинял.

Оригінал : http://www.ru-board.com/new/article.php?sid=161