Архив рубрики: Публикации

Git 2.37 уже выпущен, и это его новости

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

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



Читать

Что такое виртуальный сервер

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

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

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

 

Виртуальный сервер: зачем нужен?

Как и любой сервер, виртуальные серверы используются для хранения данных из разных проектов, таких как:

  • Информационные площадки и интернет-магазины;
  • Базы данных с частной информацией для использования внутри компании;
  • Платформы, созданные для тестирования ПО;
  • Персональные облачные хранилища.

Дата-центр www.xelent.ru предлагает бесплатный тестовый период на аренду виртуального сервера, чтобы оценить варианты его использования самостоятельно и без затрат.

 

Виды виртуальных серверов

В контексте виртуальных серверов есть две аббревиатуры: VPS и VDS. Первый означает виртуальный частный сервер, а второй — виртуальный выделенный сервер. Обе технологии в целом одинаковы. Оба термина означают один из способов аренды и использования сервера.

Можно также столкнуться с мнением, что VPS — это сервер, работающий с OpenVZ-технологией, а VDS с KVM.

OpenVZ — это уровень программной виртуализации, который устанавливается на ядро ​​Linux и функционирует как копия этой системы Linux. У вас много виртуальных ПК, но все они на самом деле основаны на одном ядре. Это приводит к таким недостаткам, как невозможность установить ОС, изменить файловую систему, программные компоненты. Однако виртуальные частные серверы с OpenVZ обычно дешевле.

KVM — это программная виртуализация, реализуемая специальным приложением под названием «гипервизор». Это приложение создает изолированную копию системы, которая превращается в ваш собственный полнофункциональный ПК. Такой подход дает много привилегий. Только арендатор имеет доступ к серверу KVM. Виртуальный выделенный сервер с этой технологией стоит дороже.



2022-06-27T16:50:37
Сервер

Могу ли я запретить доступ к съёмным устройствам в Windows?

В этом посте показаны шаги для учащихся и новых пользователей, чтобы отключить или включить доступ к съемным накопителям в Windows 11. USB-накопитель или съемный накопитель — это распространенный способ простой передачи файлов с одного компьютера на другой.

Съемные запоминающие устройства также могут использоваться для заражения компьютеров вредоносными программами и вирусами. В высокозащищенных средах большинство людей отключают использование внешних запоминающих устройств в Windows.

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

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

Если доступ к съемным устройствам запрещен в Windows и вы хотите повторно включить или разрешить запись на съемные устройства хранения, выполните также следующие действия.

Как включить или отключить доступ к съемным устройствам хранения в Windows 11

Как упоминалось выше, Windows по умолчанию позволяет пользователям читать и записывать на съемные устройства хранения данных, которые они подключают к своим компьютерам.

Ниже описано, как управлять этим в Windows 11.

Чтобы контролировать доступ к съемным устройствам хранения в Windows, откройте редактор локальной групповой политики, щелкнув меню «Пуск» и выполнив поиск « Изменить групповую политику» , как показано ниже.

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

В левой панели редактора локальной групповой политики разверните дерево:

Конфигурация компьютера> Административные шаблоны> Система> Доступ к съемному хранилищу

На панели сведений о доступе к съемным носителям справа найдите и дважды щелкните параметр All Removable Storage classes: Deny all access.

В окне «Все классы съемных хранилищ: Запретить доступ» установите для параметра значение « Включено».

Выберите ОК.

Закройте редактор локальной групповой политики.

Если для всех классов съемных хранилищ: Запретить доступ включен и вы хотите отключить его с помощью редактора локальной групповой политики, перейдите по указанному ниже пути к политике:

Конфигурация компьютера> Административные шаблоны> Система> Доступ к съемному хранилищу

Найдите и дважды щелкните Все классы съемных носителей: Запретить все настройки доступа, затем установите для параметра значение Not configured.

Вывод:

В этом посте показано, как отключить или включить съемные запоминающие устройства в Windows 11. Если вы обнаружите какую-либо ошибку выше или вам есть что добавить, воспользуйтесь формой комментариев ниже.

https://www.youtube.com/watch?v=LDYJSzKZFdE



2022-06-27T09:05:17
Вопросы читателей

Скрытие или отображение разделов в Windows

Если вы работаете с компьютерами и устройствами Windows, имеющими несколько разделов и дисков, вам может потребоваться скрыть определенный раздел. Например, многие производители компьютеров создают на своих устройствах скрытые разделы восстановления. Однако в определенных ситуациях разделы восстановления могут начать отображаться в проводнике и в других местах на вашем устройстве. Хотя это полезно для восстановления вашего ПК, вы не всегда можете захотеть его видеть и предпочитаете скрывать раздел восстановления от просмотра. Точно так же, когда вам нужен простой доступ к скрытому разделу, вы захотите отобразить этот раздел. Какими бы ни были ваши причины, вот как скрыть раздел в Windows и как отобразить его:

ПРИМЕЧАНИЕ. Инструкции в этом руководстве относятся как к Windows 10, так и к Windows 11. Поскольку в обеих операционных системах все выглядит почти одинаково, для простоты мы используем снимки экрана, сделанные только в Windows 11.

