Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Умные роутеры, файрволы, и саботаж данных



 

Некоторые роутеры или файрволы достаточно умны. Они анализируют подключения и при обнаружении FTP-подключения бесшумно подменяют данные передающиеся между клиентом и сервером. Такое поведение является саботажем данных и может доставить неприятности, если пользователь не разрешил такое поведение явным образом.

Приведем пример. Предположим, что клиент находится за NAT-роутером и пытается подключиться к серверу. Предположим также, что клиент не осведомлен в том, что он находится за NAT и использует активный режим. Клиент отсылает команду PORT со своим локальным, немаршрутизируемым IP-адресом, серверу:

 

PORT 10,0,0,1,12,34

 

Эта команда указывает серверу на подключение по адресу 10.0.0.1 на порту 12*256+34 = 3106

После этого NAT-роутер бесшумно подменяет команду, включая внешний IP-адрес, а также создает временный порт для переброски FTP-сессии, возможно даже на другом порту:

 

PORT 123,123,123,123,24,55

 

Эта команда указывает серверу на подключение по адресу 123.123.123.123 на порту 24*256+55 = 6199

Благодаря такому поведению NAT-роутер позволяет неправильно настроенному клиенту использовать активный режим.

Почему такое поведение не является приемлемым? Если эта возможность используется по умолчания, без согласия пользователя, из этого следует множество проблем. FTP-подключение в своей основе будет работать, но сразу после исчерпания тривиальных случаев использования передача будет разорвана, не оставляя особых средств диагностики проблемы.

· NAT-роутер слепо предполагает, что некоторые подключения принадлежат FTP основываясь на таких данных, как целевые порты или ответы сервера:

· Нет никакой гарантии относительно используемого протокола, несмотря на автоматическое определение (такие случаи называют ложной тревогой). Хоть это и маловероятно, вполне допустимо, что в будущих версиях протокола FTP синтаксис команды PORT может измениться. NAT-роутер, модифицируя команду PORT, изменяет без ведома пользователя параметры, которые он не поддерживает, из-за чего соединение будет разорвано.

· Определение протокола роутером может не распознать FTP. Предположим, что роутер следит только за целевым портом, а если этот порт 21-ый, он будет распознан как FTP. Подключения в активном режиме от неправильно настроенного клиента к серверу на 21-ом порту будут работать, но подключения к другим серверам на нестандартных портах - нет.

· Очевидно, что NAT-роутер не сможет модифицировать подключение, если FTP-сессия зашифрована, оставляя пользователя в недоумении, т.к. работать будут только незашифрованные подключения.

· Предположим, что клиент за NAT-роутером отсылает "PORT 10,0,0,1,12,34". Каким образом NAT-роутер осведомлен в том, что клиент настроен неправильно? Также возможен случай с правильно настроенным клиентом, который инициирует FXP (сервер-сервер) передачу между сервером, к которому он подключен и устройством, которое находится в локальной сети сервера.

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

В этом подразделе мы рассматривали сочетание NAT-роутера на стороне клиента в активном режиме, те же рассуждения применяются и в случае сервера за NAT и ответами на команду PASV.

 

PureFTPd.

 

Pure-FTPd — свободный FTP-сервер для операционных систем семейства UNIX, распространяется по лицензии BSD. Основное внимание уделяется безопасности и простоте настройки.

 

Функциональные возможности

· Простота установки и конфигурирования.

· Встроенная поддержка UTF-8.

· При подключении по медленным каналам и работе с несколькими серверами возможна работа по FXP протоколу.

· Может выполняться как отдельный демон (standalone mode), так и через супер-сервер inetd.

· Поставляется с программой мониторинга pure-ftpwho (с версии 0.97.7), которая в реальном времени показывает кто скачивает/загружает файлы и с какой скоростью. Возможен запуск pure-ftpwho как CGI приложения с возможностью генерации выходных данных в виде HTML или XML.

· Сообщения сервера на данный момент переведены на 21 язык (в том числе и на русский).

· Поддержка как базового, так и расширенного (например MLST) набора FTP команд[3].

· Возможность использования различных методов идентификации: unix (для пользователей перечисленных в /etc/passwd), PAM, LDAP (поддерживаются методы plaintext, Crypt, MD5, SMD5, SHA и SSHA), MySQL, PostgreSQL, PureDB (механизм самого Pure-FTPd), расширенный (возможность написать и подключить свой модуль идентификации). Допустимо использование нескольких методов одновременно. Имя пользователя и пароль будут проверяться каждым методом последовательно. Проверка завершается и оставшиеся методы использованы не будут если пользователь найден (вне зависимости от того, правильный пароль или нет).

· Возможен запуск рабочих процессов в chroot-е.

· Создание виртуальных пользователей.

· Задание индивидуальных квот, не связанных с системными, для пользователей (максимальное количество файлов, максимальный размер каталога, максимальная скорость скачивания/закачивания).

· После загрузки файла на сервер возможен автоматический запуск внешних скриптов или программ (например, для проверки на вирусы, расчет MD5 хэшей файлов, отправка уведомлений о загрузке).

· Возможность создания виртуальных FTP серверов (поскольку ftp протокол не поддерживает обращение к серверу по имени, то для каждого сервера необходим выделенный IP адрес).

· Можно запускать несколько копий сервера с различными конфигурационными опциями.

· Запрет доступа к dot-файлам (имя которых начинается с точки, например, .ssh directories, .bash_history files, .rhosts).

· Создание псевдонимов (алиасы) для директорий. Например, если создать алиас pictures для /home/user/pictures и выполнить команду cd находясь в /home, то сервер автоматически совершит редирект в /home/user/pictures (конечно при условии, что не существует директории /home/pictures). Может использоваться для быстрого перехода в определенные каталоги (т.е. работать как shortcuts).

· Операции загрузки файлов атомарны.

· Работа по IPv6, в том числе поддержка EPSV/EPRT команд.

· По заявлению авторов Pure-FTPd первый сервер поддерживающий ESTA и ESTP команды.

PURE-FTPD — файловый сервер для ОС семейства Linux. Для работы используется дистрибутив Linux Mandriva 2010.0.

