Реферат: Исследование уровня безопасности операционной системы Linux
#!/bin/bash
# Turn off quotas
quotaoff –aug
# Check quotas
quotacheck –aug
# Turn on quotas
quotaon –aug
Тогда строка запуска проверки квот в конфигурационном файле /etc/crontab программы cron может выглядеть следующим образом:
0 3 * * 0 root /usr/sbin/chkquota
Эта конфигурация позволяет выполнять проверку квот каждое воскресенье в три часа ночи. Для более детального ознакомления с форматом файла /etc/crontab существуют man-руководства, включенные в пакет cron.
ПРИМЕР 5.
Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Назначение - сервер приложений. Программное обеспечение – библиотека pam-0.75-32.
Задача: настроить ограничения ресурсов, используемых в процессе работы, для пользователей группы users. Необходимо ограничить количество одновременно запущенных процессов до 20, количество одновременно открытых файлов до 30 и запретить создание каких-либо файлов ядра.
Реализация.
Ограничением ресурсов занимается модуль pam_limits. Этот модуль использует файл конфигурации /etc/security/limits.conf, в котором и задаются необходимые параметры ограничения. Файл состоит из строк, каждая из которых определяет ограничение на определенный вид ресурса. Формат строки следующий:
<субъект_ограничения> <тип> <объект_ограничения> <значение>
Субъектом ограничения может быть либо одиночный пользователь, либо группа, которая определяется добавлением знака @ перед ее именем, либо значок *, означающий, что ограничение должно распространяться на всех без исключения. Для реализации задачи субъектом ограничения будет служить слово @users.
Тип ресурса может быть либо soft, либо hard. Значение soft задает мягкое ограничение на использование указанного ресурса, а значение hard определяет жесткое или абсолютное предельное значение использования ресурса. Для реализации задачи лучше всего будет указать жесткое ограничение на все виды ресурсов.
Объект ограничения указывает, на какой вид ресурса распространяется это ограничение. Для реализации задачи в качестве ограничиваемых объектов необходимо указать следующие параметры:
nproc – количество одновременно запущенных процессов. Должно иметь значение 20.
nofile – количество одновременно открытых файлов. Должно быть установлено в 30.
core – размер файла ядра. Для запрета на создание файлов ядра значение этого параметра должно быть установлено в 0.
В результате файл /etc/security/limits.conf будет иметь вид:
@users hard nproc 20
@users hard nofile 30
@users hard core 0
Для того, чтобы активизировать ограничение ресурсов для конкретного приложения, вызов модуля pam_limits необходимо добавить в соответствующий файл сценария библиотеки PAM. Для локального входа пользователей этим приложением является программа login, которая имеет одноименный файл сценария в каталоге /etc/pam.d. После модификации файл /etc/pam.d/login может выглядеть следующим образом:
#%PAM-1.0
auth required pam_securetty.so
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session optional pam_console.so
session required pam_limits.so
Последняя строка предписывает библиотеке PAM использовать модуль pam_limits, причем успешное прохождение через этот модуля является необходимым для успешного завершения процесса аутентификации в целом.
Для терминального доступа по протоколу ssh вызов модуля pam_limits необходимо также добавить в файл /etc/pam.d/sshd. В итоге этот файл может быть таким:
#%PAM-1.0
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
account required pam_stack.so service=system-auth
password required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
session optional pam_console.so
session required pam_limits.so
При такой конфигурации как локальный, так и удаленный доступ для пользователей группы users будет иметь ограничения на указанные ресурсы.
ПРИМЕР 6.
Исходные данные: ОС Linux RedHat 7.3 без графической оболочки. Назначение - маршрутизатор. Программное обеспечение – iptables-1.2.5, ядро версии 2.4.22, собранное с поддержкой netfilter и iptables. На сервере установлены три сетевые карты. С помощью двух сетевых карт под символическими именами eth0 и eth1 сервер связывает две локальные TCP/IP сети с различными диапазонами IP адресов. Первая сеть имеет адрес 192.168.0.0, вторая – 192.168.1.0, обе сети имеют маску 255.255.255.0. Сетевая карта eth0 имеет IP адрес 192.168.0.1, а eth1 – 192.168.1.1. Третья сетевая карта с символическим именем eth2 имеет реальный сетевой адрес 144.333.333.333 обеспечивает выход в Интернет.
Задача: настроить межсетевой экран с повышенными требованиями к безопасности. Из сети Интернет необходимо открыть доступ к HTTP-серверу, почтовой службе, функционирующей по протоколу SMTP, серверу имен DNS, а также терминальный доступ по протоколу SSH. Компьютеры обеих локальных сетей помимо перечисленных сервисов должны иметь возможность получать почту с локального сервера посредством протокола POP3. Также необходимо обеспечить обмен информацией между компьютерами двух локальных сетей, обеспечить выход компьютеров сети 192.168.0.0 в Интернет, а из сети 192.168.1.0 – только компьютерам с IP адресами 192.168.1.30 и 192.168.1.45.
Реализация.
Чтобы маршрутизатор функционировал в качестве шлюза, в ядре необходимо поменять значение переменной ip_forward. Это можно сделать командой приведенной далее, а чтобы эта переменная устанавливалась в 1 при загрузке, необходимо в файле /etc/sysctl.conf найти и раскомментировать, если она закомментирована, строку вида “net.ipv4.ip_forward = 0” и изменить значение 0 в этой строке на 1. Если же такой строки нет, ее необходимо добавить. Таким образом, маршрутизатор получает указание работать в качестве шлюза, то есть обрабатывать пакеты, пришедшие из сети и не адресованные локальным процессам, в соответствии с заранее заданной таблицей маршрутизации. Включение этой функции необходимо для обеспечения доступа в сеть Интернет из двух локальных сетей.
[root@app /]# echo 1 > /proc/sys/net/ipv4/ip_forward
Далее приводится последовательность действий, которые необходимо выполнить, чтобы построить требуемую конфигурацию брандмауэра.
[root@app /]# /sbin/iptables –t filter -P INPUT DROP
[root@app /]# /sbin/iptables –t filter -P OUTPUT DROP
[root@app /]# /sbin/iptables –t filter -P FORWARD DROP
Параметр командной строки –Р позволяет установить политику действия по умолчанию для всех пакетов, которые не попали ни под один критерий в правилах INPUT, OUTPUT и FORWARD. Действие DROP означает, что пакет должен быть уничтожен, если ни одно правило цепочки ему не соответствует. Параметр –t указывает, над какой таблицей производится действие. Если этот параметр не указан, используется таблица filter, поэтому использование этого параметра в данном случае не обязательно.
Для распределения нагрузки и простоты в управлении можно создать в таблице filter дополнительные цепочки с разным функциональным назначением.
[root@app /]# /sbin/iptables -N bad_tcp_packets
[root@app /]# /sbin/iptables -N allowed
[root@app /]# /sbin/iptables -N tcp_packets
[root@app /]# /sbin/iptables -N udp_packets
[root@app /]# /sbin/iptables -N icmp_packets
Цепочка bad_tcp_packets предназначена для отфильтровывания пакетов с "неправильными" заголовками. Здесь отфильтровываются все пакеты, которые распознаются как NEW, то есть пакеты, открывающие новое соединение, но не являются SYN пакетами, то есть часть пакета, ответственная за синхронизацию, отсутствует, а так же обрабатываются SYN/ACK-пакеты, имеющие статус NEW. Эта цепочка может быть использована для защиты от вторжения и сканирования портов.
[root@app /]# /sbin/iptables -A bad_tcp_packets -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j REJECT --reject-with tcp-reset
[root@app /]# /sbin/iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-prefix "New not syn:"
[root@app /]# /sbin/iptables -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j DROP
Цепочка tcp_packets является фильтром сетевых сервисов. Именно в этой цепочке будет осуществляться фильтрация tcp-соединений по критерию запрашиваемого сервиса. В качестве такого критерия используется порт, на который приходят запросы на обслуживание. Для того, чтобы только пользователи локальной сети смогли получать почту, в последних двух правилах в качестве дополнительного критерия фильтрации используются символические имена сетевых интерфейсов локальных сетей. В качестве действия пакет посылается в цепочку allowed для последующей проверки более низкого уровня.
[root@app /]# /sbin/iptables -A tcp_packets -p TCP --dport 22 -j allowed
[root@app /]# /sbin/iptables -A tcp_packets -p TCP --dport 25 -j allowed
[root@app /]# /sbin/iptables -A tcp_packets -p TCP --dport 80 -j allowed
[root@app /]# /sbin/iptables -A tcp_packets -p TCP –i eth0 --dport 110 -j allowed
[root@app /]# /sbin/iptables -A tcp_packets -p TCP –i eth1--dport 110 -j allowed
Цепочка allowed используется для дополнительной фильтрации tcp пакетов, прошедших цепочку tcp_packets и разрешенных в ней. Первое правило проверяет, установлен ли в заголовке пакета бит SYN, то есть, является ли пакет первым пакетом установления соединения. Такие пакеты считаются разрешенными и пропускаются. Второе правило проверяет состояние пакета, и если оно либо ESTABLISHED, либо RELATED, то пакет разрешается. Эти состояния присваиваются пакетам, когда соединение уже установлено и ведется обмен данными. Последнее правило просто сбрасывает все остальные пакеты, не попавшие под первые два правила.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15