Как скрыть раздел в Windows с помощью управления дисками

Во-первых, вам нужно открыть «Управление дисками». Быстрый способ сделать это, который работает одинаково в Windows 10 и Windows 11, — использовать меню WinX. Щелкните правой кнопкой мыши или нажмите и удерживайте кнопку «Пуск» и выберите «Управление дисками» в меню.

Откройте меню WinX в Windows

В окне «Управление дисками» укажите раздел, который вы хотите скрыть. Вы можете найти его в списке томов вверху и в графическом представлении внизу окна.

Инструмент управления дисками из Windows

Щелкните правой кнопкой мыши или нажмите и удерживайте раздел, который вы хотите скрыть (или отключить, если хотите). Затем в контекстном меню выберите «Изменить букву диска и путь».

Изменить букву диска и пути для диска

Нажмите или коснитесь кнопки «Удалить» в окне «Изменить букву диска и путь».

Удалить букву диска раздела

Вас попросят подтвердить, что вы хотите удалить букву диска. Нажмите Да.

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

Вы можете получить предупреждение о том, что диск в настоящее время используется, и в этом случае вам следует закрыть все открытые приложения и файлы, особенно те, которые хранятся на диске, который вы пытаетесь скрыть. Затем нажмите «Да» в диалоговом окне «Управление дисками».

Скрыть раздел в Windows

Теперь раздел скрыт (или отключен) и больше не доступен из Проводника. С этого момента при каждом входе в систему Windows будет запоминать только что сделанные вами настройки. Таким образом, раздел больше не будет доступен для приложений и пользователей, если вы не решите отобразить (или смонтировать) его. Вы можете закрыть Управление дисками и продолжить работу.

Как отобразить раздел в Windows с помощью управления дисками

Если вы хотите, чтобы раздел снова был доступен, вам нужно отобразить его или смонтировать. Для этого снова откройте инструмент «Управление дисками». В списке томов вверху или в списке дисков внизу окна найдите скрытый раздел и щелкните по нему правой кнопкой мыши. В контекстном меню выберите «Изменить букву диска и путь».

Изменить букву диска и пути для раздела

В окне «Изменить букву диска и путь» нажмите кнопку «Добавить».

Добавить букву диска в скрытый раздел

Откроется окно «Добавить букву диска или путь». Здесь выберите букву диска, которую вы хотите назначить, в раскрывающемся списке справа. Затем нажмите или коснитесь ОК.

Выберите букву для скрытого раздела

Вы успешно раскрыли раздел. Теперь он смонтирован и виден всем пользователям и приложениям на вашем компьютере с Windows.

Как скрыть раздел в Windows с помощью командной строки

Вы также можете скрыть диск в Windows с помощью командной строки. Откройте CMD от имени администратора и выполните следующую команду:

mountvol [буква диска:] /d

Замените [буква_диска] на фактическую букву диска раздела, который вы хотите скрыть или размонтировать. Например, чтобы скрыть диск F:, нужно выполнить команду:

mountvol F: /d

Используйте cmd, чтобы скрыть раздел в Windows

СОВЕТ: Если вы хотите узнать больше о команде mountvol и о том, как она работает, прочтите эту документацию от Microsoft: mountvol.

Как отобразить раздел в Windows с помощью командной строки

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

mountvol /?

Он отображает всю документацию о команде mountvol и ее параметрах.

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

Прокрутите вниз, пока не увидите список возможных значений параметра VolumeName вместе с текущими точками подключения. Записи с надписью *** NO MOUNT POINTS *** представляют собой скрытые разделы, которые можно смонтировать (отобразить).

Имена томов скрытых разделов

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

mountvol [буква диска:] [имя тома]

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

