» Главная
eXcode.ru » Статьи » С / С++ » Linux
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 10





Ведущий раздела: MadvEX
Описание: Программирование под Linux.



«1» 

Процессы и нити в ОС Linux
На самом деле операционная система только управляет образом процесса или сегментами кода и данных, определяющих среду выполнения, а не самим процессом. Сегмент кода содержит реальные инструкции центральному процессору, в которые входят как строки, написанные и скомпилированные пользователем, так и код, сгенерированный системой, который обеспечивает взаимодействие между программой и операционной системой. Данные связанные с процессом, тоже являются частью образа процесса, некоторые из которых хранятся в регистрах [регистры это области памяти, к которым центральный процессор может оперативно получать доступ ]. Для ускорения доступа регистры хранятся внутри центрального процессора.


Port-shell
Что такое Port-shell, я думаю вы знаете: это программа, которая открывает доступ к шеллу на определенном порту. Запустив такую программу, вы сможете подсоединяться к удаленному хосту и выполнять любые команды на этой удаленной машине, с теми привилегиями, с которыми была запущенна данная программа.


Netfilter Kernel Programming
В этой статье я постараюсь дать начальные сведения о netfilter′e и о том, как предотвратить Land-подобную атаку с помощью написания модуля для ядра.

И так, netfilter - это подсистема фильтрации пакетов в ядрах ветки 2.4/6.x, он же - первый встроенный в ядро контекстный брэндмауер (Stateful Firewall). Контекстный брэндмауер отличается от обычного тем, что он может определять, является ли настоящий пакет частью какого-либо соединения. В частности, в TCP протокол встроена система трехэтапного квинтирования. Для этого клиент шлет серверу запрос на соединение, указав в хедере флаг syn, на что сервак отвечает ему таким же пакетом, но плюс к syn флагу он еще добавляет флаг ack, указывая тем самым, что он хочет с ним установить соединение, после согласия на это клиента.


Linux Kernel Modules
Для начала хочу сразу объяснить, что ядро-программа, написанная производителями операционной системы и являющаяся, так сказать, ее основой. Вообще, главный принцип почти всех операционных систем - возложение на ядро базовых операций по вводу/выводу и коммутаций между модулями ядра. Модуль ядра - своеобразная часть ядра, так же являющаяся программой, но написанная (не обязательно) создателем ядра. Программы данного типа призваны расширять возможности базовой конфигурации операционной системы, точнее базовой конфигурации ядра (очень напоминает работу утилит, но на более низком уровне). Вообще, программирование на уровне ядра - тема достаточно обширная, и обсудить все тонкости в одной статье не представляется возможным, так что я начну с самого простого.


Linux Kernel Modules#2: system_call
Данная статья является логическим продолжением предыдущей, так что для получения каких-то ответов на поставленные вопросы, не следует сразу писать мне - прочтите предыдущий материал. В предыдущей статье я писал, для чего используются модули, из чего состоят и, даже, привел самый простой пример... Но стоит заметить, что приведенный пример не являлся частью ядра (точнее код программы), так как в функции инициализации/деинициализации в код ядра ничего небыло добавленно (напомню, что при установке модуля выводилось сообщение). Как я уже говорил, модули добавляют/изменяют какие-то системные вызовы (функции). Именно об этом я и попытаюсь рассказать, но вначале немного теории.


Linux Kernel Modules#3: адресное пространство
Давайте проанализируем наш модуль, а точнее его работу в ядре. Так как модуль меняет оригинальныю функцию open на my_sys_open, то и анализировать мы будем эту функцию. Представьте себе ситуацию: обычный пользователь пытается открыть файл. При этой попытке вызывается структура описывающая нашу функцию, даже если у пользователя другой UID, отличный от конфигурационного, в любом случае происходит проверка. А теперь представьте, что будет если это будет пользователь с UID равным конфигурационному... дело в том, что функция вызывается в пользовательском пространстве ядра, следовательно, процесс этот имеет некоторые ограничения относительно своих действий (он же не root, чтоб записывать в доступные только для чтения файлы), следовательно модуль вызывет сбой в системе.


«1» 

Имя:

Пароль:



Регистрация

Как вы относитесь к рекламе на сайтах.
Отрицательно, терпеть ее не могу!
46% (95)
С пониманием
25% (51)
Пусть будет, если только по делу
15% (32)
Она мне безразлична!
11% (23)
Я ее обожаю!
3% (6)

Проголосовало: 208
286-й, зараженный вирусом, спрашивает программиста-философа:
- Программист, я буду жить?
- А смысл?
Рейтинг: 4/10 (2)
Посмотреть все анекдоты