ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
10 онлайн инструментов для работы с ASN
Autonomous System Number
С увеличением числа устройств, подключенных к сети и увеличиваются и уязвимости в сети. При таком раскладе, понять, что такое ASN и принципы его работы стало очень важным.
Чтобы управлять огромным повседневным потоком данных в Интернете, регулирующие органы, такие как как IANA (Internet Assigned Numbers Authority) и другие перешли от IPv4 к IPv6. Эта схема адресации располагает достаточным количеством адресов, которые можно назначить устройствам в сети.
При этом ASN является методом управления таком количеством адресов.
Что такое ASN?
Автономная система (AS) представляет собой группу из нескольких IP-сетей, имеющих отдельную политику маршрутизации. Чтобы эти автономные системы могли взаимодействовать друг с другом, им нужен уникальный номер или идентификатор.
Хотя открытый ASN необходим, когда системы обмениваются данными в Интернете, частный ASN необходим для связи только с одним поставщиком через протокол пограничного шлюза (BGP).
IANA присваивает эти ASN автономным системам через региональные интернет-регистраторы (RIR), организации, отвечающей за управление номерами Интернета в конкретном регионе мира. Существует пять RIR:
Далее рассмотрим некоторые из лучших сервисов поиска ASN, скрипты и API для работы с ASN. Основной целью этих инструментов является проверка ASN для получения полной информации AS.
1. UltraTools
С помощью UltraTools легко можно получить информацию о любом ASN. Для этого достаточно ввести номер автономной системы, или название компании или же IP адрес принадлежащий интересующей организации.

В ответе отображается вся необходимая информация об ASN конкретного IP-адреса, включая владельца IP-адреса, регистратора, регистрационные данные, максимальный диапазон для всех IP-адресов и т.д.
Например, если ввести Google, то получим следующую информацию:

2. APIC Whois Search
В базе данных Whois APNIc хранятся все данные об организациях, имеющих ASN и IP-адреса в этом регионе.

Таким образом, с помощью APNIC Whois Search можно определить ASN и IP-адрес организации. Наряду с контактной информацией для каждой сети, эта база данных также показывает, когда и где были выданы ресурсы.
Для поиска нужной информации достаточно нажать «Search APNIC Whois«. Браузер перенаправляет на другую страницу, где можно ввести IP-адрес и получить интересующую информацию.
3. ASNLookup
ASNLookup предоставляет удобный интерфейс для поиска IP адресов конкретной организации с помощью ASN.
Чтобы получить данные введите название организации.

ASNLookup также бесплатно предлагает конечную точку API, которую можно использовать для извлечения данных в формате JSON. Это полезно, если вы хотите интегрировать его с приложением или инструментом.
Например, мы ввели «Rostelecom» в качестве входных данных, поэтому в нем отображается следующий вывод. Можно даже загрузить результаты и сохранить их для справки.

4. Spyse ASN Lookup
Spyse ASN Lookup предлагает простую в использовании платформу без сложной терминологии. С помощью этого инструмента можно получить более широкое представление о различных уязвимостях организаций.
Spyse ASN Lookup выполняет регулярное сканирование Интернета для сбора полной информации об ASN. Он обеспечивает мгновенный доступ к данным и хранит их в своей базе данных, где эффективно организует их.

Инструмент использует набор алгоритмов ручной работы для проверки собранных данных после завершения сканирования, чтобы можно было получать точные и обновленные данные. Он также предоставляет API для получения данных AS, где также можно объединить проекты с базой данных.
Вы также можете изучить диапазоны IPv4, связанные ASN и области AS, чтобы получить больше информации для сравнительного анализа.
5. MX Toolbox
Чтобы получить информацию ASN, MX Toolbox принимает в качестве входных данных имя AS или номер AS. Также по мере ввода номера или название AS отображаются все номера AS, соответствующие введенному названию.