Кроме того, замените [volumename] точным именем диска, который вы хотите смонтировать, как показано в предыдущей команде. Он начинается с \?Volume{. В нашем случае раздел, который мы хотим смонтировать, называется \?Volume{c0f71678-8aac-4170-8fbd-a5c6329d95f3}.

Итак, наша команда выглядит так:

mountvol F: \?Volume{c0f71678-8aac-4170-8fbd-a5c6329d95f3}

Как отобразить раздел из cmd

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

ПРИМЕЧАНИЕ. Одна из сложностей в этом методе заключается в том, что при работе на компьютере с Windows со многими скрытыми разделами вы не знаете идентификатор тома раздела, который хотите смонтировать для использования. Чтобы определить идентификатор скрытого раздела, который вы хотите отобразить, вам нужно открыть «Управление дисками», получить доступ к свойствам этого скрытого раздела и перейти на вкладку «Безопасность». Там вы увидите идентификатор в поле Имя объекта.

Найдите имя тома скрытого диска

Вот и все!

Почему вы хотели скрыть разделы в Windows?

Теперь вы знаете, как скрыть раздел в Windows, а также как отобразить разделы. Какой ваш любимый метод и почему вы решили скрыть свои разделы? Чтобы уберечь их от посторонних глаз? У тебя была другая причина? Дайте нам знать в комментариях ниже.

https://www.youtube.com/watch?v=MrUDjuRmvlo



2022-06-26T20:05:01
Вопросы читателей

Начальная настройка веб сервера на Ubuntu 20.04.4 LTS в 2022 году под множество изолированных сайтов

1.0.1. Проверка и изменение часового пояса сервера




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




date




Вывод будет примерно следующим:




Fri 16 Jun 2022 01:01:01 AM MSK




Мы привыкли к 24 часовому отображению времени и нам его нужно изменить. Для этого вписываем в консоль следующую команду и нажимаем «Enter»:




sudo dpkg-reconfigure tzdata




В выпадающем окне «Geographic area:» выбираем «Europe«.




На следующей странице в «Time zone:» выбираем «Moscow«.




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




Current default time zone: 'Europe/Moscow'
Local time is now:      Fri Jun 16 01:12:12 MSK 2022.
Universal Time is now:  Thu Jun 15 22:12:12 UTC 2022.




Обращаем ваше внимание на то, что встроенный в Ubuntu планировщик заданий «cron«, использующийся для периодического выполнения заданий в определённое время автоматически не подхватывает новый часовой пояс и его надо перезагрузить командой:




sudo service cron restart




1.0.2. Проверка настройки кодировки сервера и установка кириллицы в консоли




Если в консоли нет поддержки UFT-8 и кириллицы, то у нас могут возникнуть некоторые неприятные ситуации. Заранее избежать их мы можем, если установим, правильно настроим и сконфигурируем локаль используя команду:




sudo apt install locales




После этого производим следующую настройку:




sudo dpkg-reconfigure locales




Выбираем желаемые локализации в окне «Locales to be generated:«




«en_US.UTF-8 UTF-8» является предпочтительным выбором в большинстве случаев, но вы можете добавить «ru_RU.UTF-8 UTF-8«




В следующем окне «Default locale for the system environment:» предпочтительно выбирать «en_US.UTF-8«




1.0.3. Производим замену названия сервера/hostname




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




Изменение hostname влияет в основном на восприятие и на наш взгляд правильно каждый сервер называть своим понятным и читаемым именем, а не тем, что вам рандомно генерирует хостер, например мы можем заменить «vps-server-548739» на понятное для вас имя «companyname-ru-msk-WEBServer-01».




Имя сервера может быть свободно изменено в любой момент следующей командой:




echo 'companyname-ru-msk-WEBServer-01 ' > /etc/hostname




Для применения настроек изменённого имени сервера нужно сделать перезагрузку командой:




sudo reboot





1.0.4 Обновляем UBUNTU




Далее нам необходимо обновить все пакеты в системе до актуальных версий:




sudo apt update && sudo apt dist-upgrade




Выбираем варианты на ваш выбор:




[O] keep the local version currently installed т.к. вашим хостинг-провайдером могут быть изначально вписаны дополнительные днс и тп
show the differences between the versions — для сравнения разницы в файлах




1.0.5. Настройка ssh




1.0.5.1. Меняем порт ssh сервера на произвольный




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




Изменение порта не делает ваш сервер безопасным или защищеннее, но позволяет отсеять некоторое количество ботов, автоматически сканирующих ssh на 22 порту.




Используя следующую команду меняем порт на понравившийся вам, желательно не использовать порты из первой тысячи (1-999) и порты используемые другими приложениями (список основных используемых портов можно посмотреть в википедии), если эти приложения когда-либо могут оказаться установленными на ваш сервер:




sudo nano /etc/ssh/sshd_config




В редакторе находим строку со следующим содержимым:




#Port 22




С большой вероятностью эта строка будет закомментирована знаком решетки (#), т.к. используются значения по умолчанию, т.е. порт 22.




Нам же нужно раскомментировать эту строку (удалить знак «#») и заменить порт на желаемый, например на 62222 (любой на ваш выбор).




Port 62222




В обязательном порядке нужно записать и сохранить в надежном месте (или в нескольких) ваш новый порт, во избежание дальнейших проблем с подключением к серверу!




Перезапускам демон ssh для применения настроек:




sudo /etc/init.d/ssh restart
или 
sudo service ssh restart 




Если вы допустили какую-либо ошибку в конфигурационном файле, то вы можете потерять связь с сервером. Будьте осторожны!




1.0.5.1.2. Устанавливаем netstat 




Устанавливаем netstat и проверяем корректность сделанных изменений: 




sudo apt install net-tools




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




netstat -tulpan | grep ssh




В результатах мы должны увидеть указанный ранее порт, например:




tcp   0   0 0.0.0.0:62222   0.0.0.0:*   LISTEN   1150/sshd: /usr/sbi




После чего отключаемся от сервера по ssh, меняем в вашей программе порт на указанный ранее (пр.: 62222) и подключаемся уже с новым портом.




1.0.5.2. Отключаем DebianBanner




Добавим ещё один полезный параметр, который отсутствует в файле sshd_config – DebianBanner. Этот параметр добавляет в строку ответа sshd информацию об операционной системе, при обращению к серверу по протоколу TELNET или при сканировании nmap. Эта строка может выглядеть так: SSH-2.0-OpenSSH_5.5p1 Debian-6+squeeze1.




Скроем информацию о нашей операционной системе:




sudo nano /etc/ssh/sshd_config




Добавляем следующую строку в конце файла:




DebianBanner no




Для применения изменений перезагружаем демон ssh:




sudo service ssh restart




1.0.5.3. Включаем проверку прав на директорию подключения StrictModes




Опция «StrictModes» определяет должен ли ssh проверять права пользователей в их домашних каталогах и файлы rhosts перед тем, как авторизовать на сервере. Эта опция должна всегда быть установлена в «yes», т.к. некоторые пользователи по неосторожности допускают запись в своих каталогах и файлах любым авторизованным пользователям, что в свою очередь является критической уязвимостью в случае взлома одного из аккаунтов.




Во избежание этого момента вносим следующие правки в файл




sudo nano /etc/ssh/sshd_config




Находим и изменяем (раскомментируем):




StrictModes  yes




Для применения изменений перезагружаем ssh:




sudo service ssh restart




1.0.5.4. Добавление нового системного пользователя UBUNTU 20.04 LTS




Ввиду того, что заходить под рут аккаунтом не рекомендовано, то мы должны создать нового пользователя, например «your_user_name»:




adduser your_user_name 




После чего вводим СЛОЖНЫЙ пароль этого пользователя и записываем в надежном месте, а лучше в двух, т.к. потеряв его вы в дальнейшем потеряете доступ к серверу.




Пример хорошего пароля: 0$j%lQM1ArBS




После этого нужно дать возможность пользователю выполнять команды sudo:




nano /etc/sudoers




Добавляем следующую строку в самом конце:




имя_пользователя ALL=(ALL) ALL




например:




your_user_name ALL=(ALL) ALL




После этого у вас появится возможность, авторизовавшись на сервере по ssh под новым пользователем зайти под рутом, для этого выполняем:




su




вводим пароль пользователя root




После этого обязательно нужно отключить возможность авторизации root пользователя по ssh




1.0.5.5. Отключаем доступ у root пользователя PermitRootLogin (дополняется)




Этот параметр разрешает или запрещает вход по SSH под суперпользователем «root». Запрещаем вход суперпользователю.




Снова редактируем знакомый нам конфигурационный файл ssh:




sudo nano /etc/ssh/sshd_config




Находим и изменяем:




PermitRootLogin no




Для применения изменений перезагружаем ssh:




sudo service ssh restart




После этого можно отключиться от ssh и попробовать снова залогиниться под пользователем root. Если вы всё правильно настроили, то ничего не получится. Нужно подключаться по дополнительному созданному вами пользователю your_user_name.




На запрос пароля sudo надо отвечать СВОИМ паролем. На su — паролем рута.
PermitRootLogin no означает, что нельзя зайти root пользователем по ssh, надо зайти иным пользователем, а потом (если надо) поднимать привилегии до рута. Нормальная политика безопасности. Имя root слишком известно 🙂




Можно сделать НЕБЕЗОПАСНЫЙ финт ушами и отключить у вашего только что созданного пользователя (your_user_name) ввод пароля после попытки запуска команд от суперпользователя root (su/sudo/sudo -s).




Открываем от root пользователя следующий файл:




sudo nano /etc/sudoers




После этого в конец файла добавляем строку:




your_user_name  ALL=(ALL) NOPASSWD:ALL




Не забыв заменить your_user_name на имя вашего нового пользователя.




После этого вы сможете запускать команды не вводя пароль root пользователя.




Стоить помнить, что данный способ является плохим примером безопасности!




1.0.6. Устанавливаем htop




htop — продвинутый монитор процессов, написанный для Linux. Он был задуман заменить стандартную программу top. Htop показывает динамический список системных процессов, список обычно выравнивается по использованию ЦПУ. В отличие от top, htop показывает все процессы в системе. Также показывает время непрерывной работы, использование процессоров и памяти. Htop часто применяется в тех случаях, когда информации даваемой утилитой top недостаточно, например при поиске утечек памяти в процессах. Htop написан на языке Си и использует для отображения библиотеку Ncurses. Я всегда ставлю его при установке системы и моментально забываю про утилиту top.




sudo apt install htop




Команда запуска:




htop




Для выхода нажимаем F10 или CTRL+C




Более детальную информацию по использованию утилиты htop можно найти на этой странице




1.0.7. Устанавливаем Midnight Commander




Midnight Commander — консольный файловый менеджер для Linux.




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




В консольном окружении для работы с файлами вы должны знать основные команды и их синтаксис. К счастью, в Linux также имеется текстовый файловый менеджер, работающий в консольном окружении. Он называется Midnight Commander (далее мы будем называть его просто MC).




Команда инсталляции:




sudo apt install mc




Команда запуска:




mc
или
sudo mc




Для выхода из mc (Midnight Commander) нажимаем клавишу F10




1.0.7. Устанавливаем и настраиваем ProFTPD (FTP-сервер на UBUNTU 20.04 LTS)




Мы очень надеемся, что большинство из вас прекрасно понимает, что устанавливать ftp сервер proftpd (как и любой другой) в 2022 году очень неразумно. Используйте SFTP, т.к. ftp протокол является небезопасным и устаревшим.




Установка производится командой:




sudo apt install proftpd




Открываем файл настроек:




sudo nano /etc/proftpd/proftpd.conf




Далее отключаем ipv6 (зачем вам на сервере с ftp — ipv6? *сарказм* )




UseIPv6 off




По желанию можно изменить приветственное название от сервера:




ServerName "FTPServerOK"




Рекомендуем вам изменить стандартный ftp порт, например на 48921:




Port 48921




Для того, что бы пользователи не могли выйти из домашнего каталога изменяем (раскомментируем) строчку:




DefaultRoot ~




Для разрешения перезаписи файлов проверяем наличие следующей строк:




AllowOverwrite on




Следующие настройки proftpd добавляем в конце текущего файла.




Пользователь root не должен иметь возможности попасть на ftp сервер, это реализуется добавлением следующей строки:




RootLogin off




Разрешаем дозагрузку файлов, при передаче которых произошла ошибка:




AllowStoreRestart on




В целях безопасности отключаем идентификацию proftpd сервера (в консоли ftp клиента):




ServerIdent   off




Так же можно изменить идентификацию на произвольную:




ServerIdent on "Welcome to FuckingTypeServer"




На этом настройка ftp сервера proftpd завершена, перезапускам его:




sudo service proftpd restart 
или
sudo /etc/init.d/proftpd restart




Небольшое отступление для тех, кто набрел на эту статью, после того, как казалось бы правильно настроенный сервер при попытке подключения сообщает что-то вроде: «FTP ошибка 530, некорректные данные аутентификации, «ProFTPD login failing with 530» или «proftpd 530 login incorrect», то вы наверняка будете рады тому, что найдете ниже, а именно следующую строку и правильный процесс создания пользователя.




Далее нужно выполнить следующие операции:




sudo nano /etc/shells




В конце файла добавить:




/bin/false




Сохраняем файл и закрываем редактирование.




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




Предположим, что мы создаем пользователя с именем «sample_user_name«, в таком случае команда будет выглядеть следующим образом:




sudo useradd sample_user_name -b /home -m -U -s /bin/false;




где, sample_user_name — это имя пользователя, папка которого будет находиться по адресу /home/sample_user_name/




Создаем пароль пользователя:




sudo passwd sample_user_name




Вводим пароль, подтверждаем и всё, готово, можно подключаться к ftp серверу.




1.0.8. Устанавливаем и настраиваем file2ban на UBUNTU 20.04 LTS




Принцип работы fail2ban прост. Специальный сервис ищет в системных журналах (логах) записи о неудачных попытках аутентификации и при определенных условиях с помощью iptables блокирует IP-адреса, с которых ведется атака.




Устанавливаем пакет fail2ban:




sudo apt install fail2ban




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




sudo systemctl enable fail2ban




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




sudo systemctl status fail2ban




Результат должен быть примерно следующим:




 fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-06-22 22:22:22 MSK; 29s ago
       Docs: man:fail2ban(1)
   Main PID: 2222 (f2b/server)
      Tasks: 5 (limit: 38328)
     Memory: 13.8M
     CGroup: /system.slice/fail2ban.service
             └─2222 /usr/bin/python3 /usr/bin/fail2ban-server -xf start




Файлы настроек fail2ban расположены в каталоге /etc/fail2ban/:




  • /fail2ban.conf – дефолтные настройки сервиса fail2ban;



  • /fail2ban.d/ – пользовательские настройки сервиса fail2ban;



  • /jail.conf – дефолтные настройки для защищаемых сервисов;



  • /jail.d/ – пользовательские настройки для защищаемых сервисов;



  • /filter.d/ – настройки шаблонов поиска в системных журналах (логах);



  • /action.d/ – настройки исполняемых действий;



  • /paths*.conf – настройки путей для различных операционных систем.




Во избежание перезаписи ваших настроек при обновлении пакетов, рекомендуем вместо редактирования файлов с дефолтным настройками создавать собственные (пользовательские) файлы настроек.




Вам необходимо удалить дефолтные настройки защиты sshd (очищаем файл):




cat /dev/null >/etc/fail2ban/jail.d/defaults-debian.conf




После этого создаём файл /etc/fail2ban/jail.d/sshd.local




nano /etc/fail2ban/jail.d/sshd.local




И добавляем в него следующую текстовую конфигурацию:




[sshd]
enabled = true
#порт, на который вы изменили стандартный 22 ssh:
port = 48922
#баним на 24 часа:
bantime = 86400 
#если за 2 часа:
findtime = 7200 
#более 2 неудачных попыток авторизации:
maxretry = 2 




Теперь если параметр enabled будет иметь значение true, сервис fail2ban заблокирует соответствующий IP-адрес на количество секунд, прописанное в параметре bantime, при условии, что за период, указанный в секундах в параметре findtime, с этого адреса будет проведено заданное параметром maxretry или большее число неудачных попыток ssh-аутентификации. По прошествии периода, прописанного в параметре bantime, заблокированный IP-адрес автоматически разблокируется.




В нашем примере IP-адрес будет блокироваться на 86400 секунд (24 часа), если в течение последних 7200 секунд (2х часов) с него было осуществлено 2 и более неудачных попыток аутентификации.




Настройка сервиса fail2ban завершена, необходимо его перезапустить:




sudo systemctl restart fail2ban 




В ходе использования fail2ban вам может понадобиться на время снять блок с конкретного IP-адреса или добавить его в список исключений.




Прежде всего, убедитесь, что нужный IP-адрес находится в списке заблокированных:




fail2ban-client status sshd




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




Образец результата команды:




Status for the jail: sshd
|- Filter
| |- Currently failed: 1
| |- Total failed: 12
| ̀ - File list: /var/log/secure
̀ - Actions
|- Currently banned: 1
|- Total banned: 2
̀ - Banned IP list: 8.8.4.4




Добавить ip в список исключений fail2ban ssh:




fail2ban-client set sshd addignoreip 8.8.4.4




Разблокировать ip в fail2ban ssh:




fail2ban-client set sshd unbanip 8.8.4.4




Более подробно 1: https://andreyex.ru/linux/kak-ustanovit-i-nastroit-fail2ban-v-ubuntu-20-04/




Более подробно 2: https://www.servers.ru/knowledge/linux-administration/how-to-protect-ssh-using-fail2ban-on-ubuntu-16_04 и тут: https://linux-notes.org/udalit-iz-fail2ban-zablokirovanny-j-ip/




1.0.9. Настройка приветствия консоли, устанавливаем landscape-common UBUNTU 20.04 LTS




Установка производится командой:




sudo apt install landscape-common




После чего перезагружаем сервер:




sudo reboot




1.1.0. Установка и настройка nginx на UBUNTU 20.04 LTS




Установка самой последней версии nginx всё ещё занимает чуть больше времени, чем стандартная команда




sudo apt install nginx




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




Установите пакеты, необходимые для подключения apt-репозитория:




sudo apt install curl gnupg2 ca-certificates lsb-release




Для подключения apt-репозитория стабильной версии nginx, выполните следующую команду (я использую её):




echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx"      | sudo tee /etc/apt/sources.list.d/nginx.list 




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




Для UBUNTU 18.04.2:




echo "deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ bionic nginx" 
     | sudo tee /etc/apt/sources.list.d/nginx.list




Для UBUNTU 20.04.1:




echo "deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ focal nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ focal nginx" 
     | sudo tee /etc/apt/sources.list.d/nginx.list




Для UBUNTU 22.04:




echo "deb [arch=amd64] http://nginx.org/packages/mainline/ubuntu/ jammy nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ jammy nginx" 
     | sudo tee /etc/apt/sources.list.d/nginx.list




Теперь нужно импортировать официальный ключ, используемый apt для проверки подлинности пакетов:




curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -




Проверьте, верный ли ключ был импортирован:




sudo apt-key fingerprint ABF5BD827BD9BF62 




Вывод команды должен содержать полный отпечаток ключа 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62:




pub   rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
      573B FD6B 3D8F BC64 1079  A6AB ABF5 BD82 7BD9 BF62
uid   [ unknown] nginx signing key <signing-key@nginx.com>




apt-key export 7BD9BF62 | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/nginx_key.gpg




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




sudo apt update && sudo apt install nginx




После этого можно проверить актуальность установленной версии nginx командой:




nginx -v




И сравнить версию с версией на официальном сайте nginx https://nginx.org/en/download.html (Stable version)




1.1.1. Конфигурирование nginx на UBUNTU 20.04 LTS для мультисайтинга




Переименовываем старый файл настроек nginx:




sudo mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf_OLD




Создаем новый файл конфигурации nginx:




sudo nano /etc/nginx/nginx.conf 




Вставляем в него следующее содержимое:




user www-data;
worker_processes 4; #Количество одновременно запущенных процессов nginx должно быть равно количеству ядер вашего процессора
pid /run/nginx.pid;

events {
	worker_connections 300;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##
	
	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 30;
	types_hash_max_size 2048;
	server_tokens off;
	#more_set_headers 'Sever: EGOmedia fast server';

	client_max_body_size 00m;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;
	gzip_disable "msie6";

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# gzip_http_version 1.1;
	# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;

	##
	# nginx-naxsi config
	##
	# Uncomment it if you installed nginx-naxsi
	##

	#include /etc/nginx/naxsi_core.rules;

	##
	# nginx-passenger config
	##
	# Uncomment it if you installed nginx-passenger
	##
	
	#passenger_root /usr;
	#passenger_ruby /usr/bin/ruby;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}


#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
# 
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}




Создаем две новых папки под конфигурационные файлы:




mkdir {/etc/nginx/sites-available,/etc/nginx/sites-enabled}




Перезагружаем nginx командой:




sudo service nginx restart




После чего переходим в браузере по адресу: http://ip_вашего_сервера




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




Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.




1.2.0. Установка и настройка MySQL/MariaDB на UBUNTU 20.04 LTS




MySQL является системой управления базами данных с открытым исходным кодом и обычно используется, как часть популярного стека LAMP (Linux, Apache, MySQL, PHP/Python/Perl). MySQL использует реляционную базу данных и SQL (Structured Query Language, язык структурированных запросов) для управления данными.




Короткая версия установки очень проста: достаточно обновить индекс пакетов, установить пакет mysql-server, а затем запустить скрипт настройки безопасности.




Обновляем индекс пакетов apt командой:




sudo apt update




Затем устанавливаем сам пакет MySQL:




[ранее] Установка mysql-server:




sudo apt install mysql-server




[предпочтительный вариант] Установка mariadb-server:




sudo apt install mariadb-server




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




Выполните скрипт безопасности командой:




sudo mysql_secure_installation 




После чего вы получите сообщение о необходимости ввести пароль root пользователя, если он у вас установлен:




NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):




Можно смело нажимать «Enter», т.к. пароль у вас ещё не установлен.




После чего вы увидите предложение установить пароль для root пользователя:




OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n]




Выбираем «Y«, придумываем сложный пароль и вписываем его два раза.




После чего вы получите следующее сообщение:




By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n]




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




Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n]




Соглашаемся с тем, что root пользователь может подключаться с localhost, выбираем «Y«.




Удаляем тестовую базу данных «Y«:




By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n]




Перезагружаем привилегии «Y«:




Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n]




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




Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!




Подробности настройки MySQL 18.04 https://www.digitalocean.com/community/tutorials/mysql-ubuntu-18-04-ru




Подробности настройки MySQL 20.04 https://www.digitalocean.com/community/tutorials/how-to-install-mariadb-on-ubuntu-20-04-ru




1.3.0. Установка и настройка apache2-mpm-itk на UBUNTU 20.04 LTS




Модуль apache2-mpm-itk для Apache нужен для того чтобы запускать виртуальные хосты vhosts под своим UID или GID, проще говоря, скрипты сайта должны быть недоступны для других хостов даже для чтения (в случае взлома одного сайта не смогли взломать другой сайт находящихся на этом сервере).




Я уже давно использую apache2-mpm-itk на своих серверах, но после попытки установить apache2-mpm-itk в Ubuntu 18.04, понял что кое-что изменилось.




Теперь apache2-mpm-itk является отдельным модулем в Apache2 и устанавливается как модуль.




Чтобы установить модуль apache2-mpm-itk в Ubuntu 18.04 необходимо:




Установить apache2 в Ubuntu 20.04 LTS:




sudo apt install apache2 




После чего вы получите ошибку, это нормально.




Установить модуль libapache2-mpm-itk:




sudo apt install libapache2-mpm-itk




Включаем модуль apache2-mpm-itk:




sudo a2enmod mpm_prefork
затем
sudo a2enmod mpm_itk 




Редактируем файл конфигурации, т.к. Apache по умолчанию принимает запросы из интернета (80 порт и из-за его занятости была ошибка), а у нас это делает nginx:




sudo nano /etc/apache2/ports.conf




И изменяем строку:




Listen 80
на
Listen 127.0.0.1:8080




Перезагружаем apache командой:




sudo service apache2 restart




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




sudo apachectl -t -D DUMP_MODULES




Если видим:




.......
mpm_itk_module (shared)
........




То модуль apache2-mpm-itk установлен в Ubuntu 20.04 LTS и можно дальше настраивать сервер.




В виртуальных хостах apache ничего не изменилось:




<IfModule mpm_itk_module>
    AssignUserId user-www user-www
</IfModule>




Где user-www меняем на вашего пользователя.




1.4.0. Установка и настройка php 8.1.x на UBUNTU 20.04 LTS




В случае ошибки «add-apt-repository: command not found» добавления смотрим подсказку ниже.




Добавляем PPA репозиторий:




