Михаил Флёнов - Linux глазами хакера
- Название:Linux глазами хакера
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2005
- Город:Санкт-Петербург
- ISBN:5-94157-635-8
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Михаил Флёнов - Linux глазами хакера краткое содержание
Рассмотрены вопросы настройки ОС Linux на максимальную производительность и безопасность. Описаны потенциальные уязвимости и рекомендации по предотвращению возможных атак. Дается подробное описание настройки прав доступа и конфигурирования сетевого экрана. Показано, как действовать при атаке или взломе системы, чтобы максимально быстро восстановить ее работоспособность и предотвратить потерю данных.
Для пользователей, администраторов и специалистов по безопасности
Linux глазами хакера - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
Chain input (policy ACCEPT):
Chain forward (policy ACCEPT):
Chain output (policy ACCEPT):
Chain icmp (0 references) :
В зависимости от дистрибутива настройки по умолчанию могут отсутствовать, тогда вместо правил вы увидите следующее сообщение об ошибке:
ipchains: Incompatible with this kernel (невозможно для этого ядра).
Такая фраза может появиться, если ipchains отсутствует или запущена неверно. Я уже не раз встречал это сообщение, потому что производители дистрибутивов неверно конфигурируют систему по умолчанию. А ведь лечится эта ошибка достаточно просто, и ядро тут ни при чем.
Просмотрите файл /etc/rc.d/init.d/ipchainsс помощью текстового редактора программы МС или команды
cat
. Первое будет удобнее. Нужно найти в файле следующую строку:
IPCHAINS_CONFIG=/etс/sysconfig/ipchains
Путь к файлу в директиве
IPCHAINS_CONFIG
может быть другим. В современных дистрибутивах в директории /etc/sysconfig/хранятся файлы конфигурации служб. Для сервиса ipchains это файл ipchains. Проверьте его существование следующей командой:
ls /etc/sysconfig/ipchains
Если файл не существует, то его следует создать. Для этого выполним следующую команду:
cat >> /etc/sysconfig/ipchains
Отныне все команды, вводимые в консоль, будут сохраняться в файле. Для того чтобы сервис ipchains заставить работать, достаточно ввести:
:input ACCEPT
Теперь нажмите клавиши + и перезапустите сервис ipchains следующей командой:
/etc/rc.d/init.d/ipchains restart
Обратите внимание, что нужно указать полный путь. Если этого не сделать, то будет запущена утилита ipchains, а не сценарий запуска из директории /etc/rc.d/init.d/.
Вот теперь команда должна выполниться успешно.
Для начала давайте запретим любой трафик. Но прежде, чем мы перейдем к созданию правил, сделаю еще одно замечание. Любую систему нужно начинать конфигурировать с чистого листа, потому что настройки по умолчанию могут оказаться не слишком эффективными и небезопасными. Выполните команду
ipchains -F
, чтобы обнулить текущие настройки. Сетевой экран — это сердце защиты, поэтому в данном случае очистка является наиболее важной.
Теперь зададим политику по умолчанию. Для этого нужно выполнить команду
ipchains
с параметром -P
для каждой цепочки и указать политику безопасности:
ipchains -Р input DENY
ipchains -Р output REJECT
ipchains -P forward DENY
Обратите внимание, что для входящих (input) и проходящих (forward) пакетов я установил полный запрет, поэтому они будут удаляться без каких-либо предупреждений. Для исходящей информации можно поставить в правило
REJECT
, чтобы внутренние клиенты при попытке подключения к серверу могли получить сообщение об ошибке.
Теперь ваш компьютер невиден и недоступен в сети. Попробуйте проскандировать порты или выполнить команду
ping
к серверу. Оба действия не дадут результата, как будто компьютера вообще не существует для окружающих.
4.11.2. Примеры добавления ipchains-правил
Давайте теперь указывать права, чтобы разрешить какой-либо доступ к серверу. Только вы должны учитывать, что если добавлять правило в конец набора, то нет гарантии, что оно будет работать верно. В цепочке уже может быть запрет, поэтому доступ будет закрыт раньше, чем сработает наше правило. Чтобы не столкнуться с такой проблемой, я в примерах буду вставлять новое правило первым (указывать ключ
-I
и номер 1
).
Если вы добавляете общее правило запрета, то его следует поместить в самый конец. Когда правило касается конкретного действия, порта или адреса, то его место в начале цепочки. Таким образом, в вашем своде сначала будут идти специфические правила, а потом глобальные.
Допустим, что у нас используется публичный Web-сервер, и нужно разрешить всем пользователям работать с 80 портом (именно его используют Web-серверы по умолчанию). Для решения этой проблемы выполняем команды:
ipchains -I input 1 -р tcp -d 192.168.77.1 80 -j ACCEPT
ipchains -I output 1 -p tcp -s 192.168.77.1 80 -j ACCEPT
В качестве порта можно указывать как числовое значение, так и имя. Это значит, что приведенные выше команды можно записать таким образом:
ipchains -I input 1 -р tcp -d 192.168.77.1 web -j ACCEPT
ipchains -I output 1 -p tcp -s 192.168.77.1 web -j ACCEPT
Здесь вместо 80 порта указано его имя
web
, и программа ipchains корректно отработает с этим аргументом.
Рассмотрим каждый ключ первой строки в отдельности:
□
-I input 1
— ключ -I
указывает на необходимость вставки правила под заданным номером. Потом показываем цепочку, в которую надо вставить правило, в данном случае это input. Цифра 1 обозначает номер, под которым вставляется правило, т.е. оно будет первым;
□
-р tcp
— Web-сервер работает по протоколу HTTP, который использует в качестве транспорта TCP. С помощью ключа -р
мы в явном виде указываем протокол. Не забывайте делать это. В противном случае вы откроете одновременно доступ к сервисам на двух портах (TCP и UDP). Хорошо, если на 80 порту UDP в этот момент не будет работать какая-нибудь программа;
□
-d 192.168.77.1 80
— правило проверяет, чтобы получателем был порт 80 (или его имя web) на сервере с адресом 192.168.77.1. В данном случае этот IP принадлежит моему серверу. Это значит, что я разрешил входящие пакеты на 80 порт своего компьютера. Адрес отправителя в правиле не указан, а значит, может быть любым;
□
-j ACCEPT
— опция устанавливает разрешение. Если пакет соответствует правилам, заданным предыдущими ключами (в данном случае проверяется адрес и порт назначения и протокол), то он будет пропущен.
В соответствии с первой строкой посылать на сервер запросы разрешается всем. Но Web-сервер должен иметь возможность возвращать страницы на запросы клиентов. Для этого нужно открыть 80 порт моего сервера (192.168.77.1) для всех исходящих пакетов. Именно это делает вторая строка.
Выполните команду
ipchains -L
, и в результате вы должны увидеть следующее содержимое всех ваших цепочек:
Chain input (policy DENY):
target prot opt source destination ports
ACCEPT tcp ------ anywhere flenovm.ru any -> http
Chain forward (policy DENY):
Chain output (policy DENY):
target prot opt source destination ports
ACCEPT tcp ------ flenovm.ru anywhere http -> any
Chain icmp (0 references):
В цепочках input и output появилось по одной строке. Обратите внимание, что в колонках
source
и destination
обеих цепочек IP-адрес заменился на доменное имя моего компьютера flenovm.ru
. Если сервер может определить имя, то он делает такую подмену. Посмотрите на колонку ports
, здесь номер порта 80 заменен на http.
Я советую вам внимательно проанализировать созданный нами список фильтров, чтобы вы четко понимали каждую его колонку. Рассмотрим структуру строк на примере цепочки input:
Интервал:
Закладка: