Top.Mail.Ru
Выжимка: Linux для сетевых инженеров. Глава 3. Диагностика сети в Linux.


Jun 26, 2024

Выжимка: Linux для сетевых инженеров. Глава 3. Диагностика сети в Linux.

Связь между адресами IP и MAC с помощью ARP:

arp работает с протоколом разрешения адреса (ARP, Address Resolution Protocol) и локальной таблицей ARP в памяти.

Это позволяет связать физический MAC адрес сетевой карты с её IP адресом.

Теоретически MAC адреса - это адреса, которые зашиты в каждый сетевой интерфейс.

Данные ARP кэшируются на каждом узле в кэше ARP или в таблице ARP, которую можно просмотреть с помощью команды arp:

arp -a

Срок действия записи можно просмотреть в файле:

cat /proc/sys/net/ipv4/neigh/ens33/gc_stale_tile # ens33 имя интерфейса

Для просмотра ошибок и параметров сетевого интерфейса откроем файл:

cat /proc/net/dev

Статистика по использованной памяти:

cat /proc/meminfo | grep Mem
Добавляем статическую запись ARP:
sudo arp -s 192.168.122.200 00:11:22:22:33:33

проверяем:

arp -a | grep 192.168.122.200
Удаляем статическую запись ARP:
sudo apr -i ens33 -d 192.168.122.200
А так же можно замаскироваться под IP адрес - например, чтобы отвечать на запросы ARP для чужого IP 10.0.0.1 :
sudo arp -i eth0 -Ds 10.0.0.1 eth1 pub
Как узнать свой MAC адрес:
ip link show ens33 | grep link

Устаревшая команда:

ifconfig ens33 | grep ether
Как изменить MAC адрес:
sudo ip link set dev ens33 down
sudo ip link set dev ens33 address 00:88:77:66:55:44
sudo ip link set dev ens33 up

Чтобы изменить MAC адрес на постоянной основе используем netplan:

редактируем файл /etc/netplan/01-network-manager-all.yaml.

Добавляем инструкцию match с текущим MAC адресом, следующей строкой задаём новый:

network:
  version: 2
  ethernets:
    ens33:
      dhcp4: true
	  match:
	    macaddress: b6:22:eb:7b:92:44
      macaddress: 11:22:33:44:55:66

Протестировать:

sudo netplan try

Применить:

sudo netplan apply
Какие службы прослушивают те или иные порты:
netstat -tulpn

Добавим информацию о процессе с помощью параметра p:

sudo ss -tuap
Как вывести с форматированием:
sudo ss -tuap | tr -s ' ' | cut -d ' ' -f 1,2,5,6 --output-delimiter=$'\t'

tr -s ' ' - команда заменяет серии пробелов на один.

cut -d ' ' -f 1,2,5,6 --output-delimiter=$'\t' - разделяет строки пробелом и выдаёт заданные номерами значения разделяя табуляцией.

Для того чтобы увидеть статистику по соединению TCP:

sudo ss -to # t - TCP,  o - просмотр свойств соединения
Ещё один способ получить информацию о соединениях на компьютере:
lsof -i :443 # порт 443
lsof -i :22 # порт 22
Сканирование удалённых портов с помощью встроенных инструментов Linux:
telnet 192.168.122.241 80

С помощью Netcat сканируем первые 1024 порта:

nc -zv 192.168.122.241 1-1024

Netcat отправляет вывод в специальные файл STDERR (стандартный поток ошибок),

поэтому grep с Netcat работать не будет на прямую нужно перенаправить поток данных в STDOUT

Три стандартных потока ввода-вывода:

Для перенаправления потока данных из STDERR в STDOUT используем данную команду 2>&1

nc -zv 192.168.122.241 0-65535 2>&1 | grep -v refused

Для UDP:

nc -u -zv 192.168.122.1 53
Запуск сайта с помощью Netcat:

Создаём index.html со статическим содержимым и запускаем:

while true; do cat index.html | sudo nc -l -p 80 -1 1; done

sudo требуется для запуска на 80 порту

Сайт Hello world!:

while true; do echo -e "HTTP/1.1 200 OK\n\n Hello world!" | sudo nc -l -p 80 -q 1; done
Получение файла по сети с помощью Netcat:
nc -l -p 1234 >received.txt # полученные данные будут в файле received.txt

Для отправки:

nc -w 3 [IP адрес назначения] 1234 < send-file.txt
Сканирование удалённых портов и служб с помощью Nmap:

Пинг сканирование:

nmap -sn 192.168.122.0/24

Сканируем HTTPS, отображать только открытые порты:

nmap -p 443 --open 192.168.122.0/24

Сканируем UDP:

sudo nmap -sU -p 53 --open 192.168.122.0/24 # UDP порты сканируем только с sudo

Сканируем UDP с подробной информацией:

sudo nmap -sU -p 53 --open -sV --reason 192.168.122.0/24
Сценарии Nmap:
nmap -p139,445 --open --script=smb-protocols 192.168.122.0/24

Проверка версий поддерживаемых samba, вывод:

Nmap scan report for nas (192.168.122.3)
Host is up (0.00010s latency).

PORT    STATE SERVICE
139/tcp open  netbios-ssn
445/tcp open  microsoft-ds

