Безопасность сети становиться все более и более важной, поскольку люди все больше и больше времени проводят в сети. Прорвать безопасность сети часто проще нежели физическую или локальную безопасность, и это является намного более обыкновенным событием.
Существует большое количество хороших инструментов для поддержки безопасности сети, и все больше и больше из них поставляются с дистрибутивами Linux.
Одним из наиболее общих методов, которые взломщики могут использовать для получения доступа к многим машинам в вашей сети, является применение пакетного ищейки с уже взломаных машины. Этот "ищейка" просто слушает Ethernet порт на предмет наличия "Password", "Login" или "su" в потоке пакетов и записывает в журнал всю информацию, идущую следом. В такой способ взломщик получает пароли систем, которые он даже и не пробовал пока взламывать. Очень уязвимы к этому виду атаки не зашифрованные пароли, которые передаются простым текстом.
Пример: на компьютере А была взломана система безопасности. Взломщик инстралировал ищейку. Ищейка записал процесс регистрации администратора с компьютера В на компьютер Б. Таким образом он получил персональный пароль системного администратора для регистрации на Б. Затем для решения своих задач администратор набирает "su". Таким образом взломщик получает администраторский пароль компьютера Б. Позже администратор разрешает кому-то запустить telnet из его счета на компьютер Г в другой сети. Теперь взломщик знает пароль/счет на компьютере Г.
В наше время для выполнения подобных операций взломщику даже не нужно взламывать какую-либо систему, он может просто принести ноутбук или ПК в здание и присоединиться к вашей сети.
Использование ssh или других методов шифрования паролей срывает подобные атаки. Для POP счетов мешают проведению таких атак пакеты подобные APOP. (Обычная pop регистрация беззащитна от подобных атак, поскольку как и все остальное пароли по сети передаются открытым текстом.)
Как только вы подключаете вашу Linux систему к ЛЮБОЙ сети, вам сразу же нужно решить, какие сервисы предоставлять. Сервисы, которые вы не будете предоставлять, должны быть выключены, чтобы у вас было меньше вещей, о которых вам нужно беспокоиться, и взломщику будет меньше мест для выискивания дыр.
Существует много способов выключить сервисы в Linux. Вы можете посмотреть в файле /etc/inetd.conf, какие сервисы у вас предоставляются через inetd. Чтобы выключить все, что вам ненужно, просто закоментируйте соответствующие строчки, а затем пошлите вашему inetd SIGHUP (прим. перев. killall -HUP inetd).
Вы также можете удалить (или закомментрировать) соответствующие сервисы в файле /etc/services. Это означает, что локальный клиент также не сможет использовать эти сервисы (например, если вы удалите ftp, а затем попробуете сделать ftp связь с этой машины на удаленный компьютер, вы получите ошибку типа "неизвестный сервис"). Обычно не стоит удалять сервисы, если это не приносит дополнительного повышения уровня безопасности. Если локальный пользователь хочет использовать ftp в том случае, когда вы его уже закомментировали, он может создать своего собственного клиента, который будет использовать общий ftp порт и отлично работать.
Вот некоторые из сервисов, которые вам нужно оставить включенными:
Если вы знаете, что вы не собираетесь использовать какие-то пакеты, лучше их полностью удалить. В дистрибутиве RedHat полностью удаляет пакет команда rpm -e. В Debian подобные вещи делает dpkg.
Дополнительно вам действительно лучше в файле /etc/inetd.conf выключить rsh/rlogin/rcp, включая login (используется rlogin), shell (используется rcp) и exec (используется rsh). Эти протоколы чрезвычайно небезопасны и часто были в прошлом причиной взломов.
Вы должны также проверить ваши /etc/rc.d/rcN.d, где N стартовые уровни вашей системы, на предмет наличия сервисов в этих каталогах, которые вам не нужны. Файлы в /etc/rc.d/rcN.d фактически являются символьными ссылками на файлы в каталоге /etc/rc.d/init.d. Переименование файлов в каталоге init.d выключит все символьные ссылки в /etc/rc.d/rcN.d. Если вы хотите выключить сервис только в определенном стартовом уровне, то переименуйте соответствующий файл, чтобы он начинался с маленькой буквы "s"?, а не с большой как надо (скажем S45dhcpd).
Если у вас rc файлы в стиле BSD, вам нужно проверить /etc/rc* для обнаружения ненужных программ.
Большинство дистрибутивов Linux поставляется с tcp_wrapper, которые "заворачивают" все ваши tcp сервисы. tcp_wrapper (tcpd) вызывается из inetd, а не является отдельным сервером. tcpd затем проверяет компьютер, который запрашивает сервис, и либо запускает реальный сервер либо запрещает доступ от этого компьютера. tcpd позволяет вам ограничить доступ к вашим tcp сервисам. Вы можете создать /etc/hosts.allow и добавить в него только те машины, которым нужно иметь доступ к сервисам на вашем компьютере.
Если вы являетесь домашним пользователем с коммутируемым доступом, то мы рекомендуем вам запретить доступ всем (deny ALL). tcpd также протоколирует все неудачные попытки доступа к сервисам, так что это позволят отследить возможные атаки. Если вы добавляете новые сервисы, вы обязательно должны сконфигурировать их, чтобы использовать основываясь на tcp_wrappers. Например, обыкновенный dial-up пользователь может запретить доступ к своему компьютеру извне, и в то же время иметь возможность забирать почту и путешествовать в интернете. Чтобы это сделать, вам нужно добавить к файлу /etc/hosts.allow:
ALL: 127.
И конечно же /etc/hosts.deny должен содержать:
ALL: ALL
что запретит внешние соединения к вашей машине, позволяя тем не менее вам изнутри соединяться с серверами в Интернете.
Поддержка постоянно свежей DNS информации о всех компьютерах в вашей сети может помочь повысить безопасность. В том случае, когда несанкционированный компьютер подключится к вашей сети, вы можете опознать его по неудачному запросу к DNS. Большинство сервисов можно сконфигурировать таким образом, чтобы они не принимали запросы на соединение от компьютеров без правильной DNS информации.
identd маленькая программка, которой обычно оканчивается ваш inetd. Она записывает информацию о том, какой пользователь запускает какой tcp сервис, а затем выдает отчет тому, кто запрашивает.
Многие люди не понимают полезность identd, поэтому выключают ее либо блокируют все внешние запросы к ней. identd не та вещь, которая поможет удаленным компьютерам. Не существует способа узнать, корректна ли информация, которую вы получили от удаленного identd. В identd запросах нет идентификации.
Тогда зачем же нужно вам ее запускать? Потому что она помогает ВАМ являясь еще одним инструментом отслеживания ситуации. Если ваш identd не взломан, тогда вы знаете, что он выдает удаленным компьютерам имена пользователей или uid пользователей, используя tcp сервисы. Если администратор удаленной системы придет к вам и скажет, что такой-то пользователь так-то пытался проникнуть в его систему, вы легко можете предпринять действия против такого пользователя. Если вы не включили identd, вам нужно просмотреть много протоколов, чтобы узнать, кто был в то время, и вообще потратить много времени, чтобы вычислить пользователя.
identd, который поставляется с большинством дистрибутивов, намного более настраиваем, нежели многие думают. Вы можете закрыть identd для определенных пользователей (можно создать файл .noident), вы можете протоколировать все запросы к identd (я рекомендую это), вы можете даже заставить identd возвращать uid вместо имени пользователя, или даже NO-USER.
Существует много различных программных пакетов, которые выполняют сканирование портов или сервисов в компьютерах или сетях. SATAN и ISS являются двумя наиболее известными из них. Эти программы соединяются с целевым компьютером (или всеми целевыми машинами в сети) по всем доступным портам и пытается определить, какие там запущены сервисы. Основываясь на этой информации вы можете обнаружить уязвимые к определенным методам атаки машины.
SATAN (Инструмент администратора безопасности для анализа сетей) является сканером портов с web интерфейсом. Он может быть полезен для выполнения легкой, средней или тщательной проверки машины или сети машин. Неплохо иметь SATAN и сканировать вашу систему или сеть, и сразу же устранять обнаруженные им проблемы. Убедитесь, что ваша копия SATAN из sun-site или известного FTP или Web сервера. Были троянские копии SATAN, которые распространялись по Сети. http://www.trouble.org/~zen/satan/satan.html
ISS (Сканер безопасности интернета) является также сканером портов. Он быстрее чем SATAN, и таким образом может быть лучше для больших сетей. Однако SATAN предоставляет больше информации.
Abacus-Sentry является коммерческим сканером портов с www.psionic.com. Для получения большей информации сходите на их домашнюю web страничку http://www.psionic.com
Обнаружение сканеров портов
Существуют некоторые инструменты, которые призваны предупредить вас об работающих SATAN, ISS и других сканирующих программах. Однако используя tcp_wrapper, регулярно проверяя ваши протоколы, вы и сами заметите такие попытки. Даже при наименьших установках SATAN оставляет следы присутствия в журналах системы, оборудованной RedHat.
Одним из наиболее важных сервисов, которые вы можете предоставлять, является сервер электронной почты. К сожалению он также наиболее уязвим к атакам, просто из-за огромного числа задач, которые он должен выполнять, и привилегий, которые ему обычно нужны.
Если вы используете sendmail, очень важно иметь самую последнюю версию. Sendmail имеет очень длинную историю развития безопасности. Всегда используйте только последнюю версию. http://www.sendmail.org
Если вы устали модернизировать ваш sendmail каждую неделю, вы можете решить перейти на qmail. qmail изначально разрабатывали подразумевая безопасность. Он быстрый, стабильный и безопасный. http://www.qmail.org
Атака "Отказ в предоставлении сервиса" состоит в том, что взломщик пытается искусственно загрузить некоторые сервисы настолько, чтобы они не могли отвечать на законные запросы или запрещали доступ к вашей машине законным пользователям.
В последние годы количество атак данного типа очень сильно возросло. Некоторые из наиболее популярных и свежих перечислены ниже. Имейте ввиду, что все время обнаруживаются новые, так что здесь приведены только примеры. Для получения последней информации читайте списки рассылки Linux security и bugtraq, а также архивы.
Если вы подверглись атаке типа ping flood, то для обнаружения машины, с которой пришли пакеты (или откуда они появляются), используйте инструмент типа tcpdump, и затем обратитесь с этой информацией к вашему провайдеру. Ping flood легко можно остановить на уровне маршрутизатора или используя щит (firewall).
NFS является очень широко используемым протоколом совместного использования файлов. Он позволяет серверам запуская nfsd и mountd "экспортировать" целые файловые системы для других машин со встроенной в ядро поддержкой nfs (или поддержки некоторых других клиентов, если это не Linux машины). Mountd ведет журнал примонтированых файловых систем в /etc/mtab и может выдать их по команде showmount.
Многие сервера используют NFS для предоставления пользователям домашних каталогов, так что не имеет значения на какой из машин в кластере пользователи регистрируются, они сразу получают все свои файлы.
Существуют довольно небольшие возможности реализации безопасности в экспортируемых файловых системах. Вы можете с помощью nfsd приравнять администратора удаленной системы к пользователю nobody (т.е. с минимальными правами) на вашей системе, запрещая ему тем самым полный доступ к экспортируемым файлам. Однако, поскольку конкретные пользователи имеют полный доступ к их собственным файлам (или по крайней мере с одинаковым uid), то удаленный администратор может зарегистрироваться или сделать su к их счетам, и таким образом получить доступ к их файлам. Это только небольшое препятствие для взломщика, чтобы получить доступ для монтирования вашей удаленной файловой системы.
Если вы вынуждены использовать NFS, то прежде всего убедитесь, что вы экспортируете только тем машинам, которым это действительно нужно. Никогда не экспортируйте полностью ваш root каталог, экспортируйте только те каталоги, которые необходимо.
Для более детальной информации смотрите NFS HOWTO: NFS HOWTO
Сетевой информационный сервис (бывший YP - желтые страницы) заключается в распространении информации группе машин. NIS мастер (сервер) хранит информационные таблицы и конвертирует их файлы карт NIS. Затем эти карты передаются по сети, позволяя NIS клиентам (компьютерам) получать имя счета, пароль, домашний каталог и информацию shell (фактически всю информацию стандартного файла /etc/passwd). Это позволяет пользователю изменить пароль за один раз на всех машинах в NIS домене, где он имеет счет.
NIS совсем небезопасен. Он никогда и не предполагался быть таким. Он предполагался быть удобным и полезным. Любой, кто может угадать имя вашего NIS домена (где-либо в сети) может получить копию вашего файла passwd, а затем использовать "crack" и "john the ripper" для взламывания паролей ваших пользователей. Также можно обманывать NIS и проводить другие подобные трюки. Если вы вынуждены использовать NIS, помните об опасностях связанных с ним.
Существует намного более безопасный преемник NIS, называемый NIS+. Обратитесь к NIS HOWTO за более детальной информацией: http://sunsite.unc.edu/mdw/HOWTO/NIS-HOWTO.html
Под щитом подразумевается ограничение на прохождение информации как внутрь так и за пределы вашей локальной сети. Обычно компьютер, выполняющий роль щита, соединен с интернетом и вашей локальной сетью, и доступ к интернету из вашей локальной сети выполняется только через него. Таким образом щит может контролировать, что приходит из интернета в локальную сеть, и что уходит из локальной сети в интернет.
Существует большое количество типов и методов организации щита. Linux система реализует довольно хороший щит низкой стоимости. Код, реализующий щит, может быть встроен прямо в ядро начиная с версии 2.0 и выше. Инструмент ipfwadm позволяет вам определять, какой части сетевого трафика можно уходить в интернет или приходить из него. Вы можете также протоколировать определенные типы сетевого трафика.
Щит является очень полезным и важным инструментом в обеспечении безопасности вашей сети. Важно понять, что вы не должны забывать о безопасности только из-за того, что у вас есть щит, и не заботиться о безопасности машин за щитом. Это будет фатальной ошибкой. Советуем заглянуть в очень хороший Firewall-HOWTO для более детального ознакомления с реализацией щита в Linux. http://sunsite.unc.edu/mdw/HOWTO/Firewall-HOWTO.html
Информацию по этому вопросу можно также найти в IP-Masquerade mini-howto: http://sunsite.unc.edu/mdw/HOWTO/mini/IP-Masquerade.html
Детальную информацию по ipfwadm (инструменту, который позволяет вам изменять установки вашего щита), можно найти на его домашней странице : http://www.xos.nl/linux/ipfwadm/