Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

WinCity.Ru _ Интернет технологии _ FTP и брандмауэр.

Автор: Avik Среда, 16 Сентября 2009, 14:20

На компе с W2003S установлен FTP сервер TYPSoft, настроен на типовой для FTP порт 21. Был подключен через роутер. При таком подключении возникли странные проблемы. На мой вопрос об этом в соседней теме отвера нет. Убрал роутер, сделал программное соединение VPN. Пока соединение защищено брандмауэром, доступа к FTP серверу извне нет. Выключаю брандмауэр – все работает. Однако в таком режиме чувствуешь себя голым – тебя могут увидеть все снаружи. Мало увидеть, но не найдя денег в компе – и нагадить.
Просмотрел все про брандмауэр. Все настройки касаются относительно тех программных средств, которые внутри компа. Я могу кому-то разрешить лезть в интернет, а кому-то запретить. Далее, насколько я понимаю, брандмауэр следит за тем, что идет извне. Если это по моим обращениям – пропускает. Если идет обращение извне не по моему запросу – не пропускает. Это как раз про обращение к FTP серверу. Изнутри компьютера запросов не было, идет запрос снаружи на 21 порт. И естественно, брандмауэр не пропустит внутрь такой запрос.
Вопрос: как защитить компьютер с FTP сервером?

Автор: Админ Среда, 16 Сентября 2009, 16:46

Общий принцип защиты - разрешить только то что нужно, остальное запрещать. Не совсем понятно про какой брндмауэр идет речь - про встроенный в Windows 2003 Server? Если мне не изменяет память, то штатный файерволл в Win2k3 достаточно куцый в плане настроек и функциональности.

Кроме этого необходимо определиться в каком режиме должен работать FTP сервер (режиме активных соединений, пассивных, или же и тех и других), т.к. от этого зависит, какие еще порты должны быть открыты на сервере (с каких портов сервер может инициировать соединения во внешнюю сеть). Другими словами только одного открытого на входящие соединения 21го порта недостаточно.
В режиме активных соединений сервер должен уметь устанавливать исходящие соединение со своего 20го порта на удаленный IP-адрес и порт, указанный клиентом, для пересылки данных.
В режиме пассивных соединений, на сервере должен быть доступен для входящих соединений диапазон портов (с № > 1024) , к которым подключаются клиенты для передачи (получения) данных (эти порты открываются динамически FTP-сервером).
А по 21 порту передаются только лишь управляющие команды, сами данные, передаются по другим портам (20му или динамически открытому).

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

Автор: Avik Четверг, 17 Сентября 2009, 9:13

Спасибо что откликнулись. Не все понял, поэтому буду цитировать.

Цитата
каком режиме должен работать FTP сервер

Я не очень представляю набор режимов. В нашем случае есть база с файлами, есть бесплатная программа TYPSoft. В настройках сервера есть учетные данные пользователей и указаны пути, по которым они могут получать файлы. Т.е. удаленные пользователи, желающие получить эти файлы, настраивают должным образом FTP клиента и могут получать эти файлы. Насколько я понимаю, в данной ситуации клиенты активны, сервер пассивен. Другой режим (активный сервер) я как-то представить себе не могу. Не могу, применительно к своим целям. Для нашего режима внешним пользователям достаточно открыть IP адрес сервера и 21 порт.

Цитата
Общий принцип защиты - разрешить только то что нужно, остальное запрещать.

Все так, но только со стороны защищаемого компьютера. В данном случае я использую встроенный брандмауэр. Но это непринципиально. Любой брандмауэр регулирует только потоки из компьютера во внешнюю среду и перекрывает все обращения извне, если они не были инициированы из защищаемого компьютера. При обращении извне к FTP серверу я не могу знать кто будет обращаться и соответственно нет объекта настройки. В лучшем случае я мог бы открыть список по IP адресам пользователей. Но ведь могут быть пользователи с динамическими IP адресами....

Цитата
возьмите нормальный Firewall, в котором можно настраивать правила как входящих, так и исходящих соединений

Какой НОРМАЛЬНЫЙ фоервол может подойти к моей ситуации? Повторюсь: я не знаю параметров пользователей (IP), которые могут обратиться к моему фтп.

Автор: Egor Четверг, 17 Сентября 2009, 13:02

