HTTP/FTP-сервер на базе старого компьютера под FreeDOS
Меня долго мучала мысль, куда деть раритетный комп на базе 386 процессора. Гвоздем на стену прибивать его жалко, выкидывать рабочую машинку - тем более. Дома места ему тоже не находится..., один выход - тащить на работу. Возникает второй вопрос: какое ставить программное обеспечение? Нелицензионку не хочется, мало ли, вдруг маски-шоу заявятся. Выход один - использовать свободное ПО. Исходя из архитектуры компьютера, Линукс тут не выживет, только что-либо из xBSD, но опыта в настройке Юникса у меня также не было. Остается только ДОС..., постойте, но есть же FreeDOS! Практически полный аналог MS-DOS, имеющая гораздо меньший размер файлов, гораздо более широкий функционал..., вот и будем использовать, благо ресурс www.freedos.org давно известен. В качестве WEB-сервера используем EZNOS ( http://www.hippy.freeserve.co.uk/eznos.htm ) . Теперь подробнее о железе...
Материнка. Широко распространенная ранее M396F. Практически jumperless, 6 ISA разъемов, поддерживает до 4МБ ОЗУ. Ну и fanless :). Перед использованием только заменил батарейку. На плате установлено 3МБ ОЗУ.
На плате установлен самый известный процессор, AM386SX-40, большинство ввозимых плат в нашу страну имело именно эту микросхему.
Мультикарта попалась как обычно нонеймовская, с чипом от GoldStar. Это не всем известный Prime2C, тут нет СОМ-портов, LPT и GAME, но для выбранной области применения это нам по барабану. Меньше шлейфов в корпусе, лучше для теплового обмена.
Видеокарта использует известный чип Trident9000. 512kБ ОЗУ нам более чем достаточно. В принципе видео нам надо только для контроля работы, так что в будущем можно будет поставить еще более старую EGA-карту, чтоб было еще более гиковско ;)
На сетевую карту накладываются программные ограничения, поскольку базовая установка EZNOS рассчитана на карту типа 3Сом 3с509, для остальных карт придется озаботиться поиском драйвера под ДОС. В наличии как раз такая и была, причем Combo, т.е. имеющая все возможные интерфейсные разъемы.
Разумеется, использовать будем исключительно витуху. А для поставленной задачи 10МБит полудуплекса более чем достаточно.
Установке и подбору программного обеспечения будет посвящено отдельное описание ниже. Скажу одно - несмотря на опыт автора настройки ДОС-машин, заняла эта работа приличное время. Как обычно, всё оказалось достаточно просто...
Вот экран первичной загрузки FreeDOS. Установлен режим EGA-шрифтов.
Поскольку примененный жесткий диск имел объем 2,4ГБ, а материнка более 528МБ "не розумиет", то пришлось применить Disk Manager от компании OnTrack. Установленная версия последняя, что распространялась бесплатно через сайты производителей харддисков.
EZNOS загружена и работает, можно выключать монитор...
П.О.
(сиречь программное обеспечение)
Эта часть будет без картинок, подразумевает знание пользователем английского языка, наличие собранной 386/486 машинки с дисководом и любым жестким диском, и потребует при её реализации ангельского терпения ;). Итак, машинка собрана, при её включении нормально определяется память, БИОС видит жесткий диск. На чем всё хорошее заканчивается. Подготавливаем необходимое ПО. Список следующий:
1. Загрузочная дискета Win95/98. Увы, но для начала без этого никак.
2. Дистрибутив FreeDOS. Можно скачать исошник с официального сайта, либо воспользоваться стартовым дистрибутивом, позволяющим сделать загрузочную дискету. Берем тут.
3. Дисковый менеджер OnTrack, поскольку в наличии явно будет достаточно емкий (от 2ГБ) винчестер, а старые машинки винты емкость более 528 МБ распознают, но работать с ними не могут. Если есть диск меньшей емкости, то проблем нет, но смысл делать сервер пропадает.
4. Необходимые утилиты для работы в FreeDOS: Format, Edit,..., ну еще по-мелочи, но обязательно emm386 и himem.
5. Программа WWW-сервера EZ-NOS. К сожалению сайт eznos.org почил в бозе, поэтому берем тут.
6. Файловый менеджер. Подойдет упрощенный вариант Volkov Commander.
7. Конфигуратор настройки сетевых карт 3Сом. Всё дальнейшее будет описано только для случая наличия таковой.
7.1. Если сетевуха у вас не 3Сом-овская, то придется искать драйвер под ДОС. (Смотри ниже дополнение для сетевых карт Compex EN2000 и Davicom D9008F. Пакетные драйвера для некоторых других карт можно качнуть отсюда, http://www.georgpotthast.de/sioux/packet.htm . Перед запуском драйвера проверьте его командой <имя_файла> /? чтобы узнать необходимую команду подключения программного прерывания).
Почему выбран именно этот комплект? Да просто потому, что не требует для своей работы сетевых утилит от Микрософта, пусть даже и бесплатных. Получается бутерброд из оси, сетевых приблуд и самого сервера. В случае EZNOS прослойка удаляется, что упрощает настройку и устойчивость работы.
Делаем загрузочную дискету FreeDOS
Распаковываем архив. Вставляем чистую отформатированную дискету в привод. Запускаем install.bat. Через пять минут диск готов. Можете попробовать грузануть с неё вашу основную машину для проверки. Переписываем на дискету утилиту Format.
Установка винчестера
Для начала списываем с его корпуса на всякий случай количество головок/треков/секторов, чтобы потом это дело вручную занести в БИОС. Если в БИОСе есть пункт типа "HDD auto-detect", то можно использовать его. Если определенная емкость диска близка к реальной, то все в порядке. Сейвимся.
Загружаемся с дискеты (неважно, с досовской или виндозной). Пытаемся отформатировать винчестер. Если вылетаем с ошибкой, значит винчестер с установленной емкостью не поддерживается БИОСом машинки.
Распаковываем архив дискового менеджера OnTrack на отдельную дискету. Загружаемся с дискеты Win95/98 - это важно! Дело в том, что дисковый менеджер понимает только стандартные имена системных досовских файлов, он их и будет пытаться устанавливать. В FreeDOS системные файлы именуются несколько иначе. Итак, загрузились с виндозной дискеты. Извлекаем её, вставляем дискету с дисковым менеджером. Набираем DM. Во время установки программа попросит вставить обратно виндозную дискету для копирования системных файлов. Так и делаем.
Вынимаем дискеты и перегружаем машинку. Если при запуске после POST-экрана появилось голубое окошко дискового менеджера - все нормально. Ничего не трогаем, система догрузится до конца.
Теперь снова грузимся с дискеты, на этот раз ДОСовской, и форматируем винчестер дабы стереть следы ненавистной винды. После форматирования набираем SYS C: для копирования системных файлов FreeDOS на винт. Всё!, можно перегружаться со свежеустановленного жесткого диска.
Переносим на винт VC, утилиты, конфигуратор сетевухи. Распаковываем архив с EZNOS и переносим папку NOS, ничего не изменяя, на винчестер, чтобы получился путь C:\NOS. Это важно, ибо все настройки сервера привязаны к этому пути.
Настройка сетевухи
Для начала надеемся, что карточка исправна ;). Запускаем файл 3с5х9cfg.ехе. Если всё нормально, то откроется окно программы. Карточка должна быть настроена на адрес 300 и прерывание 10. Если не так, то изменяем значения и сохраняем их. Попутно, если карточка имеет несколько коннекторов, выбираем необходимый из них. Выбор дуплекс/полудуплекс для ДОСа значения не имеет, всё равно будет исключительно полудуплекс. Можно подключить сетку, запустить тестирование и пойти попить пива.
Дополнение от 12.06.2009. Попалась на глаза карточка Compex EN2000. Для её запуска потребовался пакетный файл EN2PD.EXE (копируем его в c:\nos\bin\). Для его запуска корректируем батничек HTTPD.BAT следующим образом: заремливаем строчку с упоминанием файла 3с509. Добавляем строчку в виде lh c:\nos\bin\en2pd -i 0x62 . Наслаждаемся работой, только не забудьте снять все перемычки с упомянутой платы. Конфигуратор и диагностическую утилу для этой платы я поместил в этот же архив.
Дополнение от 01.09.2009. Попалась на глаза карточка Davicom D9008F. Для её запуска потребовался пакетный файл PKT9008.COM (копируем его в c:\nos\bin\). Для его запуска корректируем батничек HTTPD.BAT: добавляем строчку в виде lh c:\nos\bin\pkt9008 0x62 . В комплект архива приложен и конфигуратор этой сетевушки, только прошу иметь в виду, что он запускается только на процессорах, обрабатывающих плавающую запятую. На моем 386SX конфигуратор запускаться не захотел.
Установка EZNOS
Вся настройка сервера заключается в правке трех файлов, находящихся в директории C:\NOS\ETC. Это autoexec.nos, nos.cfg и ftpusers. Второй из них по умолчанию не трогаем. Третий - если нам нужен доступ по FTP. Ну а первый - самый основной. В нем мы вносим правку в соответствии с нашими условиями, а именно - нашим айпишником, шлюзом, маской и DNS. Также строку rdate server uk.pool.ntp.org мы раскомментируем и заменим на rdate server 132.163.4.101 или на любой известный вам NTP-сервер времени. Также желательно раскомментировать последнюю строчку at 0500 reboot , чтобы сервер автоматически перегружался каждый день в 5 утра (по его времени).
Файл FTP-юзверей прост, имеет собственное описание. Закомментируйте или удалите ненужных пользователей (особенно anonimous, если он действительно не нужен), укажите свой логин/пароль (через пробел), директорию, с которой будет осуществляться ваш вход, и права доступа. Касаемо сохранности пароля - как только сервер будет запущен, то пароль моментально захешируется и занесется в файл в измененном виде.
В файл autoexec.bat вносим строку call c:\nos\httpd.bat .
Вот как бы и всё... Перегружаем машину и следим за сообщениями загрузки. При появлении серого окна сервера с промптом C:\NOS EZNOS> монитор можно выключать и попытаться достучаться до свежеиспечённого сервера по локалке или через интернет (смотря как вы указали айпишники). Если сидите за роутером - не забудьте прописать правила для 80 и 21 портов, чтобы снаружи был доступ по HTTP и FTP (если требуется последний). В последующем файлы интернет-странички должны размещаться в директории WWW, причем директории ADMIN, STAT и LOG удаляться не должны.
В окне сервера можно выполнять некоторые команды, вызывать shell, но для этого подробно изучаем мануал в папке HELP\DOC\jdoc111.txt. И не забудьте при загрузке файлов по FTP привести их названия к формату 8.3, иначе файлы просто не будут грузиться с вылетом ошибки.
Ну и для окончания... в дистрибутиве сервера есть файл для запуска его на процессоре 8086, т.е. сервером можно сделать даже старую ХТ-шку... Есть поле для экспериментов.
Траблы и солюшены
(сиречь поиски и находки ;))
31.07.2009. Оказывается в конфигурационном файле ACCESS.WWW есть дыра, хоть и не позволяющая хакеру забрать управление компьютером на себя, но порядком треплющая нервы при проверке сервера пентестом. Для её устранения необходимо в этом файле закомментить строку с упоминанием /admin или удалить эту строку целиком.
22.08.2009. Наконец-то удалось найти более серьезную дыру в защите машинки! Оказывается, если в строке адреса сделать запрос к диску А (к примеру http://yourservername/a: ) то получаем доступ к нему. Если бы в дисководе стоял бы гибкий диск, то содержимое его каталога отобразилось бы в браузере. Далее, если у нас реально нет дисковода В, и даже если БИОС его не видит (отображает при загрузке Disk drive B: none), то EZNOS нижайше просит вставить диск в привод В. Но поскольку привода у нас не существует, то система чуток подвисает в наивном ожидании, пока её не сбрасывает через пяток минут watchdog, отправляя машинку в перезагрузку.
Для решения этой проблемы есть два варианта. Первый "железный". Тупо ставим в машинку дисковод В или обходимся комбиком типа Epson SD-800. Естественно, что при работе сервера никаких дискет в них быть не должно. Второй вариант "хитрый софтовый". Для этого нам необходимо скачать из репозиториев FreeDOS программку ASSIGN.COM. Она позволяет осуществить перенаправление обращения к дискам. Копируем её в директорию c:\nos\bin . Затем в файл httpd.bat вносим строки c:\nos\bin\assign /m a:=c: и c:\nos\bin\assign /m b:=c: . В этом случае при обращении к дискам А и В происходит перенаправление вызова к диску С. Последний от обращения к корневой директории у нас защищен, что выдает в браузере обращающегося кулхацкера ошибку.
...Ну а если мучает паранойя, или Вы боитесь, что возможен вход кулхацкеров с помощью запроса http://yourservername/с:/ , то разместите в корневой директории (а также во всех, которые вы хотите защитить) следующий файл тупой переадресации, INDEX.HTM, предварительно поправив его в части имени/адреса вашего сервера (или странички, куда вы намереваетесь послать атакующего).
01.09.2009. Пока нерешенная проблема: при скачивании с этого сервера файлов большого объема (да в принципе любых файлов) может наблюдаться "обрыв", файл вроде и скачался, а в результате на диске он битый (неполный). Причину найти не могу, или сбой работы пакетного файла, или роутер, за которым прячется сервер, шалит, или анатомия хребта у ДОСа такая... пока играюсь с заменой сетевых карт и пакетных драйверов к ним. Уже третья карточка... Дополнение от 21.01.10. Данный вопрос полностью решился при переходе на новое ядро FreeDOS.