Сегодня сподобился таки выяснить, что нового в новой версии одной среды разработки, и увидел какие-то нездоровые соединения по HTTPS с сетью 1e100.net
:
$ netstat -4 -p | grep seamonkey
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 anthrax:44441 a104-126-161-235.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:60367 74.125.131.95:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:55755 bam-7.nr-data.net:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:34895 ec2-52-17-140-88.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:40711 ec2-52-18-226-11.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:58230 lk-in-f155.1e100.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:38400 server-205-251-21:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:47717 173.194.122.222:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:40707 ec2-52-18-226-11.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:44442 a104-126-161-235.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:40708 ec2-52-18-226-11.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:40706 ec2-52-18-226-11.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:40710 ec2-52-18-226-11.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:60455 173.194.122.192:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:40709 ec2-52-18-226-11.:https ESTABLISHED 17902/seamonkey
tcp 0 0 anthrax:42138 ec2-54-217-236-18:https ESTABLISHED 17902/seamonkey
В результате гугления было выяснено, что *.1e100.net
, как и следует из названия, — это принадлежащий Google сервис проверки подлинности сайтов.
Буквально первая же ссылка ведёт на SuperUser.com, и комментарии там жгут:
Because Google loves you and just wants you to be happy. Like a benevolent big brother watching your every move and giving you the creepily specific targeted advertising you subconsciously know you need.
Окей, но мой браузер — ни разу не Chrome. WTF?!
- Отключаю к чертям весь safe browsing (
browser.safebrowsing.*
вabout:config
). - Отключаю OCSP (
security.OCSP.enabled=0
). - Сношу HTTPS Everywhere.
На выходе same shit — мозилла лезет, куда не следует.
Окей, я не ленивый. Поднимаю BIND 9 и добавляю новую зону:
$TTL 604800
@ IN SOA ns.1e100.net. root.1e100.net. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.1e100.net.
@ IN A 127.0.0.1
@ IN AAAA ::1
* IN A 127.0.0.1
* IN AAAA ::1
Перезапускаю BIND, переписываю /etc/resolv.conf
. Теперь всё должно работать:
$ host li-in-f155.1e100.net
li-in-f155.1e100.net has address 127.0.0.1
li-in-f155.1e100.net has IPv6 address ::1
Запускаю мозиллу — она снова лезет не туда (я наблюдаю ровно тот же вывод, что и в первом листинге, т. к. обратный DNS по-прежнему работает):
$ dig -x 173.194.220.155 | grep -A1 'ANSWER\ SECTION'
;; ANSWER SECTION:
155.220.194.173.in-addr.arpa. 84939 IN PTR lk-in-f155.1e100.net.
Причём сброс DNS-кэша операционной системы, её перезапуск и, наконец, запуск браузера с «чистым» профилем и без расширений тоже ни к чему не приводит. Напрашивается один из двух выводов:
- либо Safe Browsing — это неотключаемая «фича», и через какой-то сервис браузер продолжает получать список IP-адресов для соединения по HTTPS,
- либо источник проблемы не на клиенте, а на сервере, и какой-то чёртов JavaScript выполняет роль DNS (разумеется, уже без UDP-запросов на 53-й порт) в обход локального DNS (вы уж простите за конспирологические теории),
- либо, наконец, я недонастроил локальный DNS.
Соответственно, вопрос: WTF и как с этим бороться? В кодовой базе SeaMonkey 2.40 (Firefox 43) «захардкоженных» IP-адресов и строк вида «1e100.net» я не нашёл.
И, чтобы два раза не вставать, вопрос №2.
Попутно, на волне паранойи, решил запретить на уровне DNS всякие facebook.com, fbcdn.net, fb.com, vk.com и прочую дрянь. Отлично, теперь при вводе в строке адреса браузера «fb.com» открывается локальный Apache. Я доволен. Но есть одно «но».
При попытке зайти на http://facebook.com
(который, напомню, разрешается в 127.0.0.1
) браузер пытается перейти на https://facebook.com
, при том, что на моём локальном Apache не сконфигурирована HTTP Strict-Transport-Security
и никаких HTTP 302
он тоже, разумеется, не шлёт. Причём версии браузеров трёхлетней давности такой ерундой не страдают.
WTF?! Опять начинаю искать в кодовой базе — и нахожу просто прелестное.
Без малого 3000 доменов, к которым надо ходить строго так, как приказал Большой Брат, описаны в файле security/manager/ssl/nsSTSPreloadList.inc.
И это ещё полбеды. Есть ещё security/manager/ssl/StaticHPKPins.h, содержащий фингерпринты X.509-сертификатов всё тех же сайтов.
Вопрос: как выключить этот чёртов HPKP (на этапе компиляции либо через about:config
)? Хочу свой facebook.com
с блэкджеком и шлюхами шахматами и поэтессами.