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

  • 3.1.2. Безопасность файлов

  • Контрольные суммы

  • Замечания по работе с файлами

  • Михаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69


    Скачать 3.69 Mb.
    НазваниеМихаил Фленов СанктПетербург бхвпетербург 2010 удк 681 06 ббк 32. 973. 26018. 2 Ф69
    Дата13.03.2022
    Размер3.69 Mb.
    Формат файлаpdf
    Имя файлаlinux_glazami_xakera_3-e_izd.pdf
    ТипДокументы
    #394477
    страница7 из 35
    1   2   3   4   5   6   7   8   9   10   ...   35
    df
    Эта команда позволяет узнать свободное место на жестком диске или в раз- деле
    . Если устройство не указано, то на экран выводится информация о
    смонтированных файловых системах.
    Пример результата выполнения команды:
    Filesystem 1k-blocks Used Available Use% Mounted on
    /dev/hda2 16002200 2275552 12913760 15% / none 127940 0 127940 0% /dev/shm
    Результирующая таблица состоит из следующих колонок:
    ˆ
    Filesystem
    — диск, файловая система которого смонтирована;
    ˆ
    1k-blocks
    — количество логических блоков;
    ˆ
    Used
    — количество использованных блоков;
    ˆ
    Available
    — количество доступных блоков;
    ˆ
    Use%
    — процент использованного дискового пространства;
    ˆ
    Mounted on
    — как смонтирована файловая система.
    mount
    Команда предназначена для монтирования файловых систем. Она достаточно сложна
    , и ее используют системные администраторы.
    Если вы работали с ОС Windows, то скорей всего привыкли к тому, что дис- кеты
    , CD-диски и другие съемные носители становятся доступными сразу же, как только вы поместили их в устройство чтения. В Linux это не так, по крайней мере в текстовом режиме, и многие не могут сжиться с этой особен- ностью
    . Графические оболочки прекрасно научились монтировать диски

    Добро
    пожаловать
    в
    Linux
    61
    автоматом
    , но все же желательно помнить и хоть немного уметь пользоваться утилитой
    Итак
    , чтобы CD-ROM стал доступным, надо выполнить команду mount
    , ука- зав в качестве параметра устройство /dev/cdrom: mount /dev/cdrom
    После этого содержимое CD можно посмотреть в директории /mnt/cdrom.
    Получается
    , что файлы и директории диска как бы сливаются с файловой системой
    Почему именно в директорию /mnt/cdrom подсоединяется CD-ROM? Секрет заключается в том, что для подключения CD-ROM нужно намного больше сведений
    , чем просто команда mount /dev/cdrom
    . Эти сведения хранятся в
    двух файлах, уже имеющихся в ОС и описывающих основные устройства и
    параметры по умолчанию — в файлах fstab и mtab. Давайте по очереди раз- берем эти файлы.
    Для начала взглянем на fstab:
    # /etc/fstab: static file system information.
    #
    #
    /dev/hda2 / ext3 defaults,errors=remount-ro 0 1
    /dev/hda1 none swap sw 0 0 proc /proc proc defaults 0 0 none /dev/shm tmpfs defaults 0 0 none /dev/pts/ devpts gid=5,mode=620 0 0
    /dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
    /dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
    Файл содержит строки для основных дисков. Каждая запись состоит из 6 ко- лонок
    . Обратите внимание на первую строку. Здесь описывается подключе- ние диска hda2. В моей файловой системе это основной диск, поэтому второй параметр
    — "/". Это значит, что диск будет монтирован как корневой. Третья колонка описывает файловую систему, в данном случае это Ext3.
    Предпоследняя строка в файле описывает устройство CD-ROM. Посмотрите внимательно на второй параметр /mnt/cdrom. Вот откуда берется путь к со- держимому
    CD-диска. Четвертая колонка содержит опции монтирования, в
    которых можно описать параметры безопасности. Для CD-ROM-а здесь указано несколько опций: noauto,owner,kudzu,ro
    . Очень важным здесь яв- ляется параметр ro
    , который говорит о возможности только чтения CD-ROM.
    Вполне логично установить этот параметр для всех внешних приводов и уст-

    Глава
    3
    62
    ройств
    , которые злоумышленник может использовать для физического пе- реписывания информации с сервера.
    Файл mtab имеет примерно такое же содержимое:
    #
    /dev/hda2 / ext3 rw,errors=remount-ro 0 0 proc /proc proc rw 0 0 none /dev/shm tmpfs rw 0 0 none /dev/pts devpts rw,gid=5,mode=620 0 0 none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
    /dev/cdrom /mnt/cdrom iso9660 ro,nosuid,nodev 0 0
    Если вы создали какие-то разделы на отдельных дисках, то сможете настраи- вать и их. Я вам рекомендовал выделить таким образом раздел /home с поль- зовательскими директориями. Если вы так и сделали, то в файле может быть еще одна строка примерно следующего вида:
    /dev/hda3 /home ext3 rw,errors=remount-ro 0 0
    П
    Р И МЕ Ч А Н И Е
    Mandriva 2008 при выборе разбиения дискового пространства по умолчанию создает два раздела
    , один основной
    , а
    на втором удобно располагается
    /home.
    Посмотрим на четвертый параметр. В нем содержатся опции монтирования, которыми можно управлять для повышения безопасности системы. Они пе- речислены через запятую. В нашем примере это rw,errors=remount-ro
    . Это означает
    , что по умолчанию диск будет смонтирован для чтения и записи
    (
    rw
    ), а при возникновении ошибок перемонтирован только для чтения
    (
    errors=remount-ro
    ). В качестве опций монтирования дополнительно можно использовать
    :
    ˆ
    noexec
    — запрещает выполнение файлов. Если вы уверены, что в разделе не должно быть исполняемых файлов, то можно использовать эту опцию. На- пример
    , в некоторых системах директория /home должна хранить только документы
    . Чтобы хакер не смог записать в этот раздел свои программы, с
    помощью которых будет происходить взлом, добавьте этот параметр.
    Точнее сказать, программы поместить можно будет, а запустить — нет;
    ˆ
    nosuid
    — запрещает использование программ с битами SUID и SGID.
    В
    разделе /home их быть не должно, поэтому можно явно запретить при- менение привилегированных программ. О SUID- и SGID-программах мы будем говорить не раз (например, в разд. 4.5), ибо это очень опасная вещь;
    ˆ
    nodev
    — запрещает использование файлов устройств;
    ˆ
    nosymfollow
    — запрещение использования мягких ссылок.

    Добро
    пожаловать
    в
    Linux
    63
    Опции nodev и nosymfollow не сильно влияют на безопасность, но могут пригодиться
    Использование параметра noexec
    — бесполезное занятие и абсолютно не за- щищает систему от профессионального хакера, потому что опытный взлом- щик сможет запустить программу, если для выполнения разрешен хотя бы один раздел. А таковым всегда является раздел с директорией /bin и другие каталоги
    , которые содержат необходимые для работы программы. Нет, пара- метр использовать можно, но не стоит считать его панацеей.
    Допустим
    , что ваш сайт разрабатывается с использованием языка Perl. Если его интерпретатор доступен для выполнения, то взломщик сможет запускать сценарии программ Perl в любом разделе, в том числе и с установленным па- раметром noexec
    . Если для запуска сценария использовать командную стро- ку
    , то вы получите сообщение о нарушении прав доступа. Но программа вы- полнится
    , если написать следующую команду: perl file.pl
    Несмотря на то, что file.pl находится в разделе, в котором запрещены ис- полняемые файлы, ошибки не будет, потому что запускается разрешенная программа perl, которая в свою очередь читает файл (дозволенная операция) и
    выполняет его в своем адресном пространстве.
    Вспомните описание файла mtab, где для CD-ROM стоит запрет на использо- вание
    SUID- и SGID-программ. То же самое необходимо сделать как мини- мум с разделами /home и /tmp. Тогда пользователи не смогут создавать в сво- их директориях привилегированные программы, что позволит предотвратить большое количество возможных атак.
    Итак
    , давайте попробуем смонтировать CD-ROM в другую директорию. Для этого сначала создадим ее: mkdir /mnt/cd
    Теперь выполним команду mount /dev/cdrom /mnt/cd
    Если на вашем компьютере установлено две ОС — Windows и Linux, то диск, скорее всего, содержит файловую систему FAT32 или NTFS. Следующие команды позволяют подключить FAT32 к Linux: mkdir /mnt/vfat mount -t vfat /dev/hda3 /mnt/vfat
    Первая команда создает директорию /mnt/vfat, куда будет подключаться диск с
    FAT32.
    Во второй команде происходит монтирование диска /dev/hda3. Будем счи- тать
    , что как раз этот диск принадлежит Windows (у меня именно так, поэтому

    Глава
    3
    64
    мне придется так считать). Ключ
    -t позволяет указать тип подключаемой файловой системы. Это обязательно. Для CD-ROM мы этого не делали толь- ко потому, что вся необходимая информация есть в файле /etc/fstab. В пара- метре указана файловая система vfat
    . Это имя для FAT32, которое использу- ется в Linux.
    Более подробно о работе команды можно узнать на страницах документации
    (
    man mount
    ).
    umount
    Когда вы подключили к файловой системе CD-ROM, то это устройство бло- кируется
    , и диск нельзя вытащить, пока он не будет размонтирован. Для это- го используется команда umount
    Например
    , следующая команда позволяет размонтировать CD-ROM: umount /dev/cdrom
    Вытащить смонтированный CD-ROM-диск действительно нельзя, но если была смонтирована флешка, то ее всегда можно выдернуть физически, и тут ничего не спасет.
    tar
    По ходу изложения данной книги мы иногда будем устанавливать различные программы
    , часть из них поставляется в виде архивов tar.gz. Чаще всего это программы
    , хранимые в исходных кодах. Для развертывания такого файла нужно выполнить команду: tar xzvf имяфайла.tar.gz
    Как правило, после выполнения команды в текущей директории будет создан каталог с таким же именем, как у архива (только без расширения). В нем вы сможете найти все распакованные файлы.
    К
    работе с архивами мы вернемся в главе 13, когда будем рассматривать ре- зервирование данных. Сейчас же нам достаточно уметь распаковывать паке- ты
    , чтобы устанавливать дополнительные программы и утилиты сторонних разработчиков
    rpm
    В
    настоящее время большинство программ поставляются уже не в исходных кодах
    , а в виде rpm-пакетов. Их установка намного проще, так как програм- мы в них уже скомпилированы. Если вы используете MC, то выберите rpm- пакет и нажмите клавишу . Таким образом вы войдете в него как в
    директорию и увидите содержимое.

    Добро
    пожаловать
    в
    Linux
    65
    Каждый пакет обязательно содержит исполняемый файл install. Запустите его для установки пакета. Или запустите upgrade для обновления уже установ- ленного пакета.
    Если вы не используете MC, то для установки нового пакета можно выпол- нить команду: rpm -i пакет
    Для обновления уже установленного пакета можно выполнить команду с па- раметром
    -U
    : rpm -U пакет
    Для того чтобы видеть ход инсталляции, можно указать еще и ключ
    -v
    Таким образом, команда установки будет выглядеть следующим образом: rpm -iv пакет
    which
    Иногда необходимо знать каталог, в котором расположена программа.
    Для этого используется команда which с именем программы в качестве пара- метра
    , которая проверит основные директории, содержащие исполняемые файлы
    . Например, чтобы определить, где находится программа просмотра содержимого каталогов ls
    , выполните следующую команду: which ls
    В
    результате вы увидите путь /bin/ls. Если ваша ОС поддерживает псевдони- мы
    (alias) команд, то можно будет увидеть и его. Таким образом, при выпол- нении команды на экране выведется: alias ls='ls —color=tty'
    /bin/ls
    3.1.2.
    Безопасность
    файлов
    В
    главе 4 мы будем подробно говорить о правах доступа. Это основа обеспе- чения безопасности, но надеяться только на них нельзя. Необходимы допол- нительные инструменты сохранения целостности системы, или, по крайней мере
    , отслеживание изменений основных объектов ОС — файлами. В них хранится информация, а именно она необходима взломщикам. Хакеры стре- мятся прочитать, изменить, или даже уничтожить информацию, поэтому вы должны уметь ее контролировать.
    Дата
    изменения
    Самый простейший способ контроля — наблюдение за датой редактирова- ния
    . Допустим, что взломщик проник в вашу систему в 10:30. Чтобы узнать,

    Глава
    3
    66
    что было изменено злоумышленником, можно запустить поиск всех файлов, у
    которых дата корректировки больше этого времени. Вроде легко, но не очень эффективно, потому что дату можно изменить с помощью команды touch
    . В общем виде команда выглядит следующим образом: touch параметры ММДДччммГГ файл
    Прописными буквами показаны параметры даты, а строчными — время.
    Формат немного непривычный, но запомнить можно. Год указывать необяза- тельно
    , в этом случае будет использоваться текущий.
    Рассмотрим пример. Допустим, что вы хотите установить на файл /etc/passwd дату изменения 11:40 21 января. Для этого выполняем следующую команду: touch 01211140 /etc/passwd
    Теперь воспользуйтесь командой ls -l /etc/passwd
    , чтобы убедиться, что дата и время изменения установлены верно.
    С
    помощью команды touch можно и создавать файлы, сразу же указывая не- обходимую дату.
    Несмотря на то, что дата корректировки легко изменяется, хакер может забыть или просто не успеть сделать это, а возможно, ему просто не хватит прав.
    Итак
    , найти все файлы, дата изменения которых больше 11:40 21 января
    2010 года, можно следующим образом: touch 0121114010 /tmp/tempfile find /etc \(-newer /tmp/tempfile \) -ls find /etc \(-cnewer /tmp/tempfile \) -ls find /etc \(-anewer /tmp/tempfile \) —ls
    В
    первой строке мы создаем файл во временной директории /tmp с необхо- димой датой изменения, по которой и будет происходить поиск.
    Следующие три строки производят поиск файлов. Каждая из них имеет сле- дующую структуру: find директория \( -сравнение файл \) -ls
    Рассмотрим по частям эту строку:
    ˆ
    find
    — программа поиска файлов;
    ˆ
    директория
    — директория, в которой нужно искать. В нашем случае указана системная директория /etc, в которой хранятся все настроечные файлы;
    ˆ
    параметр
    \( -сравнение файл \)
    состоит из файла для сопоставления и кри- терия поиска файлов, который может принимать различные значения:

    -newer
    — дата изменения больше, чем у заданного файла в парамет- ре файл
    ;

    Добро
    пожаловать
    в
    Linux
    67

    -cnewer
    — состояние изменено позже, чем у сопоставляемого файла в
    параметре файл
    ;

    -anewer
    — дата последнего доступа превосходит аналогичный пара- метр сравниваемого файла;
    ˆ
    параметр
    -ls
    — отображает на экране список файлов (как при выполне- нии команды ls
    ).
    Контрольные
    суммы
    На даты изменения можно надеяться, но необходимо дополнительное сред- ство проверки. Наилучшим методом является подсчет контрольной суммы.
    Допустим
    , что вы хотите отслеживать изменения в директории /etc. Для этого выполните следующую команду: md5sum /etc/*
    Утилита md5sum подсчитывает контрольную сумму указанных в качестве параметра файлов. На экране вы получите результат выполнения команды примерно такого вида:
    783fd8fc5250c439914e88d490090ae1 /etc/DIR_COLORS e2eb98e82a51806fe310bffdd23ca851 /etc/Muttrc e1043de2310c8dd266eb0ce007ac9088 /etc/a2ps-site.cfg
    4543eebd0f473107e6e99ca3fc7b8d47 /etc/a2ps.cfg c09badb77749eecbeafd8cb21c562bd6 /etc/adjtime
    70aba16e0d529c3db01a20207fd66b1f /etc/aliases c3e3a40097daed5c27144f53f37de38e /etc/aliases.db
    3e5bb9f9e8616bd8a5a4d7247f4d858e /etc/anacrontab fe4aad090adcd03bf686103687d69f64 /etc/aspldr.conf
    Результат отображается в две колонки: первая содержит контрольную сумму, а
    вторая — имя файла. Контрольные суммы подсчитываются только для файлов
    . Для каталогов будет выведено сообщение об ошибке.
    В
    данном случае указаны все файлы каталога /etc/*. Результат расчета вы- водится на экран. Но запоминать эти данные неудобно, поэтому логично будет записать их в файл, чтобы потом использовать его содержимое для анализа изменений. Следующая команда сохраняет результат в файле
    /home/flenov/md: md5sum /etc/* >> /home/flenov/md
    Чтобы сравнить текущее состояние файлов директории /etc с содержимым файла
    /home/flenov/md, необходимо выполнить команду: md5sum -c /home/flenov/md

    Глава
    3
    68
    На экране появится список всех файлов, и напротив каждого должна быть надпись
    Success (Успех). Это означает, что изменений не было. Давайте мо- дифицируем какой-нибудь файл, выполнив, например, следующую команду: groupadd test
    Пока не будем вдаваться в подробности команды, сейчас достаточно знать, что она изменяет файл /etc/group. Снова выполняем команду проверки кон- трольных сумм файлов: md5sum -c /home/flenov/md
    Теперь напротив файла /etc/group будет сообщение об ошибке, поскольку контрольная сумма изменилась. Таким образом, даже если дата корректиров- ки файла осталась прежней, по контрольной сумме легко определить наличие вмешательства
    Что
    контролировать
    Некоторые администраторы следят только за файлами настройки. Это боль- шая ошибка, потому что целью атаки хакеров может быть не только конфи- гурация
    , но и исполняемые файлы. То, что Linux является продуктом с от- крытым кодом, имеет свои преимущества и недостатки.
    Порок в том, что профессиональные хакеры знают программирование. Им не составляет труда взять исходный код какой-либо утилиты и изменить его по своему усмотрению, добавив в него необходимые возможности. Таким обра- зом
    , очень часто в системе открыты потайные двери.
    Вы должны контролировать изменения как конфигурационных файлов, так и
    всех системных программ и библиотек. Я рекомендую следить за каталога- ми
    /etc, /bin, /sbin и /lib.
    Следить за пользовательскими файлами просто не имеет смысла, потому что эти файлы изменяются часто, и в тонне изменений найти что-то важное будет проблематично
    . А вот конфигурационные файлы и программы в настроенной системе не изменяются и не должны изменяться, поэтому любые корректи- ровки указывают на возможную проблему или вторжение.
    Замечания
    по
    работе
    с
    файлами
    ОС
    Linux достаточно демократично относится к именам создаваемых фай- лов
    , позволяя использовать абсолютно любые символы, кроме знака
    /
    , кото- рый является разделителем каталогов, и символа с кодом 0, который опреде- ляет конец имени файла. Все остальное можно применять.
    Самое страшное — это возможность использовать невидимые символы, так как хакер может создать программу, у которой в имени только нечитаемые

    Добро
    пожаловать
    в
    Linux
    69
    знаки
    , и пользователь не видит такого файла. Таким образом взломщики скрывают в ОС свои творения.
    Рассмотрим пример с использованием перевода строки. Допустим, что хакер назвал свой файл hacker\nhosts.allow. В данном случае под "\n" подразумева- ется перевод каретки, а значит, имя состоит из двух строк: hacker hosts.allow
    Не все программы могут обработать такое имя правильно. Если ваш файло- вый менеджер работает неверно, то он отобразит только вторую строку — hosts.allow, и администратор не заподозрит ничего страшного в таком имени.
    Еще один способ спрятать файл — в качестве имени указать точку и пробел "
    " или две точки и пробел "
    ". Файл с именем в виде точки всегда указы- вает на текущую директорию. Администратор, выполнив команду ls
    , может не заметить, что существуют два файла с одинаковыми именами, а пробела все равно не видно.
    Пробелы можно вставлять в любые имена файлов, например, перед именем
    (" hosts.allow") или, наоборот, в конце имени, и невнимательный администра- тор ничего не заметит. Чтобы увидеть конечный пробел, можно при выводе добавлять к каждому имени символ косой черты (/). Для этого при вызове команды ls используйте ключ
    -F
    Еще один вариант спрятать файл — заменять одни символы на другие, схо- жие по начертанию. Например, посмотрим на имя файла hosts.a11ow. Ничего не замечаете подозрительного? При беглом взгляде ничего обнаружить не- возможно
    , но если приглядеться повнимательнее, то станет видно, что вместо букв l (L) стоит цифра 1 (единица).
    Хакеры могут использовать этот прием. Еще можно подменять букву b на d.
    И
    здесь трудно что-либо заподозрить, потому что если человек каждый день видит одно и то же, то, чаще всего, воспринимает желаемый текст за дейст- вительный
    . Получается банальный обман зрения.
    Внимание
    — главное оружие администраторов. Вы должны проявлять инте- рес к любой мелочи, и нельзя позволить обмануть ваше зрение.
    1   2   3   4   5   6   7   8   9   10   ...   35


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