- •1Изучение unix® (Linux)
- •1.1Человеко-машинные системы
- •1.2Процедурные системы
- •1.3Проективные системы
- •1.4Открытые технологии
- •1.4.1История развития gnu/Linux
- •1.4.2Архитектура и философия unix®.
- •2Компоненты unix®
- •2.1Ядро
- •2.2Управление памятью
- •2.3Управление процессами
- •2.4Демоны
- •2.5Понятие файла в Linux
- •2.6Организация хранения файлов
- •2.6.1Что такое файловая система?
- •2.7Файловые системы Linux
- •2.8Утилиты
- •2.9Типы программ
- •3Процедура загрузки ос Linux
- •3.1Основные конфигурационные файлы
- •3.2Загрузка в однопользовательском режиме
- •3.3Настройка общесистемных сервисов
- •3.3.1Редактирование файла /etc/fstab
- •3.4Файлы и разделы подкачки
- •3.5Запуск демонов
- •3.6Процессы
- •3.7Управление процессами
- •3.7.1Команда ps
- •3.7.2Команда top
- •3.7.3Приоритеты
- •3.7.4Сигналы и команда kill
- •3.7.5Перевод процесса в фоновый режим
- •3.8Gnu grub загрузчик
- •3.8.1Что такое grub?
- •3.8.2Компиляция и инсталляция программного пакета grub
- •3.8.3Инсталляция загрузчика grub
- •3.8.4Конфигурация grub
- •4Справочная система Linux
- •4.1Руководство (man)
- •4.1.1Утилита man
- •4.2Утилиты whatis и apropos
- •4.3Работа с man
- •4.3.1Система info
- •4.3.3Howto файлы
- •4.3.4Ресурсы в Интеренете.
- •5Оболочка, Shell, командный интерпетатор.
- •5.1Начало работы с Shell
- •5.2Программы
- •5.2.1Выполнение команд
- •5.3Команды Shell
- •5.3.1Опции
- •5.3.2Аргументы
- •5.3.3Исключения
- •5.4Виртуальные консоли
- •5.5Псевдонимы и переменные
- •5.6Навигация и редактирование
- •5.7История команд
- •5.8Простые регулярные выражения
- •5.9Запуск команды на выполнение
- •5.10Стандартный ввод/вывод
- •5.11Фильтры
- •6Shell как язык программирования
- •6.1Сценарий
- •6.2Запуск сценария
- •6.3Встроенные переменные
- •6.4Условия проверки
- •6.4.1Сложные условия поиска:
- •6.4.2Условный оператор "if"
- •6.4.3Конструкции
- •6.4.4Оператор вызова ("case")
- •6.4.5Пустой оператор
- •6.5Функции в shell
- •6.6Популярные команды
- •6.6.1Поиск файлов.
- •6.6.2Поиск внутри файла
- •7Управление пользователями
- •7.1Структура файла /etc/passwd
- •7.2Структура файла /etc/group
- •7.3Псевдопользователи
- •7.4Команды работы с учетными записями пользователей
- •8Установка программного обеспечения
- •8.1Утилита rpm
- •8.2Утилита Apt
- •8.2.1Использование apt
- •8.2.2Установка или обновление пакетов.
- •8.2.3Удаление установленного пакета.
- •8.2.4Обновление всех установленных пакетов
- •8.2.5Поиск в репозитарии
- •9Сборка по из исходных кодов
- •9.1.1Необходимые сведения о программировании на языке Си
- •9.1.2Инсталляция из исходных текстов
- •10Файловая система
- •10.1Основы работы файловых стистем
- •10.1.1Файлы
- •10.1.2Каталоги
- •10.1.3Типы файлов
- •10.1.4Файлы физических устройств
- •10.1.5Именованные каналы (pipes)
- •10.1.6Сокеты (sockets)
- •10.1.7Символические ссылки
- •10.1.8Права доступа к файлам и каталогам
- •10.1.9Расширенные атрибуты доступа
- •10.2Управление файловой системой
- •10.2.1Разбиение диска на разделы, fdisk
- •10.2.2Создание и монтирование файловых систем
- •10.2.3Команды для работы с файлами
- •10.3Команда find и символы шаблонов для имен файлов
- •10.4Команда split — разбиваем файл на несколько частей
- •10.5Сравнение файлов и команда patch
- •10.6Команды архивирования файлов
- •10.6.1Программа tar
- •10.6.2Программа gzip
- •10.6.3Программа bzip2
- •10.6.4Примеры применения tar
- •11Сетевая файловая система (nfs)
- •11.1Запуск nfs
- •11.2Монтирование тома nfs
- •11.4Файл exports
- •12Популярные приложения
- •12.1Эффективная работа с vim
- •12.2Эффективно передвигаемся по файлу
- •12.3Вставка
- •12.4.1Использование mc
- •12.4.2Встроенный ftp-клиент
- •12.4.3Переименование групп файлов
- •13Сетевые средства Linux
- •13.1Общие сведения о сетях
- •13.1.1Стек tcp/ip
- •13.1.2Адресация Internet
- •13.1.3Система имен доменов (dns - Domain Name System)
- •13.1.4Модель Клиент-Сервер
- •13.1.5Адреса tcp/ip
- •13.1.6Преобразование адресов
- •13.2Конфигурация сетевых интерфесов
- •13.2.1Адрес сети
- •13.2.2Широковещательный адрес
- •13.2.3Адрес шлюза
- •13.2.4Адрес сервера имен
- •13.2.5Маска сети
- •13.3Файлы конфигурации tcp/ip
- •13.3.1Файл /etc/hosts
- •13.3.2Файл /etc/networks
- •13.3.3Файл /etc/init.D/network
- •13.3.4Параметры dns
- •13.3.5Файл host.Conf
- •13.3.6Файл /etc/resolv.Conf
- •13.4Команда ifconfig
- •13.5Маршрутизация
- •14Контроль состояния сети
- •14.3Команда lsof
- •14.4Проверка arp-таблиц
- •15Управление работой межсетевого экрана (брандмауэра) netfilter
- •15.1Настройка межсетевого экрана Iptables
- •15.2Порядок прохождения таблиц и цепочек
- •15.2.1Общие положения
- •15.3Как строить правила - основы
- •15.3.1Команды
- •15.3.2Критерии
- •15.3.3Общие критерии
- •15.4Неявные критерии
- •15.4.1Tcp критерии
- •15.4.2Udp критерии
- •15.4.3Критерий mac
- •16Shorewall: iptables с человеческим лицом
- •16.1Базовая настройка
- •16.2Фильтрация трафика
- •16.3Дополнительные возможности
- •16.3.1Вместо заключения
- •16.4Приложение. Устанавливаем Shorewall
- •17Управление ядром
- •17.1Версия ядра
- •17.2Причины для пересборки ядра
- •17.3Подготовка
- •17.4Компиляция (Make)
- •17.5Установка заплат
- •17.6Сборка единичного модуля
- •18Мониторинг системы
- •18.1Система ведения логов
- •18.2Демон Syslogd
- •18.2.1Параметры запуска
- •18.2.2Сигналы
- •18.2.3Файл конфигурации
- •18.2.4Советы по настройке syslog
- •18.3Logger - утилита записи в журнал
- •18.4Logrotate или "что делать со старыми журналами?"
- •18.5Logwatch или "как извлечь полезную информация из кучи мусора?"
- •19Cron - планирование заданий
- •19.1Настройка задач Cron
- •19.2Запуск и остановка службы
- •19.3Системное время
- •20Резервное копирование в Linux
- •20.1Использование серверов резервного копирования
- •20.2Аппаратные средства, предназначенные для создания резервных копий
- •20.3Способы резервного копирования
- •20.3.1Резервное копирование, инициируемое клиентом
- •20.3.2Резервное копирование, инициируемое сервером
- •20.4Использование tar
- •20.4.1Возможности tar
- •20.4.2Список команд tar:
- •20.4.3Использование smbtar
- •20.4.4Создание разделяемых объектов резервного копирования
- •20.5Обзор и установка системы резервного копирования BackupPc
- •20.5.1Введение
- •20.5.2Требования к установке
- •20.5.3Настройка BackupPc
- •20.5.4Интерфейс
- •21Основы безопасности Linux
- •21.1Меры предосторожности
- •21.2Принципы защиты
- •21.3Идентификаторы пользователя и группы пользователей
- •21.4.1Безопасность файлов
- •21.5Важные системные файлы
- •21.6Проблемы защиты /etc/passwd и /etc/shadow
- •21.6.1Скрытые пароли
- •21.6.2Устаревание паролей
21.5Важные системные файлы
/etc/passwd
Файл паролей, возможно, наиболее критический системный файл в Linux (и большинстве других UNIX®'ов). Он хранит сисок пользователей, соответствие их логинов, user ID и group ID. Он также может хранить зашифрованные пароли, но кудабезопасней хранить их отдельно в файле /etc/shadow (затенение паролей). Этот файл ДОЛЖЕН БЫТЬ открыт на чтение всем, иначе даже такая простая команда, как ls правильно работать не сможет. Поле GECOS (иногда пишут GCOS) может хранить реальное имя пользователя и его телефон. В данном файле также хранится информация о домашнем каталоге пользователя (в него он попадает при входе в систему) и его оболочке (shell, например, bash или программе menu), упомянутой в файле /etc/shells. Формат записей такой:
username:encrypted_password:UID:GID:GECOS_field:home_directory:login_shell
Пароли зашифрованы одним способом (обычно crypt, новые дистрибутивы поддерживают MD5, который является знаменательно более сильным). Пароли нельзя восстановить из зашрифованного вида, но можно попробовать шифровать слова из словаря (или просто перебором) и сравнивать результат с зашифрованным паролем. Как только совпал, пароль найден. Само по себе такое не очень плохо, хуже когда пользователи выбирают легко предполагаемые пароли. Самые современные результаты исследований показали, что 25% паролей можно найти за час или около того, и что намного хуже, 4% пользователей, выбирают их собственное имя как пароль. Пустые поля в поле пароля значат отсутствие пароля вообще. Так появляются записи вида “::”, которые критичны для первых четырех полей в записи пользователя (имя, пароль, uid и gid).
/etc/shadow
Файл shadow хранит пары "username:password" и дополнительные сведения о логине, например, время окончания его действия. Он должен быть доступен на чтение и запись только для root.
/etc/groups
Файл groups хранит данные о принадлежности пользователей к группам и опциональные поля, вроде групповых паролей (сейчас обычно хранятся в файле gshadow), данный файл должен быть доступен на чтение всем пользователям для корректной работы системы. Его формат:
groupname:encrypted_password:GID:member1,member2,member3...
Группа может не содержать членов (не используется), одного члена или многих членов, а также опционально иметь пароль доступа (обычно не используется).
/etc/gshadow
Аналогично файлу shadow, данный файл хранит группы и пароли для них. Данный файл должен быть доступен на чтение и запись только для root.
/etc/login.defs
Этот файл (/etc/login.defs) позволяет Вам определять некоторые полезные значения по умолчанию для различных программ типа useradd или окончания времени действия пароля. Он имеет тенденцию немного изменяться в разных дистрибутивах, но обычно хорошо прокомментирован и имеет тенденцию содержать нормальные значения по умолчанию.
/etc/shells
Файл shells хранит список доступных оболочек (shells), если оболочка пользователя в нем не упомянута, зайти в систему он не сможет. Подробности в разделе man про telnetd.
/etc/securetty
Данный файл хранит список терминалов с которых может зайти root. Консоли обычно обозначены с /dev/tty1 по /dev/tty6. Последовательные порты (если root может заходить по модему) обозначены обычно начиная с /dev/ttyS0 и выше. Если допускается вход root по сети (плохая идея, пользуйтесь лучше sudo), то добавьте /dev/ttyp1 и выше (если зашли 30 пользователей, а потом попытался зайти root, то он зайдет с /dev/ttyp31). Лучше всего ограничьте доступ root устройством /dev/tty1 и поставьте программу sudo: так оно безопасней.
Ключевые аспекты безопасности.
Существует множество аспектов компьютерной безопасности идеале все их нужно учитывать. Но когда времени или терпения не хватает, приходит идти на компромисс. Ниже описаны шесть наиболее важных аспектов, а также приведе ны общие правила соблюдения "техники компьютерной безопасности".
Фильтрация пакетов
Если Linux-система подключается к сети, где есть выход в Internet, НЕОБХОДИМО, чтобы между этой системой и внешним миром стоял брандмауэр либо маршрутизатор, фильтрующий пакеты. В качестве альтернативы можно включить фильтрацию пакетов в ядре с помощью утилиты iptables. Какой бы ни была реализация, фильтр должен пропускать через себя трафик только важнейших служб, выполняющих "полезную" работу в сети.
Ненужные службы
Многочисленные версии Linux существенно отличаются друг от друга тем, какие сетевые службы включены по умолчанию. Не поленитесь проверить эти установки и отключить службы, которые совершенно бесполезны. В первую очередь просмотрите содержимое файла /etc/inetd.conf (в Red Hat — файлов в каталоге /etc/xinetd.d).
Программные "заплаты"
Авторы основных дистрибутивов Linux регулярно (как правило, несколько раз в месяц) выпускают "заплаты" для устранения новых брешей в защите системы. ВНИМАТЕЛЬНО следите за появлением "заплат", имеющих отношение к вашей версии Linux (и любых установленным в ней программам), и максимально оперативно инсталлируйте их. Помните: раз появилась "заплата", значит, есть люди, которые еще раньше знали о сушествовании соответствующей дыры. Спешите, пока не поздно.
Резервные копии
РЕГУЛЯРНО создавайте резервные копии всех систем, чтобы в случае инцидента можно было свести ущерб к минимуму. Никакие технологии зеркального дублирования, "горячей" замены или RAID не отменяют необходимость резервного копирования.
Пароли
Все мы любим простые правила. Вот одно из них: у каждой учетной записи должен быть пароль который трудно угадать. Но даже самые лучшие пароли нельзя передавать через Internet в текстовом виде. Поэтому, если в системе допускается удаленная регистрация, следует применять SSH или какой-нибудь другой механизм аутентификации.
Бдительность
Чтобы быть уверенным в безопасности системы, следите за ее состоянием, сетевыми соединениями, таблицей процессов. Делать это нужно регулярно (желательно каждый день) Проблема всегда начинается с малого, а затем нарастает, как снежный ком, так что чем раньше будет обнаружена аномалия, тем меньшим окажется ущерб.
Общие принципы защиты
Эффективная система безопасности должна базироваться на здравом смысле. Она во многом напоминает борьбу с мышами в доме. Вот ряд правил, которые при этом следует соблюдать.
Не оставляйте на ночь на кухонном столе то, что может привлечь мышей. Лучшие лакомства для них — сыр и масло.
Позаботьтесь о том, чтобы в доме не было мест, где мыши могли бы свить гнездо. Мыши любят устраивать гнезда в кучах тряпья.
Расставьте мышеловки в тех местах, где вы хотя бы раз видели мышь.
Каждый день проверяйте мышеловки, меняйте приманки и выбрасывайте дохлых грызунов. В заполненные мышеловки грызуны уже не попадают, к тому же от них идет мерзкий запах.
Избегайте ядовитых приманок. Отравленные мыши могут навсегда остаться в стенах дома. Кроме того, есть риск, что отравится ваша собака. Лучше пользоваться традиционными мышеловками.
Заведите кота!
Этими же правилами (в компьютерном варианте) можно с успехом руководствоваться я организации защиты Linux-систем. Вот как они звучат применительно к Linux.
Не оставляйте без присмотра файлы, которые могут представлять интерес для хакеров и не в меру любопытных сослуживцев. Коммерческие тайны, персональные Досье, бухгалтерские ведомости, результаты выборов и т.д. — за всем этим нужен глаз да глаз. Гораздо надежнее зашифровать данные, чем просто пытаться предотвратить несанкционированный доступ к ним.
В организации должен существовать порядок работы с секретной информацией.
Некоторые рекомендации по этому поводу даны в документе RFC2196.
Старайтесь, чтобы в системе не было мест, где хакеры могли бы закрепиться. Хакеры часто вламываются в одну систему, а затем используют ее как базу для взлома других систем. Каталоги, доступные для записи по протоколу FTP в анонимном Режиме, групповые учетные записи, учетные записи с плохо подобранными паролями — вот основные уязвимые места.
Устанавливайте ловушки для обнаружения вторжений или попыток вторжения Такие утилиты, как tripwire, tcpd и crack, помогут преду-преждать возможные проблемы.
Следите за отчетами, которые генерируются этими утилитами. Незначительная проблема, проигнорированная в отчете, к моменту получения следующего отчета может перерасти в катастрофу.
Учитесь защищать Linux-системы своими силами. Применяйте традиционные технологии, обучайте пользователей, руководствуйтесь, в конце концов здравым смыслом. В случае необходимости приглашайте специалистов со стороны, но при этом тщательно контролируйте их работу.
Постоянно следите за тем, не появились ли отклонения от нормального хода рабо-ты системы. Обращайте внимание на все необычное, например на непонятные журнальные сообщения или изменение характера использования какой-либо учетной записи (резкий рост активности, работа в необычное время, использова-ние учетной записи во время отпуска ее владельца).
Cлабые места в системе защиты
Рассмотрим наиболее распространенные проблемы, связанные с безопасностью Linux- систем, и стандартные контрмеры, позволяющие избежать этих проблем. Но прежде чем перейти к деталям, необходимо взглянуть на ситуацию в целом и определить основные источники неприятностей.
Человеческий фактор. Пользователи (и администраторы) системы часто являются ее слабейшим звеном. Например, компания America Online печально прославилась тем, что ее многократно атаковали хакеры, притворявшиеся служащими компании. Они посылали письма потенциальным жертвам с просьбой выслать пароль для "системного теста" или "плановой проверки учетной записи". Наивные пользователи часто выполняли такую просьбу (некоторые до сих пор так делают). Есть масса разновидностей подобного шарлатанства. Одна из задач системного администратора состоит в обучении пользователей правилам техники безопасности. Многие пользователи, начиная работать в Internet, часто не подозревают, сколько там всякого жулья. Научите их выбирать хорошие пароли и правильно хранить их, а главное — никогда не разговаривать с незнакомцами! Не забудьте в своих наставлениях упомянуть некомпьютерные средства коммуникации: в умелых руках телефон тоже может оказаться опасным оружием.
Ошибки в программах. За много лет в программном обеспечении Linux (включая сторонние программы, как коммерческие, так и бесплатные) было выявлено несметное число ошибок, связанных с безопасностью. Используя незаметные программистские просчеты или контекстные зависимости, хакерам удавалось манипулировать системой по своему усмотрению. Что может сделать в этом случае аднистратор? Немногое, по крайней мере до тех пор, пока разработчик не выявит ошибку и выпустит "заплату" для ее исправления. Быть в курсе последних событий — святая обязанность администратора.
Открытые двери. Многие компоненты программного обеспечения можно сконфигурировать в режиме полной или частичной безопасности. К сожалению, по умолчанию чаще всего принят второй вариант. Хакеры вламываются в системы, иезуитски эксплуатируя функциональные возможности, которые с миссионерской щедрости были предоставлены разработчиками в надежде сделать работу пользователей удобнее и гуманнее: учетные записи без паролей, глобальный совместный доступ к жестким дискам и т.д., и т.п. Одна из наиболее важных задач, связанных с обеспечением безопасности системы, — убедиться в том, что, заботясь о благополучии пользователей, вы не пригласили на вечеринку монстра в маскарадном костюме.
Проще всего устранить проблемы последней категории, хотя их может быть очень много и не всегда очевидно, что именно следует проверять.