А Вам и не требуется фаервол smile.gif TYPSoft это, конечно, хорошо. Но зачем. Вы, с тем-же успехом, можете запустить FTP на IIS и дать разрешения к папкам по NTFS. Результат идентичен, но на встроенном брэндмауэре можно "тупо" открыть вход по 21 порту.

Автор: Админ Четверг, 17 Сентября 2009, 13:15

Начнем по порядку:

1) FTP-сервер: активный и пассивный режим работы.

Во время FTP-сессии между клиентом и сервером устанавливается как минимум 2 соединения:
1. Соединение для пересылки команд
2. Для пересылки данных.
Соединение для пересылки команд всегда устанавливается клиентом. Т.е. клиент со своего локального порта подключается к заранее известному IP-адресу FTP-сервера, на открытый на сервере для входящих подключений 21 порт.
А вот в зависимости от того, кто инициализирует соединение для пересылки данных (в ответ на соответствующую команду, переданную по уже уставленному управляющему соединению), различают активный и пассивный режим работы FTP-сервера.

В случае активного режима инициатором соединения является сервер, т.е. происходит примерно следующее:
а) для получения данных клиент у себя открывает произвольный порт, сообщает свой IP и номер этого порта FTP серверу и ожидает входящего соединения от сервера (т.е. клиент сам становится в каком-то роде "сервером" на время передачи данных)
б) FTP-сервер, со своего локального порта с номером 20, подключается к указанному клиентом IP-адресу на указанный порт, на котором клиент "ожидает" соединения от сервера.
в) после того, как FTP сервер со своего локального 20го порта установил соединение с IP адресом и портом клиента, по этому соединению начинается передача данных. После окончания передачи соединение закрывается.
Таким образом, для успешной работы в активном режиме необходимо чтобы IP-адреса и клиента и сервера были "видны" друг-другу, а также и клиент и сервер должны уметь устанавливать и принимать соединения на порты с рассмотренными выше номерами. Такие требования не всегда достижимы, особенно на стороне клиента, когда он находится за NAT-ом и FireWall-ом. Поэтому для ситуаций, когда FTP-сервер не может установить соединение с клиентом, используется пассивный режим.

При пассивном режиме инициатором соединения для передачи данных, также как и управляющего соединения, является сам клиент. В этом случае:
а) для передачи данных FTP-сервер открывает у себя произвольный порт (помимо 21го), сообщает его клиенту и ждет входящего соединения на него от клиента
б) Клиент, со своего локального порта устанавливает соединение с указанным FTP-сервером портом для передачи данных.
в) После того как клиент подключился к FTP серверу на указанный им порт, начинается передача данных. После окончания передачи данных соединение закрывается.
Таким образом, при пассивном режиме отпадает необходимость доступности ip-адреса клиента "извне".

2) Необходимые настройки Firewall'а
Для того чтобы ФТП сервер работал в активном режиме, необходимо в Firewall-е на FTP-сервере:
а) Разрешить входящие подключения на 21 порт IP-адреса сервера.
б) Разрешить исходящие соединения с локального 20го порта сервера на любой удаленный IP-адрес и удаленный порт.
Кроме этого, обязательным условием корректной работы в данном режиме, является "доступность" для входящих подключений IP-адреса и динамически открытого порта самого клиента. Если он сам находится за NAT-ом или Firewall-ом, то на клиенте также необходимы производить настройки соответствующего ПО

Для того, чтобы FTP-сервер работал еще ив пассивном режиме, необходимо в Firewall-е на FTP-сервере:
в) разрешить входящие подключения с любых удаленных IP-адресов и любых удаленных портов на IP-адрес сервере и заранее определенный диапазон локальных портов, который будут открываться FTP-сервером в пассивном режиме, для приема подключений клиентов при передача данных. Этот же диапазон портов необходимо указать и в настройках FTP-сервера, чтобы он "знал" о нем smile.gif

3) Какой Firewall выбрать?
А это должно быть целиком ваше решение, зависящее от возлагающихся на него, денежных средств (если брать шароварный продукт), квалификации необходимой на настройки и т.д. Встроенный в Win2k3 Server файерволл не умеет ограничивать исходящие соединения, а также, по-моему не умеет оперировать диапазонами портов и IP (хотя могу ошибаться, т.к. вплотную не общался с ним). Мне для домашних нужд вполне хватается Firewall'а из ESET Smart Security. Для корпоративных задач можно использовать как аппаратные файерволлы, так и программные типа ISA Server, Kerio Winroute Firewall или других. Вобщем по этому вопросу стоит погуглить, т.к. по поводу выбора софтверного файерволла велось немало холиваров smile.gif

