Информационные системы для linux

Линукс для начинающих и его практическое применение

Что такое Линукс

Linux – семейство операционных систем с открытым исходным кодом. Ядро Линукс поддерживает добавление и удаление программных компонентов без остановки системы. Эти компоненты называют динамически загружаемыми модулями ядра. Их можно добавлять в операционную систему по необходимости, в любое время. Одна из особенностей Линукс — возможность выступать операционной системой для других операционных систем (в качестве гипервизора). Гипервизор – это программа, позволяющая создавать на компьютере виртуальные ПК с разными операционными системами, которые будут распознаваться в локальной сети. Например, это знаменитая Oracle VirtualBox.

реклама

Другая особенность — нечетные номера версий, например, 2.1 или 2.9 присваиваются экспериментальным, находящимся в разработке ядрам. Стабильные версии обычно имеют чётные номера, например, 2.2 или 2.6.

Первые Линукс изначально были написаны программистами для самих себя. Позднее увеличился выбор программ и появились различные графические интерфейсы (GNOME, KDE, Cinnamon, MATE, XFCE).

реклама

реклама

Разновидностей Линукс довольно много, самые популярные: Linux Mint, Ubuntu, Debian, Mageia, Fedora, OpenSUSE, ArchLinux, CentOS, PCLinuxOS, Slackware.

В России были созданы собственные версии Линукс: Rosa, ALT Linux, ASPLinux, НауЛинукс, Calculate Linux, Runtu, Rosinka, Astra Linux. Их последние годы внедряют в государственных учреждениях.

реклама

Плюсы и минусы Линукс

У Линукс, как и любой другой операционной системы, есть свои достоинства и недостатки. Поэтому прежде чем переходить на одну из ОС этого семейства, изучите её преимущества, а также некоторые особенности, которые в будущем могут сказаться на эффективности Вашей работы.

Основные достоинства Линукс:

  • Для каждой версии Линукс существуют специальные репозитарии – хранилища бесплатных программ на все случаи жизни.
  • Надежность: Линукс могут годами работать без зависаний и перезагрузок, чего не скажешь о других операционных системах.
  • Безопасность: для этой операционной системы отсутствуют вирусы, поскольку каждое важное действие требует подтверждения со стороны пользователя. А для Виндовс ежегодно появляются сотни новых вирусов, антивирусы постоянно отъедают часть ресурсов ОС, требуют трафик для обновления антивирусных баз, тратят уйму времени на сканирование жёсткого диска на вирусы.
  • Открытый исходный код даёт практически неограниченные возможности по настройке ОС под требования пользователя и его задачи.
  • Малое число ошибок и зависаний по сравнению с остальными ОС.
  • Потребляет мало системных ресурсов.
  • Возможность запуска с флешки. Она пригодится, например, при проверке на битые пиксели ноутбука без ОС. Так я обычно подключаю две флешки, первую с Линукс (подойдёт любая версия), а вторую с картинками и видео для проверки на битые пиксели, муар и т.д.
  • Отсутствие реестра, который у Windows постоянно засоряется и требует периодической очистки. В Linux конфигурации всех программ находятся в папке etc.
  • Отсутствие сбора данных, как у Виндовс или Андроид («большой брат» не будет следить за каждым вашим шагом, а потом присылать горы спама с целевой рекламой).
  • Множество бесплатных программ, написанных энтузиастами. Платные программы тоже есть, поэтому выбор за Вами.

Недостатки Линукс, с которыми её разработчики постоянно борются:

  • Новичкам её сложнее освоить, поскольку перед глазами у большинства людей дома, в школе и на работе, установлена Windows. А интерфейс большинства версий Линукс серьёзно отличается.
  • Необходимость работы с консолью и терминалом, что отпугивает многих новичков. Консоль – управление ОС через ввод теста на чёрный экране и там же отображаются ответы системы. Терминал – более современный аналог консоли, имеющий графический интерфейс, отображается в виде окна на фоне рабочего стола Линукс. Это аналоги командной строки в DOS.
  • Часто возникают сложности при настройке принтеров. С каждым годом значимость этой проблемы уменьшается, но она всё ещё актуальна.
  • Для работы многих программ требуются права доступа. Это означает необходимость ввода пароля по несколько раз в день. Поэтому стоит придумать легко запоминающийся пароль и не слишком длинный.
  • Малое количество совместимых игр и программ (по сравнению с Windows). На текущий момент, это основная причина, почему многие пользователи Виндовс не переходят на Линукс. Есть, конечно, специальные программы-эмуляторы, позволяющие запускать большинство программ, написанных для Виндовс, но от этого страдает производительность.
  • Могут быть проблемы с переносом программ из одной версии Линукса в другую.
  • Требуется интернет для обновления пакетов. Многие программы в Линукс взаимодействуют друг с другом и для обновления одной из них придётся обновлять и все остальные.