Чтобы включить или отключить некоторые функции файлового сервера, необходимо отредактировать файл конфигурации сервера, а именно убрать «комментирование» строчки с описанием функции (стереть символ # вначале строки) и выставить текстовое или числовое значение, согласно функции. Если необходимо отключить некоторые функции, то не нужные строчки «комментируются», то есть в начале ставится знак #. Если в начале строки стоит знак #, то вся строка читаться сервером не будет, носит характер комментария. После чего необходимо перезагрузить файл конфигурации в сервер и перезапустить сервер.

Файл конфигурации сервера PURE-FTPd выглядит следующим образом:

 

/etc/pure-ftpd/pure-ftpd.conf

 

# Для запуска Pure-FTPd с этой конфигурацией вместо параметров # командной строки, запустите такую команду: # /usr/sbin/pure-config.pl /etc/pure-ftpd/pure-ftpd.conf # # Не забудьте изучить документацию на сайте, для получения # полного списка команд - http://www.pureftpd.org/documentation.shtml   # Chroot`ить всех пользователей в их хомяках ChrootEveryone yes   # Если в предыдущей опции было выбрано "no", то члены следующей # группы не будут chroot`ится. Всё остальные - будутe. Если Вы не хотите # chroot`ить всех, то просто раскоментируйте ChrootEveryone и TrustedGID. # TrustedGID 100   # Включить "фичи" совместимости, для кривых клиентов BrokenClientsCompatibility no   # Максимальное число одновременных юзеров MaxClientsNumber 50   # Работать в фоне (демоном) Daemonize yes   # Максимальное число одновременных соединений с одного IP MaxClientsPerIP 8   # Если вы хотите логировать все команды клиентов, то в этом # пункте должно быть "yes". Если необходимо логгировать также # ответы сервера, то просто продублируйте этот пункт. VerboseLog no   # Показывать или нет файлы, начинающиеся с точки, даже когда клиент # явно не говорит, что это надо делать, опцией "-a". DisplayDotFiles yes   # Не разрешать аутентифицированных юзеров - этот FTP # только для анонимных клиентов. AnonymousOnly no   # Запретить анонимоусов - FTP тока для регистрованных юзеров. NoAnonymous no   # Средства syslog (auth, authpriv, daemon, ftp, security, user, local*) # Дефолт - "ftp". "none" - отключает логирование. SyslogFacility ftp   # Показывать какие-то куки? (Display fortune cookies) # FortunesFile /usr/share/fortune/zippy   # Не резольвить имена хостов в логах. Логи становятся менее информативными, # но и ресурсов требуется меньше. "yes" - имеет смысл ставить на очень # загруженных серверах, или при неработающем DNS. DontResolve yes   # Максимальное время простоя (по окончании рвётся коннект), в минутах # (default = 15 minutes) MaxIdleTime 15   # Файл конфигурации LDAP (смотрите README.LDAP) # LDAPConfigFile /etc/pureftpd-ldap.conf   # Файл конфигурации MySQL (смотрите README.MySQL) MySQLConfigFile /usr/local/etc/pureftpd-mysql.conf   # Файл конфигурации Postgres (смотрите README.PGSQL) # PGSQLConfigFile /etc/pureftpd-pgsql.conf   # база данных юзеров PureDB (смотрите README.Virtual-Users) # PureDB /etc/pureftpd.pdb   # путь к сокету pure-authd (смотрите README.Authentication-Modules) # ExtAuth /var/run/ftpd.sock   # Если нужно подключить PAM аутентификацию раскомментируйте # следующую линию # PAMAuthentication yes   # Если нужна системная, Unix аутентификация (/etc/passwd), # раскомментируйте следующую линию # UnixAuthentication yes   # Пожалуйста, отметтьте, что LDAPConfigFile, MySQLConfigFile, # PAMAuthentication и UnixAuthentication могут использоваться только # один раз, но они могут использоваться вместе. Например, если вы # используете MySQLConfigFile, затем UnixAuthentication, то идёт запрос # к MySQL. Если в БД такой пользователь не найден, то пробуется # системный пользователь в /etc/passwd и /etc/shadow. Если SQL # аутентификация неудачна по причине неправильного пароля, то происходит # остановка дальнейшего поиска пользователя. Методы аутентификации # будут ипользоваться в порядке в которм они заданы   # Пределы рекурсии команды 'ls'. Первй аргумент - максимально число файлов, # которое будет показано. Второе - максимальное число подкаталогов # LimitRecursion 2000 8   # Имеют ли право анонимоусы создвать новые директории? # AnonymousCanCreateDirs no   # Если система загружена более, чем указанное тут значение, то # анонимоусы не могут что-либо скачивать # MaxLoad 4   # Диапазон портов для пассивного соединения. Если у вас файрволл рубает # стандартный диапазон # PassivePortRange 30000 50000   # Принудительный IP адрес в PASV/EPSV/SPSV ответах. - для NAT. # Символические имена хостов такде приняты для шлюзов с динамическим IP # ForcePassiveIP 192.168.0.1   # Соотношение upload/download для анонимоусов. # AnonymousRatio 1 10   # Соотношение upload/download для всех юзеров. # Эта директива не перекрывает предыдущую. # UserRatio 1 10   # Запретить скачку файлов владельцем которых является "ftp", т.е. # файлы были загружены но не одобрены местным (локальным) админом. # (Название пункта интересное :))) # AntiWarez yes   # IP адрес/порт на которых слушаем (дефолт = все IP и порт 21). #Bind 192.168.254.254,21   # Максимальная скорость для анонимоусов в KB/s # AnonymousBandwidth 8   # Максимальная скорость для всех юзеров (включая анонимов) в KB/s # Используйте AnonymousBandwidth или UserBandwidth, использовать оба, # не имеет смысла. # UserBandwidth 8   # Маска для создаваемых файлов. <umask для файлов>:<umask для директорий>. # 177:077 - если вы параноик :) # umask - это такое число, при вычитании которого из максимума (777) и # получается нужная маска. т.е. для случая ниже маски будут, соответствено: # 644 для файлов, и 755 для директорий Umask 133:022   # Минимальный UID с которым юзер будет пущен. # (В родном варианте тут было 100. Я поставил тыщщу) MinUID 1000   # Разрешить передачу FXP для авторизованных юзеров. # (Это передача файлов прям между серверами - т.е. если вам надо # скопировать файл с одного сервака на другой, вы его вначале тащите # к себе, затем кладёте куда надо. При включении этой опции сервера # сами перекинут файл между собой. Но это палево - я серверов с # включенной этой функцией ещё не видел :))) AllowUserFXP no   # Разрешить передачу FXP для анонимоусов и не-анонимоусов # (видимо, для всех вообще). AllowAnonymousFXP no   # Пользователи не могут удалять и изменять файлы начинающиеся на точку('.') # даже если они их владельцы. Если TrustedGID включена, эта группа имеет # доступ к этим файлам. ProhibitDotFilesWrite no   # Запретить чтение файлов начинающихся с точки (.history, .ssh...) ProhibitDotFilesRead no   # Никогда не перезаписывать файлы. Когда имя, для закачиваемго файла уже # существует, он будет автоматически переименован в file.1, file.2, file.3, ... AutoRename no   # Запретить анонимным юзерам загружать новые файлы (no = аплоад разрешён) AnonymousCantUpload no   # Только подключения к этому IP адресу могут быть не анонимными. Вы # можете использовать эту директиву чтобы использовать несколько IP # для анонимного FTP, и оставить приватный, зафаерволленый IP для # удалённого администрирования. также вы можете разрешить нероутабельный # локальный IP (типа 10.x.x.x) для аутентификации и оставить публичный # (для анонимоусов) FTP-сервер на другом IP. #TrustedIP 10.1.1.1   # Если вы хотите чтобы PID добавлялся в каждую линию лога, # то раскомемнтируйте следующую линию. #LogPID yes   # Создавать дополнительный лог-файл с логом в формате типа "apache": # fw.c9x.org - jedi [13/Dec/1975:19:36:39] "GET /icap.tar.bz2" 200 21808 # Этот лог-файл может быть обработан программами для # анализа логов апача. # AltLog clf:/var/log/pureftpd.log   # Создавать дополнительный лог-файл в формате оптимизированном для # статистических отчётов (х.з. как это. Надо будет посмотреть) # AltLog stats:/var/log/pureftpd.log   # Создавать ещё один лог с переданными файлами в стандарте W3C # (совместим с многими коммерческими анализаторами) # AltLog w3c:/var/log/pureftpd.log   # Отключить команду CHMOD. Пользователи не смогут менять разрешения # на файлы. #NoChmod yes   # Позволить юзерам закачивать но не удалять файлы. #KeepAllFiles yes   # Автоматически создавать домашнюю директорию пользователя, # если она отсутствует #CreateHomeDir yes   # Включить виртуальную квоту. Первое число - максимальное число файлов. # Второе число - максимальный размер, в мегабайтах. # Так 1000:10 ограничивает каждого пользователя 1000 файлов и 10-ю мегами. #Quota 1000:10   # Если pure-ftpd скомпилен с поддержкой standalone режима, вы можете изменить # местоположение pid-файла. Дефолтовое положение - /var/run/pure-ftpd.pid #PIDFile /var/run/pure-ftpd.pid   # Если pure-ftpd скомпилен с поддержкой pure-uploadscript, # то этот пункт позволяет писать информацию о новых загруженных # файлах в /var/run/pure-ftpd.upload.pipe так что pure-uploadscript может # прочесть их и обработать загруженный файл. #CallUploadScript yes   # Эта опция полезна на серверах, гда позволен аплоад анонимоусам. # Если /var/ftp находится в отдельном разделе /var, это позволяет # сохранить свободное место и защитить файлы логов. Когда процент # заполнения больше чем указанный тут, аплоад автоматом запрещается. MaxDiskUsage 99   # Установите 'yes' в этой опции если хотите разрешить юзерам # переименовывать файлы. #NoRename yes   # Включить 'customer proof': какая-то ошибка, типа 'chmod 0 public_html', # при совместной работе, чтоль... Короче это не баг а фича... :) И чтобы # тупые клиенты не напрягали ваш саппорт надо поставить 'yes' в этом # пункте. Если клиенты имеют немного знаний по Unix то эта фича # бесполезна. Если у Вас хостинг - включите её. # (перевод почти дословный - но про что речь я так и не понял...) CustomerProof yes   # Число параллельных процессов. Работает тока если сервер был # скомпилен с опцией '--with-peruserlimits' (тут чё-то про то, что # в большинстве бинарных дистрибов так оно и есть). # Формат:<максимум сессий на юзера>:<максимум сеансов анонимоусов> # Например, 3:20 значит что аутентифичированный юзер может иметь три # активных сеанса. А на всех анонимов - максимум 20 сеансов. #PerUserLimits 3:20   # Когда загружен файл на сервер, и есть предыдущая версия (с тем же именем), # то старый файл не будет ни удалён ни усечён. Загрузка будет произведена # во временный файл и по окончании загрузки будет произведено атомарное # переключение к новой версии файла. Например, при загрузке большого PHP # сценария, апач будет работать со старой версией до полной загрузки # и немедленно переключится на новый как тока он будет полностью передан # Эта опция несовместима с виртуальными квотами. #NoTruncate yes   # Эта опция может принимать три значения: # 0 - отключить SSL/TLS шифрование (по-умолчанию). # 1 - принимать и шифрованные и обычные подключения. # 2 - отклонять подключения которые не используют SSL/TLS, # включая анонимные соединения. # Не раскомментируйте это вслепую. Проверьте, что: # 1) Сервер скомпилен с поддержкой SSL/TLS (--with-tls), # 2) Положен валидный сертификат, # 3) Только совместимые клиенты залогинятся. # TLS 1   # Слушается тока IPv4 адрес в режиме standalone (т.е. IPv6 отключен) # По дефолту, IPv4 и IPv6 включены. IPV4Only yes   # Слушается тока IPv6 адрес в режиме standalone (т.е. IPv4 отключен) # По дефолту, IPv4 и IPv6 включены. # IPV6Only yes   # Поддержка UTF-8 для имён файлов (RFC 2640) # Определите кодировку для файловой системы сервера и, опционально, # дефолтовую кодировку для клиентов, которые не юзают UTF-8. # Работает тока если pure-ftpd скомпилен с '--with-rfc2640' FileSystemCharset koi8-r ClientCharset cp1251

 




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.