sudo add-apt-repository ppa:ondrej/php
Нажимаем Enter.




1.4.1. Fix add-apt-repository: command not found error




Иногда после этой команды мы наблюдаем ошибку следующего вида:




sudo: add-apt-repository: command not found




Ошибка проста. Пакет add-apt-repository не установлен в вашей системе.




Если вы попытаетесь использовать sudo apt-get install add-apt-repository, это не сработает.




Это связано с тем, что команда add-apt-repository находится в пакете software-properties-common, и вам необходимо установить этот пакет, чтобы установить add-apt-repository.




Поэтому во избавление ошибки (если она появилась) используем следующую команду:




sudo apt-get install software-properties-common 
подтверждаем установку кнопкой:
Y
и снова пытаемся добавить репозиторий вышеуказанной командой:
sudo add-apt-repository ppa:ondrej/php 




Если ошибка не появились или вы её успешно исправили, то далее обновляем список командой:




sudo apt-get update




Установите PHP 8.1.7, используя следующую команду:




php 7.3:




sudo apt-get install php7.3 libapache2-mod-php7.3 php7.3-mysql php7.3-curl php7.3-gd php7.3-imagick php7.3-snmp php7.3-imap php7.3-recode php7.3-zip php-pear php7.3-memcache libapache2-mod-php7.3 php7.3-bcmath 