Читайте также:  Проверка поверхности жесткого диска windows

Применение Линукс на практике

В интернет-кафе

Линукс позволяет использовать относительно устаревшие компьютеры для комфортного сёрфинга в интернете. На такие компьютеры нет необходимости ставить антивирус и переживать, что кто-нибудь из пользователей что-то закачает и заразит всю локальную сеть интернет-кафе. Linux более экономно обращается к жёсткому диску ПК, поэтому по быстродействию он не сильно отстаёт от SSD.

Для обучения ребёнка

Дети любят необычный дизайн и яркие краски, многие версии Линукса предлагают подобный интерфейс. Можно не бояться, что ребёнок поймает вирус в интернете, а также он не будет жаловаться, если будет сидеть за стареньким компьютером, поскольку тот будет работать вполне резво.

Для встречи с клиентами и проведения презентаций.

Линукс имеет открытый код, а значит Вам не придётся оплачивать лицензию, как в случае с Виндовс. Для презентаций есть отличная замена Майксофт офиса – WPS office, используя его Вы покажете своим клиентам отличные знания компьютера, так как в основном опытные пользователи решаются установить Linux, а полностью на него переходят, только самые продвинутые.

В командировках

Если в командировке Вам нужно работать с почтой и текстовым редактором, а смартфон неудобен для этих целей, то можно приобрести слабый ноутбук, который на Линуксе будет работать на уровне более дорогих моделей. Линукс имеет шикарную подборку программ для работы специалистов всех сфер деятельности. Можно не бояться вставлять флешки с различных презентаций (если на них будет вирус, то ваш ноутбук он не поразит).

Для путешественников

Путешествуя, вам придётся скачивать различные программы, например, карту местности, читать много текста вроде списка местных законов и описания достопримечательностей. За пиратские программы во всём мире наказывают строже, чем в России, поэтому все Ваши программы должны быть либо куплены, либо быть бесплатными.

Для серверов

Высокая надёжность Линукса позволяет использовать его в качестве серверной операционной системы. Например, если у человека есть старый ПК, и он хочет запустить на нём свой сайт или онлайн-магазин.

Для обучения программистов и системных администраторов

Линукс позволяет проводить очень тонкую настройку любых своих функций, поэтому незаменим как для работы, так и для обучения будущих компьютерщиков.

Большая просьба к пользователям Линукс, напишите в комментариях, какой именно версией ОС Вы пользуетесь и какие задачи она решает?

Источник

Системы защиты Linux

Одна из причин грандиозного успеха Linux ОС на встроенных, мобильных устройствах и серверах состоит в достаточно высокой степени безопасности ядра, сопутствующих служб и приложений. Но если присмотреться внимательно к архитектуре ядра Linux, то нельзя в нем найти квадратик отвечающий за безопасность, как таковую. Где же прячется подсистема безопасности Linux и из чего она состоит?

Предыстория Linux Security Modules и SELinux

Security Enhanced Linux представляет собой набор правил и механизмов доступа, основанный на моделях мандатного и ролевого доступа, для защиты систем Linux от потенциальных угроз и исправления недостатков Discretionary Access Control (DAC) — традиционной системы безопасности Unix. Проект зародился в недрах Агентства Национальной Безопасности США, непосредственно разработкой занимались, в основном, подрядчики Secure Computing Corporation и MITRE, а также ряд исследовательских лабораторий.

Linux Security Modules

Линус Торвальдс внес ряд замечаний о новых разработках АНБ, с тем, чтобы их можно было включить в основную ветку ядра Linux. Он описал общую среду, с набором перехватчиков для управления операциями с объектами и набором неких защитных полей в структурах данных ядра для хранения соответствующих атрибутов. Затем эта среда может использоваться загружаемыми модулями ядра для реализации любой желаемой модели безопасности. LSM полноценно вошел в ядро Linux v2.6 в 2003 году.

Фреймворк LSM включает защитные поля в структурах данных и вызовы функций перехвата в критических точках кода ядра для управления ими и выполнения контроля доступа. Он также добавляет функции для регистрации модулей безопасности. Интерфейс /sys/kernel/security/lsm содержит список активных модулей в системе. Хуки LSM хранятся в списках, которые вызываются в порядке, указанном в CONFIG_LSM. Подробная документация по хукам включена в заголовочный файл include/linux/lsm_hooks.h.

