По результатам собственных изысканий родилась идея набросать небольшой Q&A по работе с некоторыми недокументированными функциями оптического терминала ZTE ZXHN F660, устанавливаемого сейчас в квартиры фирмой МГТС.
Статья расcчитана на начинающих, которые, тем не менее, уже ознакомились с Web-интерфейсом управления терминалом и знают, как делать в нем базовые вещи: смена пароля, активация SAMBA, проброс портов, настройка WLAN, настройка фильтрации, и т.д. В ней мы не будем рассматривать смену прошивки или «отвязку» от провайдера – все вещи, связанные с удаленным обновлением, настройкой VOIP, и т.д. трогать крайне не рекомендую. Оставьте провайдеру возможность выполнять свою работу и обслуживать свое устройство (оно его, а не ваше, если помните договор).
1. Есть ли уязвимость в WPS?
Для начала хочу успокоить тех, кто в интернете наткнулся на информацию о страшной дыре в безопасности WiFi-сетей – уязвимости в WPS. Это имело место быть в ранних прошивках ZXVA, но сейчас WPS не активен по умолчанию, так что бояться нечего.
2. Есть ли уязвимость в Web-интерфейсе настроек?
А вот она никуда не делась, хоть и писали о ней давно. Зайдя из внутренней сети по адресу 192.168.1.1/manager_dev_config_t.gch и нажав на кнопку “Backup Configuration” (если у вас стоит русский язык по умолчанию, то это – верхняя кнопка, просто название неправильно перевели) ЛЮБОЙ пользователь (без авторизации!) получит XML-файл со всеми настройками, включая ВСЕ пароли ко ВСЕМ интерфейсам (включая пользователя mgts к веб-интерфейсу и root к telnet). Таким образом, пуская кого-либо в свою внутреннюю сеть, вы заодно даете ему потенциальную возможность полного управления ею.
3. Как загрузить свой файл настроек?
При попытке загрузить измененный вручную XML-файл настроек, F660, не будь дурак, проверяет контрольную сумму и отвергает измененные файлы. Но есть возможность отредактировать сам файл-источник:
— штатно включаем SAMBA в web-интерфейсе
— заходим по telnet с полученным из п.2 логином и паролем
— выполняем:
mkdir /mnt/config
mount –o bind /userconfig/cfg /mnt/config
— заходим проводником на \192.168.1.1sambaconfig
— редактируем (хотя бы «Блокнотом») файл db_user_cfg.xml (другие файлы не трогаем!)
— после сохранения файла перезагружаем F660.
— на случай порчи этого файла у вас есть лежащий там же файл db_backup_cfg.xml, ну и ещё кнопка Reset, которая запишет в него default-настройки.
4. Как сменить пароль к telnet?
В файле настроек (п.3) меняем параметр «TS_UPwd».
5. Как активировать FTP-доступ?
В файле настроек (п.3) меняем флаг «FtpEnable» на «1». Заодно выставляем в «1» параметр «FtpAnon» или редактируем логины/пароли раздела «FTPUser».
6. Как превратить F660 в простой локальный Web-сервер?
Допустим, на флешке у вас есть подготовленная структура сайта со стартовым INDEX.HTM в корне.
— переименовываем INDEX.HTM в setlang.gch
— вставляем флешку в F660
— заходим по telnet с полученным из п.2 логином и паролем
— выполняем:
mount –o bind /mnt/usb1_1 /home/httpd
— видим новое содержимое по адресу 192.168.1.1
— это работает только до очередной перезагрузки
7. Как сделать эти FTP- и/или Web-сервер доступными из Интернета?
Если мы говорим про стандартный порт (21 для FTP и 80 для HTTP соответственно) и провайдера МГТС (предполагаем, что статический IP не куплен, но мы умеем обращаться к своему временному внешнему IP – с помощью dyndns, например) – то никак. МГТС режет входящие соединения по наиболее популярным портам (как минимум по 21,23,80,443,8080) ещё на своей стороне, так что повлиять на это мы не можем.
Если же вы готовы обращаться извне к нестандартному порту, то просто штатно прописываете port mapping c какого-нибудь 5-значного внешнего порта на внутренний 21 (и/или 80) и в качестве адреса внутреннего компьютера указываете 192.168.1.1. НО! Делать это категорически не рекомендуется, т.к. вы оставляете свой бедный терминал один на один с жестоким внешним миром: FTP – протокол без шифрации, а значит любой сможет перехватить логин/пароль доступа к нему, про Web-сервер помним, что после перезагрузки он превращается в тыкву интерфейс настроек, открытый для всех (см п.2), наконец, нас просто легко заDOSить, все-таки F660 — железка слабая в сравнении с полноценным сервером.
8. Как заблокировать Web-интерфейс терминала, раз в нем есть уязвимость?
Из внешней сети доступа и так нет. Если пытаемся защититься от гостей, допущенных во внутреннюю сеть, то вариантов 2:
— Постоянный: Штатным механизмом «Services Control». К сожалению, он не умеет различать доступ по WiFi и по Ethernet, а блокировать только диапазон IP, оставляя доступ со «своих» адресов — ненадежно (т.к. подменить IP легче легкого), поэтому блокируем Web со ВСЕХ адресов. Но учтите, что при этом вы лишаетесь Web-интерфейса управления терминалом, и снять такую блокировку получится только сбросив настройки кнопкой Reset или ручным редактированием db_user_cfg.xml (поэтому не надо заодно блокировать и telnet, достаточно пароль ему сменить).
— Временный. Замещаем web-интерфейс по аналогии с п.6, но флешка уже не нужна: можем создать папку где-нибудь в /userconfig (он не стирается при перезагрузке терминала), поместить в неё файл setlang.gch с содержимым вроде:
<html><body>Здесь ничего нет</body></html>
и смонтировать её на место /home/httpd. Работает это лишь до следующей перезагрузки.
Если нужно вернуть web-интерфейс управления без перезагрузки, выполняем
umount /home/httpd
9. Как сделать массовую фильтрацию DNS-имен по файлу hosts?
Если записей немного, то достаточно штатного способа — в разделе Applications => DNS Service => Hosts. Настройки сохраняются при перезагрузке, но каждую нужно вводить по отдельности, и занимает она приличное место в db_user_cfg.xml. Если же у вас собственный файл на тысячи имен, можете добавить их во временный файл hosts, расположенный в /var/tmp/. (Способ получения к нему файлового доступа – по аналогии с п.3). Работает до очередной перезагрузки.
10. Как скомпилировать/запустить собственные программы на терминале?
Это вопрос уже не начинающих. Есть хардкорная статья про сборку собственного toolchain для предыдущей версии F660 – habrahabr.ru/post/211759 Там же описание установки torrent-клиента transmission. Только учтите, что в ZXHN уже другая начинка – вместо MIPS там стоит ARM9.
11. Можно ли навесить свои функции на автозагрузку?
Очень настоятельно не рекомендую это делать. У F660 есть 2 печальные особенности:
1) Кнопка reset – это не полный сброс устройства, а всего лишь сигнал заменить файл настроек на дефолтный, она не поможет восстановить нарушенную процедуру загрузки.
2) Все коммуникационные интерфейсы поднимаются ближе к концу загрузки.
Сочетание этих 2 особенностей дает результат: любые проблемы в загрузке – и вы получаете «кирпич».
Перед экспериментированием с загрузкой подумайте, действительно ли оно вам нужно. У меня, к примеру, uptime устройства достигает нескольких месяцев (собственно, я смог вспомнить только 1 перезагрузку за год не по причине применения настроек), так что просто нет потребности.
Автор: Trottle