Неизвестный HOSTS

Грубо говоря, файл «hosts» в папке %SystemRoot%\system32\drivers\etc\ - это как бы «своя» записная книжечка с телефонами. Только для Интернета. Если сравнить IP-адреc с номером телефона, а доменное имя - с именем человека, владеющего этим телефоном, то хождение в Интернет выглядит так: первым делом после того, как вы набрали адрес в браузере и нажали «Enter», компьютер лезет в этот самый файл hosts и смотрит - может, там уже прописан «телефон» набранного сайта? Как правило, в файле только одна строка (не считая комментариев): «127.0.0.1 localhost». Это как бы «свой телефон», как местоимение «Я» для любого подключенного к сети компьютера. Ну так вот. Поскольку в hosts ничего, кроме этой надписи, нет - компьютер вздыхает и запрашивает ближайший DNS-сервер - мол, не подскажешь, по какому «телефону» обращаться к такому-то сайту? DNS-сервер выдает IP, и компьютер радостно связывается по этому «телефону» с нужным сайтом.

Как догадываетесь, это была присказка, сказка будет впереди. Файл hosts вообще говоря нужен был в основном для ускорения работы в Интернете. Чтобы каждый раз не опрашивать DNS-сервера, эти «телефонные книги Интернета», там можно прописывать жестко, по какому IP-адресу находится тот или иной сайт.

Почему я говорю в прошедшем времени? Потому что сейчас Интернет у многих подключен на таких скоростях, что выгода от такой «модернизации» практически неощутима. Но, как водится, у каждой приблуды есть свои подводные камни. Во-первых, сайт может сменить IP-адрес («телефон»). То есть физически переехать на другой компьютер. В этом плане, конечно, IP-адреса подобны старым, стационарным номерам, привязанным к квартирам, а не к людям. Если в hosts будет прописан старый IP, вам «ответит» новый квартирант, а то и вовсе может никого не оказаться по такому устаревшему IP. Абонент, как говорится, больше не абонент. (Кстати, именно поэтому все операции с доменами - купля, привязка к чему-либо и прочее - занимает до суток: пока обновятся все DNS-сервера...) Во-вторых, этой «книжечкой» могут пользоватся всевозможные троянцы и вирусы: например, подменить IP-адрес вашего сайта на IP мошеннического сайта, выглядящего, как ваш. Заходите, набираете пароль... И ваш пароль уходит непойми кому, потому что в hosts подменены «телефонные номера», и вы на самом деле не на том сайте, адрес которого набирали в браузере. Также они могут менять IP антивирусных сайтов и сайтов с антивирусными обновлениями на мошеннические IP или вовсе записывать этим адресам IP, равный 127.0.0.1 - мол, «ха-ха, с себя попробуй скачать».

Поэтому почти все антивирусные программы отслеживают, чтобы этот файл никто не трогал и страшно огорчаются, если это случается. Пищат, хрюкают и вывешивают грозные предупреждения. Которые, конечно, мало кто читает. А зря. В общем, в первую же очередь обычно надо забираться в этот самый hosts и удалять оттуда все, кроме строки «127.0.0.1 localhost». Чаще всего эта мера помогает от «Интернетного запора», но хорошего антивируса это, само собой, не заменит.
рубрики: FAQ
jt3k (17 авг 2010г, 22:47) #
спасибо, Капитан Очевидность! :)
V.exeR (17 авг 2010г, 22:50) #
u902 jt3k: Это рубрика FAQ. Среди моих знакомых полно нормальных людей, а не «гиков», надо же им пояснять как-то. К тому же сказывается опыт репетиторства на интернетные темы :D
jt3k (17 авг 2010г, 23:30) #
Помнется.., мне недавно приходилось выкачивать из интернета файлик с паролями из вконтакта.
400 000 или 40 000 (не помню) паролей в целом. Оказывается эти дол^Wлюди, установили какое-то там приложение, которое:
1) перезаписало hosts заменив адрес странички вконтакта на подменный сайт, который....
2) оперативно заходил в контакт под их учётными данными, и писал их друзьям про это замечательное приложение :-D

после того как администрация фконтакта «просекло фишку», пароли пользователям были изменены, приложение стёрто с вконтакта, а также были отправлены письма пользователям с уведомлением о изменённых паролях

Всё бы хорошо, но сторона атаки выложила файл с паролями в сеть.
А так-как у вконтактеров:
1) емейл является логином
2) один пароль на все сайты,
..то несложно догадаться что пароли от контакта полностью подошли к почте :)

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

Вот бы возьни в интернете было бы....
очень многие бы лишились своих вконтактов, и возможно бОльшая часть вконтактеров была бы подвержена угрозе :)

