Исследование уровня безопасности операционной системы Linux
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?ество одновременно запущенных процессов. Должно иметь значение 20.
nofile количество одновременно открытых файлов. Должно быть установлено в 30.
core размер файла ядра. Для запрета на создание файлов ядра значение этого параметра должно быть установлено в 0.
В результате файл /etc/security/limits.conf будет иметь вид:
@usershardnproc20
@usershardnofile30
@usershardcore 0
Для того, чтобы активизировать ограничение ресурсов для конкретного приложения, вызов модуля pam_limits необходимо добавить в соответствующий файл iенария библиотеки PAM. Для локального входа пользователей этим приложением является программа login, которая имеет одноименный файл iенария в каталоге /etc/pam.d. После модификации файл /etc/pam.d/login может выглядеть следующим образом:
#%PAM-1.0
authrequired pam_securetty.so
authrequired pam_stack.so service=system-auth
authrequired pam_nologin.so
accountrequired pam_stack.so service=system-auth
passwordrequired pam_stack.so service=system-auth
sessionrequired pam_stack.so service=system-auth
sessionoptional pam_console.so
sessionrequired pam_limits.so
Последняя строка предписывает библиотеке PAM использовать модуль pam_limits, причем успешное прохождение через этот модуля является необходимым для успешного завершения процесса аутентификации в целом.
Для терминального доступа по протоколу ssh вызов модуля pam_limits необходимо также добавить в файл /etc/pam.d/sshd. В итоге этот файл может быть таким:
#%PAM-1.0
authrequired pam_stack.so service=system-auth
authrequired pam_nologin.so
accountrequired pam_stack.so service=system-auth
passwordrequired pam_stack.so service=system-auth
sessionrequired pam_stack.so service=system-auth
sessionoptional pam_console.so
sessionrequired 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 являет?/p>