php 8.0.1:




sudo apt-get install php8.0 libapache2-mod-php8.0 php8.0-mysql php8.0-curl php8.0-gd php8.0-imagick php8.0-snmp php8.0-imap php8.0-zip php-pear php8.0-memcache libapache2-mod-php8.0 php8.0-bcmath php8.0-xmlrpc




php 8.0.1 https://www.cloudbooklet.com/how-to-install-php-8-on-ubuntu/




php 8.1.7:




sudo apt-get install php8.1 libapache2-mod-php8.1 php8.1-mysql php8.1-curl php8.1-gd php8.1-imagick php8.1-snmp php8.1-imap php8.1-zip php-pear php8.1-memcache libapache2-mod-php8.1 php8.1-bcmath php8.1-xmlrpc




На появившиеся в процессе установки вопросы отвечаем «Y«




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




php -v




Вывод должен быть следующим:




PHP 7.3.x-x+ubuntu18.04.1+deb.sury.org+1 (cli) (built: xxx  x xxxx xx:xx:xx) ( NTS )
 Copyright (c) 1997-2018 The PHP Group
 Zend Engine v3.3.x, Copyright (c) 1998-2018 Zend Technologies
     with Zend OPcache v7.3.x-x+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies







PHP 8.0.x (cli) (built: Jan 13 2021 08:22:35) ( NTS )
 Copyright (c) The PHP Group
 Zend Engine v4.0.1, Copyright (c) Zend Technologies
     with Zend OPcache v8.0.1, Copyright (c), by Zend Technologies







