- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Linux-сервер своими руками - Денис Колисниченко
Шрифт:
Интервал:
Закладка:
Как видите, средствами одной программы mail вам удалось сделать немного. Если пользователей много, использовать механизм псевдонимов не очень удобно. Гораздо удобнее, чтобы программа mail брала список подписчиков из какого-нибудь файла. К сожалению, разработчики этой программы не предусмотрели такой возможности, однако с помощью небольшого сценария мы можем организовать эту возможность. Посмотрим, что из этого получится, если воспользоваться средствами интерпретатора команд bash.
Создайте сценарий smaller в своем домашнем каталоге (см. листинг 13.3).
Листинг 13.3. Сценарий smailer#!/bin/bash
DT=`date`
echo $DT >> log
for user in `cat users`
do
echo "Sending message to $user"
mail $user –s Subscribe < msg 2>> log
done
Напомню, что сценарий — это обыкновенный текстовый файл с установленным атрибутом выполнения, содержащий команды интерпретатора. Более подробно сценарии рассматриваются в гл. 19, а сейчас попробую объяснить все на интуитивном уровне, чтобы вы поняли сам принцип работы вышеприведенного сценария.
В первой строке указывается, какой интерпретатор будет выполнять ваши команды — /bin/bash. Обратите внимание на одинарные кавычки, в которые заключена команда date. Это не обыкновенные кавычки, а те, которые расположены под знаком тильды «~». Во второй и третьей строках заносится дата в файл протокола log. Этот файл находится в домашнем каталоге.
Затем последовательно (в цикле for) читается список пользователей из файла users, который находится в домашнем каталоге, и передается имя пользователя программе mail. Программа mail поочередно отправит сообщение каждому пользователю из файла users. Тема сообщения устанавливается с помощью параметра –s, а само сообщение хранится в файле msg.
Весь поток ошибок перенаправляется в файл log. Вы можете переправить и все сообщения программы mail, удалив дескриптор 2 перед символами перенаправления ввода/вывода.
Теперь создайте файл users. Текст моего личного файла приведен в листинге 13.4.
Листинг 13.4 Файл usersden
u
synthetic
evg
Сообщения, которые вы хотите отправить, запишите в файл msg. Запустите сценарий командой:
./smaller
На экране вы должны увидеть следующую информацию:
Sending message to den
Sending message to u
Sending message to synthetic
Sending message to evg
Так как пользователя evg в моей системе нет, в файл протокола будет записано соответствующее сообщение:
Сбт Май 4 10:43:28 EEST 2002
evg… User unknown /root/dead.letter…
Saved message in /root/dead.letter
На экран не будет выведено сообщение об ошибке, потому что мы перенаправили стандартный поток ошибок в файл log. Как видите, все предельно просто.
Программу mail можно использовать и для чтения почты. Для этого просто введите команду:
Если в вашем почтовом ящике нет сообщений, программа сообщит вам об этом:
No mail for user
где user — это ваше имя пользователя.
Если будут новые сообщения, программа выведет на экран нумерованный список, и вы сможете ввести номер сообщения, которое хотите прочитать. Для удаления сообщения используется команда d <номер> или d <диапазон>. Выйти из программы можно, введя команду q.
Использовать программу mail в качестве полноценной почтовой программы нельзя — она работает только с вашим локальным ящиком, поэтому если вам нужно будет получить сообщения откуда-то извне, скажем pop.mail.ru, вы не сможете сделать это. Я бы вам порекомендовал использовать программу kmail. которая входит в состав KDE. Данная программа поддерживает несколько учетных записей электронной почты, в том числе и локальный ящик, отправку сообщений с помощью SMTP и локального агента MTA (sendmail), а также сообщения в формате HTML, что является немаловажным, когда пользователи Outlook забывают включить текстовый формат для исходящих сообщений.
14
Бастионы
14.1. Применение IPChains
Для начала небольшое вступление. Читатель, скорее всего, знает, что весь трафик в сети состоит из пакетов. Каждый пакет состоит из двух частей: заголовка и тела. В заголовке пакета находится информация об источнике, адресате, типе пакета, а также прочая информация, которая характерна для пакетов определенных типов. В теле пакета передается та информация, которую мы хотим передать. Более подробно об этом было сказано в гл. 1 данной книги.
Протокол TCP, в отличие от UDP, перед началом передачи данных требует установки соединения. Перед установкой соединения производится обмен специальными пакетами, а после этого передаются обычные пакеты, содержащие данные.
Бастион (firewall, брандмауэр) — это системный компонент (фильтр), обеспечивающий защиту сети от несанкционированного доступа. IPChains представляет собой пакетный фильтр. Пакетный фильтр просматривает заголовок каждого пакета, который проходит через него, а потом решает, что делать со всем пакетом. Фильтрация пакетов встроена в ядро ОС Linux.
Обычно IPChains используется на шлюзах, соединяющих две сети, например, локальную и Интернет. При этом вы имеете право разрешить передавать или принимать какие-либо пакеты. Это позволяет обеспечить должный уровень безопасности и экономии.
С помощью IPChains можно ограничить свою хорошо организованную сеть от хаоса Интернет. Применение IPChains может решить такие виды атак, как пинг смерти, атака на отказ, IP-спуфинг, фрагментация пакетов. В этой главе будут описаны способы защиты от перечисленных атак на ваш сервер, а также будут приведены рекомендации по выявлению источника атак.
Для поддержки IPChains вам необходимо перекомпилировать ядро. О том, как это сделать рассказано в гл. 18. При этом вам нужно включить опции ядра IP:firewalling и IP:firewall packet. Я также рекомендую включить опции IP: masquerading и IP: always defragment. Скорее всего, они также вам понадобятся. Также вам следует включить IP-Forwarding (если вы еще это не сделали) командой:
echo "1" > /proc/sys/net/ipv4/ip_forward
Если же вам нужна поддержка динамических IP-адресов (например, для DHCP — см. гл. 8), включите ее с помощью команды:
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
14.2. Настройка IPChains
Настройку IPChains лучше всего рассматривать на практических примерах. Но прежде, чем это сделать попробуем разобраться, как ядро фильтрует пакеты.
Ядро стартует с тремя списками правил: input, forward, output. Эти правила называются firewall-цепочками или просто цепочками. Когда вы получаете новый пакет, ядро использует цепочку input (входная цепочка). Перед этим пакет проверяется: не был ли он поврежден при пересылке? Поврежденные пакеты отвергаются. Если с пакетом все в порядке, пакет проходит проверку целостности: не запутает ли пакет правила фильтрации? Если пакет не проходит проверку целостности, он отвергается.
Если фильтр пропускает пакет, то ядро решает, куда его направить дальше. Это называется маршрутизацией. Если пакет предназначен для другой машины, то пакет должен пройти через цепочку forward. Если пакет проходит через фильтр forward, то удаленная машина получит этот пакет. Что делать с этим пакетом дальше, будет решать уже получившая его машина и для нас это не представляет интереса.
Если пакет предназначен для нашей машины, пакетный фильтр определяет, на какой интерфейс его следует переслать. Пакет, предназначенный для интерфейса lо (обратная петля), сначала проходит выходную цепочку, а потом попадает во входную цепочку интерфейса lо. Если пакет создан локальным процессом, который запущен на бастионе, он попадает в цепочку перенаправления (forward). Цепочка перенаправления применяется ко всем пакетам, проходящим сквозь бастион на другие машины.
Прежде чем пакет выйдет из сетевого интерфейса, он должен пройти цепочку output.
Цепочка — это список правил. Каждое правило можно сформулировать примерно так: «если заголовок пакета удовлетворяет такому-то условию, то поступить с ним так-то». Если первое правило не применимо к этому пакету, то рассматривается следующее правило в цепочке. Если ни одно правило не применимо к пакету, пакет, скорее всего, будет отвергнут. Если какой-нибудь пакет отвергается, в журнале syslog появляется соответствующее сообщение.
Программу ipchains можно вызывать со множеством параметров. Одни параметры создают новые цепочки, другие добавляют правила в цепочки (см. табл. 14.1).
Параметры программы ipchains Таблица 14.1
Параметр Описание -N Создать новую цепочку -X Удалить пустую цепочку -P Изменить стратегию для пустой цепочки -L Вывести правила цепочки -F Удалить все правила из цепочки -Z Обнулить счетчики пакетов и байтов во всех правилах цепочки -А Добавить новое правило к цепочке -I Вставить новое правило в определенную позицию -R Заменить правило -D Удалить правило, удовлетворяющее какому-нибудь условиюОдин из примеров использования IPChains мы уже рассматривали в главе 8. Напомню, в той главе нужно было организовать маршрутизацию средствами IPChains. При этом использовались следующие команды:

