- Сканирование сетевых портов в Linux – команда nmap
- Зачем нужна команда nmap?
- Синтаксис команды nmap и особенности её работы
- Использование nmap
- Заключение
- Nmap — руководство для начинающих
- [в закладки] Шпаргалка системного администратора по сетевым инструментам Linux
- ▍Примеры
- Traceroute
- ▍Пример
- Telnet
- ▍Пример
- Netstat
- ▍Примеры
- Nmcli
- ▍Примеры
- Маршрутизация
- ▍Примеры
- Tcpdump и Wireshark
- ▍Примеры
- Iptables
- ▍Примеры
- Nslookup
- ▍Примеры
- Поиск неполадок
- ▍Примеры
- Итоги
Сканирование сетевых портов в Linux – команда nmap
Системы Linux и UNIX являются сетевыми операционными системами (ОС). Поэтому их эксплуатация неразрывно связана с администрированием и обслуживанием сетей. Независимо от сложности и масштабов сети необходимо проводить постоянный мониторинг окружения сети на предмет качества связи и соединений. А также для определения признаков или даже фактов вредительства в ней или несанкционированных атак. Одним из эффективных инструментов для выполнения подобных задач является команда nmap.
Зачем нужна команда nmap?
Основная задача команды nmap – сканирование сетевых портов указанных компьютеров для определения, какие из них используются (прослушиваются) программами-серверами. Для подавляющего числа сетевых демонов (служб) определены их стандартные порты по-умолчаню, которые они используют для своей работы. По этому признаку можно делать выводы, о том какие серверные программы запущены на том или ином компьютере в сети.
Также команда nmap – это самый доступный инструмент в руках злоумышленников для организации подготовки хакерской атаки на сеть. Ведь с помощью этой команды очень легко получить информацию, на основе которой можно судить о слабых и уязвимых местах в атакуемой системе.
Синтаксис команды nmap и особенности её работы
Команда nmap довольно проста в использовании и каким-то сложным синтаксисом не отличается:
Чего нельзя сказать о количестве, функциональности её ключей и неисчерпаемых возможностях их применения. Официальная документация, доступная на страницах man-руководства (команда man nmap), кроме того, что очень подробная (трудно встретить ещё подробнее), так ещё и имеет качественный перевод (локализации, в том числе и на русском языке) в большинстве Linux-дистрибутивов.
Не всегда утилита nmap предустановлена в системе, поэтому для её использования требуется установка соответствующего пакета, который обычно имеет имя nmap:
Или в Centos/Redhat
Столбец STATE показывает состояние порта: он может быть открыт (open), когда связан с использующими его службами (соединениями), закрыт (closed), когда порт не используется ни одним сервером. Также доступны состояния: unfiltered, когда nmap не смогла определить состояние порта. А также filtered – когда порт защищён (или заблокирован) брандмауэром.
Для задания хоста можно также использовать цифровую запись в виде IP-адреса. Отчёт из данного примера сформирован для самого обычного компьютера, для которого не была сконфигурирована какая-то защита. Как можно видеть, для прослушивания 80 и 443 портов для работы протоколов HTTP и HTTPS соответственно, запущен веб-сервер. Сервер баз данных (БД) MySQL также работает по стандартному порту.
Использование nmap
Если посмотреть на отчёт команды nmap для более защищённого узла, то он будет выглядеть примерно так:
Как можно видеть, на сканируемом узле (компьютере) скорее всего работает брандмауэр. Который блокирует все порты кроме тех, что отведены для работы почтового и веб- серверов. Таким образом, можно сделать вывод о том, что компьютер по указанному адресу настроен специально для работы с электронной почтой и обработкой HTTP-запросов.
Однако, одна из особенностей nmap заключается в том, что эту команду можно использовать в «хакерском» режиме. Другими словами она позволяет сканировать порты без установки реальных соединений. Это достигается путём использования неквитирующих пакетов, т. е. тех, которые похожи на имеющиеся в существующих соединениях. Но в ответ на такие пакеты можно получать пакеты диагностические. Т. е. получать информацию о соединении, при этом не быть «замеченным» брандмауэром или другим сетевым фильтром. Которые следят за «сканировщиками» портов.
Помимо всего прочего nmap умеет распознавать, какая ОС используется на проверяемом узле. Путём анализа некоторых особенностей, характерных для реализации стека TCP/IP для разных ОС. Для использования этой возможности существует ключ -O:
Как можно видеть, компьютер с IP-адресом 192.186.0.101 работает под управлением ОС Windows, предположительно Windows 7. Информация в отчёте довольно подробная, определён даже MAC-адрес сканируемого сетевого устройства.
Стоит рассмотреть некоторые примеры для команды nmap, которые могут пригодиться администраторам в их работе. Сканирование нескольких адресов:
Определение активных узлов в сети:
В этой команде используется формат записи, для обозначения подсети. В качестве параметров можно также указывать данные из файла:
Записи адресов в файле указываются также, как и в командной строке. И разделяться должны одним или несколькими пробелами или символами перевода строки. Для сканирования определённых портов:
или диапазона портов:
Сканирование всех портов:
Сканирование определённых типов портов (TCP или UDP):
Соответственно для указания UDP-портов следует указывать опцию -U. Для объединённого сканирования портов:
Для скрытого сканирования:
Сохранение результатов сканирования в файл:
Определить (с высокой степенью вероятности), работает ли на сканируемом узле брандмауэр или другой пакетный фильтр:
Определение только открытых портов:
Определение версии ОС, а также трассировки маршрутов:
Чтобы исключить из сканирования определённые адреса или подсети нужно использовать опцию —exclude:
Чтобы использовать для этой цели данные из файла, применяется опция —excludefile:
Заключение
Как можно видеть, nmap – это действительно мощный инструмент для мониторинга и анализа безопасности сетевого окружения. Следует также всегда помнить, что с помощью одной только команды nmap система или сеть могут быть досконально изучены «посторонними» или не совсем добросовестными людьми. Поэтому системные администраторы всегда должны учитывать этот фактор для обеспечения безопасности вверенных им систем.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Nmap — руководство для начинающих
Многие слышали и пользовались замечательной утилитой nmap. Ее любят и системные администраторы, и взломщики. Даже Голливуд знает про нее — в фильме «Матрица» при взломе используется nmap.
nmap — это аббревиатура от «Network Mapper», на русский язык наиболее корректно можно перевести как «сетевой картограф». Возможно, это не лучший вариант перевода на русский язык, но он довольно точно отображает суть — инструмент для исследования сети и проверки безопасности. Утилита кроссплатформенна, бесплатна, поддерживаются операционных системы Linux, Windows, FreeBSD, OpenBSD, Solaris, Mac OS X.
Рассмотрим использование утилиты в Debian. В стандартной поставке дистрибутива nmap отсутствует, установим его командой
# aptitude install nmap
Nmap умеет сканировать различными методами — например, UDP, TCP connect(), TCP SYN (полуоткрытое), FTP proxy (прорыв через ftp), Reverse-ident, ICMP (ping), FIN, ACK, SYN и NULL-сканирование. Выбор варианта сканирования зависит от указанных ключей, вызов nmap выглядит следующим образом:
Для опытов возьмем специальный хост для экспериментов, созданный самими разработчиками nmap — scanme.nmap.org. Выполним от root’а
Ключи сканирования задавать необязательно — в этом случае nmap проверит хост на наличие открытых портов и служб, которые слушают эти порты.
Запустим командой:
Через несколько секунд получим результат:
Interesting ports on scanme.nmap.org (74.207.244.221):
Not shown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Ничего необычного, ssh на стандартном порту и http на 80. Nmap распознаёт следующие состояния портов: open, filtered, closed, или unfiltered. Open означает, что приложение на целевой машине готово для принятия пакетов на этот порт. Filtered означает, что брандмауэр, фильтр, или что-то другое в сети блокирует порт, так что Nmap не может определить, является ли порт открытым или закрытым. Closed — не связанны в данный момент ни с каким приложением, но могут быть открыты в любой момент. Unfiltered порты отвечают на запросы Nmap, но нельзя определить, являются ли они открытыми или закрытыми.
# nmap -O scanme.nmap.org
Хинт: Если во время сканирования нажать пробел — можно увидеть текущий прогресс сканирования и на сколько процентов он выполнен. Через несколько секунд получаем ответ, в котором пока что интересна строчка Device type:
Device type: general purpose|WAP|webcam|storage-misc
Running (JUST GUESSING) : Linux 2.6.X|2.4.X (93%), AXIS Linux 2.6.X (89%), Linksys Linux 2.4.X (89%)
Aggressive OS guesses: Linux 2.6.17 — 2.6.28 (93%), Linux 2.6.9 — 2.6.27 (93%), Linux 2.6.24 (Fedora 8) (92%), Linux 2.6.18 (Slackware 11.0) (92%), Linux 2.6.19 — 2.6.26 (92%), OpenWrt (Linux 2.4.32) (91%), Linux 2.6.22 (91%), Linux 2.6.22 (Fedora Core 6) (90%), Linux 2.6.13 — 2.6.27 (90%), Linux 2.6.9 — 2.6.18 (90%)
No exact OS matches for host (test conditions non-ideal).
Вообще, точную версию ядра средствами nmap определить невозможно, но примерную дату «свежести» и саму операционную систему определить можно. Можно просканировать сразу несколько хостов, для этого надо их перечислить через пробел:
# nmap -O example.com example2.com
Вернемся к нашему подопытному хосту. Хочется узнать поподробнее, какой используется софт. Попробуем уточнить полученные данные с помощью ключей -sV:
# nmap -sV example.com example2.com
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu7 (protocol 2.0)
80/tcp open http Apache httpd 2.2.14 ((Ubuntu))
Service Info: OS: Linux
Прогресс налицо — мы узнали точные названия используемых служб и даже их версии, а заодно узнали точно, какая операционная система стоит на сервере. С расшифровкой никаких проблем не возникает, все вполне понятно.
Агрессивное сканирование можно провести, указав ключ -A
# nmap -A scanme.nmap.org
Nmap выведет очень много информации, я не стану приводить пример. Сканирование может длится довольно долго, занимая несколько минут.
В локальных сетях или просто имея на руках диапазон ip адресов, удобно проверить их на занятость с помощью ключей -sP:
# nmap -sP 192.168.1.0/24
Сканирование проходит довольно быстро, так как по сути это обычный ping-тест, отвечает ли хост на ping. Следует учесть, что хост может не отвечать на ping из-за настроек фаерволла. Если нужный участок сети нельзя ограничить маской, можно указать диапазон адресов, с какого и по какой надо провести сканирование. Например, есть диапазон адресов с 192.168.1.2 до 192.168.1.5. Тогда выполним:
# nmap -sP 192.168.1.2-5
Ответ будет выглядеть так:
Host 192.168.1.2 is up (0.0023s latency)
Host 192.168.1.3 is up (0.0015s latency)
Host 192.168.1.4 is up (0.0018s latency)
Host 192.168.1.5 is up (0.0026s latency)
В моем случае все ip в данный момент были в сети.
Это далеко не все возможности nmap, но уместить их в рамках одной статьи несколько сложновато.
Если вам ближе GUI — есть замечательная утилита Zenmap — графическая оболочка для nmap, умеющая заодно и строить предполагаемую карту сети.
Хочу предупредить, что сканирование портов на удаленных машинах может нарушать закон.
UDPInflame уточнил, что сканирование портов все-таки не является противозаконным.
Источник
[в закладки] Шпаргалка системного администратора по сетевым инструментам Linux
В повседневные задачи системных администраторов входит работа с сетями и с подключённым к ним оборудованием. Нередко роль рабочего места администратора играет компьютер, на котором установлен какой-нибудь дистрибутив Linux. Утилиты и команды Linux, о которых пойдёт речь в материале, перевод которого мы публикуем сегодня, включают в себя список инструментов различной сложности — от простых, до продвинутых, которые предназначены для решения широкого спектра задач по управлению сетями и по диагностике сетевых неполадок.
В некоторых из рассматриваемых здесь примеров вы столкнётесь с сокращением (fully qualified domain name, полное доменное имя). Встретив его, замените его, в зависимости от обстоятельств, на адрес интересующего вас сайта или сервера, например, на нечто вроде server-name.company.com .
Утилита ping , как можно судить по её названию, используется для проверки связи между узлами сети, между компьютером, на котором её запускают, и другой системой. Эта утилита использует протокол ICMP, отправляя эхо-запросы, на которые отвечает удалённая система, получающая их. Использование ping , кроме того — это хороший способ проверки связности сети, проводимой в качестве первого шага диагностики сети при наличии неполадок. Команду ping можно использовать с адресами IPv4 и IPv6. Тут можно почитать подробности об IP-адресах и о работе с ними.
▍Примеры
Ping, кроме того, можно использовать для выяснения IP-адресов сайтов на основе их имён. Вот как это выглядит.
Использование ping для выяснения IP-адреса сайта по его имени
Traceroute
Traceroute — это приятная утилита, которая позволяет исследовать маршруты передачи данных между компьютерами. В то время как команда ping направлена на то, чтобы выяснить, можно ли установить связь между двумя узлами сети, traceroute даёт сведения об IP-адресах маршрутизаторов, через которые проходят данные от вашей системы до конечной, например — до веб-сайта или сервера. Команда traceroute обычно применяется на втором шаге диагностики сети, после команды ping .
▍Пример
Telnet
Утилита telnet позволяет связаться с удалённым компьютером по протоколу Telnet и взаимодействовать с ним, используя соответствующие команды.
▍Пример
Для организации сеанса Telnet-связи с другим компьютером используется следующая команда:
Netstat
Эта команда позволяет собирать сведения о сети и используется в ходе поиска и исправления сетевых неполадок, применяется для проверки данных о работе интерфейсов и портов, для исследования таблиц маршрутизации, для изучения информации о работе протоколов. Эта команда непременно должна присутствовать в арсенале системного администратора.
▍Примеры
Для того чтобы получить список всех портов, находящихся в режиме прослушивания, воспользуйтесь такой командой:
Следующая команда выводит сведения обо всех портах. Для того чтобы ограничиться только TCP-портами, нужно воспользоваться ключом -at , для того, чтобы получить данные об UDP-портах, используйте ключ -au .
Для просмотра таблиц маршрутизации воспользуйтесь такой командой:
Вот как выглядит результат выполнения этой команды.
Сведения о таблице маршрутизации
Вот вариант этой команды, выводящий статистику по протоколам:
Статистика по протоколам
Следующий вариант вызова netstat позволяет узнать сведения об отправленных и полученных пакетах (transmission/receive, TX/RX) по каждому интерфейсу:
Данные об отправленных и полученных пакетах
Nmcli
Утилита nmcli отлично подходит для управления сетевыми соединениями, для выполнения настроек и для решения других подобных задач. С её помощью можно управлять программой NetworkManager и модифицировать сетевые параметры различных устройств.
▍Примеры
Вот как с помощью nmcli вывести список сетевых интерфейсов:
Так можно вывести информацию по конкретному интерфейсу:
Следующий вариант вызова команды позволяет проверить подключение устройства к сети:
Примеры использования nmcli
Эта команда позволяет отключить заданный интерфейс:
А эта позволяет включить интерфейс:
Вот пример команды, которая добавляет VLAN-интерфейс с заданным VLAN-номером, IP-адресом и шлюзом к указанному интерфейсу:
Маршрутизация
Существует множество команд, которые можно использовать для проверки правил маршрутизации и их настройки. Рассмотрим самые полезные из них.
▍Примеры
Следующая команда показывает все текущие маршруты, настроенные для соответствующих интерфейсов:
Маршруты, настроенные для интерфейсов
Эта команда позволяет добавить в таблицу маршрутизации шлюз, используемый по умолчанию:
Следующая команда добавляет в таблицу маршрутизации новый сетевой маршрут. Существует и множество других её параметров, позволяющих выполнять такие операции, как добавление маршрута и шлюза, используемых по умолчанию, и так далее.
С помощью такой команды можно удалить запись о заданном маршруте из таблицы маршрутизации:
Вот примеры использования команды route .
Использование команды route
Вот команда, которая применяется для вывода текущей таблицы соседей. Кроме того, её можно использовать для добавления, изменения или удаления сведений о соседях:
Взглянем на примеры её использования.
Данные, полученные с помощью команды ip neighbor
Вот сведения о команде ip neigh
Сведения о команде ip neigh
Команда arp (ARP — это сокращение от Address Resolution Protocol, протокол определения адреса) похожа на ip neighbor . Утилита arp выводит данные о соответствии IP-адресов MAC -адресам. Вот как её использовать:
Вот пример её вызова.
Вызов команды arp
Tcpdump и Wireshark
Linux даёт в распоряжение администратора множество инструментов для захвата и анализа пакетов. Среди них, например, tcpdump , wireshark , tshark , и другие. Они используются для захвата сетевого трафика в передаваемых системой пакетах или в пакетах, получаемых ей. Это делает их весьма ценным инструментом администратора, помогающим в деле выяснения причин различных сетевых неполадок. Тем, кто предпочитает командную строку всем остальным способам общения с компьютерами, понравится tcpdump . Тем же, кто любит графические интерфейсы, можно порекомендовать wireshark — отличный инструмент для захвата и анализа пакетов. Утилита tcpdump — это встроенное в Linux средство для захвата сетевого трафика. Его можно использовать для захвата и вывода трафика с фильтрацией по портам, протоколам, и по другим признакам.
▍Примеры
Такая команда показывает, в режиме реального времени, пакеты с заданного интерфейса:
Пакеты можно сохранять в файл, воспользовавшись флагом -w и задав имя файла:
Вот пример использования tcpdump .
Использование tcpdump
Следующий вариант команды используется для захвата пакетов, приходящих с заданного IP системы-источника:
Так можно захватить пакеты, идущие на заданный адрес системы-приёмника:
Вот пример использования tcpdump для захвата пакетов для заданного номера порта, например, это может быть порт 53, 80, 8080, и так далее:
Здесь показано, как с помощью tcpdump захватывать пакеты заданного протокола, вроде TCP, UDP или других:
Iptables
Утилита iptables похожа на файрвол, она поддерживает фильтрацию пакетов, что позволяет управлять трафиком, пропуская или блокируя его. Диапазон возможностей этой утилиты огромен. Рассмотрим несколько наиболее распространённых вариантов её использования.
▍Примеры
Следующая команда позволяет вывести все существующие правила iptables :
Эта команда удаляет все существующие правила:
Следующие команды разрешают прохождение трафика с заданного номера порта к заданному интерфейсу:
Следующие команды разрешают loopback-доступ к системе:
Nslookup
Инструмент nslookup используется для получения сведений о назначении IP-адресов сетевым ресурсам. Его можно использовать и для получения сведений с DNS-серверов, например таких, как все DNS-записи для некоего веб-сайта (ниже мы рассмотрим соответствующий пример). На nslookup похожа утилита dig (Domain Information Groper).
▍Примеры
Следующая команда выводит IP-адреса вашего DNS-сервера в поле Server, и, ниже, выдаёт IP-адрес искомого сайта:
Такая команда показывает все доступные записи для заданного веб-сайта или домена:
Поиск неполадок
Вот набор команд и список важных файлов, используемых для идентификации сетевых неполадок.
▍Примеры
Итоги
В этой небольшой шпаргалке мы рассказали о сетевых инструментах Linux, предназначенных для системных администраторов. Надеемся, вам эти инструменты пригодятся.
Уважаемые читатели! Чем вы пользуетесь для администрирования сетей и для выяснения причин сетевых неполадок?
Источник