Таким образом, можно ввести IP-адрес, имя узла или имя домена для получения информации ASN. Если ввести ссылку, она направит вас к соответствующим данным или инструментам. Также можно просмотреть историю результатов в хронологическом порядке.
6. Hacker Target
Проверить ASN на наличие IP-адреса, чтобы получить информацию о конкретной AS можно с помощью Hacker Target. Просто введите ASN или IP-адрес организации в качестве входных данных и вернет соответствующие ASN, разделенные запятой.
В нем отображаются название организации, ее географическое положение и все связанные IP-адреса.

С помощью средства поиска Hacker Target можно быстро проверить владельца определенного IP-адреса. Тем не менее, есть уловка, которую вы не должны забывать для организаций с их AS, расположенных на разных континентах.
Таким образом, если вы получаете IP-адрес AS, показанный в США, это не всегда означает, что система физически расположена с США.
Этот инструмент создан для оперативного поиска. Если используется его бесплатная версия, можно делать 100 запросов в день.
7. IPtoASN

Языки программирования, такие как Go и Rust, обеспечивают хорошую работу платформы IPtoASN. Операционная система OpenBSD с усовершенствованной технологией безопасности рассчитана для защиты IPtoASN в распределенной среде.
8. purplepee
Другим ресурсом, благодаря которому можно получить информацию об ASN является purplepee, сервис открытым исходным кодом. Кроме того, можно просматривать информацию о DNS-записях веб-сайта, заголовках HTTP, портах TCP и SSL-сертификатах.

Его поисковый фильтр должен включать определенные ключевые слова, чтобы система точно знала, что искать. Между названием фильтра и значением не должен быть пробелов.
Например, если нужно выполнить поиск ASN определенной организации, скажем, Digital Ocean, то запрос должен выглядеть следующим образом:
Он возвращает всю информацию, включая IP-адрес, геолокацию, ASN CIDR, дату, код страны, реестр, описание, а также сертификат SSL и заголовок HTTP.

9. IPWHOIS
IPWHOIS позволяет извлекать, а затем анализировать данные whois для IPv6 и IPv4 адресов. С помощью этого скрипта можно найти ASN, название веб-сайта или IP-адреса.

Пакет написан на Python для синтаксического анализа и извлечения данных. Он может распарсить широкий диапазон полей в один стандартный словарь. Скрипт обеспечивает поддержку запросов RDAP, устаревших протоколов, интерфейса командной строки, опционально выделение цветом выходных данных.
10. IPinfo
Устали от решений на основе команд и по-прежнему нуждаются в данных ASN? К счастью, это возможно!
Используя удивительный API IPinfo можно легко получить всю информацию об ASN. Достаточно ввести ASN или IP-адрес и за считанные секунды получите всю необходимую информацию об ASN.

