Linux server ubuntu: Get Ubuntu Server | Download

Содержание

Установка и настройка SSH на сервере с Ubuntu

В этой статье мы создадим виртуальную машину с Ubuntu 18.04 LTS 64-bit и выполним настройки для безопасного взаимодействия с сервером.

SSH (Secure Shell) — протокол с шифрованием для безопасного обмена данными между элементами ИТ-инфраструктуры. Чаще всего SSH используется для управления серверами с операционными системами семейства Linux и различным сетевым оборудованием.

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

В нашем примере используется виртуальный сервер с фиксированной конфигурацией в виде 1 ядра CPU, 1 Гб оперативной памяти, 10 Гб пространства на жестком диске и операционной системой Ubuntu 18.04 LTS 64-bit.

Далее нажимаем Создать и уже через несколько минут сервер готов к работе. Для удобства доступа к серверу, также был заказан плавающий внешний IP-адрес.

После успешного создания сервера, можно запускать консоль и настроить подключение по SSH. В Ubuntu за это отвечает утилита OpenSSH. В статье мы рассмотрим настройку доступа по ключам, настройку firewall, отключение аутентификации по паролю и проделаем некоторые другие вещи.

Как установить OpenSSH

OpenSSH — это бесплатный SSH-сервер, дающий возможность интерактивного управления сервером. Для установки SSH на сервер воспользуемся встроенным в Ubuntu пакетным менеджером apt:

# sudo apt install openssh-server -y

В большинстве дистрибутивов OpenSSH-сервер уже присутствует в системе и его установка не требуется. В случае отсутствия OpenSSH, вышеуказанная команда выполнит установку.

Теперь добавим SSH-сервер в автозагрузку. При следующем запуске сервера, операционная система выполнит автоматический запуск SSH-сервера. Как и в случае с другими сервисами systemd позволяет управлять параметрами запуска, автозагрузки и рестарта демона OpenSSH. Включим автозапуск:

# sudo systemctl enable ssh

В результате получим:

Проверим работоспособность утилиты:

# ssh localhost

И убедимся, что всё корректно работает:

Как настроить SSH

Настройка SSH на Ubuntu необходима для улучшения защищенности системы. Например, можно отключить возможность входа от имени пользователя root или изменить порт подключения со стандартного 22 на произвольный. Лучше использовать порты из верхнего диапазона (50000-65000). Напомним, что в стеке протоколов TCP/IP доступно 65536 портов.

Настройка выполняется выполняется в конфигурационном файле. Перед его модификацией, создадим резервную копию.

# sudo cp /etc/ssh/sshd_config
/etc/ssh/sshd_config.factory-defaults

Вот теперь можно менять порт. Все изменения конфигурации SSH выполняются в файле /etc/ssh/sshd_config. Откроем его на редактирование:

# sudo vi /etc/ssh/sshd_config

Раскомментируем строку Port 22 и изменим значение на 55555. Но мы должны вас предостеречь, боты прежде всего сканируют порты с одинаковыми цифрами, поэтому в промышленных средах лучше использовать номер порта с отличными друг от друга цифрами.

Далее нужно отключить возможность входа на сервер учетной записи суперпользователя (root) и добавить возможность входить через ключи. Для этого изменим значения параметров PermitRootLogin на no и PubkeyAuthentication на yes:

После этого следует перезагрузить демон SSH. Соединение при этом будет разорвано и подключиться можно будет через новый порт и пользовательскую учетную запись (она должны быть предварительно создана).

sudo systemctl restart ssh

Переподключимся от обычной учетной записи и по другому порту:

ssh -p 55555 [email protected]

После успешного подключения можно продолжать работу с сервером.

Как создать пару ключей RSA

Еще один способ аутентификации на сервере — пара ключей RSA: открытый и закрытый. Открытый хранится на сервере, к которому будет выполняться подключение, а закрытый на удаленном компьютере (или другом сервере) откуда выполняется подключение.

На схеме ниже иллюстрация безопасного обмена ключами между Алисой и Бобом. Злоумышленник Ева может читать сообщения, если они не зашифрованы. Здесь Алиса или Боб шифруют сообщение при помощи открытого ключа принимающей стороны, которая его дешифрует при помощи своего закрытого ключа.

Чтобы сгенерировать такую пару ключей, достаточно выполнить команду:

# ssh-keygen -t rsa

Команду нужно выполнять на своей рабочей станции от имени пользователя, который будет в дальнейшем подключаться к удаленному компьютеру. Путь к хранению ключей можно оставить по умолчанию:

Ключи созданы, можно переходить к следующему шагу — копированию открытого ключа на удаленный сервер. Предварительно убедитесь, что на том сервере создана учетная запись, от имени которой вы будете подключаться.

Как скопировать открытый ключ на сервер

Чтобы скопировать ключ на удаленный сервер, выполним следующую команду:

# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]

В этом примере 95.213.154.235 — это IP-адрес удаленного сервера. После ввода пароля, ключ копируется папку .ssh домашней директории пользователя.

# ssh [email protected]

Вывод обеих команд на скриншоте ниже.

Как пройти аутентификацию на сервере через созданный ключ

Сразу же после выполнения копирования, проверим доступ при помощи созданной пары ключей:

# ssh antoniusfirst@95. 213.154.235

Если подключение по SSH будет успешным — все настройки были выполнены корректно.

Как выполнить отключение аутентификации по паролю

Для отключения возможности входа по паролю необходимо в файле /etc/ssh/sshd_config отредактировать значение PasswordAuthentication и присвоить no.

