Несколько минут подготовки и прогнозного планирования прежде чем открыть вашу систему Интернету может помочь защитить как ее, так имеющиеся в ней данные.
@users hard core 0
@users hard nproc 50
@users hard rss 5000
Это запрещает создание core файлов, ограничение количества процессов значением 50, и ограничение использования памяти 5МВ на пользователя.
Найдите все SUID/SGID программы в вашей системе и посмотрите, что они из себя представляют, таким образом вы будете знать, что любое изменение в них является индикатором возможного взлома. Чтобы найти все SUID/SGID программы в вашей системе используйте следующую команду:
root# find / -type f \( -perm -04000 -o -perm -02000 \)
Вы можете дискриминативно убрать все SUID или SGID права для всех
подозрительных программ используя chmod(1), а затем поставить обратно,
если вы будете абсолютно уверены в необходимости этого.
root# find / -perm -2 -print
и убедитесь, что вы действительно знаете, почему в эти файлы разрешена
запись. В условиях нормальной работы только для некоторых файлов будет
разрешена запись, включая некоторые из /dev и символьные ссылки.Файлы без владельца также могут быть индикатором внедрения в вашу систему взломщика. Файлы без владельца или с таковым без принадлежности к какой-либо группе можно обнаружить с помощью команды:
root# find / -nouser -o -nogroup -print
root# find /home -name .rhosts -print
И наконец, перед тем как изменить права доступа каких-либо системных файлов, убедитесь, что вы понимаете, что делаете. Никогда не изменяйте права доступа файла только потому, что это является простым способом заставить что-то работать. Прежде чем изменять, всегда определяйте, почему файл имеет именно такие права доступа.
Команду umask можно использовать для определения режима создания файлов в вашей системе, принимаемого по умолчанию. Она представляет битовое дополнение до желаемого значения режима файла. Если файлы создаются без какого-либо специального набора прав доступа, то можно случайно разрешить чтение или запись тому, кто не должен иметь таких прав. Типично принятыми umask являются 022, 027 и 077, которые наиболее ограничивающие. Нормальным будет установить значение umask в /etc/profile, так чтобы оно применялось ко всем пользователям в системе. Например, вы можете иметь строку подобную следующей:
# Значение umask по умолчанию для всех пользователей
umask 033
Убедитесь, что значение umask для администратора составляет 077, что
запрещает чтение, запись и выполнения для остальных пользователей, до
тех пор, пока это не будет изменено явно командой chmod(1).
Если вы используете Red Hat и придерживаетесь их схемы создания ID пользователя и группы (собственная группа пользователя), то для значения umask необходимо использовать только 002. Это из-за того, что настройки по умолчанию определяют одного пользователя на группу.
Важно убедиться, что ваши системные файлы закрыты для случайного редактирования пользователями и группами, которые не должны выполнять таких действий.
UNIX разделяет контроль доступа к файлам и каталогам по трем принадлежностям: владелец, группа, все остальные. Существует всегда один владелец, любое количество членов группы и еще все остальные.
Быстрое объяснение прав доступа в unix:
Собственность - Какой пользователь(ли) и группа(ы) удерживает контроль установок прав вершины (node) и родителя вершины.
Права доступа - Назначаемые или переназначаемые в битовом выражении установки, которые разрешают некоторый тип доступа к собственности. Права доступа к каталогам могут иметь отличающиеся значения от оных у файлов, содержащихся в них.
Чтение:
Запись:
Выполнение:
sticky бит также имеет отличное значение применимо к каталогам. Если sticky бит установлен для каталога, то пользователь может удалять только те файлы, владельцем которых он является, или к которым ему явно заданы права записи, несмотря на то, что ему разрешена запись в этот каталог. Это сделано для каталогов подобных /tmp, в которые разрешена запись всем, но в которых нежелательно разрешать любому пользователю удалять файлы от нечего делать. sticky бит видно как 't' в полном режиме отображения содержимого каталога. (long listing).
Описывает set-user-id права на файл. Если права доступа set-user-id установлены во "владелец" и файл исполняемый, то процесс, который запускает его, получает доступ к системным ресурсам основываясь на правах пользователя, который создал этот процесс. Во многих случаях это является причиной возникновения 'buffer overflow'.
Если установлен в правах доступа "группы", этот бит контролирует "set group id" статус файла. При этом он работает также как и SUID, только задействована при этом группа, а не отдельный пользователь.
Если вы установите SGID бит для каталога (командой "chmod g+s directory"), то файлы содержащиеся в этом каталоге будут иметь установки группы такие, как у каталога.
Вы - Владелец файла
Группа - Группа, к которой вы принадлежите
Остальные - Любой в системе, кто не является владельцем либо членом группы
Пример файла:
-rw-r--r-- 1 kevin users 114 Aug 28 1997 .zlogin
1й бит - каталог? (нет)
2й бит - чтение владельцем? (да, для kevin)
3й бит - запись владельцем? (да, для kevin)
4й бит - выполнение владельцем? (нет)
5й бит - чтение группой? (да, для users)
6й бит - запись группой? (нет)
7й бит - выполнение группой? (нет)
8й бит - чтение остальными? (да, для остальных)
9й бит - запись остальными? (нет)
10й бит - выполнение остальными? (нет)
Следующие строчки являются примером минимальных установок прав, которые требуются для предоставления описанного доступа. Вы можете захотеть предоставить больше прав, чем приведено, но здесь описано, что эти минимальные права на файл разрешают:
-r-------- Разрешают чтение файла владельцем
--w------- Разрешают владельцу изменение или удаление файла
---x------ Владелец может выполнять эту программу, но не скрипты
командного интерпретатора, которые еще нуждаются в правах
на чтение
---s------ Будет выполняться с эффективным пользовательским ID = владелец
-------s-- Будет выполняться с эффективным пользовательским ID = группа
-rw------T Не обновлять "последнего времени изменения". Обычно используется
для swap файлов
---t------ Не действует. (прежде sticky бит)
Пример каталога:
drwxr-xr-x 3 kevin users 512 Sep 19 13:47 .public_html/
1й бит - каталог? (да, содержит много файлов)
2й бит - чтение владельцем? (да, для kevin)
3й бит - запись владельцем? (да, для kevin)
4й бит - выполнение владельцем? (да, для kevin)
5й бит - чтение группой? (да, для users)
6й бит - запись группой? (нет)
7й бит - выполнение группой? (да, для users)
8й бит - чтение остальными? (да, для остальных)
9й бит - запись остальными? (нет)
10й бит - выполнение остальными? (да, для остальных)
Следующие строчки являются примером минимальных установок прав, которые требуются для предоставления описанного доступа. Вы можете захотеть предоставить больше прав, чем приведено, но здесь описано, что эти минимальные права на файл разрешают:
dr-------- Можно просмотреть содержание, но нельзя прочесть атрибуты файла
d--x------ Можно войти в каталог, а также использовать его в полной записи
файла (т.е. с путем к нему)
dr-x------ Владелец может теперь просмотреть атрибуты файла
d-wx------ Файлы теперь можно создавать/удалять, даже если каталог
не текущий
d------x-t Предотвращает файлы от удаления остальными с правами записи.
Используется для /tmp
d---s--s-- Никаких действий
Системные конфигурационные файлы (обычно в /etc) имеют обычно режим 640 (что означает -rw-r-----) и являются собственностью администратора. В зависимости от требований безопасности в вашей системе, вы можете изменить эти установки. Никогда не предоставляйте возможности записи в системные файлы для "группы" или "остальных". Некоторые конфигурационные файлы, включая /etc/shadow, должны разрешать чтение только администратору, а каталоги в /etc должны по крайней мере быть недоступны другим.
SUID скрипты командного интерпретаторa являются также риском безопасности, по этой причине ядро не обслуживает их. Независимо от вашего мнения о том насколько безопасным является скрипт, он может быть переделан для выдачи взломщику оболочки администратора.
Другим хорошим способом обнаружить локальные (а также сетевые) атаки на вашу систему является использование тестеров целестности (integrity checkers) подобных Tripwire. Tripwire вычисляет контрольные суммы для всех важных бинарных и конфигурационных файлов в вашей системе и сравнивает их с предыдущими, хорошо известными, из базы данных. Таким образом любые изменения в файлах будут замечены.
Хорошей идеей будет записать tripwire на дискету, а затем установить на нее защиту от записи. Таким образом взломщик не сможет подделать tripwire или изменить базу данных. Как только вы установили tripwire будет неплохо включить в свои обязанности администратора безопасности проверку с помощью него на предмет каких-либо изменений.
Вы можете даже добавить в список задач crontab запуск tripwire c вашей дискеты каждую ночь и посылку результатов вам по почте утром. Что-то наподобие этого:
# установить получателя
MAILTO=kevin
# запустить tripwire
15 05 * * * root /usr/local/adm/tcheck/tripwire
будет отсылать вам по почте отчет каждое утро в 5:15.
Tripwire может быть всевышним в обнаружении взломщиков еще до того, как вы заметите их. Как только в системе появится некоторое количество измененных файлов, вы должны понимать, что имеет место деятельность взломщика, и знать, что делать вам самим.
Термин "Троянский Конь" взят из великого творения Гомера. Идея состоит в том, что вы создаете программу, который чем-либо привлекателен, и каким-либо способом заставляете других людей скачать ее и запустить как администратор. Затем, пока они не разобрались, вы можете разрушить их систему. Пока они думают, что программа, которую они только-что вытянули, делает одну вещь (и может даже очень хорошо), она также разрушает их систему безопасности.
Вы должны быть очень внимательны при установке новых программ на вашу машину. RedHat предоставляет MD5 контрольные суммы и PGP ключи для RPM файлов, так что вы можете проверить действительно ли вы инсталируете реальные продукты. Другие дистрибутивы имеют подобные методы. Вы никогда не должны запускать из под администратора бинарники, для которых у вас нет исходников, или о которых вы ничего не слышали! Немногие взломщики имеют желание выложить на всеобщее обозрение исходный код.
Также может быть общим совет брать исходники некоторых программ с их реальных дистрибутивных серверов. Если программу нужно запускать из под администратора, проверьте исходный код сами или дайте на проверку тому, кому вы доверяете.