PHP 8.1.x (cli) (built: Jun 10 2022 12:22:48) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.7, Copyright (c), by Zend Technologies




Перезапускаем Apache для применения изменений:




sudo service apache2 restart




Дополнительно вносим изменения в конфигурационный файл Apache:




sudo nano /etc/apache2/apache2.conf




Находим следующие строчки:




<Directory />
       Options FollowSymLinks
       AllowOverride None
       Require all denied
</Directory>

<Directory /usr/share>
       AllowOverride None
       Require all granted
</Directory>

<Directory /var/www/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>

<Directory /srv/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>




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




<Directory /home/>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
        #ErrorDocument 403 /var/www/html/403.html
</Directory>




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




# Sets the default security model of the Apache2 HTTPD server. It does
# not allow access to the root filesystem outside of /usr/share and /var/www.
# The former is used by web applications packaged in Debian,
# the latter may be used for local directories served by the web server. If
# your system is serving content from a sub-directory in /srv you must allow
# access here, or in any related virtual host.
#<Directory />
#       Options FollowSymLinks
#       AllowOverride None
#       Require all denied
#</Directory>

#<Directory /usr/share>
#       AllowOverride None
#       Require all granted
#</Directory>

#<Directory /var/www/>
#       Options Indexes FollowSymLinks
#       AllowOverride None
#       Require all granted
#</Directory>

#<Directory /srv/>
#       Options Indexes FollowSymLinks
#       AllowOverride None
#       Require all granted
#</Directory>

<Directory /home/>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
        #ErrorDocument 403 /var/www/html/403.html
</Directory>




После чего снова перезагружаем Apache:




sudo service apache2 restart




Дабы однажды не столкнуться с ошибкой вроде:




Ошибка /var/www/site/public_html/.htaccess: Invalid command 'RewriteEngine', perhaps misspelled or defined by a module not included in the server configuration




Нужно включить rewrite модуль Apache:




sudo a2enmod rewrite




После чего нужно снова перезагрузить сервер Apache:




sudo service apache2 restart




После этого нам желательно настроить наш первый тестовый сайт и проверить его работоспособность.




2.0.0. Создание нового сайта на UBUNTU 20.04 LTS




2.1.0. Установка и настройка phpMyAdmin на UBUNTU 20.04 LTS




Всю эту процедуру можно прочесть по этой ссылке



2022-06-24T18:33:01
Настройка web сервера

Как в UBUTNU 20.04 LTS узнать количество пакетов, требующих обновления?

Кто-то использует update-notifier, занимающий 500 мб и выводящий результаты каждый раз при авторизации по ssh, а мы рекомендуем не устанавливать лишний софт и использовать следующую команду:




apt-get -s dist-upgrade | grep "^[[:digit:]]+ upgraded"




В случае, если обновлять ничего не нужно, то результат команды будет следующим:




0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.




Если обновлять что-либо нужно, то код будет похож на нижеследующий:




111 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.




ПОДРОБНЕЕ: https://unix.stackexchange.com/questions/105463/machine-readable-number-of-updates-alternative-to-usr-lib-update-notifier-apt



2022-06-24T04:09:15
Настройка web сервера