Автор: Avik Пятница, 18 Сентября 2009, 10:11

Не очень понял по поводу настроек фоервола в пассивном режиме. Именно этот режим мы используем. Если я открываю все IP для удаленных, то что же тогда защищается, пусть даже открыты не все порты, а некий диапазон?

Автор: kenm Пятница, 18 Сентября 2009, 14:00

Avik, современные FW открывают порты для входящих соединений "осознанно" в зависимости от состояния сессии и используемого протокола.
Если на пальцах то примерно так можно рассказать:
В DMZ находится www сервер правилами FW, ему запрещены любые исходящие соединения, из вне разрешено подключение на tcp 80 (http).
Http клиент инициирует исходящее соединение с TCP 3021 -> TCP 80 веб сервера.
Согласно правилам описанного ACL, по идее ответный пакет www сервера должен быть убит на FW так как для него нет правила.
Для того чтобы не расписывать правила для ответов на разрешенный трафик, на FW имеется алгоритм который автоматически пропустит ответный пакет от www-сервера клиенту. К примеру, в терминах cisco такой механизм называется ip inspect.
Проблемы с протоколами, которые имеют secondary connection (ftp, oracle, pptp e.t.c.), обычно возникают если где-то между клиентом и сервером используется некорректно настроенные NAT и FW .
К примеру, очень частая проблема с ftp протоколом:
Ftp клиент находится в приватной сети и имеет доступ в интернет через NAT. При попытке подключения к ftp-серверу в активном режиме клиент сообщит серверу свой сокет на котором от ожидает соединения к примеру 192.168.33.22:6783. По понятным причинам, ftp сервер не сможет установить соединение с таким хостом. "Умный" NAT+FW подменит в пакете клиента приватный ip клиента на надлежащий и корректно обработает входящий пакет от ftp сервера.



Автор: Админ Пятница, 18 Сентября 2009, 14:08

Если брать сторонний программынй файерволл (не штатный из Win2k3) то во многих из них настройки делаются для конкретного приложения. Другими словами указанные порты будут открыты только для программы, реализующей FTP-сервер, для всех остальных - будут закрыты. Если же рассматривать файерволл, в котором управление портами производится для системы в целом, то здесь возникает потенциальная угроза безопасности, что один из портов, отведенных для динамического открытия ФТП сервером, будет открыт для входящих соединений зловредной программой, которая каким-то образом окажется запущенной на сервере и этот же номер порта будет известен злоумышленнику, который сможет на этот открытый порт подключиться.

Что же защищается при настройках файерволла для пассивного режима:
1) Во-первых, защищаются уже открытые порты прочих приложений, которые не должны быть видны "извне" (именно они обычно и подвергаются атаке)
2) Во-вторых, указанный диапазон портов хоть и открыт, но открыт только на входящие подключения и только на интефейсе, смотрящим во внешнюю сеть. При этом, для успешной реализации атаки, с использованием этого порта должна обязательно существовать некая программа, которая будет "слушать" этот порт, ожидая входящих подключений.

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

Другого варианта работы в пассивном режиме не существует. Вам придется либо согласиться с гипотетическим риском появления на сервере программы, которая "угадает", откроет для входящих подключений, и сообщит злоумышленнику номер порта, который отведен для пассивного ФТП или же использовать только активный режим работы, что тоже чревато своими ограничениями.
Кроме этого, защиту сервера и локальной сети нужно строить комплексно: ограничение физического доступа к серверу, установка сервера в ДМЗ, антивирусная защита, парольная защита, сетевой экран и т.д.

Автор: Avik Понедельник, 21 Сентября 2009, 9:30

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

Автор: Админ Понедельник, 21 Сентября 2009, 9:48

Avik, обратите внимание на сообщение kenm, Вполне дельное замечание по поводу ip inspect и т.п. Я как-то упустил это из виду по причине отсутствия плотного общения с интеллектуальными файерволлами smile.gif Моя рассуждать толька теоретически. biggrin.gif
Вобщем удачи с освоением.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)