Читайте также:  Активация windows при замене процессора

Подсистема LSM позволила завершить полноценную интеграцию SELinux той же версии стабильного ядра Linux v2.6. Буквально сразу же SELinux стал стандартом де-факто защищенной среды Linux и вошел в состав наиболее популярных дистрибутивов: RedHat Enterprise Linux, Fedora, Debian, Ubuntu.

Глоссарий SELinux

LSM и архитектура SELinux

Несмотря на название LSM в общем-то не являются загружаемыми модулями Linux. Однако также, как и SELinux, он непосредственно интегрирован в ядро. Любое изменение исходного кода LSM требует новой компиляции ядра. Соответствующая опция должна быть включена в настройках ядра, иначе код LSM не будет активирован после загрузки. Но даже в этом случае его можно включить опцией загрузчика ОС.

Стек проверок LSM

LSM оснащен хуками в основных функций ядра, которые могут быть релевантными для проверок. Одна из основных особенностей LSM состоит в том, что они устроены по принципу стека. Таким образом, стандартные проверки по-прежнему выполняются, и каждый слой LSM лишь добавляет дополнительные элементы управления и контроля. Это означает, что запрет невозможно откатить назад. Это показано на рисунке, если результатом рутинных DAC проверок станет отказ, то дело даже не дойдет до хуков LSM.

SELinux перенял архитектуру безопасности Flask исследовательской операционной системы Fluke, в частности принцип наименьших привилегий. Суть этой концепции, как следует из их названия, в предоставлении пользователю или процессу лишь тех прав, которые необходимы для осуществления предполагаемых действий. Данный принцип реализован с помощью принудительной типизации доступа, таким образом контроль допусков в SELinux базируется на модели домен => тип.

Благодаря принудительной типизации доступа SELinux имеет гораздо более значительные возможности по разграничению доступа, нежели традиционная модель DAC, используемая в ОС Unix/Linux. К примеру, можно ограничить номер сетевого порта, который будет случать ftp сервер, разрешить запись и изменения файлов в определенной папке, но не их удаление.

Основные компоненты SELinux таковы:

  • Policy Enforcement Server — Основной механизм организации контроля доступа.
  • БД политик безопасности системы.
  • Взаимодействие с перехватчиком событий LSM.
  • Selinuxfs — Псевдо-ФС, такая же, как /proc и примонтированная в /sys/fs/selinux. Динамически заполняется ядром Linux во время выполнения и содержит файлы, содержащие сведения о статусе SELinux.
  • Access Vector Cache — Вспомогательный механизм повышения производительности.


Схема работы SELinux

Все это работает следующим образом.

  1. Некий субъект, в терминах SELinux, выполняет над объектом разрешенное действие после DAC проверки, как показано не верхней картинке. Этот запрос на выполнение операции попадает к перехватчику событий LSM.
  2. Оттуда запрос вместе с контекстом безопасности субъекта и объекта передается на модуль SELinux Abstraction and Hook Logic, ответственный за взаимодействие с LSM.
  3. Инстанцией принятия решения о доступе субъекта к объекту является Policy Enforcement Server и к нему поступают данные от SELinux AnHL.
  4. Для принятия решения о доступе, или запрете Policy Enforcement Server обращается к подсистеме кэширования наиболее используемых правил Access Vector Cache (AVC).
  5. Если решение для соответствующего правила не найден в кэше, то запрос передается дальше в БД политик безопасности.
  6. Результат поиска из БД и AVC возвращается в Policy Enforcement Server.
  7. Если найденная политика согласуется с запрашиваемым действием, то операция разрешается. В противном случае операция запрещается.

Управление настройками SELinux

SELinux работает в одном из трех режимов:

  • Enforcing — Строгое соблюдение политик безопасности.
  • Permissive — Допускается нарушение ограничений, в журнале делается соответствующая пометка.
  • Disabled — Политики безопасности не действуют.

Посмотреть в каком режиме находится SELinux можно следующей командой.

Изменение режима до перезагрузки, например выставить на enforcing, или 1. Параметру permissive соответствует числовой код 0.

Также изменить режим можно правкой файла:

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing — SELinux security policy is enforced.
# permissive — SELinux prints warnings instead of enforcing.
# disabled — No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three values:
# targeted — Targeted processes are protected,
# minimum — Modification of targeted policy. Only selected processes are protected.
# mls — Multi Level Security protection.