После изменения настроек перезагружаем службу SSH:

# sudo systemctl restart ssh

Теперь при попытке подключения пользователем, для которого не определена пара ключей, будет выдаваться ошибка подключения.

При этом подключение при помощи ключа будет успешным.

Отключение доступа паролю — верная стратегия повышения безопасности сервера. Особенно в публичных облаках. Однако, если ключ будет утерян, это станет серьезной проблемой. Поэтому важно его хранить в надежном месте или пользоваться специализированными инструментами, например, аппаратным устройством Yubikey.

Как настроить стандартный firewall

В Ubuntu есть встроенный фаервол Netfilter, который может управляться как непосредственно вызовом утилиты iptables с параметрами так и специальной утилитой UFW (Uncomplicated Firewall). Мы разберем оба варианта.

Iptables на нашем демо-стенде уже установлен, но если в вашем дистрибутиве его нет — можно воспользоваться пакетным менеджером apt:

# sudo apt-get install iptables

При работе с iptables можно настроить три типа правил: INPUT — для входящих соединений, OUTPUT — для исходящих и forward для транзитных (используется для маршрутизаторов). Для сервера актуальны первые два.

При обработке пакетов возможно выполнение следующих действий: ACCEPT — разрешить прием пакета, DROP — удалить пакет, REJECT — отклонить пакет и отправил уведомление об отклонении отправителю, LOG — записать пакет в лог и QUEUE — отправить пакет приложению.

В iptables доступны следующие функции управления:

  • A — добавить правило в цепочку;
  • С — проверить все правила;
  • D — удалить правило;
  • I — вставить правило с нужным номером;
  • L — вывести все правила в текущей цепочке;
  • S — вывести все правила;
  • F — очистить все правила;
  • N — создать цепочку;
  • X — удалить цепочку;
  • P — установить действие по умолчанию.

Например, чтобы посмотреть настроенные правила можно выполнить команду

# sudo iptables -L

Теперь попробуем заблокировать все пакеты от узла 10.10.10.10:

# sudo iptables -A INPUT -s 10.10.10.0/24 -j DROP

При помощи комбинаций перечисленных выше опций можно настроить любую требуемую логику работы с сетевыми пакетами.

Если перечисленные выше опции показались сложными, можно упростить задачу настройки фаервола и воспользоваться утилитой ufw. Перед началом работы, установим ее при помощи пакетного менеджера apt:

# sudo apt install ufw -y

После установки можно начинать работать с правилами. Разрешим все исходящие соединения и запретим все входящие:

# sudo ufw default deny incoming
# sudo ufw default allow outgoing

В выводе увидим:

В примерах выше мы меняли порт для доступа по SSH на 55555. Создадим правило для доступа по этому порту:

# sudo ufw allow 55555

В выводе получим:

Теперь включим сам фаервол.

# sudo ufw enable

Обратите внимание на предупреждение системы об отключении SSH-подключений, если вдруг вы забыли добавить соответствующее правило. Но мы его добавили, поэтому смело включаем фаервол.

После включения фаервола, проверим его настройки командой:

# sudo ufw status verbose

В выводе увидим:

Дополнительно можно настроить доступ с определенного IP-адреса (или диапазона адресов), на определенный порт.

# sudo ufw allow from 95.213.154.235 to any port 55555

При помощи правил UFW можно также применять правила к определенным сетевым интерфейсам сервера.

Как настройки подключения по SSH влияют на безопасность

В этом разделе разберем основные настройки для повышения уровня безопасности SSH. Все настройки выполняются в уже известном конфигурационном файле /etc/ssh/sshd_config.

Первая настройка — проверка соответствия DNS-имени IP-адресу клиента. За это отвечает параметр UseDNS.

# UseDNS yes

Следующий шаг к безопасности — запрет пустых паролей. Задается в параметре PermitEmptyPasswords.

# PermitEmptyPasswords no

Дополнительно можно ограничить количество неудачных попыток подключения:

# MaxAuthTries 3

Еще один подход к ограничению несанкционированных подключений — задание пользователей и групп, которым разрешен доступ по SSH. Они перечисляются в параметрах AllowUsers и AllowGroups.

# AllowUsers User1, User2, User3
# AllowGroups Group1, Group2, Group3

Дополнительно, можно задать время, в течении которого система ожидает от пользователя ввода пароля. По умолчанию это две минуты, но лучше уменьшить до 30 секунд.

# Login GraceTime 30

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

# ClientAliveInterval 300

Мы перечислили основные параметры для повышения безопасности SSH-соединений, однако, можно выполнять и более тонкую настройку. Полный список команд можно найти в официальной документации.

Нельзя не упомянуть про эффективный инструмент борьбы с попытками аутентификации — утилите fail2ban. Это сервис, который читает лог безопасности и блокирует злоумышленников по IP. Штатно устанавливается при помощи apt:

# sudo apt install fail2ban

После установки появляются два конфигурационных файла: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Первый отвечает за настройки запуска fail2ban, а второй за настройки защиты конкретных сервисов.

Заключение

Мы рассказали об основных настройках протокола SSH, которые помогут уберечь Ubuntu-сервер от несанкционированного доступа. Особенно важно их использовать при расположении сервера в публичных облаках с публичным IP-адресом. На скриншоте ниже вы видите журнал безопасности системы, на которой мы проводили перечисленные в этой статье настройки. В нем видно, что попытки авторизаций под разными пользователями (root, system и другими) происходят регулярно.