API возвращает выходные данные в формате JSON с информацией для префиксов IPv6 и IPv4. Эта информация состоит из идентификаторов, имен, блоков IP, стран и названий интернет-провайдеров.
Получая такие данные, вы можете получить информацию о подключении к Интернету, ограничениях данных и скорости посетителей. Можно также проверить, является ли конкретный IP-адрес бизнес-поставщиком, хостингом или потребителем.
Соберите всю эту информацию, чтобы спланировать, как вы можете расширить возможности пользователей. IPinfo является надежным, поскольку обеспечивает точные результаты и ежедневно обновляет имеющиеся данные.
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Инфраструктура сети: AS, PI, LIR и прочие вкусности. 🙂
Не нашел на Хабре внятного этой RIPEвской кухни, потому пишу сам 🙂
Здесь я попробую (кратко) рассказать, как работает Интернет 🙂
И какие бонусы может извлечь из этого администратор сети предприятия, хостер или ISP.
Для начала — треминология.
IANA — Администрация адресного пространства Интернета. Занимается распределением номеров AS и IP-адресов в глобальном масштабе. Назначает RIR, подчиняется напрямую ICANN. Она такая одна и в этой статье она нас не интересует.
RIR — Региональная регистратура Интернета. Занимается выделением крупных блоков адресов, регистрацией LIR и распределением AS. Россия находится в юрисдикции RIPE NCC, расположенной в Амстердаме.
LIR — Локальная Регистратура Интернета. Занимается поддержкой работы сети, распределением PI (о них — дальше) и номеров AS. Как правило, это — ISP. Минимальный блок адресного пространства для LIR — 4096 IP-адресов.
AS — Автономная система. Содержит в себе адресное пространство (IP-адреса), имеет уникальный ASN — номер, позволяющий однозначно идентифицировать AS в Интернете. Номер AS — ключевая часть маршрутизации.
PI — Provider Independent. Провайдеро-независимые IP адреса. Находятся в определенной AS, маршрут к ним зависит только от политики маршрутизации. Принадлежат конечному пользователю [компании или LIR], а не его вышестоящему провайдеру. Следственно, сохраняются при смене ISP\подключении дополнительного ISP.
Путь распределения пространства:
Остановимся более подробно на каждом из интересных нам пунктов.
RIR — Regional Internet Registry, региональная регистратура интернета. Всего их пять — RIPE для Европы и Ближнего Востока, ARIN для Северной Америки, APNIC для Азии и Тихого Океана, LANIC для Латинской Америки и AfriNIC для Африки.
Статус RIR присваивается IANA и стать RIR для организации не возможно.
RIR занимаются выделением адресного пространства, регистрацией LIR, статистикой и разрешением споров. Это некоммерческие организации, они ничего не продают. Однако, каждый LIR платит членские взносы (рассчитываются исходя из размера сети) в RIR. RIR не работают с конечными пользователями и физическими лицами.
Карта RIR по регионам:
LIR — Local Internet Registry, локальная регистратура Интернета.
LIR делятся на категории, исходя из размера сети. Всего есть 5 категорий — Extra Large, Large, Medium, Small и Extra Small. Категории зависят от размера и нескольких других факторов, и присваиваются самим RIR.
В России существует 3 Extra Large, 20 Large и несколько сотен Medium\Small\ESmall LIR.
LIR платит членские взносы в RIR. Они не велики и рассчитываются исходя из класса LIR. Для RIPE это 1300 € в год для Extra Small и 5500 € в год для Extra Large.
LIR имеет минимум 1 ASN и минимум 4096 IP-адресов.
LIR имеет право выделения (Sub-Allocated) либо продажи ASN и IP/PI своим клиентам (Provider Aggregatable, PA. У всех пользователей сети, имеющих «белый» IP такие адреса). Также, LIR может быть посредником между конечным пользователем и RIPE (например, в ситуации регистрации AS\PI\LIR).
Как правило, статус LIR имеют крупные сетевики (провайдеры, дата-центры, регистраторы и т.д.). Обычной организации, 99.9% случаев это не нужно.
Автономные системы.
AS — Autonomous System, автономная система.
AS имеет свой порядковый номер — ASN, который используется в протоколе динамической маршрутизации BGP. Все IP-адреса закреплены за какой-то AS.
Существует 4 типа AS:
multihomed: имеющая 2 и более аплинка.
stub: имеющая 1 аплинк.
transit: транзитная, пропускающая через себя трафик других AS.
«приватная» AS, номера от 64512 до 65534, использующиеся для внутрисетевых нужд, тестов и обучения (аналогично «приватным» IP-адресам, таким как 192.168.0.0/24).
«Жизнь» AS регламентируется стандартом RFC 1930.
Если кому-то интересно, то есть список всех выданных ASN.
А вот здесь можно узнать номер AS по IP адресу, принадлежность этой AS и ее аплинки.
PI-адреса.
PI — Provider Independed, провайдеро-независимые IP-адреса. В отличие от PA и SUB-ALLOCATED IP-адресов, это адресное пространство принадлежит тому, кто его получил, а не его ISP. Вы можете использовать его как вам угодно, менять ISP без смены адресов, подключатся к 2м и более ISP с созданием собственной multihomed AS и политики маршруизации (например, включится в Internet eXchange и получать локальный трафик дешевле, чем продает его ваш оператор).
Вопросы регистрации.
Для регистрации AS и PI нет необходимости становится LIR. Для этого необходимо:
ХостингКонсалт, например, берет за регистрацию PI 8 000 руб. единоразово.
Либо, стать LIR самому:
Как стать LIR.
Если у кого-то остались вопросы, готов ответить на них в комментариях. 🙂
ASN.1 простыми словами (кодирование типа REAL)
Введение для Хабра
Приведённый ниже текст является на самом деле первыми двумя главами моей статьи «ASN.1 простыми словами». Так как сама статья достаточно большая по меркам Хабра я решил сначала проверить являются ли знания по кодированию простых типов востребованными на этом ресурсе. В случае положительной реакции аудитории я продолжу публикацию всех остальных глав.
Введение
Уже на протяжение достаточно большого периода мне приходится иметь дело с ASN.1. Мне посчастливилось работать как в сфере создания криптографических программ, так и в сфере телекоммуникаций. И в той, и в другой сфере изначально крайне активно и повсеместно используется стандарт ASN.1.
Однако и в процессе создания программ криптографической направленности, и в процессе создания программ для телекоммуникационной отрасли я постоянно встречался с одним и тем же мнением — ASN.1 это сложный и не понятный формат, а следовательно для кодирования / декодирования лучше применять сторонние компиляторы (а иногда даже другие стандарты кодирования передаваемой информации).
Одной из причин по которой сложилась ситуация, когда подавляющее большинство разработчиков программ считают стандарт ASN.1 сложным, это отсутствие книг по данному вопросу. Да, не смотря на почтенный возраст данного стандарта, множество свободно распространяемых компиляторов и различных статей, всё ещё крайне мало книг (или даже статей в Интернете) где бы простым и понятным языком, с большим количеством примеров, прояснялись вопросы кодирования простых типов ASN.1.
Исправляя сложившуюся ситуацию данная статья отчасти служит неким пособием, помогающим даже не сталкивавшемуся ранее с этим форматом человеку разобраться в тонкостях кодирования ASN.1. Статья охватывает вопросы исключительно только кодирования простых (не составных) типов — REAL, INTEGER, OBJECT IDENTIFIER, все виды строк, BOOLEAN, NULL, SEQUENCE, SET. В статье приводится подробнейшее объяснение всех тонкостей кодирования для каждого из типов, также приводятся подробные примеры, поясняющий тонкости кодирования для данного типа. В отдельном файле, прилагающемся к данной статье, можно найти код на С++, формирующий все примеры из статьи. Кроме того в этом файле с примерами приводятся дополнительные материалы, не рассмотренные в рамках данной статьи. Все материалы статьи опираются на последний стандарт ASN.1 от 2008 года, все составляющие под-стандарты которого можно скачать одним файлом по ссылке http://www.itu.int/rec/T-REC-X.680-X.693-200811-I/en. Если это специально не оговаривается, то приведенные в статье примеры кодируют типы в стандарте ASN.1 BER (Basic Encoding Rules).
В большинстве пособий и книг по ASN.1 изучение кодирования начинается с простейших, не сложных, типов и заканчивается наисложнейшими. В этой статье порядок будет строго противоположный — читателю сначала будет предложено изучить кодирование сложных типов, и только потом постепенно перейдём к изучению простейших. Это позволит однажды усвоив методы кодирования для сложного типа просто и быстро понять методику кодирования более простого.
Глава 1. Общие правила кодирования ASN.1
Первично всё же необходимо пояснить некоторые основы кодирования в формате ASN.1.
Для начала поясним для чего же создавался этот стандарт. В мире существует множество различных компьютеров. И кроме того существует множество стандартов представления данных в этих компьютерах. ASN.1 создавался как некий общий стандарт, позволяющий описывать произвольную информацию, которая бы понималась любым компьютером, имеющим представление об этом стандарте. В стандарте ASN.1 поэтому предъявляются жесткие правила кодирования даже на уровне отдельных битов информации, а также взаимного их расположения. Дополнительно нужно сказать, что стандарт ASN.1 кодирует информацию не в виде текста, а виде двоичных последовательностей. Сейчас уже появились вариации форматов кодирования, позволяющие представлять данные и в виде текста (XML), но обзор этих форматов выходит за рамки данной статьи. Здесь мы рассмотрим только самое сложное — двоичное кодирование (формат ASN.1 BER — Basic Encoding Rules).
Данные закодированные в формате ASN.1 представляют из себя последовательность байт (или «октетов»), которые идут один за другим, без каких либо разрывов. Последовательность закодированную в ASN.1 можно передавать по линиям связи, сохранять в файл — блок закодированной информации в ASN.1 уже содержит необходимое описание его общей длины и содержимого.
Для возможности подобного описания содержащейся в закодированном блоке информации применяется определенная общая структура каждого блока. Каждый блок содержит минимум 3 обязательных части (в отдельных случаях остаются только первые два блока, но эти случаи описываются отдельно):
Кроме этого может быть ещё 4-ая, не обязательная часть — часть октетов окончания значения блока (несколько октетов). Про эту часть будет рассказано несколько позже.
Перейдём к описанию каждой части ASN.1-кодированного блока.
Часть идентификатора блока состоит минимум из одного октета. Формат этого первого октета строго фиксирован.
В случае если идентификатор типа для блока находится в диапазоне значений 0-30 идентификационный блок состоит только из одного октета. Если же идентификатор типа для блока имеет значение 31 и выше, то в битах 5-1 выставляются все 1, а в последующих октетах кодируется нужный номер. Номер идентификатора типа кодируется как без знаковое целое, разложенное по основанию 128. В каждом октете, кодирующем идентификатор типа для блока, старший бит должен быть равен 1, кроме самого крайнего, завершающего октета (способ кодирования полностью совпадает со способом, которым кодируются SID для OBJECT IDENTIFIER, см. ниже).
Часть общей длины блока содержит минимум 1 октет, кодирующий длину значения, которое содержит блок (именно только длину блока, содержащего закодированное значение, а не общую длину всего закодированного блока вместе с идентификатором блока и частью общей длины!). Длина блока в простейшем случае кодируется как без знаковое целое, разложенное по основанию 128. Бит 8 (старший бит) в этом случае является дополнительным флагом. Если общая длина закодированного блока превышает 128, то старший бит первого октета части общей длины блока должен быть установлен в 1, а следующие 7 бит должны кодировать без знаковое целое значение количества последующих октетов, которые и будут кодировать реальную общую длину блока.
Например если общая длина блока равна L = 201 то она будет кодироваться с помощью двух октетов:
Кроме явного задания общей длины блока возможно определять окончание данного блока непосредственно в процессе декодирования блока. Это важно, когда при начальном кодировании блока не ясно, сколько именно октетов он будет содержать (потоковое кодирование). В этом случае первый октет части общей длины блока должен быть равен 80 (старший бит 8 равен 1 и все остальные биты равны 0). Окончание всего блока определяется по наличию в блоке значения двух последовательно идущих октетов 00 00.
Глава 2. Кодирование типа REAL
Общее описание типа:
В отличие от обычного, машинного, представления чисел с плавающей запятой (IEEE 754) в ASN.1 тип REAL практически не ограничен по размеру как мантиссы (мантисса может состоять из практически не ограниченного числа октетов и представлять сколь угодно большое число), так и по размеру экспоненты (значение экспоненты также может состоять из произвольного количества октетов). Ограничения при кодировании накладываются только на значение «основания»: в качестве «основания» могут выбраны только числа 10, 2, 8 или 16.
Для кодирования типа REAL применяются следующие три основных блока:
В служебной информационном октете содержится следующая информация:
Значение экспоненты числа кодируется целым числом, состоящим из произвольного количества октетов. Здесь необходимо сделать маленькое отступление и рассказать как именно в ASN.1 кодируются как положительные целые числа, так и отрицательные.
Рассмотренным выше способом можно закодировать сколь угодно большое целое положительное число. Однако как быть с кодированием отрицательных целых значений? Именно для кодирования отрицательных целых применяется специальная процедура кодирования значений.
Для примера опять возьмем число 32639, но теперь пусть оно будет отрицательным (-32639). Кодирование отрицательных целых построено так, что на самом деле кодируется не одно, а два целых значения — одно основное значение и другое целое значение, которое нужно вычесть из основного значения. То есть при декодировании для получения закодированного отрицательного числа просто вычислить результат (x — y). Как видно из этой простейшей формулы если значение «x» меньше, чем значение «y» то результат будет меньше нуля (то есть отрицательное число).
Вышеупомянутые два числа (основное число и число, которое надо вычесть из основного) формируются по следующим правилам:
Перейдём к кодированию конкретного числа из примера (-32639). Так как число, которое надо вычесть из основного, должно быть больше основного числа, то кодирование отрицательных целых чисел начинается именно с выбора этого вычитаемого. Так как по правилам это вычитаемое должно разлагаться по основанию 256 так, чтобы все биты, представляющие индексы при соответствующих степенях 256, были равны 0 кроме первого бита, то ряд возможных вычитаемых представляет собой лидирующий октет 80 (1000 0000) и какое-то количество октетов 00, следующих за ним. То есть в качестве вычитаемых могут использоваться: 80 (12810), 80 00 (3276810), 80 00 00 (838860810) и т.п. Для кодирования нашего числа «-32639» выберем первое подходящее вычитаемое, большее кодируемого числа по модулю (то есть большее чем число 32639). Ближайшее такое число равно 32768 (80 00).
А теперь приятная информация — в современных компьютерных системах целые числа (как положительные, так и отрицательные) автоматически кодируются и хранятся именно в том формате, который и был описан выше. То есть для кодирования целых чисел в ASN.1 не нужно выполнять вообще никаких действий — просто нужно сохранить их байт за байтом и всё.
Значение мантиссы числа представляет собой всегда без знаковое целое. То есть мантисса числа, кодированного в ASN.1, всегда является положительным числом. Для того чтобы кодировать отрицательные числа с плавающей точкой в ASN.1 предусмотрен отдельный бит (бит 7) в служебном октете (см. выше).
Мантисса кодируется как последовательность байт представляющих собой коэффициенты разложения начального числа по основанию 256. То есть если мантисса числа в десятичном виде равна 32639 то значит закодированное число будет состоять из двух октетов 7F 7F (3263910 = 127*256 1 + 127*256 0 = 7F*FF 1 + 7F*FF 0 ).
Примеры кодирования чисел REAL в ASN.1 в двоичном представлении:
Следовательно все число с плавающей точкой из нашего примера (при условии «нормализации» мантиссы) будет кодироваться следующей последовательностью октетов:
Кроме кодирования всех частей числа с плавающей точкой в виде двоичного представления в разложении по различным степеням двойки дополнительно есть прекрасная возможность представлять подобные числа в ASN.1 в обычном строковом виде, в каком мы обычно и видим такие числа. В этом случае считается, что число кодируется с основанием 10.
При кодировании по основанию 10 дополнительно вводится понятие «форм представления числа». Всего таких форм 3 (формы NR1, NR2 и NR3) и описываются они в отдельном стандарте ISO 6093. Так как этот стандарт является платным, то для ознакомления с формами представления чисел можно порекомендовать «предка» ISO 6093 — стандарт ECMA-63, который легко может быть найден в Интернете.
При кодировании числа с плавающей точкой в представлении разложения по основанию 10 в служебном информационном октете указывается код формы представления числа (01, 02 или 03 для соответствующих форм), а сразу после служебного информационного октета указываются коды символов, представляющих кодированное число. Разрешены следующие коды символов:
Все остальные символы запрещены к кодированию (при декодировании символов, отличных от приведенных выше, декодер ASN.1 обязан выдать ошибку).
Примеры кодирования числа с плавающей точкой в десятичной форме:
Кроме обычных чисел ASN.1 позволяет кодировать также и ряд «специальных» чисел:
Все специальные числа кодируются только одним служебным информационным октетом, без указания октетов для экспоненты и мантиссы:
UPDATE: список последующих глав моей статьи
UPDATE #3: Возможно кто-то упустил, но вот тут находится реализация на С++ ASN.1 coder/decoder с поддержкой типа REAL. А вот тут реализация на JavaScript, но пока без типа REAL.