Читайте также:  Как узнать свой ip локальной сети linux

Разница с setenfoce в том, что при загрузке операционный системы режим SELinux будет выставлен в соответствии со значением параметра SELINUX конфигурационного файла. Помимо того, изменения enforcing disabled вступают в силу только через правку файла /etc/selinux/config и после перезагрузки.

Просмотреть краткий статусный отчет:

SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: permissive
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
Для просмотра атрибутов SELinux некоторые штатные утилиты используют параметр -Z.

По сравнению с обычным выводом ls -l тут есть несколько дополнительных полей следующего формата:

Последнее поле обозначает нечто вроде грифа секретности и состоит из комбинации двух элементов:

  • s0 — значимость, также записывают интервалом lowlevel-highlevel
  • c0, c1… c1023 — категория.

Изменение конфигурации доступов

Используйте semodule, чтобы загружать модули SELinux, добавлять и удалять их.

Первая команда semanage login связывает пользователя SELinux с пользователем операционной системы, вторая выводит список. Наконец последняя команда с ключом -r удаляет связку отображение пользователей SELinux на учетные записи ОС. Объяснение синтаксиса значений MLS/MCS Range находится в предыдущем разделе.

Login Name SELinux User MLS/MCS Range Service
__default__ unconfined_u s0-s0:c0.c1023 *
root unconfined_u s0-s0:c0.c1023 *
system_u system_u s0-s0:c0.c1023 *
[admin@server

]$ semanage login -d karol

Команда semanage user используется для управления отображений между пользователями и ролями SELinux.

  • -a добавить пользовательскую запись соответствия ролей;
  • -l список соответствия пользователей и ролей;
  • -d удалить пользовательскую запись соответствия ролей;
  • -R список ролей, прикрепленных к пользователю;

Файлы, порты и булевы значения

Каждый модуль SELinux предоставляет набор правил маркировки файлов, но также можно добавить собственные правила для в случае необходимости. Например мы желаем дать веб серверу права доступа к папке /srv/www.

Первая команда регистрирует новые правила маркировки, а вторая сбрасывает, вернее выставляет, типы файлов в соответствии с текущими правилами.

Аналогично, TCP/UDP порты отмечены таким образом, что лишь соответствующие сервисы могут их прослушивать. Например, для того, чтобы веб-сервер мог прослушивать порт 8080, нужно выполнить команду.

Значительное число модулей SELinux имеют параметры, которые могут принимать булевы значения. Весь список таких параметров можно увидеть с помощью getsebool -a. Изменять булевы значения можно с помощью setsebool.

Практикум, получить доступ к интерфейсу Pgadmin-web

Рассмотрим пример из практики, мы установили на RHEL 7.6 pgadmin4-web для администрирования БД PostgreSQL. Мы прошли небольшой квест с настройкой pg_hba.conf, postgresql.conf и config_local.py, выставили права на папки, установили из pip недостающие модули Python. Все готово, запускаем и получаем 500 Internal Server error.

Начинаем с типичных подозреваемых, проверяем /var/log/httpd/error_log. Там есть некоторые интересные записи.

[timestamp] [core:notice] [pid 23689] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
.
[timestamp] [wsgi:error] [pid 23690] [Errno 13] Permission denied: ‘/var/lib/pgadmin’
[timestamp] [wsgi:error] [pid 23690]
[timestamp] [wsgi:error] [pid 23690] HINT : You may need to manually set the permissions on
[timestamp] [wsgi:error] [pid 23690] /var/lib/pgadmin to allow apache to write to it.

На этом месте у большинства администраторов Linux возникнет стойкое искушение запустить setenforce 0, да и дело с концом. Признаться, в первый раз я так и сделал. Это конечно тоже выход, но далеко не самый лучший.

Несмотря на громоздкость конструкций SELinux может быть дружественным к пользователю. Достаточно установить пакет setroubleshoot и просмотреть системный журнал.

]$ yum install setroubleshoot
[admin@server

]$ journalctl -b -0
[admin@server

]$ service restart auditd

Обратите внимание на то, что сервис auditd необходимо перезапускать именно так, а не с помощью systemctl, несмотря на наличие systemd в ОС. В системном журнале будет указан не только факт блокировки, но также причина и способ преодоления запрета.

Выполняем эти команды:

]$ setsebool -P httpd_can_network_connect 1
[admin@server

]$ setsebool -P httpd_can_network_connect_db 1

Проверяем доступ на веб страницу pgadmin4-web, всё работает.

Источник

Оцените статью