Прежде чем перейти к плюсам и минусам, нужно определиться с тем, что же такое Linux. Это семейство операционных систем, также как и Windows или MacOS. Операционная система отвечает за взаимодействие между программным обеспечением и оборудованием компьютера. В отличие от Windows, где есть только одна основная платформа и у неё есть несколько версий, в зависимости от времени, в которое они выпускались, в Linux есть много ответвлений, дистрибутивов, основанных на ядре Linux.
Сюда относятся такие известные дистрибутивы, как Ubuntu, Linux Mint, Fedora, CentOS, Debian, а также многие другие менее известные. Большинство из них совершенно бесплатны и распространяются с открытым исходным кодом, а это значит, что они более удобны для разработчиков программного обеспечения. Но надо разобраться, что всё это значит для обычных пользователей. В этой статье мы собрали плюсы и минусы Linux, которые помогут новичкам определиться, нужна ли им эта операционная система.
В отличие от Windows, где есть всего несколько версий одной и той же операционной системы и предельно ясно, какую нужно выбрать, в мире Linux всё намного сложнее. Существует огромное количество разных дистрибутивов, все имеют свои преимущества и недостатки, поэтому новичок может запросто во всём этом запутаться.
Я уже несколько лет подряд пользуюсь, в основном, только Ubuntu. Раньше я пользовался такими дистрибутивами, как Gentoo, ArchLinux, OpenSUSE, Fedora, CentOS, но остановился на том, с чего начинал — на Ubuntu. В этой статье я хочу привести 10 причин использовать Ubuntu в качестве основной системы. Я не буду сравнивать её с Windows — об этом уже было несколько статей. Вместо этого, я собираюсь сравнить её с другими дистрибутивами Linux.
Операционная система GNU/Linux появилась благодаря стечению обстоятельств. Вы узнаете о том, с чего всё начиналось и какую роль в этом сыграл неисправный принтер. Это история Ричарда Столлмана и Линуса Торвальдса.
Столлман задал вектор развития программного обеспечения и пракически закончил работу над операционной системой, подготовив необходимые системные утилиты. А Торвальдс добавил недостающее — ядро Linux.
В интернете существует множество инструкций, о том как установить Linux на компьютер, как установить его с несколькими другими системами, как настроить определенные аспекты работы, как делать те или иные действия, но нет дельной статьи о том, как пользоваться Linux, какие действия и когда стоит выполнять, зачем это нужно и как все делать правильно.
Мы поговорим о настройке системы, безопасности, обновлениях, журналах, очистке, резервном копировании и других подобных вещах. Я не претендую на звание эксперта в этой области. Я так делаю в своей системе и предлагаю делать вам, но это всего лишь мое мнение, вы и другие пользователи могут считать по-другому. Статья использование linux ориентирована на обычных пользователей, а не системных администраторов и программистов. Но я думаю, что вы можете найти что-то полезное для себя в этой статье.
В современных операционных системах не обойтись без взаимодействия программ с внешней средой и интернетом. Для этого используется специальные механизмы — порты.
Но порты представляют определённую угрозу. Если в программе есть какая-либо уязвимость, то любой пользователь локальной сети сможет получить доступ к вашему компьютеру, а в некоторых случаях даже к вашей информации. Поэтому нужно быть очень осторожным с открытыми портами. В этой статье мы разберёмся, как посмотреть открытые порты Ubuntu.
Что такое порты и зачем они нужны?
Порты — это более широкое понятие, чем просто возможность подключится к удалённому компьютеру через сеть. Когда процесс хочет обратиться к серверу, ему нужно каким-либо образом идентифицировать, к какому серверу он хочет подключиться. Если мы знаем 32 битный IP-адрес сервера, то мы можем без проблем к нему подключиться.
Но как указать программу, к которой нужно обратиться? Для решения этой проблемы оба протокола UDP и TCP поддерживают систему портов. Порт — это целое число от 1024 до 65535. Все номера до 1024 зарезервированы и используются только определёнными службами, например, 22 — ssh, http — 80, FTP — 21 и так далее.
Таким образом, процесс прослушивает определённый порт на сервере, а клиент, который хочет к нему обратиться, должен знать этот порт. Вся обработка прав доступа к портам в большинстве случаев ложится на процесс, поэтому если в его коде есть уязвимости, то это может стать серьёзной проблемой безопасности.
Открытые порты Ubuntu
Существуют не только порты, к которым программы подключаются удалённо, но и локальные порты, используемые программами для общения между собой. В качестве локальных также могут использоваться удалённые.
В Linux существует несколько утилит, которые можно использовать, чтобы посмотреть открытые порты. Одни из них полноценные сетевые сканеры, другие — локальные утилиты, отображающие всю доступную информацию. Рассмотрим основные из них.
netstat
Это одна из самых старых и популярных утилит для просмотра открытых портов. Мы описывали её в отдельной статье, а сейчас просто кратко рассмотрим, как с ней работать. Чтобы посмотреть открытые порты, выполните такую команду:
netstat -ntlp | grep LISTEN
Опция -l сообщает, что нужно посмотреть прослушиваемые порты, -p показывает имя программы, -t и -u — отображают TCP и UDP порты, а -n показывает ip адреса в числовом виде. Дальше нужно выбрать только те строки, где встречается слово LISTEN, чтобы найти только прослушиваемые порты.
Здесь в первом столбце отображается протокол, затем два столбца — это данные, которые нам ничего полезного не говорят, а за ними уже идут локальный и внешний адреса. Если локальный адрес — 127.0.0.1, то это значит, что сервис доступен только на этом компьютере, а значение 0.0.0.0 или :: означает любой адрес, к таким сервисам могут подключаться из сети. В нашем примере это Apache и systemd-resolvd.
lsof
Утилита lsof тоже предназначена для просмотра открытых соединений. Основная ее функция — просмотр открытых файлов, но с её помощью можно посмотреть открытые порты Ubuntu. Используйте такие параметры:
sudo lsof -nP -i | grep LISTEN
Опции -n и -P указывают, что необходимо отображать не только цифровые имена портов и ip-адреса, но и имена доменов и сервисов. Опция -i отображает все сетевые подключения, а с помощью grep мы фильтруем только те, которые находятся в состоянии прослушивания.
Представление информации немного отличается, но в общем и целом мы видим всё ту же информацию. Кроме неё, здесь ещё отображается имя пользователя, от которого запущен процесс. Вы можете не ограничиваться фильтрами и посмотреть все доступные соединения:
sudo lsof -nP -i
ss
Команда ss — это улучшенная версия netstat. Точно так, как для замены ifconfig была придумана утилита ip, ss разработали для замены netstat. Команда будет выглядеть следующим образом:
ss -ltupn
Все данные здесь выводятся почти так же, как и в netstat, поэтому вы легко во всём разберётесь. В дополнение к выше перечисленным командам: возможно, вам нужно будет посмотреть на правила брандмауэра iptables, чтобы понять, какие порты закрыты с его помощью:
iptables -L
В нашем примере нет никаких ограничений. Политика по умолчанию — ACCEPT. На промышленных серверах может применяться политика DENY, а нужные порты будут разрешены с помощью правил.
nmap
Сетевой сканер nmap позволяет проверить список портов Ubuntu так, как бы это делал злоумышленник при попытке атаки на вашу систему. Здесь вы будете видеть все порты, которые видны снаружи. Но для сканирования нужно использовать внешний ip-адрес. Не сетевой ip-адрес провайдера, а адрес вашего компьютера, например, в локальной сети чаще всего используется 192.168.1.2. Посмотреть ip вашего сетевого интерфейса можно с помощью команды ifconfig:
ifconfig
Чтобы просто просканировать открытые порты Ubuntu, будет достаточно выполнить:
nmap -sT 192.168.1.3
Также можно выполнить комплексное сканирование всех уязвимостей. Важно отметить, что команда не находит все уязвимости, а проверяет только самые простые. Для активации этого режима используется опция -A:
В этой статье мы рассмотрели, как проверить порты Ubuntu с помощью нескольких утилит. Все они выводят подробную информацию, но для каждого отдельного случая может лучше подойти только одна из них. Например, проверять, какие порты видят другие компьютеры извне, лучше с помощью nmap. А чтобы посмотреть, какие службы или сокеты доступны локально, лучше применять netstat или ss.
Проверяйте, какие порты открыты, и если они не нужны, то закройте их в брандмауэре или просто отключите сервис. Иначе они ставят под угрозу безопасность вашей системы. Например, у меня на ноутбуке открыт порт SSH, и я не раз наблюдал в логах попытки перебрать пароль от каких-то роутеров из локальной сети. И если даже вас некому ломать, это могут сделать вирусы. Так что будьте осторожны, и не оставляйте открытые порты, если в этом нет необходимости.
Все мы привыкли пользоваться программами в любой операционной системе для решения своих задач. Но за функциональностью программ стоит еще одна вещь, с которой мы редко встречаемся при обычной работе с компьютером. Это библиотеки, которые содержат общий набор функций и возможностей, используемых программами. Например, большинство программ, написанных на Си, используют стандартную библиотеку Си, в которой содержатся все основные возможности взаимодействия с системой.
У каждой программы есть свой набор библиотек, которые должны быть в системе чтобы она смогла работать. Иначе бы программистам пришлось заново изобретать различные алгоритмы, писать много кода и разработка программ занимала бы в разы больше времени. В этой статье мы собрали основные библиотеки Linux, а также их предназначение. Эта информация поможет вам лучше освоиться в системе.
Что такое библиотеки?
Как я уже говорил выше — библиотеки реализуют общие возможности, которые потом используются программами. Если говорить просто, то библиотека — это набор функций, каждую из которых можно использовать в любой программе. Например, если программе нужно вывести строку на экран, она не будет лезть прямо в буфер видеокарты, а использует функцию из стандартной библиотеки.
Библиотеки делятся на два типа — динамические и статические. Статические библиотеки linux подключаются на этапе сборки программы, а динамические — во время выполнения и они общие для нескольких программ. Нас будут интересовать именно динамические библиотеки linux. Они находятся в папках /lib, /lib64, /usr/lib, /usr/lib/x86_64-linux-gnu. Каждая библиотека имеет расширение .so, за которым следует номер версии. Этот номер увеличивается каждый раз, когда разработчики вносят серьезные изменения. Такой подход необходим для того, чтобы сохранить совместимость для программ, использующих старые версии. Например, в системе может быть две библиотеки libfuse.so.0 и libfuse.so.1. Далее мы рассмотрим основные библиотеки и их предназначение.
Как получить информацию о библиотеках?
Перед тем как перейти к рассмотрению самих библиотек, вам, наверное, будет интересно, как получить информацию о них и узнать где они находятся в вашей системе. Библиотеки Linux могут быть размещены в различных каталогах, в зависимости от дистрибутива, но посмотреть эти каталоги можно, выполнив:
cat /etc/ld.so.conf.d/*
Во всех перечисленных здесь каталогах находятся статические и динамически библиотеки Linux:
ls -l /lib/x86_64-linux-gnu/
Информацию о зависимостях каждой библиотеки вы можете посмотреть командой ldd:
ldd /lib/x86_64-linux-gnu/ld-2.24.so
А еще можно узнать какому пакету принадлежит библиотека в Ubuntu:
dpkg -S /lib/x86_64-linux-gnu/ld-2.24.so
Как видите, библиотека ld.so принадлежит пакету libc6, точнее она входит в набор инструментов Си. Более подробно, о том, как устанавливать новые библиотеки и решать проблемы с ними, описано в статье библиотеки Ubuntu.
Основные библиотеки
Это библиотеки основных языков программирования, которые содержат базовую функциональность для взаимодействия с системой.
libanl.so — библиотека работы с DNS;
libc.a — основная статическая библиотека языка Си;
libdl.a — библиотека, отвечающая за загрузку других библиотек во время запуска программы;
libnsl.so — работа со службой NIS;
libstdc++.so — стандартная библиотека C++;
libutil.so — реализует основные часто используемые функции;
libelf.so — библиотека для работы с бинарными файлами ELF;
libevent.so — библиотека с реализацией механизма вызова функций после события;
libgnutls.so — библиотека с основными методами и возможностями, используемыми в стандартных утилитах Linux;
ld-linux.so — главная библиотека, она собрана в виде статической и не имеет зависимостей. Загружает другие библиотеки и исполняемые файлы. Вы можете вызвать эту библиотеку как программу и передать ей адрес исполняемого файла для запуска.
Библиотеки кодеков
Эти библиотеки содержат наборы кодеков для воспроизведения различных медиа данных. Некоторые из них имеют несвободную лицензию или закрытый исходный код:
liba52.so — свободный декодер ATSC A/52;
libavfilter6.so — библиотека фильтров ffmpeg;
libavcodec57.so — библиотека кодеков ffmpeg;
libavformat57.so — библиотека форматов ffmpeg;
libavutil55.so — библиотека дополнительных функций ffmpeg;
libdv.so — программный кодек для DV;
libmad.so — MPEG аудио декодер;
libmpeg2.so — потоковый декодер видео данных;
libmpg123.so — библиотека консольного плеера mpg123;
libwebp.so — декодирование формата Webp;
libxvidcore.so — медиа кодек MPEG-4.
Звуковые библиотеки
libao.so — библиотека проигрывания звука с простым интерфейсом;
libasound.so — библиотека взаимодействия со звуковой подсистемой ALSA;
libaudio2.so — библиотека работы со звуком, входит в состав ALSA;
libespeak.so — библиотека синтеза речи;
libpulse.so — библиотека с основными методами PulseAudio;
Работа с архивами
libarchive.so — библиотека для работы с архивами различных форматов;
liblzma.so — работа с архивами LZMA.
Графические библиотеки
libart.so — библиотека с реализацией функций для работы с 3d графикой;
libaa.so — библиотека ASCII графики;
libgtk-3.so — набор методов графического фреймворка GTK 3;
libgd.so — базовые функции работы с графикой и рисования;
libgif.so — работа с форматом изображений Gif;
libjpeg.so — работа с изображениями Jpeg;
libglapi.so — свободная реализация методов для работы с OpenGL;
libgtk-x11-2.0.so — набор методов библиотеки GTK 2;
libwx_baseu.so, libwx_baseu_net-3.0.so и другие — набор библиотек фремворка создания графических приложений WX;
libX11.so — основные методы и функции X сервера;
libncurses.so — одна из самых популярных библиотек псевдографики;
libQtGui.so, libQt5Svg.so, libQt5Widgets.so и другие — библиотеки фреймворка разработки графических приложений Qt.
Работа с текстом
libaspell.so — библиотека проверки орфографии;
libfreetype.so — библиотека отрисовки шрифтов;
libharfbuzz.so — библиотека обработки символов Unicode;
libxml2.so — библиотека разбора XML;
libyaml-0.so — библиотека разбора Yaml.
Безопасность
libcrack.so — библиотека с реализацией методов перебора паролей для проверки их надежности;
libcrypt.so — библиотека, отвечающая за шифрование;
libssl3.so — библиотека шифрования SSLv3;
libapparmor.so — библиотека управления системой безопасности AppArrmor;
libaudit.so — библиотека слежения за состоянием системы и регистрации событий.
Библиотеки драйверов
libcups.so — библиотека работы с принтером;
libfuse.so — библиотека организации виртуальных файловых систем;
libgphoto2.so — библиотека взаимодействия с камерами по USB;
libsensors.so — используется для получения информации от датчиков на материнской плате;
libudisks2.so — библиотека usisks, которая отвечает за автоматическое монтирование и обнаружение подключенных устройств;
libv4l1.so — библиотека работы с веб-камерами;
libpci.so — библиотека работы с PCI устройствами;
libusb-1.0.so — библиотека управления USB;
libdrm.so — библиотека с общими возможностями Direct Rendering Manager, отрисовки графики с помощью видеокарты;
libdrm_amdgpu.so — DRM для драйвера AMDGPU;
libdrm_intel.so — DRM для карт Intel;
libdrm_nouveau.so — свободный DRM для видеокарт Nvidia;
Сеть
libresolv.so — библиотека получения IP адреса по имени хоста;
libpcap.so — библиотека анализа и захвата сетевых пакетов;
libproxy.so — настройка и управление прокси;
Эмуляция
libSDL.so — библиотека эмуляции загрузки компьютера и базовых возможностей BIOS;
libwine.so — библиотека прослойки для запуска приложений Windows в Linux.
libvirt.so — библиотека управления KVM;
Выводы
В этой статье мы собрали основные библиотеки Linux, которые имеют наибольшее значение для работы операционной системы. Конечно, невозможно перечислить здесь абсолютно все библиотеки, потому что их очень много. Надеюсь эта информация была полезной для вас.