Host script results:
| smb-protocols:
|   dialects:
|     2.02
|     2.10
|     3.00
|     3.02
|_    3.11
Некоторые из полезных скриптов:
Размер MTU (максимальной единицы передачи) в канале связи.
Другими словами, это максимальная полезная нагрузка, которую
можно инкапсулировать в кадр и передать по каналу. Это часто
важно при устранении неполадок в глобальных сетях (WAN),
а особенно в виртуальных частных сетях (VPN).

path-mtu

Неучтенные или вредоносные маршрутизаторы.
Вредоносный маршрутизатор может использоваться
в атаках посредника (MiTM, Machine in the Middle)
для перенаправления трафика, например, на поддельный
 сайт банка, чтобы красть учетные данные пользователей.

broadcast-eigrp-discovery

broadcast-igmp-discovery

broadcast-ospf2-discover

broadcast-rip-discover

broadcast-ripng-discover

Нежелательные или вредоносные прокси-серверы.
Атака WPAD часто применяется для кражи учетных
данных: использовать для этого вредоносный прокси-
сервер даже легче, чем вредоносный маршрутизатор

broadcast-wpad-discover

Неправильно настроенные службы SNMP.
Подсказка: обратите особое внимание на строки
SNMPv2 public или private

snmp-info

DNS-серверы, о существовании которых вы не знали

broadcast-dns-service-discovery

dns-srv-enum

DNS-серверы с включенной рекурсией.
Рекурсия часто желательна для внутреннего DNS-
сервера, но обычно не годится для DNS-сервера с 
выходом в интернет.

dns-recursion

«Подпольные» (rogue) DHCP-серверы.
Часто это бывают беспроводные маршрутизаторы или
коммутаторы, которые сотрудники принесли извне,
однако подпольный DHCP-сервер в сочетании
с вредоносным прокси-сервером в интернете вполне может
использоваться для кражи учетных данных.

dhcp-discover

broadcast-dhcp-discover

broadcast-dhcp6-discover

Нелицензированные или «теневые» серверы баз данных.
Часто бывает достаточно sV-сканирования прослушивающего
порта по умолчанию для целевой базы данных, но эти сценарии
дадут больше информации, если она нужна.
С помощью этих сценариев обычно ищут серверы баз данных,
которые считались выведенными из эксплуатации, или «пиратские»
экземпляры баз данных, которые разработчики развернули
для тестирования. Найти серверы MongoDB или CouchDB за пределами сферы
IT не так уж и сложно — их любят в отделах маркетинга. Риск
заключается в том, что они часто под завязку набиты конфиденциальной
информацией о клиентах и при этом плохо защищены
(не редкость даже найти их без пароля администратора).

broadcast-ms-sql-discover

broadcast-sybase-asa-discover

oracle-tns-version

broadcat-db2-discover

couchdb-databases

mongodb-info

Персональные серверы Jenkins (используются для управления ис-
ходным кодом и конвейерами DevOps).
Обнаружение несанкционированного сервера Jenkins, например,
на компьютере разработчика, может означать серьезные пробле-
мы в большой команде

broadcast-jenkins-discover

Узлы с активированной службой UPnP (Universal Plug and Play) broadcast-upnp-info
Узлы с активированной службой LLMNR (Link-Local Multicast
Name Resolution). Эта служба (включенная по умолчанию во
многих версиях Windows) является заменой DNS на уровне 2.
Поскольку ее также используют в атаках с целью кражи учетных
данных с участием клиентов Windows и SMB, вероятно, имеет
смысл отключать ее всюду, где встретите

llmnr-resolve

Нежелательные узлы VPN на границе вашей сети с остальным
интернетом или узлы VPN, поддерживающие IKEv1.

ike-version

http-cisco-anyconnect

Сертификаты, не инвентаризированные ранее или с истекающим
сроком действия. (Совет: не ограничивайте поиск лишь
портом tcp/443, потому что сертификаты используются не только
для веб-серверов HTTPS, но и для многих других служб.)
Эту проверку стоит запускать регулярно, потому что если 
у критического сертификата неожиданно истечет срок действия, это
может сильно подпортить вам жизнь!

ssl-cert

ssl-date

Службы SSL или TLS устаревших или нежелательных версий.
От SSL и TLS версии 1 следует полностью отказаться

ssl-dh-params

ssl-enum-ciphers

Серверы RDP с низким уровнем шифрования

rdp-enum-encryption

Серверы SSH с низким уровнем шифрования.
В частности, SSH версии 1 легко подвергается атакам, поэтому
ее следует обновить, если встретите

ssh2-enum-algos

sshv1

Другие службы, обычно нежелательные в сети компании

bitcoin-info

Диагностика беспроводных сетей:

Kismet — один из старейших беспроводных инструментов, доступных для Linux.

Чтобы запустить Kismet, используйте такую команду:

sudo kismet -c <имя беспроводного интерфейса>

Eсли у вас есть полностью рабочая конфигурация и вам не нужно отображать

данные сервера Kismet в консоли, выполните следующее:

sudo kismet -c <имя беспроводного интерфейса> &

Теперь в другом окне (или в том же месте, если вы запускали Kismet в фоновом режиме) вызовите клиент Kismet:

kismet_client