это я тоже для ликбеза... :)
V.exeR (17 авг 2010г, 23:36) #
u902 jt3k: мало того, у многих пароль мало того, что один и тот же везде, так еще и является по совместительству датой рождения. Тысячи их!..
Nks (18 авг 2010г, 00:21) #
Ежедневно со зловредами борюсь, которые файлик этот редактируют. Кстати, на линуксах тоже есть. Тоже в /etc/ лежит. В /etc/hosts, как не странно :-D
jt3k (18 авг 2010г, 00:29) #
u927 Nks:

Ежедневно со зловредами борюсь, которые файлик этот редактируют. Кстати, на линуксах тоже есть. Тоже в /etc/ лежит. В /etc/hosts, как не странно :-D

ну разумеется есть :) его же с UNIX стащили, якобы для совместимости какойто )
bazil11 (18 авг 2010г, 13:08) #
ну не только для зловредных помыслов сей файл использован может. много рекламных баннеров непотребных и прочей шурум-бурушеры можно отключить единственным указанием домена с которого вся эта ересь скачивается и привязкой на это имя адреса 127.0.0.1 ;) ^_^ выкладывал даже как то давно фалик с несколькими тысячами таких вот обломов рекламщегов порнографии :-D
V.exeR (18 авг 2010г, 13:12) #
u1048 bazil11: ага. Только не на 127.0.0.1, а на какой-нибудь ya.ru. А то ведь на 127.0.0.1 долго «звонить» :D
AliFerster (18 авг 2010г, 14:24) #
u71 V.exeR:
Только не на 127.0.0.1, а на какой-нибудь ya.ru. А то ведь на 127.0.0.1 долго «звонить» :D

u71 V.exeR, а почему долго? Мне интересно, ведь браузеру не придётся даже в инет лезть...
Мне этот localhost напомнил, как я пытался в прошлом году «для общего развития» веб-сервер себе поставить. Сначала поставил вручную Apache+PHP+MySQL, сконфигурировал... через localhost стало доступно, а из локалки не открывает(( Затем снёс всё это, поставил Denwer. В нём, кажется, ничего не конфигурировал, но эффект тот же самый - через localhost открывается, а из локалки - нет. Почему?
Затем спросил друга - он мне ответил, что ему удавалось поднять web- и ftp-сервера в локалке, но за пределами локалки их видно не было. А возможно в принципе сделать спрятанный в локалке сервер доступным отовсюду?
Благодарю за внимание.
V.exeR (18 авг 2010г, 14:28) #
u1049 AliFerster: только если у тебя «прямой» и постоянный наружный адрес. За NAT'ом, в локалке - без понятия, возможно ли это физически. С динамическим наружним IP - в принципе можно, но геморройно. Я не админ, так что в таких тонкостях мне не приходилось разбираться.
gremlinable (18 авг 2010г, 23:46) #
u902 jt3k, не совсем так - просто МС в ВиндовсНТ использовала сетевой стек из БСД (благо, лицензия позволяет). Конечно они там много чего переделали, но кое-откуда ещё торчит наследие. =)

u1049 AliFerster, в принципе возможно всё, а вот на практике надо смотреть конкретную ситуацию.
Если у тебя динамический IP, то всё проще простого - достаточно завести динамическое доменное имя (смотрим в сторону http://ru.wikipedia.org/wiki/Динамический_DNS , в частности DynDNS.com) и установить специальный клиент, который периодически обновляет информацию о твоём IP-адресе на серверах ДНС - дальше спокойно можно получать доступ к твоему серверу по полученному доменному имени. Можно даже спокойно name-based virtual hosting делать - всё по-честному.
В случае с NAT всё несколько сложнее - тут у тебя адрес хоть и статический, но один на всю сеть. Соответственно, NAT-сервер, получив пакет, например, на порт 80 понятья не имеет, кому он предназначен. Для решения этой проблемы придуман так называемый проброс портов (Port forwarding) - у сервера есть список правил, указывающий какому именно компу надо передать пакет пришедший на такой-то порт. Всё хорошо пока сервер каждого сервиса за НАТом только один. Когда их становится больше возникают проблемы - как объяснить НАТу, какому именно компу надо передать этот конкретный пакет, если они оба хотят общаться на одном порту? Приходиться использовать нестандартные номера портов, типа http://vasia.pupkin.com:81/. Да и вообще, если NAT сервер принадлежит не тебе, на проброс портов лучше не расчитывать =).
Но есть другой вариант - тунель. Ты коннектишься к какому-то серверу в инете и он выдаёт тебе некоторый IP-адрес, которым ты пользуешься единолично. С точки зрения операционной системы у тебя просто появляется ещё одна сетевая карта с некоторым реальным IP адресом. Остаётся только заставить слушать на нём свой сервер. Ну и, если адрес выдаётся динамически, а не закреплён за тобой, см. выше. Для реализации такой схемы сейчас стоит смотреть в стороны VPN-сервисов и IPv6 гейтов.

В общих чертах как-то так, но бывают и более хитрые ситуации.