Автор: (c)Крис Касперски ака мыщъх
Домашние FTP/HTTP-сервера сейчас воздвигают многие хакеры, совершенно не представляя, во что они ввязываются. Все это безумно затягивает и не отпускает назад, но проблемы остаются проблемами - они растут и накапливаются, словно снежный ком, с которым потом уже не справиться, если только заранее не продумать концепцию сервера вплоть до мелочей, исправление которых на ранних стадиях проходит довольно безболезненно, но вот потом... мыщъх делится своим многолетним опытом воздвижения, администрирования и эксплуатации малых FTP/Web/SMTP/POP3-серверов.
Зачем воздвигать свой собственный сервер, когда коммерческий хостинг стоит копейки ("costs next no nothing", выражаясь на английский манер), избавляя нас от головой боли и кучи сопутствующих проблем? Однако вопреки всем прогнозам, количество "домашних" серверов не только не сокращается, но даже увеличивается, причем лавинообразно. Почему?!
Начнем с того, что рулить собственным сервером - это безумно интересно и увлекательно, к тому же всякий начинающий администратор просто обязан попрактиковаться на "кошках", потому как экспериментировать с "продакшен" машиной ему не дадут, а ошибки конфигурации промышленных серверов обходятся весьма недешево. Так почему бы не получить боевой опыт малой кровью, тренируясь на своей собственной тачке?
Во-вторых, сейчас очень трудно найти коммерческого хостера, "крышующего" хакерский контент или, например, коллекцию электронных книг (музыки, фильмов). Бесплатные же хостеры уничтожают такие аккаунты по первой жалобе, даже если она поступает от Васи Пупкина, а не от правообладателя контента (чье право на собственность еще необходимо доказать, а доказывается оно в суде и никак иначе).
В-третьих, открыть доступ к своему хранилищу дистрибутивов (аудио-, видео-файлов) добавив пару строк в конфигурационный файл домашнего сервера, намного проще, чем заливать эти же файлы на файлообменники с низкой скоростью и кучей тупых ограничений. Гораздо практичнее обмениваться файлами не через ненавистную "рапшиду", а через домашние сервера. Вам никуда ничего не придется закачивать! Просто даете человеку линк - пускай скачивает хоть гигабайт, хоть весь образ Server 2008 и ни одна собака из органов об этом и знать не будет.
В-четвертых, глюки у хостеров (даже коммерческих) случаются регулярно и Web-мастера вынуждены тратить огромное количество времени на общение со службой поддержки, не желающей признавать очевидное. Опять-таки, где гарантия, что хостер следит за безопасностью: своевременно накладывает заплатки, резервирует данные и делает еще кучу других вещей?!
В-пятых, установка собственного SMTP/POP3 сервера заставляет забыть о письмах, порезанных спам-фильтрами (во всяком случае, на нашей стороне), а собственный DNS, напрямую обращающийся к корневым доменным серверам по TCP-протоколу, не только работает быстрее и надежнее глючных DNS-серверов, предоставленных провайдером, но и практически не поддается атакам, в отличие от провайдерских DNS, по умолчанию работающих на протоколе UDP.
В-шестых, мы получаем полную статистику посещений и все счетчики (работающие по туманным алгоритмам) идут лесом. А статистика посещаемости - великая вещь! Добавим сюда еще возможность "банов" некоторых враждебных пользователей, что тоже немаловажно. Даже если не пытаться определить их паспортные данные по IP, все равно свой собственный сервер позволяет намного более оперативно реагировать на хакерские атаки и набеги всяких вандалов.
Короче, домашний сервер - совершенно незаменимая в хозяйстве вещь!!!
Рисунок 1. WAR-FTP сервер за работой.
Рисунок 2. Здесь раздают SMALL HTTP сервер.
Рисунок 3. Внешний вид SyGate Personal Firewall.
Если мы собираемся распространять варез, то необходимо позаботиться о том, что прикрыть свою задницу. Кто сказал, что варез незаконен?! Вообще-то, с юридической точки зрения такого термина вообще нет. Самолично выкладывая дистрибутив Вислы на домашний сервер, мы, действительно, как бы совершаем противоправное деяние, но вот именно, что "как бы", потому что стоит только создать возможность закачки файлов на сервер другим пользователями, как мы всегда сможем отмазаться, что просто предоставили дисковое пространство для файлового обмена и откуда же нам знать, обладало ли лицо, закачавшее данный файл, правами на его распространение или нет?
А что это за лицо такое? Да хвост его знает, мы же логи не храним и даже если на upload'е стоит пароль, известный только нам одним, пускай правообладатель попробует доказать, что это не так!!! Логи у нас, закачка была локальной, следовательно в логах провайдера никаких следов преступности нет. А презумпцию невиновности еще никто не отменял. Отсутствие доказательств удаленной закачки вареза мифическим Васей Пупкиным еще не есть доказательство, что закачка была локальной!
Если же контент принадлежит вам, то тут вообще никаких вопросов не возникает. Кстати, очень важный момент: передача эксклюзивных прав на произведение издателю оставляет за автором право включать это произведение в собственное portfolio и выпускать в составе полных сборников сочинений без согласия лица, которому были переданы эксклюзивные права и без выплаты дополнительных отчислений. Чем является домашний сервер - нашим portfolio или же полным сборником сочинений - пусть каждый решает сам. Закон же не дает четкого определения ни тому, ни другому.
Приобретать дополнительный компьютер для воздвижения сервера совершенно необязательно, вполне сойдет и основная машина, правда учитывая, что сервер должен (в идеале) работать круглосуточно и как можно реже перезагружаться, имеет смысл остановить свой выбор на маломощном (а, следовательно, малошумном) компьютере, полностью переведенном на пассивное охлаждение и оснащенного тихими дисками типа Seagate Barracuda.
Еще нам понадобится канал связи с внешним миром и тариф, позволяющий сидеть в сети неограниченное время и не платить за исходящий трафик. В идеале, конечно, это ADSL со статическим IP-адресом, на который можно "навесить" бесплатное доменное имя типа nezumi.org.ru, но мыщъх начинал свои хроники с динамических IP-адресов и с простого Dial-Up'а, оплачиваемого безлимитной месячной картой. Это кажется невероятным, но доменные имена могут работать не только со статическими, но и динамическими IP-адресами, о чем написано много статей и книг, так что мыщъх не будет повторяться, тем более, что в наши дни Dial-Up стремительно уходит в прошлое, да и все равно пользы от такого сервера немного.
Рисунок 4. По умолчанию DSL-модемы выделяют на исходящий поток 1/4 от пропускной способности канала, но продвинутые модели от ZyXEL и D-Link позволяют этот параметр изменить, что очень важно для серверов, работающих преимущественно на отдачу.
Операционная система может быть любой: с точки зрения безопасности предпочтительнее OpenBSD, но вполне сойдет и W2K (XP Home имеет лимит на количество устанавливаемых соединений и прочие вредные ограничения, а потому от ее использования лучше всего сразу же отказаться).
Рисунок 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, из последних халявных версий которого вырезали сниффер.
Упомянутое серверное обеспечение может запускаться как обычный прикладной процесс, так и выступать в роли службы. Мыщъх настоятельно рекомендует использовать первый путь. Сервер, запущенный от имени специального пользователя, которому видны только "публичные" файлы, даже будучи атакованным, существенно озадачивает хакера. В противном случае, достаточно просто подобрать пароль администратора, и переконфигурировать сервер, разрешив ему доступ ко всем файлам, какие только есть, причем не только на чтение, но и на запись - плакали наши данные.
Если же сервер запущен как процесс от имени ограниченного пользователя, правами файлового доступа ведает сама система и, если эти права настроены правильно, хакеру придется как минимум атаковать саму ось, что сделать намного сложнее, особенно если администратор не забывает своевременно обновляться.
Теперь поговорим о важнейших настройках, имеющих отношения как к безопасности, так и к нашему собственному комфорту, иначе юзеры полностью забьют сетевой канал, не оставив нам никакой пропускной способности.
Рисунок 6. Настройка Proxy-сервера на "проксирование" только с одного сетевого интерфейса.
Сервер должен вести логи. Это закон. И эти логи нужно читать. Во-первых, чтобы исправлять свои ляпы (например, битые ссылки), а также профилировать общую пользовательскую активность. Больше всех раздражают дятлы, которые любят настойчиво "долбить", пытаясь скачать несуществующие или уже удаленные файлы в бесконечном цикле с очень короткой задержкой, в результате чего мы имеем большой объем входящего трафика (расходующегося на запросы к серверу), который обычно платный.
Рисунок 7. Блокировка IP-адресов средствами самого сервера - не самое удачное решение в плане оверхида.
WAR-FTP умеет автоматически выставлять временные баны, но некоторые личности и узлы заслуживают пожизненной кары. Если они имеют статический IP (например, принадлежащий шлюзу организации где они работают или это поисковик какой), достаточно занести его адрес в black list. И WAR-FTP, и SMALL HTTP такие листы поддерживают, но пользоваться ими не рекомендуется по той простой причине, что оверхид (т.е. накладные расходы) достаточно велик и лучше вести блокировку непосредственно на брандмауэре (SyGate Firewall это позволяет - да и по удобству управления черными списками превосходит как WAR-FTP, так и SMALL HTTP).
Рисунок 8. Блокировка IP на брандмауэре сводит оверхид к минимуму, к тому же препятствует атакам на саму операционную систему и прочие сервисы.
В то время, как дизайнеры стремятся накрутить рейтинги популярности своих сайтов, попав в первые строки поисковых машин, владельцы домашних серверов борются с ними со страшной силой. Прежде всего, поисковые роботы существенно напрягают канал, поскольку скачивают все, что только можно скачать (нормальные пользователи обычно качают лишь то, что им действительно нужно), причем этих поисковых роботов много, очень много и далеко не все они прислушиваются к файлу robots.txt, который специально для них и был узаконен.
К тому же, как только содержимое домашнего сервера проиндексировано, на него начинают ломиться все, кому не лень и что самое неприятное - он становится виден держателям авторских прав, чего следует избегать любой ценой. Ну, никак нельзя допускать, чтобы палить свое privacy простым поисковым запросом.
Что делать?! Очень просто - методично "отстреливать" всех поисковых роботов, занося их IP-адреса, доменные имена (с вилдкардами) и даже целые подсети в black list'ы. О том, что это робот, а не что-то иное, можно догадаться по заголовку запроса (большинство роботов не скрывают своей машинной сущности), а также по доменному имени, принадлежащему известным поисковикам.
Пару слов по поводу заглавной страницы. Мыщъх, перебрав с десяток вариантов, наконец, вывесил сообщение, что HTTP-сервер не работает, хотя это не так. HTTP-сервер работает, вот только просмотр директорий запрещен, на самом сайте их нет и скачать файлы можно только по прямым линкам, размещаемых мыщъх'ем на форумах или передаваемых адресату через ПМ или письмом. FTP-сервер для "анонимусов" показывает только небольшую часть совершенно легальных файлов, а все остальное богатство раздается только зарегистрированным-пользователям (как осуществляется регистрация?! Ну... Мы знакомимся на форумах, общаемся, etc... А специальной регистрационной формы для всех желающих у мыщъха нет и не предвидится).
Рисунок 9. Внешний вид одного из первых мыщъх'иных сайтов (дизайн Олега Морозова).
Рисунок 10. Еще один мыщъх'иный сайт с дизайном Олега Морозова.
Рисунок 11. Эксперименты с дизайном продолжаются...
Рисунок 12. Окончательный вид мыщъх'иного сайта, выполненного в строгом мыщъхином дизайне.
На время обслуживания сервера полезно автоматически редиректить пользователь к какому-нибудь бесплатному хостеру, на котором будет висеть объявление, что по техническим причинам сервер временно не работает.
Рисунок 13. Если сервер не работает, значит в это время над ним работает администратор.
Мыщъх описывал исключительно свой собственный опыт, свои предпочтения и политики, а политика доступа к домашним серверам диктуется исключительно волей их владельцев, очень многие из которых устанавливают драконовые ограничения, за несоблюдения которых автоматом влепляют бан. Что поделаешь.... Домашний сервер - он дохода не приносит и потому всех, кто их воздвигает, можно только поприветствовать, а претензии направить в /dev/nul или засунуть куда поглубже.