Перечисленных в этой статье настроек достаточно для обеспечения базовой безопасности сервера и предотвращения его вовлечения в бот-сети.

LinuxОблачные серверы

Как установить и настроить xrdp на сервере Linux Ubuntu 20.04

Введение

Столкнулись с необходимостью в удаленном использовании Linux с графической оболочкой ? Тогда это публикация для вас, ведь мы разберем установку xrdp на операционную систему Linux Ubuntu 20.04.

Xrdp был разработан еще в 2004 году, и продолжает обновляться. Можно не волноваться об безопасности, ведь разработчики предоставляют исходный код программы.

Начало работы

Использовать Xrdp можно на любой версии Ubuntu, будь это версия с графической оболочкой, или без нее.

Проверим какая версия операционной системы установлена.

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

Установка графической оболочки

Перед началом работы с сервером, требуется обновить систему:

sudo apt-get update && apt-get upgrade

Установка графической оболочки.

apt-get install xubuntu-desktop

Придется подождать какое то время, пока система установит все необходимое.

Установка xrdp

Для установки xrdp на ваш сервер выполните команду.

apt-get install xrdp

Необходимо установить оконный менеджер рабочего стола xfce.

apt-get install xfce4

Настройка xrdp

Добавляем xfce в автозагрузку менеджер окон рабочего стола xfce, исправив конфигурационный файл “/etc/xrdp/startwm.sh” любым текстовым редактором на ваш выбор.

Перезапустите службу xrdp для принятия параметров.

Добавление и настройка пользователя

После настройки Xfce требуется добавить пользователя для подключения по rdp протоколу.

adduser *nameofuser*

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

nano /home/*youruser/. xsession

В конфиге пропишите данный параметр.

xfce4-session

Этот параметр отвечает за разрешение удаленного подключения выбранного пользователя.

Проверка

В моем примере я использовал VPS сервер, с подключением ssh ключей, поэтому мне требуется сменить пароль от пользователя root. Если вы знаете пароль от суперпользователя, то вы можете пропустить этот пункт.

sudo passwd root

Запускаем утилиту для удаленного подключения, прописав команду в окне выполнить.

mstsc

В появившимся окне вводим ip-адрес нашего сервера.

Узнать ip-адрес вашего сервера можно благодаря команде.

ip addr show

Примечание: При подключении к серверу обратите внимание на вашу раскладку клавиатуры, потому что после подключения к серверу привяжется текущая раскладка.

Для авторизации используем ранее созданного пользователя.

Важно: Если вы подключаетесь по xRDP, то вам необходимо указать пароль и root-пользователя. Если же вы подключаетесь по SSH, то вам понадобится ключ или пароль, которые настраивались во время создания сервера в облаке.

После загрузки системы, требуется ввести пароль от суперпользователя.

Вывод

Xrdp позволяет не только удаленное подключение одному пользователю по RDP протоколу, а сразу нескольким, предварительно их создав.

С каждым подключенным пользователем к серверу, растет и использование оперативной памяти.

В этой публикации мы установили и настроили службу xrdp на сервере Ubuntu 20.04, произвели удаленное подключение к нему используя протокол RDP.

HTTPD — веб-сервер Apache2

Apache — наиболее часто используемый веб-сервер в системах Linux. Веб-серверы используются для обслуживания веб-страниц, запрашиваемых клиентскими компьютерами. Клиенты обычно запрашивают и просматривают веб-страницы с помощью приложений веб-браузера, таких как Firefox, Opera, Chromium или Internet Explorer.

Пользователи вводят унифицированный указатель ресурсов (URL), чтобы указать на веб-сервер с помощью его полного доменного имени (FQDN) и пути к требуемому ресурсу. Например, чтобы просмотреть домашнюю страницу веб-сайта Ubuntu, пользователь введет только полное доменное имя:

 www.ubuntu.com
 

Чтобы просмотреть подстраницу сообщества, пользователь должен ввести полное доменное имя, а затем путь:

 www.ubuntu.com/community
 

Наиболее распространенным протоколом, используемым для передачи веб-страниц, является протокол передачи гипертекста (HTTP). Также поддерживаются такие протоколы, как протокол передачи гипертекста по протоколу защищенных сокетов (HTTPS) и протокол передачи файлов (FTP), протокол для загрузки и выгрузки файлов.

Веб-серверы Apache

часто используются в сочетании с ядром базы данных MySQL, языком сценариев HyperText Preprocessor (PHP) и другими популярными языками сценариев, такими как Python и Perl. Эта конфигурация называется LAMP (Linux, Apache, MySQL и Perl/Python/PHP) и образует мощную и надежную платформу для разработки и развертывания веб-приложений.

Установка

Веб-сервер Apache2 доступен в Ubuntu Linux. Чтобы установить Apache2:

В командной строке терминала введите следующую команду:

 sudo apt установить apache2
 

Конфигурация

Apache2 настраивается путем размещения директив в текстовых файлах конфигурации. Эти директивы разделены между следующими файлами и каталогами:

  • apache2.conf: основной файл конфигурации Apache2. Содержит настройки, которые глобальный для Apache2.

  • httpd.conf: исторически основной файл конфигурации Apache2, названный в честь демона httpd. В других дистрибутивах (или более старых версиях Ubuntu) этот файл может присутствовать. В Ubuntu все параметры конфигурации были перемещены в apache2.conf и указанные ниже каталоги, и этот файл больше не существует.

  • conf-available: этот каталог содержит доступные файлы конфигурации. Все файлы, которые были ранее в /etc/apache2/conf.d следует переместить в /etc/apache2/conf-available .

  • conf-enabled: содержит символических ссылок на файлы в /etc/apache2/conf-available . Когда файл конфигурации имеет символическую ссылку, он будет включен при следующем перезапуске apache2.

  • envvars: файл, в котором установлены переменные среды Apache2 .

  • модов-доступно: этот каталог содержит файлы конфигурации для загрузки модулей и их настройки. Однако не все модули будут иметь определенные файлы конфигурации.

  • с поддержкой модов: содержит символических ссылок на файлы в /etc/apache2/mods-available . Когда файл конфигурации модуля имеет символическую ссылку, он будет включен при следующем перезапуске apache2.

  • ports.conf: содержит директивы, определяющие, какие порты TCP прослушивает Apache2.

  • доступных сайтов: в этом каталоге есть файлы конфигурации для Apache2 виртуальных хостов . Виртуальные хосты позволяют настроить Apache2 для нескольких сайтов с отдельными конфигурациями.

  • сайтов с поддержкой: , например, с поддержкой модов, с поддержкой сайтов содержит символические ссылки на каталог /etc/apache2/sites-available . Точно так же, когда файл конфигурации на сайтах доступен по символической ссылке, настроенный им сайт будет активен после перезапуска Apache2.

  • magic: инструкции для определения типа MIME на основе первых нескольких байтов файла.

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

Сервер также читает файл, содержащий типы MIME-документов; имя файла задается Директива TypesConfig , обычно через /etc/apache2/mods-available/mime. conf , которая также может включать дополнения и переопределения, и по умолчанию /etc/mime.types .

Основные настройки

В этом разделе объясняются основные параметры конфигурации сервера Apache2. Дополнительные сведения см. в документации Apache2.

  • Apache2 поставляется с конфигурацией по умолчанию, удобной для виртуального хоста. То есть он настроен с одним виртуальным хостом по умолчанию (используя VirtualHost ), который можно изменить или использовать как есть, если у вас есть один сайт, или использовать в качестве шаблона для дополнительных виртуальных хостов, если у вас несколько сайтов. Если оставить его в покое, виртуальный хост по умолчанию будет служить вашим сайтом по умолчанию, или пользователи сайта увидят, не соответствует ли введенный ими URL-адрес директиве ServerName любого из ваших пользовательских сайтов. Чтобы изменить виртуальный хост по умолчанию, отредактируйте файл /etc/apache2/sites-available/000-default. conf .

    Примечание

    Директивы, установленные для виртуального хоста, применяются только к этому конкретному виртуальному хосту. Если директива установлена ​​для всего сервера и не определена в настройках виртуального хоста, используется настройка по умолчанию. Например, вы можете определить адрес электронной почты веб-мастера и не определять отдельные адреса электронной почты для каждого виртуального хоста.

    Если вы хотите настроить новый виртуальный хост или сайт, скопируйте этот файл в тот же каталог с выбранным вами именем. Например:

     sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mynewsite.conf
     

    Отредактируйте новый файл, чтобы настроить новый сайт, используя некоторые директивы, описанные ниже.

  • Директива ServerAdmin указывает адрес электронной почты, который будет объявлен для администратора сервера. Значение по умолчанию — webmaster@localhost. Это должно быть изменено на адрес электронной почты, который доставлен вам (если вы являетесь администратором сервера). Если на вашем веб-сайте возникла проблема, Apache2 отобразит сообщение об ошибке, содержащее этот адрес электронной почты, на который следует сообщить о проблеме. Найдите эту директиву в файле конфигурации вашего сайта в /etc/apache2/sites-available.

  • Директива Listen указывает порт и, возможно, IP-адрес, который Apache2 должен прослушивать. Если IP-адрес не указан, Apache2 будет прослушивать все IP-адреса, назначенные машине, на которой он работает. Значение по умолчанию для директивы Listen — 80. Измените это значение на 127.0.0.1:80, чтобы заставить Apache2 прослушивать только ваш петлевой интерфейс, чтобы он не был доступен в Интернете, на (например) 81, чтобы изменить порт, который он слушает или оставьте все как есть для нормальной работы. Эту директиву можно найти и изменить в отдельном файле, /etc/apache2/ports.conf

  • Директива ServerName является необязательной и указывает, на какое полное доменное имя должен отвечать ваш сайт. Виртуальный хост по умолчанию не имеет указанной директивы ServerName, поэтому он будет отвечать на все запросы, которые не соответствуют директиве ServerName в другом виртуальном хосте. Если вы только что приобрели доменное имя mynewsite.com и хотите разместить его на своем сервере Ubuntu, значение директивы ServerName в файле конфигурации вашего виртуального хоста должно быть mynewsite.com . Добавьте эту директиву в новый файл виртуального хоста, который вы создали ранее ( /etc/apache2/sites-available/mynewsite.conf ).

    Вы также можете захотеть, чтобы ваш сайт отвечал на www.mynewsite.com , так как многие пользователи посчитают префикс www подходящим. Используйте для этого директиву ServerAlias ​​. Вы также можете использовать подстановочные знаки в директиве ServerAlias.

    Например, следующая конфигурация заставит ваш сайт отвечать на любой запрос домена, оканчивающийся на .mynewsite.com .

     псевдоним сервера *.mynewsite.com
     
  • Директива DocumentRoot указывает, где Apache2 должен искать файлы, составляющие сайт. Значение по умолчанию — /var/www/html, как указано в /etc/apache2/sites-available/000-default.conf . При желании измените это значение в файле виртуального хоста вашего сайта и не забудьте создать этот каталог, если это необходимо!

Включить новый VirtualHost с помощью утилиты a2ensite и перезапустите Apache2:

 sudo a2ensite мой сайт новостей
sudo systemctl перезапустить apache2.service
 

Примечание

Обязательно замените mynewsite на более описательное имя виртуального хоста. Один из способов — назвать файл после директивы ServerName VirtualHost.

Аналогично используйте утилиту a2dissite для отключения сайтов. Это может быть полезно при устранении неполадок с конфигурацией нескольких виртуальных хостов:

 sudo a2dissite мой новостной сайт
sudo systemctl перезапустить apache2. service
 

Настройки по умолчанию

В этом разделе объясняется настройка параметров сервера Apache2 по умолчанию. Например, если вы добавите виртуальный хост, параметры, настроенные для виртуального хоста, будут иметь приоритет для этого виртуального хоста. Для директивы, не определенной в настройках виртуального хоста, используется значение по умолчанию.

  • DirectoryIndex — это страница по умолчанию, обслуживаемая сервером, когда пользователь запрашивает индекс каталога, указав косую черту (/) в конце имени каталога.

    Например, когда пользователь запрашивает страницу http://www.example.com/this_directory/ , он или она получит либо страницу DirectoryIndex, если она существует, либо сгенерированный сервером список каталогов, если он не существует, и Указан параметр «Индексы» или страница «Отказано в доступе», если ни один из них не соответствует действительности. Сервер попытается найти один из файлов, перечисленных в директиве DirectoryIndex, и вернет первый найденный. Если он не находит ни один из этих файлов и если Options Indexes 9Для этого каталога установлено значение 0028, сервер сгенерирует и вернет список в формате HTML подкаталогов и файлов в каталоге. Значение по умолчанию, найденное в /etc/apache2/mods-available/dir.conf , — «index.html index.cgi index.pl index.php index.xhtml index.htm». Таким образом, если Apache2 найдет в запрошенном каталоге файл, соответствующий любому из этих имен, будет отображен первый.

  • Директива ErrorDocument позволяет указать файл, который Apache2 будет использовать для определенных событий ошибок. Например, если пользователь запрашивает несуществующий ресурс, возникает ошибка 404. По умолчанию Apache2 просто возвращает код возврата HTTP 404. Читать /etc/apache2/conf-available/localized-error-pages.conf для получения подробных инструкций по использованию ErrorDocument, включая расположение файлов примеров.

  • По умолчанию сервер записывает журнал передачи в файл /var/log/apache2/access. log . Вы можете изменить это для каждого сайта в файлах конфигурации вашего виртуального хоста с помощью директивы CustomLog или опустить его, чтобы принять значение по умолчанию, указанное в /etc/apache2/conf-available/other-vhosts-access-log. .конф . Вы также можете указать файл, в который записываются ошибки, с помощью директивы ErrorLog , значение которой по умолчанию — /var/log/apache2/error.log . Они хранятся отдельно от журналов передачи, чтобы помочь в устранении неполадок с вашим сервером Apache2. Вы также можете указать LogLevel (значение по умолчанию — «warn») и LogFormat (см. /etc/apache2/apache2.conf для значения по умолчанию).

  • Некоторые параметры указываются для каждого каталога, а не для каждого сервера. Опции — одна из этих директив. Раздел каталога заключен в XML-подобные теги, например:

    .

     <Каталог /var/www/html/mynewsite>
    ...
    
     

    Директива Options в разделе Directory принимает одно или несколько из следующих значений (среди прочих), разделенных пробелами:

    • ExecCGI — Разрешить выполнение сценариев CGI. CGI-скрипты не выполняются, если этот параметр не выбран.

      Осторожно

      Большинство файлов не должны выполняться как сценарии CGI. Это было бы очень опасно. CGI-скрипты должны храниться в каталоге, отдельном от вашего DocumentRoot и за его пределами, и только этот каталог должен иметь установленную опцию ExecCGI. Это значение по умолчанию, а расположение CGI-скриптов по умолчанию — /usr/lib/cgi-bin .

    • Включает — Разрешить включение на стороне сервера. Серверные включения разрешают HTML-файлу включать другие файлы. См. документацию Apache SSI (сообщество Ubuntu) для получения дополнительной информации.

    • IncludesNOEXEC — разрешить включение на стороне сервера, но отключить команды #exec и #include в сценариях CGI.

    • Индексы — Показать отформатированный список содержимого каталога, если в запрошенном каталоге не существует DirectoryIndex (например, index. html).

      Осторожно

      Из соображений безопасности это обычно не следует устанавливать и, конечно же, не следует устанавливать в каталоге DocumentRoot. Включайте эту опцию осторожно для каждого каталога, только если вы уверены, что хотите, чтобы пользователи видели все содержимое каталога.

    • Multiview — поддержка многоэкранных режимов с согласованием содержимого; эта опция отключена по умолчанию из соображений безопасности. См. документацию Apache2 по этому параметру.

    • SymLinksIfOwnerMatch — Переходите по символическим ссылкам только в том случае, если у целевого файла или каталога тот же владелец, что и у ссылки.

Настройки apache2

В этом разделе объясняются некоторые основные параметры конфигурации демона apache2.

LockFile — Директива LockFile задает путь к файлу блокировки, используемому при компиляции сервера с использованием либо USE_FCNTL_SERIALIZED_ACCEPT, либо USE_FLOCK_SERIALIZED_ACCEPT. Он должен храниться на локальном диске. Следует оставить значение по умолчанию, если только каталог журналов не находится в общем ресурсе NFS. В этом случае значение по умолчанию следует изменить на местоположение на локальном диске и на каталог, доступный для чтения только пользователю root.

PidFile — Директива PidFile задает файл, в котором сервер записывает свой идентификатор процесса (pid). Этот файл должен быть доступен для чтения только пользователю root. В большинстве случаев следует оставить значение по умолчанию.

Пользователь — Директива User устанавливает идентификатор пользователя, используемый сервером для ответа на запросы. Этот параметр определяет доступ к серверу. Любые файлы, недоступные для этого пользователя, также будут недоступны для посетителей вашего сайта. Значением по умолчанию для пользователя является «www-data».

Предупреждение

Если вы точно не знаете, что делаете, не устанавливайте для директивы пользователя значение root. Использование root в качестве пользователя создаст большие дыры в безопасности вашего веб-сервера.

Group — Директива Group аналогична директиве User. Группа задает группу, под которой сервер будет отвечать на запросы. Группа по умолчанию также «www-data».

Модули Apache2

Apache2 — модульный сервер. Это означает, что в главный сервер включены только самые основные функции. Расширенные функции доступны через модули, которые можно загрузить в Apache2. По умолчанию базовый набор модулей включается в сервер во время компиляции. Если сервер скомпилирован для использования динамически загружаемых модулей, то модули можно скомпилировать отдельно и добавить в любой момент с помощью директивы LoadModule. В противном случае Apache2 необходимо перекомпилировать для добавления или удаления модулей.

Ubuntu компилирует Apache2 для динамической загрузки модулей. Директивы конфигурации могут быть условно включены при наличии определенного модуля путем включения их в блок .

Вы можете установить дополнительные модули Apache2 и использовать их с вашим веб-сервером. Например, выполните следующую команду в терминале, чтобы установить модуль Python 3 WSGI:

 sudo apt установить libapache2-mod-wsgi-py3
 

Установка автоматически включит модуль, но мы можем отключить его с помощью а2дисмод :

 судо a2dismod wsgi
sudo systemctl перезапустить apache2.service
 

А затем используйте утилиту a2enmod , чтобы повторно включить его:

 судо a2enmod wsgi
sudo systemctl перезапустить apache2.service
 

Дополнительные модули, уже доступные в вашей системе, см. в каталоге /etc/apache2/mods-available .

Конфигурация HTTPS

Модуль mod_ssl добавляет в сервер Apache2 важную функцию — возможность шифрования связи. Таким образом, когда ваш браузер обменивается данными с использованием SSL, 9Префикс 0053 https:// используется в начале унифицированного указателя ресурса (URL) на панели навигации браузера.

Модуль mod_ssl доступен в пакете apache2-common. Выполните следующую команду в терминале, чтобы включить модуль mod_ssl :

 судо a2enmod ssl
 

Файл конфигурации HTTPS по умолчанию находится в /etc/apache2/sites-available/default-ssl.conf . Чтобы Apache2 обеспечивал HTTPS, сертификат и файл ключа также необходимы. Конфигурация HTTPS по умолчанию будет использовать сертификат и ключ, сгенерированные пакетом ssl-cert . Они хороши для тестирования, но автоматически сгенерированный сертификат и ключ следует заменить сертификатом, специфичным для сайта или сервера. Информацию о создании ключа и получении сертификата см. в разделе Сертификаты.

Чтобы настроить Apache2 для HTTPS, введите следующее:

 sudo a2ensite по умолчанию-ssl
 

Примечание

Каталоги /etc/ssl/certs и /etc/ssl/private являются местоположениями по умолчанию. Если вы устанавливаете сертификат и ключ в другой каталог, обязательно измените SSLCertificateFile и SSLCertificateKeyFile соответствующим образом.

Теперь, когда Apache2 настроен для HTTPS, перезапустите службу, чтобы включить новые настройки:

 sudo systemctl перезапустить apache2.service
 

Примечание

В зависимости от того, как вы получили сертификат, вам может потребоваться ввести парольную фразу при запуске Apache2.

Вы можете получить доступ к защищенным страницам сервера, набрав https://your_hostname/url/ в адресной строке браузера.

Совместное использование Разрешение на запись

Чтобы несколько пользователей могли писать в один и тот же каталог, необходимо предоставить разрешение на запись группе, которую они совместно используют. В следующем примере разрешение на запись для общего доступа предоставляется /var/www/html в группу «вебмастера».

 sudo chgrp -R веб-мастера /var/www/html
sudo chmod -R g=rwX /var/www/html/
 

Эти команды рекурсивно устанавливают групповое разрешение для всех файлов и каталогов в /var/www/html , чтобы разрешить чтение, запись и поиск в каталогах. Многие администраторы находят это полезным для разрешения нескольким пользователям редактировать файлы в дереве каталогов.

Предупреждение

Демон apache2 будет работать как 9Пользователь 0053 www-data , которому соответствует группа www-data . Этим не следует предоставлять доступ на запись к корневому каталогу документа, так как это будет означать, что уязвимости в Apache или приложениях, которые он обслуживает, позволят злоумышленникам перезаписать обслуживаемый контент.

Каталожные номера

  • Документация Apache2 содержит подробную информацию о директивах конфигурации Apache2. Кроме того, официальную документацию по Apache2 см. в пакете apache2-doc.

  • Поваренная книга Apache O’Reilly — хороший ресурс для выполнения определенных конфигураций Apache2.

  • Вопросы по Apache2, относящиеся к Ubuntu, задавайте на IRC-канале #ubuntu-server на libera.chat.


Предыдущий
Введение

Следующий
Сквид прокси-серверы

Установить Docker Engine на Ubuntu

Чтобы начать работу с Docker Engine в Ubuntu, убедитесь, что вы
выполнить предварительные требования, а затем следовать
шаги установки.

Предпосылки

Требования ОС

Чтобы установить Docker Engine, вам потребуется 64-разрядная версия одного из этих
версии:

  • Убунту Лунар 23.04
  • Убунту Кинетик 22.10
  • Ubuntu Jammy 22.04 (LTS)
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

Docker Engine совместим с x86_64 (или amd64), armhf, arm64 и
архитектуры s390x.

Удаление старых версий

Старые версии Docker назывались docker , docker.io или
docker-engine , у вас также могут быть установлены containerd или runc .
Удалите все такие старые версии, прежде чем пытаться установить
новая версия:

 $ sudo apt-get remove docker docker-engine docker.io containerd runc
 

apt-get может сообщить, что у вас не установлен ни один из этих пакетов.

Образы, контейнеры, тома и сети, хранящиеся в /var/lib/docker/, не
автоматически удаляется при удалении Docker. Если вы хотите начать с
чистой установки и предпочитаете очищать любые существующие данные, прочитайте
удалить раздел Docker Engine.

Способы установки

Вы можете установить Docker Engine разными способами, в зависимости от ваших потребностей:

  • Docker Engine поставляется в комплекте с
    Рабочий стол Docker для Linux. Это
    самый простой и быстрый способ начать.

  • Настройте и установите Docker Engine из
    Репозиторий Docker apt .

  • Установите его вручную и управляйте обновлениями вручную.

  • Используйте удобные сценарии. Только
    рекомендуется для сред тестирования и разработки.

Установить с помощью репозитория apt

Перед первой установкой Docker Engine на новый хост-компьютер
необходимо настроить репозиторий Docker. После этого вы можете установить и обновить
Докер из репозитория.

Настроить репозиторий
  1. Обновите индекс пакетов apt и установите пакеты, чтобы позволить apt использовать
    репозиторий через HTTPS:

     $ sudo apt-получить обновление
    $ sudo apt-get установить ca-сертификаты curl gnupg
     
  2. Добавить официальный GPG-ключ Docker:

     $ sudo install -m 0755 -d /etc/apt/keyrings
    $ curl -fsSL https://download. docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    $ sudo chmod a+r /etc/apt/keyrings/docker.gpg
     
  3. Используйте следующую команду для настройки репозитория:

     $ эхо \
      "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      "$(. /etc/os-release && echo "$VERSION_CODENAME")" стабильная" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
     

    Примечание

    Если вы используете производный дистрибутив Ubuntu, например Linux Mint,
    вам может понадобиться использовать UBUNTU_CODENAME вместо VERSION_CODENAME .

Установка модуля Docker
  1. Обновление индекса пакета apt :

     $ sudo apt-получить обновление
     
  2. Установите Docker Engine, containerd и Docker Compose.

    • Последний
    • Специальная версия

    Чтобы установить последнюю версию, запустите:

     $ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
     

    Чтобы установить определенную версию Docker Engine, начните с перечисления доступных
    версии в репозитории:

     # Список доступных версий:
    $ apt-cache мэдисон докер-се | awk '{напечатать $3}'
    5:24.0.0-1~ubuntu.22.04~варенье
    5:23.0.6-1~ubuntu.22.04~варенье
    <...>
     

    Выберите нужную версию и установите:

     $ VERSION_STRING=5:24.0.0-1~ubuntu.22.04~jammy
    $ sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin
     

  3. Убедитесь, что установка Docker Engine прошла успешно, запустив
    привет-мир изображение.

     $ sudo docker запустить hello-world
     

    Эта команда загружает тестовый образ и запускает его в контейнере. Когда
    контейнер запускается, он печатает подтверждающее сообщение и завершает работу.

Вы успешно установили и запустили Docker Engine.

Наконечник

Получение ошибок при попытке запуска без рута?

Группа пользователей docker существует, но не содержит пользователей, поэтому вам необходимо
использовать sudo для запуска команд Docker. Перейти к постустановке Linux
чтобы разрешить непривилегированным пользователям запускать команды Docker и выполнять другие необязательные действия по настройке.

Обновление ядра Docker

Чтобы обновить Docker Engine, следуйте инструкциям по установке,
выбрав новую версию, которую вы хотите установить.

Установить из пакета

Если вы не можете использовать репозиторий Docker apt для установки Docker Engine, вы можете
загрузите файл deb для своего выпуска и установите его вручную. Вам нужно
загружать новый файл каждый раз, когда вы хотите обновить Docker Engine.

  1. Перейти к https://download.docker.com/linux/ubuntu/dists/ .

  2. Выберите свою версию Ubuntu в списке.

  3. Перейдите к pool/stable/ и выберите подходящую архитектуру ( amd64 ,
    armhf , arm64 или s390x ).

  4. Загрузите следующие файлы deb для Docker Engine, CLI, containerd,
    и пакеты Docker Compose:

    • containerd.io_<версия>_<архитектура>.deb
    • docker-ce_<версия>_<архитектура>.deb
    • docker-ce-cli_<версия>_<архитектура>.deb
    • docker-buildx-plugin_<версия>_<архитектура>.deb
    • docker-compose-plugin_<версия>_<архитектура>.deb
  5. Установите пакеты . deb . Обновите пути в следующем примере, чтобы
    где вы загрузили пакеты Docker.

     $ sudo dpkg -i ./containerd.io_<версия>_<архитектура>.deb \
      ./docker-ce_<версия>_<архитектура>.deb \
      ./docker-ce-cli_<версия>_<архитектура>.deb \
      ./docker-buildx-plugin_<версия>_<архитектура>.deb \
      ./docker-compose-plugin_<версия>_<архитектура>.deb
     

    Демон Docker запускается автоматически.

  6. Убедитесь, что установка Docker Engine прошла успешно, запустив
    привет-мир изображение.

     $ запуск докера службы sudo
    $ sudo docker запустить привет-мир
     

    Эта команда загружает тестовый образ и запускает его в контейнере. Когда
    контейнер запускается, он печатает подтверждающее сообщение и завершает работу.

Вы успешно установили и запустили Docker Engine.

Наконечник

Получение ошибок при попытке запуска без рута?

Группа пользователей docker существует, но не содержит пользователей, поэтому вам необходимо
использовать sudo для запуска команд Docker. Перейти к постустановке Linux
чтобы разрешить непривилегированным пользователям запускать команды Docker и выполнять другие необязательные действия по настройке.

Обновление ядра Docker

Чтобы обновить Docker Engine, загрузите новые файлы пакетов и повторите
процедура установки, указывая на новые файлы.

Установка с помощью вспомогательного сценария

Docker предоставляет удобный скрипт по адресу
https://get.docker.com/ для установки Docker в
среды разработки неинтерактивно. Удобный скрипт не
рекомендуется для производственных сред, но полезно для создания
сценарий подготовки, адаптированный к вашим потребностям. Также см.
установить, используя шаги репозитория, чтобы узнать
об этапах установки для установки с использованием репозитория пакетов. Исходный код
потому что скрипт с открытым исходным кодом, и вы можете найти его в
docker-install репозиторий на GitHub.

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

  • Для запуска сценария требуются привилегии root или sudo .
  • Сценарий пытается определить ваш дистрибутив и версию Linux и
    настроить систему управления пакетами для вас.
  • Сценарий не позволяет настраивать большинство параметров установки.
  • Сценарий устанавливает зависимости и рекомендации, не запрашивая
    подтверждение. Это может установить большое количество пакетов, в зависимости от
    Текущая конфигурация вашего хост-компьютера.
  • По умолчанию скрипт устанавливает последнюю стабильную версию Docker,
    контейнерд и рунк. При использовании этого сценария для инициализации машины это может
    привести к неожиданному обновлению основных версий Docker. Всегда тестируйте обновления в
    тестовую среду перед развертыванием в ваших производственных системах.
  • Сценарий не предназначен для обновления существующей установки Docker. Когда
    используя сценарий для обновления существующей установки, зависимости могут не
    обновляется до ожидаемой версии, что приводит к устаревшим версиям.

Совет: просмотрите шаги сценария перед запуском

Вы можете запустить сценарий с параметром --dry-run , чтобы узнать, какие шаги
скрипт будет запускаться при вызове:

 $ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh --dry-run
 

В этом примере сценарий загружается из
https://get.docker.com/ и запускает его для установки
последняя стабильная версия Docker для Linux:

 $ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
Выполнение сценария установки докера, коммит: 7cae5f8b0decc17d6571f9f52eb840fbc13b2737
<...>
 

Теперь вы успешно установили и запустили Docker Engine. Докер
service запускается автоматически в дистрибутивах на основе Debian. об/мин на основе
дистрибутивов, таких как CentOS, Fedora, RHEL или SLES, вам необходимо запустить его
вручную с помощью соответствующей команды systemctl или service . Как сообщение
указывает, что пользователи без полномочий root не могут запускать команды Docker по умолчанию.

Использовать Docker в качестве непривилегированного пользователя или установить в режиме без прав root?

Сценарию установки требуются привилегии root или sudo для установки и
используйте Докер. Если вы хотите предоставить пользователям без полномочий root доступ к Docker, см.
действия после установки для Linux.
Вы также можете установить Docker без привилегии root или настроены для работы в
безродный режим. Инструкции по запуску Docker в режиме без рута см.
запустите демон Docker от имени пользователя без полномочий root (режим без полномочий root).

Установка предварительных версий

Docker также предоставляет удобный скрипт по адресу
https://test.docker.com/ для установки предварительных выпусков
Докер в Linux. Этот сценарий аналогичен сценарию по адресу get. docker.com , но
настраивает ваш менеджер пакетов на использование тестового канала пакета Docker
репозиторий. В тестовый канал входят как стабильные, так и предварительные версии (бета-версия).
версии, релиз-кандидаты) Docker. Используйте этот скрипт, чтобы получить ранний доступ к
новые выпуски и оценивать их в тестовой среде, прежде чем они
выпущен как стабильный.

Чтобы установить последнюю версию Docker в Linux из тестового канала, запустите:

 $ curl -fsSL https://test.docker.com -o test-docker.sh
$ sudo sh test-docker.sh
 
Обновите Docker после использования удобного сценария

Если вы установили Docker с помощью удобного сценария, вам следует обновить Docker
используя ваш менеджер пакетов напрямую. Нет никакого преимущества в повторном запуске
удобный скрипт. Повторный запуск может вызвать проблемы, если он попытается переустановить
репозитории, которые уже существуют на хост-компьютере.

Удаление ядра Docker

  1. Удалите пакеты Docker Engine, CLI, containerd и Docker Compose:

     $ sudo apt-get purge docker-ce docker-ce-cli containerd.