Главная страница
Навигация по странице:

  • 22.7.1.4 Файлы, доступные для записи всем пользователям

  • 22.7.2 Мониторинг признаков подозрительной активности

  • 22.7.2.1 Смешанный режим

  • 22.7.2.2 Мониторинг активных сетевых соединений Программа netstat

  • Примечание.

  • 22.7.2.4 Измененные файлы

  • Совет.

  • 22.8 Обновления системы

  • 23. БЕЗОПАСНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 23.1 Введение в защиту ПО

  • Под уровнем безопасности ПО

  • 23.2 Угрозы безопасности ПО

  • Учебное пособие Ставрополь сф мггу им. М. А. Шолохова 2009


    Скачать 5.26 Mb.
    НазваниеУчебное пособие Ставрополь сф мггу им. М. А. Шолохова 2009
    Дата03.04.2022
    Размер5.26 Mb.
    Формат файлаpdf
    Имя файлаinformacionnaya_bezopasnost.pdf
    ТипУчебное пособие
    #437466
    страница33 из 36
    1   ...   28   29   30   31   32   33   34   35   36
    22.7.1.3 Файлы, которые могут изменять активного пользователя в
    процессе выполнения
    Файлы, для которых разрешены полномочия Set UID (
    SUID
    ) или Set
    Group ID (
    SGID
    ), могут изменять идентификатор своего активного пользователя или группы в процессе выполнения. Некоторым файлам требуется такая возможность для выполнения своей работы, однако это должен быть ограниченный набор файлов, и ни один из них не должен находиться в домашних каталогах пользователей. Чтобы найти все файлы
    SUID
    и
    SGID
    , выполните следующие команды:
    #find
    /
    -type f -perm -04000 -ls
    #find
    /
    -type f -perm -02000 -ls
    При построении системы необходимо выполнить данные команды и сохранить результаты их выполнения. Периодически следует выполнять эти команды и сопоставлять результаты с исходным списком. Любые обнаруженные изменения необходимо исследовать
    22.7.1.4 Файлы, доступные для записи всем пользователям
    Файлы, общедоступные для записи, являются еще одной потенциальной ошибкой в конфигурации системы Unix. Такие файлы позволяют злоумышленнику создать сценарий, который при выполнении будет использовать уязвимость. Если файлы SUID и SGID доступны для записи всем пользователям, у атакующего появляется возможность создать для самого себя самые обширные привилегии. Чтобы выявить все файлы, общедоступные для записи, выполните следующую команду:
    #find / -perm -2 -type f -ls

    340
    Следует периодически выполнять эту команду, чтобы находить все общедоступные для записи файлы, имеющиеся в системе.
    22.7.2 Мониторинг признаков подозрительной активности
    Мы уже описали некоторые признаки, которые необходимо отслеживать в системе и которые могут означать проявление угрозы или проникновение в систему (скрытые файлы, файлы
    SUID
    и
    SGID
    и общедоступные для записи файлы). Существует несколько других способов проверки системы Unix на наличие подозрительной активности.
    22.7.2.1 Смешанный режим
    Интерфейс находится в смешанном режиме, когда в системе работает сниффер (сетевой анализатор пакетов). Сниффер переводит интерфейс в смешанный режим; при этом происходит фиксирование всей информации, проходящей через канал связи. Если при работе интерфейса в данном режиме выполнить команда ifconfig -a
    , то появится сообщение о том, что интерфейс находится в состоянии PROMISC (признак того, что работает анализатор пакетов). Если сниффер запущен не администратором системы, необходимо провести исследование причин этих обстоятельств.
    Примечание. Solaris не выдает соответствующего отчета о том, что интерфейс находится в смешанном режиме. Причиной этому является ошибка в программном обеспечении ядра. Чтобы корректным образом проверить, находится ли интерфейс Solaris в смешанном режиме, необходимо использовать команду ifstatus
    , доступную по адресу ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/iftatus/.
    22.7.2.2 Мониторинг активных сетевых соединений
    Программа netstat
    Программа netstat используется для выяснения того, какие сетевые соединения находятся в активном состоянии в системе Unix. Команду следует использовать следующим образом: netstat -an
    . Аргумент «
    n
    » сообщает netstat о том, что обработка IP-адресов не требуется.

    341
    #netstat -an
    Active Internet connections (servers and established)
    Proto Recv-Q Send-Q Local Address
    Foreign Address State tcp
    0 0 0.0.0.0:10000 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:25 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:515 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:98 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:113 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:79 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:513 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:514 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:23 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:21 0.0.0.0:*
    LISTEN tcp
    0 0 0.0.0.0:111 0.0.0.0:*
    LISTEN udp
    0 0 0.0.0.0:10000 0.0.0.0:* udp
    0 0 0.0.0.0:518 0.0.0.0:* udp
    0 0 0.0.0.0:517 0.0.0.0:* udp
    0 0 0.0.0.0:111 0.0.0.0:* raw
    0 0 0.0.0.0:1 0.0.0.0:* raw
    0 0 0.0.0.0:6 0.0.0.0:*
    Как видно из результирующих данных, любая строка, содержащая слово «
    LISTEN
    », означает, что имеется программа, прослушивающая этот порт.
    Прослушиваться должны только сконфигурированные администратором порты. Если в системе присутствует прослушиваемый порт, который не конфигурировался администратором, систему необходимо проверить и выяснить, почему порт открыт.
    Адреса, отображаемые в столбце локальных адресов, заканчиваются номером локального порта (число после столбца). Этот номер порта используется для определения того, является ли соединение входящим или исходящим. Например, если номер локального порта 23, то это входящее подключение к демону telnet. Если номер локального порта равен 1035, а номер внешнего порта - 23, то это исходящее соединение telnet.
    Программа lsof
    Одна из проблем, связанных с программой netstat
    , заключается в том, что данная команда не сообщает, какой процесс поддерживает открытое состояние порта. Поиск процесса, связанного с определенным портом, может стать очень трудной задачей. Однако существует программа под названием lsof
    (http://ftp.cerias.purdue.edu/pub/tools/unix/sysutil/Isof/), которая предоставляет такую информацию. Сразу после установки программы выполните команду lsof -i
    , как показано ниже:
    #lsof -i
    COMMAND PID
    USER FD
    TYPE
    DEVICE NODE NAME portmap
    311 root
    4u
    IPv4 301
    UDP *:sunrpc portmap
    311 root
    5u
    IPv4 302
    TCP *:sunrpc (LISTEN) inetd
    439 root
    5u
    IPv4 427
    TCP *:ftp (LISTEN)

    342 inetd
    439 root
    6u
    IPv4 428
    TCP *:telnet (LISTEN) inetd
    439 root
    7u
    IPv4 429
    TCP *:shell (LISTEN) inetd
    439 root
    9u
    IPv4 430
    TCP *:login (LISTEN) inetd
    439 root
    10u
    IPv4 431
    UDP *:talk inetd
    439 root
    11u
    IPv4 432
    UDP *:ntalk inetd
    439 root
    12u
    IPv4 433
    TCP *:finger (LISTEN) inetd
    439 root
    13u
    IPv4 434
    TCP *:auth (LISTEN) inetd
    439 root
    14u
    IPv4 435
    TCP *:linuxconf (LISTEN) lpd
    455 root
    6u
    IPv4 457
    TCP *:printer (LISTEN) sendmail
    494 root
    4u
    IPv4 495
    TCP *:smtp (LISTEN) miniserv.
    578 root
    4u
    IPv4 567
    TCP *:10000 (LISTEN) miniserv.
    578 root
    5u
    IPv4 568
    UDP *:10000
    Как видно из результатов выполнения программы, lsof выводит перечень всех открытых портов с указанием того, какие процессы поддерживают открытое состояние портов. Убедитесь, что вам известно, какие функции выполняет каждый процесс, и почему открыт соответствующий ему порт.
    Примечание. lsof заменяет номер порта в столбце справа именем порта, если оно присутствует в файле
    /etc/services
    22.7.2.3 Мониторинг активных процессов
    Администратор также должен изучать результаты выполнения команды ps
    . Эта программа выводит все активные процессы, имеющиеся в системе, что необходимо при поиске снифферов, так как сниффер может не отображаться в lsof или в netstat
    . В большинстве систем выполнение команды ps -ef выводит перечень процессов в системе. В тех версиях Unix, где эта команда не работает, следует выполнить команду ps -aux
    . Результаты выполнения данной команды показаны ниже:

    343
    #ps -ef
    UID
    PID PPID C STIME TTY TIME
    CMD root
    1 0
    0 13:09
    ?
    00:00:04 init root
    2 1
    0 13:09
    ?
    00:00:00 [kflushd] root
    3 1
    0 13:09
    ?
    00:00:00 [kupdate] root
    4 1
    0 13:09
    ?
    00:00:00 [kpiod] root
    5 1
    0 13:09
    ?
    00:00:00 [kswapd] root
    6 1
    0 13:09
    ?
    00:00:00 [mdrecoveryd] bin
    3 11 1 0 13:09
    ?
    00:00:00 portmap root
    327 1 0 13:10
    ?
    00:00:00 /usr/sbin/apmd -p 10 -w 5 -W root
    380 1 0 13:10
    ?
    00:00:00 syslogd -m 0 root
    391 1 0 13:10
    ?
    00:00:00 klogd daemon 407 1 0 13:10
    ?
    00:00:00 /usr/sbin/atd root
    423 1 0 13:10
    ?
    00:00:00 crond root
    439 1 0 13:10
    ?
    00:00:00 inetd root
    455 1 0 13:10
    ?
    00:00:00 lpd root
    494 1 0 13:10
    ?
    00:00:00 sendmail: accepting connections root
    511 1 0 13:10
    ?
    00:00:00 gpm -t ps/2 xfs
    528 1 0 13:10
    ?
    00:00:00 xfs -droppriv -daemon -port -1 root
    570 1 0 13:10 tty1 00:00:00 login - root root
    571 1 0 13:10 tty2 00:00:00 /sbin/mingetty tty2 root
    572 1 0 13:10 tty3 00:00:00 /sbin/mingetty tty3 root
    573 1 0 13:10 tty4 00:00:00 /sbin/mingetty tty4 root
    574 1 0 13:10 tty5 00:00:00 /sbin/mingetty tty5 root
    575 1 0 13:10 tty6 00:00:00 /sbin/mingetty tty6 root
    578 1 0 13:10
    ?
    00:00:00 perl /usr/libexec/webmin/miniser root
    579 570 0 13:10 tty1 00:00:00 -bash root
    621 579 0 13:17 tty1 00:00:00 ps -ef
    Следует периодически проверять список процессов, работающих в системе. Если обнаруживается что-либо незнакомое, то необходимо выяснить, что это такое.
    22.7.2.4 Измененные файлы
    Когда злоумышленник успешно проникает в систему, он может попытаться изменить системные файлы для обеспечения продолжительного доступа к системе. Файлы, передаваемые в систему, обычно называются
    «rootkit», так как позволяют злоумышленнику осуществить доступ через корневую (root) учетную запись. В дополнение к таким программам, как снифферы, rootkit может содержать двоичные замещения для следующих файлов: ftpd passwd inetd ps login ssh netstat telnetd

    344
    Как правило, любой исполняемый файл, который может тем или иным образом помочь злоумышленнику поддерживать доступ, является кандидатом на замещение. Наилучший способ определить, был ли файл заменен - использовать криптографическую контрольную сумму. Лучше всего создавать контрольные суммы всех системных файлов при построении системы, после чего обновлять их при установке системных обновлений.
    Необходимо хранить контрольные суммы на безопасной системе, чтобы злоумышленник не мог изменить контрольные суммы при изменении файлов.
    Если имеются подозрения нелегального проникновения в систему, пересчитайте контрольные суммы и сопоставьте их с исходными. Если они совпадают, то файлы изменены не были. Если же контрольные суммы различны, рассматриваемому файлу доверять не следует; его необходимо заменить оригиналом с установочного носителя.
    Совет. По адресу http://www.chkrootkit.org/ можно найти утилиту, которая помогает в проверке наличия в системе rootkit-ов.
    22.7.3 Общий алгоритм аудита системы Unix
    Этот алгоритм покажет пути проверки систему Unix на ошибки в конфигурации или на наличие неизвестных процессов и учетных записей.
    - Начните с системы Unix, к которой у вас имеется административный доступ (то есть у вас имеется пароль к корневой учетной записи этой системы) и на которой можно вносить изменения, не затрагивая рабочие приложения.
    - Найдите файлы загрузки и определите, какие приложения запускаются при загрузке системы. Выявите приложения, которые являются необходимыми для системы, и отключите все остальные.
    - Просмотрите файл inetd.conf и определите, какие службы включены.
    Определите службы, необходимые для системы, и отключите все остальные. Не забудьте выполнить команду kill -HUP
    для процесса inetd
    , чтобы перезапустить его с использованием новой конфигурации.
    - Определите, используется ли в системе
    NFS.
    Внесите соответствующие изменения в файл dfstab
    - Если система использует telnet или FTP, загрузите
    TCP Wrappers и установите программу в системе. Настройте
    TCP Wrappers на разрешение доступа только к telnet и FTP, согласно требованиям системы.
    - Найдите файл приветственного сообщения.
    Определите, используется ли корректное приветственное сообщение. Если это не так, разместите в системе корректное приветственное сообщение.

    345
    - Выясните, настроены ли в системе требуемые ограничения на пароли согласно политике безопасности организации. Если это не так, внесите соответствующие настройки.
    - Определите, настроен ли в системе должным образом параметр umask по умолчанию. Если это не так, настройте umask соответствующим образом.
    - Определите требования для входа через корневую учетную запись.
    Если администраторам требуется осуществлять вход сначала с использованием их собственного идентификатора (ID), настройте соответствующим образом конфигурацию системы.
    - Проверьте систему на наличие неиспользуемых учетных записей.
    Все подобные учетные записи должны быть заблокированы.
    - Установите в системе соответствующие обновления.
    - Проверьте систему на некорректные пользовательские идентификаторы. В особенности следует искать учетные записи с
    UID, значение которого равно 0.
    - Убедитесь в том, что в системе ведется журнал подозрительной активности, и что файл syslog.conf настроен соответствующим образом.
    - Произведите в системе поиск скрытых файлов. Если будут найдены необычные скрытые файлы, исследуйте их, чтобы убедиться, что в систему никто не проник.
    - Произведите поиск файлов
    SUID
    и
    SGID
    . Если будут обнаружены такие файлы, расположенные в каталогах пользователей, исследуйте их, чтобы убедиться, что в систему никто не проник.
    - Произведите поиск файлов, общедоступных для записи. Если будут найдены такие файлы, либо устраните проблему посредством изменения разрешений (сначала выясните, для чего эти файлы используются), либо обратите на них внимание владельца.
    - Проверьте сетевые интерфейсы на наличие любых неправильных настроек.
    - Проверьте систему на предмет прослушиваемых (активных) портов.
    Если обнаружится какое-либо несоответствие, найдите процесс, использующий порт, и определите, должен ли данный процесс работать в системе.
    - Проверьте таблицу процессов в системе и определите, выполняются ли какие-либо несоответствующие процессы.
    22.8 Обновления системы
    Для исправления ошибок и устранения уязвимостей для Unix выпускаются обновления и «патчи» аналогично тому, как это делается для операционных систем семейства
    Windows.
    Обновления должны устанавливаться регулярно, чтобы минимизировать число уязвимостей.

    346
    Различные поставщики систем Unix выпускают средства, помогающие в управлении обновлениями. Компания Sun предлагает программу
    Solaris
    Sunsolve Patch Manager
    , а Red Hat имеет онлайн-систему обновления в интернете (http://www.redhat.com/apps/support/errata/).
    Примечание. При загрузке обновлений для систем Solaris имейте в виду, что Sun размещает многие обновления в кластере обновлений. Однако кластер обновлений может не содержать некоторых обновлений безопасности. Может понадобиться загрузить их в отдельном порядке и установить вручную.

    347
    23. БЕЗОПАСНОСТЬ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
    23.1 Введение в защиту ПО
    Безопасность программного обеспечения (ПО) в широком смысле
    является свойством данного ПО функционировать без проявления различных
    негативных последствий для конкретной компьютерной системы.
    Под уровнем безопасности ПО понимается вероятность того, что
    при заданных условиях в процессе его эксплуатации будет получен
    функционально пригодный результат.
    Причины, приводящие к функционально непригодному результату могут быть разными: сбои компьютерных систем, ошибки программистов и операторов, дефекты в ПО. При этом дефекты принято рассматривать двух типов: преднамеренные и непреднамеренные. Первые являются, как правило, результатом злоумышленных действий, вторые - ошибочных действий человека.
    При исследовании проблем защиты ПО от преднамеренных дефектов неизбежна постановка следующих вопросов:
    - кто потенциально может осуществить практическое внедрение программных дефектов деструктивного воздействия в исполняемый программный код;
    - каковы возможные мотивы действий субъекта, осуществляющего разработку таких дефектов;
    - как можно идентифицировать наличие программного дефекта;
    - как можно отличить преднамеренный программный дефект от программной ошибки;
    - каковы наиболее вероятные последствия активизации деструктивных программных средств при эксплуатации компьютерных систем (КС).
    При ответе на первый вопрос следует отметить, что это: непосредственные разработчики алгоритмов и программ для компьютерных систем. Они хорошо знакомы с технологией разработки программных средств, имеют опыт разработки алгоритмов и программ для конкретных прикладных систем, знают тонкости существующей технологии отработки и испытаний программных компонентов и представляют особенности эксплуатации и целевого применения разрабатываемой КС.
    Отметим, что алгоритмические и программные закладки могут быть реализованы в составе программного компонента вследствие следующих факторов:
    - в результате инициативных злоумышленных действий непосредственных разработчиков алгоритмов и программ;

    348
    - в результате штатной деятельности специальных служб и организаций, а также отдельных злоумышленников;
    - в результате применения инструментальных средств проектирования
    ПО, несущих вредоносное свойство автоматической генерации деструктивных программных средств.
    Правомерно утверждать, что вредоносные программы, в отличие от широко применяемых электронных закладок, являются более изощренными объектами, обладающими большей скрытностью и эффективностью применения.
    23.2 Угрозы безопасности ПО
    Угрозы безопасности информации и программного обеспечения
    компьютерных систем возникают как в процессе их эксплуатации, так и
    при создании этих систем, что особенно характерно для процесса
    разработки ПО, баз данных и других информационных компонентов КС.
    Наиболее уязвимы с точки зрения защищенности информационных
    ресурсов являются так называемые критические компьютерные системы.
    Критические
    компьютерные
    системы
    -
    сложные
    компьютеризированные
    организационно-технические
    и
    технические
    системы,
    блокировка
    или
    нарушение
    функционирования
    которых
    потенциально приводит к потере устойчивости организационных систем
    государственного управления и контроля, утрате обороноспособности
    государства, разрушению системы финансового обращения, дезорганизации
    систем энергетического и коммуникационно - транспортного обеспечения
    государства, глобальным экологическим и техногенным катастрофам.
    При решении проблемы повышения уровня защищенности информационных ресурсов КС необходимо исходить из того, что наиболее
    вероятным информационным объектом воздействия будет выступать
    программное обеспечение, составляющее основу комплекса средств
    получения, семантической переработки, распределения и хранения данных,
    используемых при эксплуатации критических систем.
    Программные средства деструктивного воздействия по своей природе носят, вредоносный характер, а последствия их активизации и применения могут привести к значительному или даже непоправимому ущербу. Такие
    вредоносные программы будем называть
    1   ...   28   29   30   31   32   33   34   35   36


    написать администратору сайта