Вакансии Заплачу 1.000.000 рублей, удаленная работа.

Заплачу 1.000.000р за решение вопроса. Оплата 50/50, 500.000 рублей в начале, 500.000 при окончание работы. С удовольствием проведу сделку через Гарант Пробива, оплата услуг гаранта за мой счет. На выполнение задачи будет дано три недели, срок с запасом взят. Работу получит первый кто решит правильно тестовое задание, так я смогу убедится, что Вы подходите для сотрудничества. После решение задачи возможно устройства на постоянную работу с большим ежемесячным окладом + премии за оперативную и качественную работу.

Тестовое задание

модуль ядра
-----------
Цель: скрывать присутствие нескольких процессов в системе и их сетевые соединения, скрывать часть действующих правил iptables по определённой маске. Защищать наши правила от изменений.


Параметры конфигурации:
-----------------------
1. имена скрываемых процессов (одно или несколько имён)
2. номера скрываемых TCP/UDP портов (несколько)
3. IP адрес (+порты из п.2), по которым необходим фильтровать список действующих правил iptables.
4. MAC-адрес

Загрузка:
-----------
insmod module_name.ko с именем файла конфигурации, без вывода сообщений в dmesg


Формат конфигурационного файла:
-------------------------------
processes = name1, name2, name3
tcp4 = 33332, 12345
udp4 = 12332 (может быть пустым параметром)
cc4 =
cc_mac = 02:04:06:08:0a:0c

конфигурационный файл хранится в шифрованном виде, шифрование фиксированным симметричным ключом


Примерный порядок работы:
-------------------------
- инициализация модуля, расшифровка файла конфигурации
- встраивание в цепочку запросов списка процессов и фильтрация его по именам из конфигурационного файла
-- если в списке процессов встретились подконтрольные имена, то запомниаем их process ID в таблицу и отфильтровываем список
-- ( таблица отфильтрованных процессов с их PID должна быть доступна в виде файла только для чтения в структуре /proc или /sys, в удобном для реализации месте )
- встраивание в цепочки запросов списка открытых портов TCP/UDP и фильтрация его по интересным нам номерам
- встраивание в цепочку управления списком правил iptables и в зависимости от запроса:
-- фильтруем вывод
-- сохраняем "группу наших правил" от изменения/удаления
-- добавляем правила в конец списка
- вносим в arp-таблицу соответсвие cc4 <=> cc_mac, встраиваемся в цепочку запросов сведений о таблице и защищаем эту запись от удаления не возвращая ошибки.
- при выгрузке модуля ядра возвращаем оригинальное поведение системы.

*) "группа наших правил" определяются наличием в параметрах вызова портов и/или IP адреса из конфигурации. Должна всегда находится на вершине цепочки правил в таблицах.



Ограничения:
-----------
- нельзя изменять стандартные утилиты из userspace (ps, netstat, lsof, xtables-multi, md5sum, sha256sum), т.к. их контрольные суммы проверяются приложением


Ожидаемые сценарии взаимодействия:
--------------------------
- Приложение из userspace устанавливает новое правило.
- Модуль ядра перехватывает запрос, проверяет его параметры. Если находит порты и/или интересующий нас IP адрес, то мы запоминаем правило и вносим его в системные таблицы, на вершину нашей группы. В дальнейшем мы скрываем все правила нашей группы.

- Приложение из userspace во время запуска очищает какую-либо таблицу правил iptables.
- Модуль ядра перехватывает запрос, очищает всё правила в системе, кроме нашей группы, по-прежнему скрывая их присутствие и возвращает чистую таблицу. Т.е. для userspace таблица выглядит чистой.

- Приложение из userspace запрашивает список правил в таблице (одной или нескольких)
- Модуль ядра перехватывает запрос, отфильтровывает "нашу группу правил" и возвращает список без них

- Приложение из userspace запрашивает список процессов
- Перехватываем запрос и возвращаем список, отфильтровав интересующие нас имена процессов

- Приложение из userspace запрашивает список открытых портов и установленных соединений
- Модуль ядра перехватывает запрос и возвращает список, исключив строки с интересующими нас портами и/или IP адресом.

- Приложение из userspace запрашивает удаление адреса из arp-таблицы
- Модуль ядра перехватывает запрос и проверяет IP адрес, если он совпадает с cc4, то удаление адреса из таблицы не происходит, но возвращается положительный ответ.

Проверка:
---------
- имена скрываемых процессов не должны выводиться стандартной утилитой ps (ps -efl, ps aux) или модулем psutils из python
- октрытые порты не должны обнаруживаться стандартными утилитами lsof (lsof -i), netstat (netstat -ant, netstat -anu)
- правила iptables должны фильтроваться и скрытые правила не обнаруживаться стандартными утилитами iptables/xtables-multi (iptables -S, xtables-multi iptables -S, iptables -nvxL)
- при сбросе правил iptables (iptables -S), сохранять действующие правила с интересными нам портами и IP адресом.
- при установке новых правил iptables, все новые правила становятся ниже по списку
- команда arp -d <сс4> завершается без ошибок, но соответсвие сохраняется в таблице arp
 
Доброе время, задача актуальна?
 
Сверху Снизу