КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Терминальный режим и консольные атаки
UNIX-системы появились за десятилетие до создания корпорацией IBM первых массовых персональных компьютеров (модель IBM 5150 1981 года). ЭВМ 70-х годов, как правило, представляли собой громоздкое оборудование, размещенное в машинном зале, и много терминалов, расположенных на рабочих местах пользователей. Изначально терминалы предназначались для передачи и отображения только текстовой информации, т. е. нажатие клавиши на клавиатуре приводило к формированию и передаче из терминала в ЭВМ кода символа, соответствующего нажатой клавише, а получение терминалом такого кода от ЭВМ приводило к отображению на экране монитора символа, соответствовавшего этому коду. В качестве такой информации выступали символы английского алфавита (строчные и прописные), знаки пунктуации и арабские цифры. По этой причине текстовые терминалы ещё называли алфавитно-цифровыми. Здесь необходимо добавить, что, помимо вышеперечисленных алфавитно-цифровых символов, необходимо было передавать и некоторые служебные символы, которые выполняли функции управления связью и форматирования текста. Всё это было использовано в терминалах в соответствии со стандартом ASCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией). Терминал, который подключался непосредственно к процессорной стойке или плате, назывался консолью, и с него производилось управление ЭВМ. Консоль представляла собой автономное устройство, состоящее из устройства отображения, устройства ввода и процессорного блока. Первые терминалы были телетайпами — дистанционно управляемыми пишущими машинками, поэтому текстовая консоль до настоящего времени обозначается tty (teletype – печать на расстоянии). Терминалы обозначаются: · ttyS – последовательные com-порты; · tty0-tty63 – 64 виртуальных терминала, с которыми работают программы–оболочки; · ttya0-ttyef – 256 псевдотерминалов (с псевдотерминалами работают сетевые службы sshd, telnetd и т. п.); · vcN – виртуальные консоли. Классической реализацией текстового интерфейса, восходящей к первой половине XX века, является алфавитно-цифровое устройство ввода-вывода, например комплект из клавиатуры и АЦПУ (телетайпа). Впоследствии вместо АЦПУ стали применять мониторы, снабжённые знакогенератором, что позволило быстро и удобно организовывать диалог с пользователем. Такие комплекты из монитора и клавиатуры (иногда с добавлением мыши) называются консолью компьютера. Настоящие текстовые терминалы сейчас очень редки, и производить подобные устройства экономически невыгодно. Подключить такие устройства к ЭВМ можно с помощью последовательных аппаратных интерфейсов. Но нередко консоли эмулируются персональными компьютерами с использованием аппаратуры, каналов и протоколов вычислительных сетей. Так, сетевой узел, с которого получен доступ к серверу, управляемому ОС Linux, по протоколу telnet или ssh, представляется серверной командной оболочке удалённым терминалом. Видеопамять современных персональных компьютеров позволяет вместить в себя много текстовых экранов. Благодаря этому персональный компьютер с ОС Linux, имеющий один монитор и одну клавиатуру, может иметь множество консолей. Переключение между ними производится комбинацией клавиш <Alt>-<Fn>, где номер функциональной клавиши соответствует номеру активного терминала. Переключаясь между виртуальными терминалами, один человек может зарегистрироваться и работать в системе от имени нескольких пользователей и эксплуатировать в одиночку операционную систему в многопользовательском режиме. В ПК, управляемом ОС UNIX, роль терминала, а точнее – консоли, выполняют клавиатура, контроллер клавиатуры, терминальный драйвер, видеоадаптер и монитор. Таким образом, за ввод информации отвечают первые три, а за вывод — последние три перечисленные компоненты. Таким образом, в персональном компьютере два различных физических устройства, подключенные своими интерфейсами одно к видеконтроллеру, а второе – к контроллеру клавиатуры, объединяются в одно логическое устройство, и обращение к нему производится через один специальный файл и общий драйвер. Для переключения в текстовый режим из графического X–Window, не завершая при этом его работу, требуется нажать <Ctrl>-<Alt>-<Fn>. Впрочем, в X–Window пользователь может запустить приложение, которое эмулирует работу в режиме терминала (например, xterm). Ввиду наличия полос прокрутки они более удобны для отображения строк, не вмещающихся в стандартный текстовый терминал. Удобство переключения между терминалами состоит в возможности практически одновременно работать в системе от имени разных субъектов. Например, администратор может использовать одну консоль для системных команд, требующих полномочий root, в другой консоли работать с документами от имени обычного пользователя, а в третьей – от имени третьего пользователя запустить длящийся вычислительный процесс. Не имея возможности справиться с «зависшим» или некорректно работающим процессом, пользователь переходит в другую консоль, регистрируется в ней, выводит с помощью команды ps -ef список процессов, определяет по номеру терминала и имени неуправляемого процесса его идентификатор PID и посылает планировщику задач команду kill -9 PID на завершение процесса. Выполнение предусмотренных в учебном пособии лабораторных работ также основано на многоконсольном режиме. Управляя компьютером от имени администратора и нескольких пользователей, обучаемый может наблюдать процессы разграничения доступа к защищаемой информации. Исследуя файловую систему и работая с шестнадцатеричными числами, пользователь может переключаться в другую консоль, где у него для преобразования чисел в десятичный формат и производства вычислений запущен калькулятор bc. Для того чтобы предоставить пользователям возможность регистрироваться в системе, первичный процесс init при загрузке системы на многопользовательском уровне 3 запускает несколько (по умолчанию – шесть) процессов getty, управляющих виртуальными консолями. Программа getty открывает последовательное устройство (текстовый терминал, виртуальный терминал или модем) и ожидает подключения. Программа выводит приглашение, а затем, после ввода имени пользователя, передает управление программе login. Существует много разновидностей getty: mgetty, mingetty, ugetty, agetty, gettyps, fbgetty и т. д. Процессы, обслуживающие виртуальные терминалы, можно увидеть в выводных данных команды ps –ef. Если пользователь не смог успешно зарегистрироваться, программа регистрации через определенный промежуток времени завершается, закрывая открытую терминальную линию, а процесс init порождает для этой линии следующий getty-процесс, открывающий терминал вместо прекратившего существование процесса. То есть всем определенным в /etc/inittab виртуальным консолям суждена «вечная» (до останова или перезагрузки системы) жизнь. Для уменьшения числа виртуальных консолей достаточно удалить или закомментировать в файле /etc/inittab соответствующее число строк. А для увеличения – создать должное количество новых по образу и подобию существующих строк, изменяя только идентификатор и имя файла устройств:
c7:1235:respawn:/sbin/agetty 38400 tty7 linux c8:1235:respawn:/sbin/agetty 38400 tty8 linux
и так далее, вплоть до
c63:1235:respawn:/sbin/agetty 38400 tty63 linux В приведенных строках respawn означает запуск процесса getty в фоновом режиме, а когда процесс завершится (например, с ошибкой), его повторный запуск. Число 38400 (бит/сек) обозначает скорость передачи информации по псевдотерминальной линии. Число 63 – это максимально возможное количество виртуальных консолей. Обусловлено оно тем, что именно столько младших номеров резервировалось за устройствами этого класса. Переключение между консолями с такими номерами с помощью функциональных клавиш уже невозможно. К счастью, на такой чрезвычайный случай есть специальная, и очень простая, команда, не зависящая от количества функциональных клавиш: chvt N, которая мгновенно перенесет нас в ту консоль, номер которой указан в качестве ее аргумента. Не из всех виртуальных терминалов можно регистрироваться и, тем более, входить в систему с правами суперпользователя. В конфигурационном файле /etc/securetty определяются консоли, из которых разрешается аутентификация всех пользователей либо только администратора. Управлять драйвером терминала можно с помощью особых комбинаций двух клавиш, первой из которых является <Ctrl>. Вот некоторые из этих комбинаций: <Ctrl>+<C> – посылает сигнал завершения выполняющегося процесса, ассоциированного с текущим терминалом; <Ctrl>+<D> – посылает признак конца файла (например, если файл создается из консоли с помощью команды cat) либо завершает сеанс; <Ctrl>+<S> – останавливает вывод информации на экран; <Ctrl>+<Q> –возобновляет вывод информации на экран. Давайте посмотрим, что произойдет в случае чтения бинарного файла с помощью утилиты cat или more. Содержимое читаемого файла утилита выводит на терминал, а он ориентирован на вывод алфавитно-цифровой информации и символов псевдографики. Бинарный файл может содержать любые кодовые значения, и не все они соответствуют отображаемым символам. Терминальный драйвер, выводя содержимое бинарного файла на экран, «считает» его текстовым и соответствующим образом интерпретирует каждый байт. Поэтому возникнет ситуация, когда одни байты будут соответствовать отображаемым символам, другие — управляющим, третьи — вообще могут ничему не соответствовать. В случае соответствия байтов двоичного файла отображаемым символам на экране монитора будет смесь из разных символов. Неотображаемые символы либо вообще не выводятся на экран, либо отображаются точками. Второй случай будет самым «неприятным» для драйвера терминала, и в большинстве случаев мы получим частично или полностью неработоспособную систему драйвер-видеоадаптер-монитор. Для восстановления работы терминала рекомендуется «вслепую» набрать команду reset и завершить ее нажатием <Enter>, после чего необходимо выполнить сценарий /etc/rc.d/rc.font, чтобы восстановить настройки кодировки терминала. Если это не помогает, нужно комбинацией клавиш <Ctrl>-<D> завершить пользовательский сеанс и вновь зарегистрироваться либо открыть другую виртуальную консоль и повторить регистрацию в ней. Один пользователь может поочередно работать из нескольких физических или виртуальных консолей. Но из одной консоли должен работать только один пользователь. Физических консолей с выполненным входом в систему и без пользователя существовать не должно. В ОС Linux пока не предусмотрено подтверждение полномочий пользователя в ходе сеанса (за исключением приложений, с которыми работает пользователь), поэтому нарушитель, занявший консоль вместо отсутствующего пользователя, воспринимается системой как ее законный обладатель. Покидая на время свое рабочее место, пользователь должен заблокировать консоль, чтобы нежданному гостю пришлось столкнуться с процедурой аутентификации. Особенно опасно оставлять консоль, в которой зарегистрировался администратор. Завершить сеанс в виртуальной консоли можно тремя способами: комбинацией клавиш <Ctrl>-<D>, командами exit и logout. К сожалению, пользователи грешат тем, что, локально зарегистрировавшись в системе, они затем надолго оставляют без присмотра свой терминал, способствуя тем самым консольным атакам со стороны случайных посетителей. Либо, удаленно зарегистрировавшись в сети (проводной или беспроводной), они без завершения сеанса отключают свой ноутбук и уходят. Команды w и who (см. ниже) в таком случае могут показать наличие в системе «трудовых энтузиастов», которые работают уже много суток подряд. Администратор вправе прекратить подобные безобразия, устанавливая переменную окружения оболочки ее внутренней командой export TMOUT=600 В переменной задается число секунд, по истечении которых с момента последнего нажатия клавиши оболочка автоматически завершит пользовательский сеанс. Но данная команда будет действовать только в той консоли, из которой она была введена, и только на один сеанс. Пользователь, чей сеанс был принудительно завершен, после повторной регистрации вновь может оставлять свою консоль на неограниченный срок. На остальных пользователей эта команда совершенно не влияет. Вероятно, это не совсем то, что хотел бы добиться администратор. Тайм-аут можно установить надолго, если записать эту команду отдельной строкой в файл /etc/profile. Установка тайм-аута на консольное бездействие будет действовать на всех пользователей, которые зарегистрировались позже. После перезапуска системы переменная окружения будет действовать на всех, включая администратора. Чтобы настройка во всех сеансах действовала только на выбранных пользователей, вышеуказанную строку следует записать в файлы .bashrc в их домашних каталогах. К сожалению, никто не мешает опытному и пренебрегающему безопасностью пользователю отредактировать свой файл .bashrc так, как он посчитает нужным. В случае опасной пользовательской активности администратор может «заморозить» пользовательский ввод и вывод информации на произвольном локальном или сетевом терминале командой skill –STOP <tty>, где вместо <tty> указывается имя и номер терминала, например tty2 или pts/2. Эта мера более эффективна, чем обычное принудительное завершение пользовательского сеанса, поскольку пользователь, «выброшенный» из системы, может повторно зарегистрироваться. Находясь перед заблокированным терминалом (если только это действительно терминал, а не самостоятельный компьютер), он ничего подобного сделать не сможет. Администратор же имеет право посылать сообщения на заблокированный терминал, и они будут исправно отображаться. Снять «блокаду» с терминала можно командой skill –CONT <tty> Чтение данных, введенных с клавиатуры другим пользователем, представляет собой угрозу конфиденциальности, а несанкционированный вывод данных на чужой экран является нарушением функциональности и может вызвать угрозы целостности или блокирования данных. Права доступа к консоли по умолчанию установливаются равными 620 = rw--w----. Владельцем консоли является пользователь, который зарегистрировался с нее. Он имеет право читать информацию с экрана и вводить ее с клавиатуры. Члены терминальной группы пользователя (в файле /etc/group она поименована как tty) имеют право только вводить информацию. По умолчанию в эту группу включены все пользователи. Имя группы и права доступа к виртуальной консоли содержатся в конфигурационном файле /etc/login.defs. Каждый пользователь имеет право запретить членам терминальной группы запись сообщений в свою консоль. Выполняется это намерение с помощью команды mesg n, что равносильно установлению прав доступа к консоли с помощью другой команды chmod 600 /dev/ttyN Для того чтобы вновь разрешить запись в свой терминал, следует ввести строку
Дата добавления: 2015-03-31; Просмотров: 749; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |