LINUX.ORG.RU
ФорумAdmin

Спрятать список IP


1

2

Хитрые разработчики добавили в новую версию ПО проверку на число IP адресов на системе, чтобы злые и коварные хостеры не могли запустить у себя это приложение. А у меня на каждой машине over 100 IP.

Может подскажет кто-нибудь способ спрятать от софтины список IP, оставив один, нужный? Виртуалка не подойдет под эти цели, приложений много запускается (по кол-ву IP, да), каждый в виртуалку если и засуну - будет неэффективно.

Спасибо всем заранее за участие,

Ответ на: комментарий от xscrew

Думал об этом. Это решение требует существенной переработки системы: пересобирать ось на всех машинах, переписывать ПУ под создание контейнеров. Задача не на одну неделю получается.

Не уже ли проще ничего нет?

Amoled ()

Через LD_PRELOAD подсунуть so-шку, в которой перехватывать open и при чтении /proc/net/dev прятать строки, содержащие ненужные интерфейсы.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Как раз через LD_PRELOAD сейчас пытаюсь сделать, только вот судя по strace он не читает /proc/net/dev. Он подключает socket(PF_NETLINK, SOCK_RAW, 0) и дальше с ним работает, судя по всему используя SIOCGIFCONF получает список IP. Уже битый час ищу способ перехватить этот вызов и подменить список.

Еще эта зараза делает вызовы к mmap2 вида: mmap2(0x2c1000, 10632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2c1000 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff77e5000

Что именно он через них получает пока не разобрался, однако, mmap2 в ld подключается как статическая библиотека, со всеми вытекающими невозможности перехвата, потому ковыряю вариант с сокетом.

Amoled ()
Ответ на: комментарий от Amoled

только вот судя по strace он не читает /proc/net/dev

эээ, облом.

mmap2

они же MAP_PRIVATE|MAP_ANONYMOUS, доступны только для его процесса. Хотя странно, что в первом вызове он жаждет фиксированную позицию 0x2c1000. Может ядро туда что-то кладёт?

i-rinat ★★★★★ ()

решение, даже если и будет найдено, будет сомнительной законности и уж тем более сомнительной жизнеспособности. подумайте о том, что ЭТО в дальнейшем нужно будет кому-то поддерживать и масштабировать. поэтому проще либо найти альтернативу используемой проприетарщине, либо договариваться с разработчиками за то количество айпи, которое нужно.

Komintern ★★★★★ ()
Ответ на: комментарий от Amoled

Как раз через LD_PRELOAD сейчас пытаюсь сделать, только вот судя по strace он не читает /proc/net/dev. Он подключает socket(PF_NETLINK, SOCK_RAW, 0) и дальше с ним работает, судя по всему используя SIOCGIFCONF получает список IP. Уже битый час ищу способ перехватить этот вызов и подменить список.

Тогда тебе нужно перехватывать не socket(), а send*() и recv*(). И затем модифицировать данные, отправленные ядром через netlink. В принципе ничего сложного там нет, но повозиться придётся.

// mironov_ivan

anonymous ()
Ответ на: комментарий от Komintern

Угук, видимо это будет действительно проще. Спасибо всем...

Amoled ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.