Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

articles:home-ftp [2017/09/05 02:55] (текущий)
Строка 1: Строка 1:
 +====== home-ftp ======
 +<​sub>​{{home-ftp.odt|Original file}}</​sub>​
 +
 +====== большие проблемы маленьких серверов ======
 +
 +крис касперски ака мыщъх, a.k.a. nezumi, a,k.a. souriz, a.k.a. elraton, a.k.a chuha, no-email
 +
 +**домашние ****ftp/​http ****сервера сейчас воздвигают многие****хакеры,​ совершенно не представляя во что они ввязываются. все это безумно затягивает и не отпускает назад, но проблемы остаются проблемами,​ они растут и накапливаются словно снежный ком, с которым потом уже не справиться,​ если только заранее не продумать концепцию сервера вплоть до мелочей,​ исправление которых на ранних стадиях проходит довольно безболезненно,​ но вот потом… мыщъх делится своим многолетним опытом воздвижения,​ администрирования и эксплуатации малых ****ftp/​web/​smtp/​pop3****-серверов**
 +
 +===== введение =====
 +
 +Зачем воздвигать свой собственный сервер,​ когда коммерческий хостинг стоит копейки (costs next no nothing – выражаясь на английский манер),​ избавляя нас от головой боли и кучи сопутствующей ей проблем?​ Однако,​ вопреки всем прогнозам количество "​домашних"​ серверов не только не сокращается,​ но даже увеличивается,​ причем лавинообразно. Почему?​!
 +
 +Начнем с того, что рулить собственным сервером это безумно интересно и увлекательно,​ к тому же всякий начинающий администратор просто обязан попрактиковаться на "​кошках",​ потому как экспериментировать с продакшен машиной ему не дадут, а ошибки конфигурации промышленных серверов обходятся весьма недешево. Так почему бы не получить боевой опыт малой кровью,​ тренируясь на своей собственной тачке?
 +
 +Во-вторых,​ сейчас очень трудно найти коммерческого хостера,​ "​крышующего"​ хакерский контент или, например,​ коллекцию электронных книг (музыки,​ фильмов). Бесплатные же хостеры уничтожают такие аккаунты по первой жалобе,​ даже если она поступает от Васи Пупкина,​ а не от правообладателя контента (чье право на собственность еще необходимо доказать,​ а доказывается оно в суде и никак иначе).
 +
 +В-третьих,​ открыть доступ к своему хранилищу дистрибутивов (аудио,​ видео-файлов) добавив пару строк в конфигурационный файл домашнего сервера,​ намного проще, чем заливать эти же файлы обменники с низкой скоростью и кучей тупых ограничений. Гораздо практичнее обмениваться файлами не через ненавистную "​рапшиду",​ а через домашние сервера. Вам никуда ничего не придется закачивать! Просто даете человеку линк — пускай скачивает хоть гигабайт,​ хоть весь образ Server 2008 и ни одна собака из органов об этом и знать не будет.
 +
 +В-четвертых,​ глюки у хостеров (даже коммерческих) случаются регулярно и web-мастера вынуждены тратить огромное количество времени на общение со службой поддержки,​ не желающей признавать очевидное. Опять-таки,​ где гарантия,​ что хостер следит за безопасностью:​ своевременно накладывает заплатки,​ резервирует данные и делает еще кучу других вещей?​!
 +
 +В-пятых,​ установка собственного SMTP/POP3 сервера заставляет забыть о письмах,​ порезанных спам-фильтрами (во всяком случае на нашей стороне),​ а собственный DNS, напрямую обращающийся к корневым доменным серверам по TCP-протоколу,​ не только работает быстрее и надежнее глючных DNS-серверов,​ предоставленных провайдером,​ но и практически не поддается атакам в отличии от провайдерских DNS по умолчанию работающих на протоколе UDP.
 +
 +В-шестых,​ мы получаем _полную_ статистику посещений и все счетчики (работающие по туманным алгоритмам) идут лесом. А статистика посещаемости — великая вещь! Добавим сюда еще возможность "​банов"​ некоторых враждебных пользователей,​ что тоже немаловажно. Даже если не пытаться определить их паспортные данные по IP, все равно — свой собственный сервер позволяет намного более оперативно реагировать на хакерские атаки и набеги всяких вандалов.
 +
 +Короче,​ домашний сервер — совершенно незаменимая в хозяйстве вещь!!!
 +
 +===== >>>​ врезка ссылка на упомянутые в статье программы =====
 +
 +  - **WAR-FTP**:​
 +    - последняя версия (датированная серединой 2006 года) вместе с обновлением лежит на http://​www.warftp.org/​ в разделе Download, и хотя некоторые считают ее устаревшей — это хороший выбор для начинающих администраторов,​ проверенный временем,​ очень простой в управлении и к тому же, бесплатный;​
 +{{home-ftp_Image_0.png}}
 +
 +Рисунок 1 WAR-FTP сервер за работой
 +
 +  - **SMALL HTTP**:
 +    - невероятно компактный "​швейцарский нож",​ включающий в себя кучу различных служб с гибкой системой настройки,​ последняя версия,​ занимающая чуть больше 100 Кб, вместе с документацией выложена на http://​smallsrv.com/​ и для жителей СНГ бесплатна. это хороший выбор для тех, кто уже освоил WAR-FTP и теперь хочет почувствовать себя настоящим администратором,​ курящим RFC с кучей прочей спецификаций;​
 +{{home-ftp_Image_1.png}}
 +
 +Рисунок 2 здесь раздают SMALL HTTP сервер
 +
 +  - **SyGate Personal Firewall**:
 +    - в настоящее время скуплен корпорацией Symantec и прекратил свое развитие в том виде, в котором он был, однако,​ мыщъх'​а он вполне устраивает,​ другие брандмауэры он еще не нюхал, поэтому,​ оставляет их выбор на совести читателя.
 +{{home-ftp_Image_2.png}}
 +
 +Рисунок 3 внешний вид SyGate Personal Firewall
 +
 +===== >>>​ врезка правовые аспекты проблемы =====
 +
 +Если мы собираемся распространять варез, то необходимо позаботиться о том, что прикрыть свою задницу. Кто сказал,​ что варез незаконен?​! Вообще-то,​ с юридической точки зрения такого термина вообще нет. Самолично выкладывая дистрибутив Вислы на домашний сервер,​ мы, действительно,​ как бы совершаем противоправное деяние,​ но вот именно,​ что "​как бы", потому что стоит только создать возможность закачки файлов на сервер другими пользователями,​ как мы всегда сможем отмазаться,​ что просто предоставили дисковое пространство для файлового обмена и откуда же нам знать обладало ли лицо, закачавшее данный файл, правами на его распространение или нет.
 +
 +А что это за лицо такое? Да хвост его знает, мы же логи не храним и даже если на upload'​естоит пароль,​ известный только нам одним, пускай правообладатель попробует доказать,​ что это не так!!! Логи у нас, закачка была локальной,​ следовательно в логах провайдера никаких следов преступности нет. А презумпцию невиновности еще никто не отменял. Отсутствие доказательств удаленной закачки вареза мифическим Васей Пупкиным еще не есть доказательство,​ что закачка была локальной!
 +
 +Если же контент принадлежит вам, то тут вообще никаких вопросов не возникает. Кстати,​ очень важный момент:​ //​**передача эксклюзивных прав на произведение издателю,​ оставляет за автор право включать это произведение в собственное **////​**portfolio и **////​**выпускать в составе полных сборников сочинений _без_ согласия лица, которому были переданы _эксклюзивные_ права и без выплаты дополнительных отчислений.**//​ Чем является домашний сервер — нашим portfolio или же полным сборником сочинений — пусть каждый решает сам. Закон же не дает четкого определения ни тому, ни другому.
 +
 +===== что нам понадобиться =====
 +
 +Приобретать дополнительный компьютер для воздвижения сервера совершенно необязательно,​ вполне сойдет и основная машина,​ правда,​ учитывая,​ что сервер должен (в идеале) работать круглосуточно и как можно реже перезагружаться,​ имеет смысл остановить свой выбор на маломощном (а, следовательно,​ малошумном) компьютере,​ полностью переведенном на пассивное охлаждение и оснащенного тихими дисками типа Seagate Barracuda.
 +
 +Еще нам понадобиться канал связи с внешним миром и тариф, позволяющий сидеть в сети неограниченное время и не платить за исходящий трафик. В идеале,​ конечно,​ это ADSL со статическим IP-адресом,​ на который можно "​навесить"​ бесплатное доменное имя типа nezumi.org.ru,​ но мыщъх начинал свои хроники с динамических IP-адресови с простого Dial-Up'​а,​ оплачиваемого безлимитной месячной картой. Это кажется невероятным,​ но доменные имена могут работать не только со статическими,​ но и динамическими IP-адресами,​ о чем написано много статей и книг, так что мыщъх не будет повторяться,​ тем более, что в наши дни Dial-Up стремительно уходит в прошлое,​ да и все равно пользы от такого сервера немного.
 +
 +{{home-ftp_Image_3.png}}
 +
 +Рисунок 4 по умолчанию DSL модемы выделяют на исходящий поток 1/4 от пропускной способности канала,​ но продвинутые модели от ZyXEL и D-Link позволяют этот параметр изменить,​ что очень важно для серверов,​ работающих преимущественно на отдачу
 +
 +Операционная система может быть любой: с точки зрения безопасности предпочтительнее OpenBSD, но вполне сойдет и W2K (XP Home имеет лимит на количество устанавливаемых соединений и прочие вредные ограничения,​ а потому от ее использования лучше всего сразу же отказаться).
 +
 +{{home-ftp_Image_4.png}}
 +
 +Рисунок 5 многие воздвигают домашние сервера на базе Linux/BSD, но мыщъх предпочитает верную ему W2K
 +
 +Выбор серверного программного обеспечения — весьма сложная задача,​ к которой предъявляются следующие,​ достаточно жесткие требования:​ бесплатность (в идеале),​ хорошая родословная (без длинного списка наспех затыкаемых дыр), отсутствие ограничений на количество подключений,​ гибкие настройки,​ позволяющие управлять скоростью отдачи (с учетом многопоточных качалок),​ автоматическая блокировка нарушителей,​ а так же хрогология подробных логов, полезных не только для сбора статистики,​ но и "​разбора полетов",​ если сервер работает неправильно или был злостно атакован воинствующими варварами.
 +
 +При работе под Windows нам еще понадобиться снифер и брандмауэр (в BSD и Linux системы все это входит изначально). Windows Firewall ни на что серьезное неспособен,​ ну а утилиты типа tcpdump в NT как не было так, и нет, а ведь она очень нужна, чтобы выявить источник необычной сетевой активности (например).
 +
 +Перепробовав огромное количество продуктов,​ мыщъх остановился на следующей комбинации WAR-FTP (ftp-сервер),​ SMALL HTTP (http/​ftp/​dns/​smtp/​pop3-сервер в одном флаконе) и SyGate Personal Firewall (брандмауэр плюс сниффер). Все это хозяйство абсолютно бесплатно,​ за исключением SyGate из последних халявных версий которого вырезали сниффер.
 +
 +===== закладываем фундамент =====
 +
 +Упомянутое серверное обеспечение может запускаться как обычный прикладной процесс,​ так и выступать в роли службы. Мыщъх настоятельно рекомендует использовать первый путь. Сервер,​ запущенный от имени специального пользователя,​ которому видны только "​публичные"​ файлы, даже будучи атакованным,​ существенно озадачивает хакера. В противном случае,​ достаточно просто подобрать пароль администратора,​ и переконфигурировать сервер,​ разрешив ему доступ ко всем файлам,​ какие только есть, причем не только на чтение,​ но и на запись — плакали наши данные.
 +
 +Если же сервер запущен как процесс от имени ограниченного пользователя,​ правами файлового доступа ведает сама система и, если эти права настроены правильно,​ хакеру придется как минимум атаковать саму ось, что сделать намного сложнее,​ особенно,​ если администратор не забывает своевременно обновляться.
 +
 +Теперь поговорим о важнейших настройках,​ имеющих отношения как к безопасности,​ так и к нашему собственному комфорту,​ иначе юзеры полностью забьют сетевой канал, не оставив нам никакой пропускной способности.
 +
 +  - администраторский пароль. должен быть длинным как мыщъхиный хвост. но это еще не все. для надежности настоятельно рекомендуется указать серверу перечень допустимых IP-адресов,​ с которых им можно рулить,​ если указать 127.0.0.1, то остается чисто локальный вход, предполагающий физический доступ к машине,​ так же можно указать IP-адреса остальных компьютеров домашней сети и (при острой необходимости) IP своей конторы,​ чтобы было можно управлять сервером и с работы. отправляясь в командировку,​ снимите блокировку на время, если не хотите потерять контроль (впрочем,​ угроза атаки при этом возрастает);​
 +  - после создания виртуальных ftp/http директорий (типа /pub/disr/ -> F:​\BACK-UP\DISTR\) еще раз пройдитесь по _всем_ файлам на предмет поиска конфиденциальных данных,​ например,​ мы решили открыть доступ к своей коллекции дистрибутивов,​ забыв, что там лежит не только варез, но и легально купленные программы вместе с нашими ключами,​ по ошибке перешедшее в общественное достояние со всеми отсюда вытекающими;​
 +  - установите предельную длительность на ограничение одной сессии в idle-режиме в 3-6 минут, чтобы толпа клиентов не болталась в воздухе,​ ведь каждое подключение требует определенных ресурсов и сама распространенная DoS атака — создание огромного количества сессий,​ при которых ftp сервер назначает клиенту порт для передачи данных,​ но, поскольку,​ кол-во портов ограничено 16-битами (за вычетом служебных портов) при целенаправленной атаке они исчерпываются очень быстро. никто не может больше подключиться к нашему серверу,​ но это еще полбеды!!! мы сами не можем установить ни одного TCP/​IP-соединения ни с каким узлом, поскольку,​ для этого требуется свободный локальный порт, а их-то у нас и нет (в принципе,​ можно указать серверу диапазон портов,​ из которого он может их выделять,​ но при коротком тайм-ауте на сессию и при ограничении максимального количества сессий — в этом нет необходимости);​
 +  - максимальное количество сессий — зависит главным образом от пропускной способности канала связи, а так же от посещаемости сервера. решайте сами — что лучше: жестоко ограничить кол-во сессий (и тогда все остальные посетители вообще не смогут к нам подключиться) или же установить кол-во сессий из расчета 1 сессия на ~3 килобита пропускной способности,​ тогда сервер хоть и медленно,​ но все-таки будет вращаться при пиковой нагрузке. лично мыщъх установил лимит сессий в 69, чего вполне хватает даже в те дни, когда на сервер заходят до 3 тыс. человек и это на 2х мегабитном канале;​
 +  - очень важно установить максимальное кол-во сессий/​соединений с одним узлом, потому как народ активно использует многопоточные качалки,​ зачастую устанавливающие десятки соединений,​ от чего сервер реально "​проседает",​ лично мыщъх считает,​ что 3 соединения на рыло — вполне нормально,​ для http эту цифру лучше увеличить до 5ти, поскольку большинство браузеров по умолчанию грузят сразу по три картинки (и как минимум одно соединение расходуется на загрузку HTML-страницы),​ и если сервер "​отбивает"​ браузера,​ то браузер "​отбивает"​ картинку (не сразу конечно отбивает,​ там есть свой тайм-аут,​ но его не всегда хватает);​
 +  - предельный CPS на подключение и на весь канал в целом. тут нет однозначных решений. если мы установим низкий CPS, то на сервере постоянно будет "​пастись"​ стадо пользователей,​ съедающих часть пропускной способности нашего канала,​ что неприятно. увеличив лимит (при небольшой посещаемости) мы разгрузим канал: пользователи приходят,​ быстро скачивают,​ что им нужно и отваливают. правда,​ при достижении определенного уровня популярности сервера эта схема перестает работать;​
 +  - если в домашней локальной сети используется proxy, стоящей на той же самой машине,​ что и http/ftp сервер,​ _обязательно_ укажите в настройках proxy, что проксить он может только интерфейсы локальной сети (и виртуальных машин, если они есть), иначе нас могут кинут на трафик,​ а это уже бэд. как вариант,​ можно запаролить proxy и перевести его на нестандартный порт, но не все клиентские программы с этим "​дружат"​.
 +{{home-ftp_Image_5.png}}
 +
 +Рисунок 6 настройка Proxy-сервера на "​проксирование"​ только с одного сетевого интерфейса
 +
 +===== священные свитки =====
 +
 +Сервер должен вести логи. Это закон. И эти логи нужно читать. Во-первых,​ чтобы исправлять свои ляпы (например,​ битые ссылки),​ а так же профилировать общую пользовательскую активность. Больше всех раздражают дятлы, которые любят настойчиво "​долбить",​ пытаясь скачать несуществующие или уже удаленные файлы в бесконечном цикле с очень короткой задержкой,​ в результате чего мы имеем большой объем _входящего_ трафика (расходующегося на запросы к серверу),​ который обычно платный.
 +
 +{{home-ftp_Image_6.png}}
 +
 +Рисунок 7 блокировка IP-адресов средствами самого сервера не самое удачное решение в плане оверхида
 +
 +WAR-FTP умеет автоматически выставлять временные баны, но некоторые личности и узлы заслуживают пожизненной кары. Если они имеют статический IP (например,​ принадлежащий шлюзу организации где они работают или это поисковик какой),​ достаточно занести его адрес в black list. И WAR-FTP,и SMALL HTTP такие листы поддерживают,​ но пользоваться ими не рекомендуется по той простой причине,​ что оверхид (т. е. накладные расходы) достаточно велик и лучше вести блокировку непосредственно на брандмауэре (SyGate Firewall это позволяет — да и по удобству управления черными списками превосходит как WAR-FTP, так и SMALL HTTP).
 +
 +{{home-ftp_Image_7.png}}
 +
 +Рисунок 8 блокировка IP на брандмауэре сводит оверхид к минимуму,​ к тому же препятствует атакам на саму операционную систему и прочие сервисы
 +
 +===== борьба с поисковиками =====
 +
 +В то время как дизайнеры стремятся накрутить рейтинги популярности своих сайтов,​ попав в первые строки поисковых машин, владельцы домашних серверов борются с ними со страшной силой. Прежде всего, поисковые роботы существенно напрягают канал, поскольку скачивают все, что только можно скачать (нормальные пользователи обычно качают лишь то, что им действительно нужно),​ причем этих поисковых роботов много, очень много и далеко не все они прислушиваются к файлу robots.txt, который специально для них и был узаконен.
 +
 +К тому же, как только содержимое домашнего сервера проиндексировано,​ на него начинают ломиться все кому не лень и, что самое неприятное,​ он становится виден держателем авторских прав, чего следует избегать любой ценой. Ну никак нельзя допускать,​ чтобы палить свое privacy простым поисковым запросом.
 +
 +Что делать?​! Очень просто — методично "​отстреливать"​ всех поисковых роботов,​ занося их IP-адреса,​ доменные имена (с вилдкардами) и даже целые подсети в black list'​ы. О том, что это робот, а не что-то иное можно догадаться по заголовку запроса (большинство роботов не скрывают своей машинной сущности),​ а так же по доменному имени, принадлежащему известным поисковикам.
 +
 +Пару слов по поводу заглавной страницы. Мыщъх, перебрав с десяток вариантов,​ наконец,​ вывесил сообщение,​ что HTTP сервер не работает,​ хотя это не так. HTTP сервер работает,​ вот только просмотр директорий запрещен,​ на самом сайте их нет и скачать файлы можно только по прямым линкам,​ размещаемых мыщъх'​ем на форумах или передаваемых адресату через ПМ или письмом. FTP-сервер для "​анонимусов"​ показывает только небольшую часть совершенно легальных файлов,​ а все остальное богатство раздается только зарегистрированным пользователям (как осуществляется регистрация?​! ну… мы знакомимся на форумах,​ общаемся,​ etc… специальной регистрационной формы для всех желающих у мыщъха нет и не предвидится).
 +
 +
 +
 +{{home-ftp_Image_8.png}}
 +
 +Рисунок 9 внешний вид одного из первых мыщъх'​ных сайтов (дизайн — Олега Морозова)
 +
 +{{home-ftp_Image_9.png}}
 +
 +Рисунок 10 еще один мыщъх'​ный сайт с дизайном Олега Морозова
 +
 +{{home-ftp_Image_10.png}}
 +
 +Рисунок 11 эксперименты с дизайном продолжаются
 +
 +{{home-ftp_Image_11.png}}
 +
 +Рисунок 12 окончательный вид мыщъх'​ного сайта, выполненного в строгом мыщъхином дизайне
 +
 +===== >>>​ врезка полезный совет ​ =====
 +
 +На время обслуживания сервера полезно автоматически редиректить пользователь к какому ни будь бесплатному хостеру,​ на котором будет висеть объявление,​ что по техническим причинам сервер временно не работает.
 +
 +{{home-ftp_Image_12.png}}
 +
 +Рисунок 13 если сервер не работает,​ значит в это время над ним работает администратор
 +
 +===== заключение =====
 +
 +Мыщъх описывал исключительно свой собственный опыт, свои предпочтения и политики,​ а политика доступа к домашним серверам диктуется исключительно волей их владельцев,​ очень многие из которых устанавливают драконические ограничения за несоблюдения которых автоматом влепляют бан. Что поделаешь…. домашний сервер — он дохода не приносит и потому всех, кто их воздвигает можно только поприветствовать,​ а претензии направить в /dev/nul или засунуть куда поглубже.
 +
 +