Как я могу сканировать порты хоста от самого себя, не используя петлевой интерфейс?

Конфигурация sshd сервера -на стороне через authorized_keysуже обсуждалась. Однако можно также сгенерировать ключ с опцией ограничения исходных адресов, действительных для этого ключа. Это будет работать одинаково для всех систем, к которым вы подключаетесь. Этот ключ нужно будет генерировать повторно каждый раз, когда изменяется список исходных адресов.

Это устраняет необходимость трогать все авторизованные файлы ключей _на нескольких серверах, которые вы, возможно, захотите ограничить особым образом, если, скажем, вы делаете это автоматически и не хотите возиться с изменением автоматика для обработки одного ключа. Или если вам нужен еще один уровень защиты на случай реверсии на сервере.Или если вы хотите ограничить этот ключ независимо от конфигурации сервера.

В опциях для ssh -keygen есть опция под названием source-address, которая принимает разделенный запятыми -список пар адрес/сетевая маска в формате CIDR. Команда для генерации ключа будет выглядеть примерно так, если вы хотите использовать этот ключ только с 192.168.1. *и 10.255.255.254 в качестве исходных адресов.:

ssh -keygen -t rsa -b 4096 -O source -address=192.168.1.0/24,10.255.255.254/32

Извините, что ввел кого-то в заблуждение. Похоже, BowlOfRed прав. Это требует использования сертификатов, а не голых ключей.

0
28.01.2020, 23:06
1 ответ

Проблема заключается в том, что таблицы маршрутизации Linux всегда направляют трафик локально через петлевой интерфейс и не помещают его в физическую сеть, если локальная система имеет сетевой интерфейс, прослушивающий IP-адрес назначения. Вы можете видеть локальную таблицу маршрутизации с ip route show table local-: все пакеты, соответствующие правилу в локальной таблице маршрутизации, закольцовываются. Кроме того, локальная таблица маршрутизации поддерживается автоматически (, правила добавляются/удаляются при включении/отключении интерфейсов )и не могут быть изменены вручную. Поэтому пакеты сканирования nmap всегда будут попадать на петлевой интерфейс (и эффективно пропускать брандмауэр ), даже если явно указан интерфейс для привязки.

Решение состоит в том, чтобы создать виртуальную сеть с пространством имен для запуска сканирования. Виртуальная сеть с пространством имен имеет собственные виртуальные сетевые интерфейсы и таблицы маршрутизации, отдельные от других сетей с пространством имен, включая пространство имен корневой сети. Это означает, что пакеты, отправляемые через пространства имен, выглядят как исходящие из внешней сети и не считаются локальными пакетами.

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

test_source_ip='5.5.5.5'
test_dest_ip='5.5.5.6'
ip netns add testns
ip netns exec testns ip link set dev lo up
ip link add veth0 type veth peer name veth1
ip link set veth1 netns testns
ip netns exec testns ifconfig veth1 ${test_source_ip}/24 up
ifconfig veth0 ${test_dest_ip}/24 up

testns— имя виртуальной сети с пространством имен; ты можешь называть свою как хочешь.

Исходный IP-адрес и IP-адрес назначения могут быть любыми произвольными IP-адресами, что означает, что вы можете подделать произвольные исходные IP-адреса при запуске сканирования, что весьма полезно. Однако будьте осторожны, чтобы не маскировать реальные IP-адреса, с которыми система может захотеть связаться.

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

.
ip netns exec testns nmap -sA -n ${test_dest_ip}

И вы должны увидеть, что ваше сканирование выполняется так, как будто оно действительно пришло из версии 5.5.5.5.

[vagrant@2d33f851-838c-4 ~]$ sudo ip netns exec testns nmap -sA -n 5.5.5.6 

Starting Nmap 6.40 ( http://nmap.org ) at 2020-02-05 17:41 MST
Nmap scan report for 5.5.5.6
Host is up (0.000066s latency).
Not shown: 997 filtered ports
PORT     STATE      SERVICE
22/tcp   unfiltered ssh
1234/tcp unfiltered hotline
5678/tcp unfiltered rrac
MAC Address: FE:64:90:7E:51:81 (Unknown)

Nmap done: 1 IP address (1 host up) scanned in 5.13 seconds
[vagrant@2d33f851-838c-4 ~]$
2
28.04.2021, 23:25

Теги

Похожие вопросы