Подготовка сервера
Для подготовки сервера безопасности с доступом к данным по LDAP необходим сервер с правильно настроенным временем. Также необходимо правильно настроить межсетевой экран и систему безопасности SELinux.
Время
Установим часовой пояс:
timedatectl set-timezone Europe/Moscow
* в данном примере используется московское время.
Затем устанавливаем и запускаем утилиту для синхронизации времени chrony.
yum install chrony
systemctl enable chronyd —now
Имя сервера
Для корректной работы сервера, необходимо, задать ему полное доменное имя (FQDN). Выполняем команду:
hostnamectl set-hostname ipa-server.dmosk.local
* где ipa-server.dmosk.local — имя сервера, которое будет использоваться.
Брандмауэр
Необходимо открыть несколько портов, которые используются службами FreeIPA:
firewall-cmd —permanent —add-port=53/{tcp,udp} —add-port=80/tcp —add-port=88/{tcp,udp} —add-port=123/udp —add-port=389/tcp —add-port=443/tcp —add-port=464/{tcp,udp} —add-port=636/tcp
firewall-cmd —reload
Полезные команды для управления Apache в Linux
Для работы с веб – приложениями
В этом руководстве мы опишем некоторые из наиболее часто используемых команд управления службами Apache (HTTPD) , которые полезно знать, разработчику или системному администратору, и держать эти команды под рукой. Мы покажем команды для Systemd и SysVinit.
Убедитесь, что следующие команды должны выполняться от имени пользователя root или sudo и работать с любым дистрибутивом Linux, таким как CentOS, RHEL, Fedora, Debian и Ubuntu.
Установка Apache Server
Чтобы установить веб-сервер Apache, используйте ваш стандартный менеджер пакетов, как показано ниже.
Проверка версии Apache
Чтобы проверить установленную версию вашего веб-сервера Apache в вашей системе Linux, выполните следующую команду.
Если вы хотите увидеть номер версии Apache и параметры компиляции, используйте флаг -V, как показано ниже.
Проверка на ошибки синтаксиса конфигурации Apache
Чтобы проверить ваши файлы конфигурации Apache на наличие любых синтаксических ошибок, выполните следующую команду, которая проверит правильность файлов конфигурации, прежде чем перезапускать службу.
Запуск сервиса Apache
Чтобы запустить службу Apache, выполните следующую команду.
Включение службы Apache
Предыдущая команда пока только запускает службу Apache, чтобы включить автозапуск при загрузке системы, выполните следующую команду.
Перезапуск службы Apache
Чтобы перезапустить Apache (остановить, а затем запустить службу), выполните следующую команду.
Просмотр состояния сервиса Apache
Чтобы проверить информацию о состоянии времени выполнения службы Apache, выполните следующую команду.
Перезагрузка сервиса Apache
Если вы внесли какие-либо изменения в конфигурацию сервера Apache, вы можете указать службе перезагрузить свою конфигурацию, выполнив следующую команду.
Остановка службы Apache
Чтобы остановить службу Apache, используйте следующую команду.
Показать справку Apache Command
И последнее, но не менее важное: вы можете получить справку о служебных командах Apache в systemd, выполнив следующую команду. На этом пока все! В этой статье мы объяснили наиболее часто используемые команды управления службами Apache / HTTPD, которые полезно будет знать, включая запуск, включение, перезапуск и остановку Apache. На этом пока все! В этой статье мы объяснили наиболее часто используемые команды управления службами Apache / HTTPD, которые полезно будет знать, включая запуск, включение, перезапуск и остановку Apache
На этом пока все! В этой статье мы объяснили наиболее часто используемые команды управления службами Apache / HTTPD, которые полезно будет знать, включая запуск, включение, перезапуск и остановку Apache.
Пожалуйста, расскажите почему?
Нам жаль, что статья не была полезна для вас Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!
Подпишитесь на нашу еженедельную рассылку, и мы будем присылать самые интересные публикации Просто оставьте свои данные в форме ниже.
baltun
Бывает нужно узнать версию установленного программного обеспечения на веб-сервере. Для этого можно использовать соответствующие SSH команды.
Как узнать версию PHP из командной строки?
Настройка аутентификации с помощью открытого ключа SSH в CentOS 7
Чтобы защитить SSH-сервер и настроить аутентификацию с открытым ключом, чтобы повысить безопасность вашего сервера с помощью закрытого ключа SSH для входа в систему, сначала сгенерируйте пару ключей SSH с помощью следующей команды.
Кстати, помимо указанных настроек, после установки сервера, Вы можете проводить мониторинг сайта и проверки uptime через специальный сервис https://www.host-tracker.com/.
Не вводите ключевую фразу, если вы хотите автоматизировать управление сервером через SSH.
После генерации пар ключей SSH скопируйте ключ на сервер, к которому вы хотите подключиться, введя команду ниже. Первоначально введите удаленный пароль пользователя SSH, чтобы скопировать открытый ключ.
После того, как открытый ключ SSH был скопирован на удаленный сервер, войдите в систему на удаленном сервере SSH с помощью следующей команды.
Наконец, чтобы защитить сервер SSH, убедитесь, что вы запрещаете удаленный доступ SSH к учетной записи root, открыв файл конфигурации SSH / etc / ssh / sshd_config с вашим текстовым редактором в качестве пользователя root и изменив его с Да на Нет.
Чтобы применить настройку, необходимо перезапустить службу SSH, чтобы она использовала новую конфигурацию.
Создание площадки
Для каждого клиента можно создать одну или несколько площадок, каждая из которых будет использоваться под определенный сайт.
1. Создаем каталоги:
mkdir -p /var/www/u10001/site1.ru/{www,cgi,tmp,log}
mkdir -p /var/www/u10001/site1.ru/log/{apache,nginx}
* подразумевается, что мы создаем площадку для сайта site1.ru.
2. Задаем права на каталоги:
chown -R u10001:virtwww /var/www/u10001/site1.ru
chown -R root:u10026 /var/www/u10001/site1.ru/log
chmod -R 04770 /var/www/u10001/site1.ru
chmod 0710 /var/www/u10001/site1.ru/cgi
chmod -R 0750 /var/www/u10001/site1.ru/log
3. Создаем виртуальный домен в Apache:
vi /etc/httpd/conf.d/site1.ru.conf
<VirtualHost *:8080>
Define root_domain site1.ru
Define root_path /var/www/u10001/site1.ru
ServerName ${root_domain}
ServerAlias www.${root_domain}
DocumentRoot ${root_path}/www
ScriptAlias /cgi ${root_path}/cgi
ErrorLog ${root_path}/log/apache/error_log
TransferLog ${root_path}/log/apache/access_log
php_admin_value upload_tmp_dir ${root_path}/tmp
php_admin_value doc_root ${root_path}
php_admin_value user_dir www
php_admin_value open_basedir /var/www/u10001:/usr/local/share/smarty:/usr/local/share/pear
php_admin_value session.save_path «0;0660;${root_path}/tmp»
php_flag display_errors off
AssignUserID u10001 virtwww
</VirtualHost>
* где site1.ru — сайт, для которого мы создаем площадку; /var/www/u10001/site1.ru — путь, где будут расположены файлы сайта; AssignUserID определяет, под какими учетными данными будет работать виртуальный домен.
4. Создаем виртуальный домен в nginx:
vi /etc/nginx/conf.d/site1.ru.conf
server {
listen 80;
server_name site1.ru www.site1.ru;
set $root_path /var/www/u10001/site1.ru/www;
gzip on;
gzip_disable «msie6»;
gzip_min_length 1000;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
access_log /home/www/u10001/site1.ru/log/nginx/access_log;
error_log /home/www/u10001/site1.ru/log/nginx/error_log;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~* ^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ {
root $root_path;
expires modified +1w;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
}
Проверяем правильность настроек nginx и httpd:
nginx -t
apachectl configtest
Если ошибок нет, перезапускаем сервисы:
systemctl reload nginx
systemctl reload httpd
Создание пользователей
Создадим пользователя. Для этого рассмотрим пример использования командной строки и веб-интерфейса.
Командная строка
Авторизуемся на FreeIPA:
kinit admin
Создаем нового пользователя командой:
ipa user-add dmosk —first=Дмитрий —last=Моск —password
* где dmosk — логин; first — имя пользователя; last — фамилия; password — ключ для запроса пароля.
… после ввода команды система запросит пароль для создаваемого пользователя — вводим его дважды.
Мы должны увидеть сводку по параметрам для созданного пользователя:
Добавлен пользователь «dmosk»
——————————
Логин пользователя: dmosk
Имя: Дмитрий
Фамилия: Моск
Полное имя: Дмитрий Моск
Отображаемое имя: Дмитрий Моск
Инициалы: ДМ
Домашний каталог: /home/dmosk
GECOS: Дмитрий Моск
Оболочка входа: /bin/sh
Principal name: [email protected]
Principal alias: [email protected]
User password expiration: 20190725205853Z
Электронный адрес: [email protected]
UID: 1798800001
ID группы: 1798800001
Пароль: True
Member of groups: ipausers
Kerberos ключей доступно: True
Примет более полной команды для создания пользователя:
* в данном примере мы использовали дополнительные поля:
- cn — полное имя.
- displayname — отображаемое имя.
- email — адрес электронной почты.
* более полный список атрибутов можно найти на странице с мануалом Fedora Project.
Веб-интерфейс
Открываем браузер и переходим по адресу имени сервера — в нашем примере, https://ipa-server.dmosk.local. Закрываем всплывающее окно с запросом пароля. В появившейся странице авторизации вводим логин admin и его пароль.
Откроется страница управления пользователями:
На панели справа (над списком пользователей) кликаем по Добавить:
В открывшемся окне заполняем поля для создания пользователя и нажимаем по Добавить:
Проверка
На компьютере с клиентом вводим команду для проверки:
kinit dmosk
… и вводим пароль от созданной учетной записи:
Password for [email protected]:
При вервом входе система попросит поменять пароль на новый:
Password expired. You must change it now.
Enter new password:
Enter it again:
Установка и базовая настройка
Устанавливаем EPEL репозиторий:
# yum install epel-release
Устанавливаем ProFTPd:
# yum install proftpd
Открываем необходимые порты на брандмауэре:
# firewall-cmd --permanent --add-port=20-21/tcp # firewall-cmd --permanent --add-port=40900-40999/tcp # firewall-cmd --reload
Добавим небольшие правки в начальный конфигурационный файл:
# vi /etc/proftpd.conf
UseIPv6 offIdentLookups offPassivePorts 40900 40999
Разрешаем сервис и запускаем его:
# systemctl enable proftpd
# systemctl start proftpd
Можно пробовать подключаться под любой системной учетной записью. Если необходимо добавить отдельного пользователя, вводим команду:
# useradd ftpuser -d /var/www -s /sbin/nologin
# passwd ftpuser
* в данном примере мы создали пользователя ftpuser с домашней директорией /var/www.
6. Создайте пользователя для доступа через SSH к CentOS 7
Шаг 1 Далее мы создадим пользователя Solvetic_SSH и предоставим доступ к созданной нами группе, для этого введем следующее:
useradd -m Solvetic_SSH -s / sbin / nologin -g accesoftp
Шаг 2 Перейдем к определению пароля пользователя с помощью команды passwd.
passwd Solvetic-SSH
Шаг 3 Следующим шагом является предоставление разрешений пользователю, созданному как root, для домашнего каталога, и кто может их изменять, для этого мы вводим следующие команды:
chown root / home / Solvetic_SSH chmod 750 / home / Solvetic_SSH
Шаг 4 После предоставления пользователю разрешений мы создадим каталог с именем www в домашнем каталоге и для этого введем следующее:
mkdir / home / Solvetic_SSH / www chown Solvetic_SSH: accesoftp / home / Solvetic_SSH / www
Шаг 5 В этом случае мы получаем доступ из Fedora 24 к FTP в CentOS 7 и видим, что он работает правильно. Просто введите IP-адрес ftp и введите соответствующие учетные данные.
Используя эти методы, мы можем легко и удобно смонтировать FTP- сервер в CentOS 7 . Монтирование нашего FTP-сервера дает нам несколько преимуществ, когда речь идет о передаче файлов, что значительно облегчает нашу работу. В Windows 10 также есть различные способы создания FTP-сервера, наиболее полезным, несомненно, является тот, который не нуждается во внешних программах.
FTP сервер W10
Отключение Shell Shell Access
По умолчанию при создании пользователя, если он не указан явно, у пользователя будет SSH-доступ к серверу.
Чтобы отключить доступ к оболочке, мы создадим новую оболочку, которая просто распечатает сообщение, сообщающее пользователю, что его учетная запись ограничена только доступом по FTP.
Выполните следующие команды, чтобы создать оболочку и сделать ее исполняемой:
Добавьте новую оболочку в список допустимых оболочек в :
Измените пользовательскую оболочку на :
Используйте ту же команду, чтобы изменить оболочку для других пользователей, которым вы хотите предоставить только доступ по FTP.
Создайте пользователя для доступа к службам FTP
Чтобы создать пользователя для использования службы FTP, используйте следующую команду:
# useradd user1 # passwd user1
Добавьте этого пользователя в файл user_list , чтобы ограничить пользователя их домашним каталогом, используйте следующая команда:
# vim /etc/vsftpd/user_list
Введите « i » для вставки и введите это имя пользователя, как показано на рисунке:
Нажмите ESC и введите : wq! для сохранения файла.
Если вы хотите предоставить конкретному пользователю общий доступ к системе, добавьте этого пользователя в / etc / vsftpd / chroot_list.
Перезапустите службу VSFTPD :
# systemctl restart vsftpd
Проверьте состояние службы FTP с помощью следующей команды:
# systemctl status vsftpd
Шифрование при передаче данных
Следующим этапом настроим передачу данных через TLS.
В конфигурационном файле сервера ftp снимаем комментарий для строки:
vi /etc/proftpd/proftpd.conf
Include /etc/proftpd/tls.conf
Открываем конфигурационный файл tls.conf:
vi /etc/proftpd/tls.conf
Снимаем комментарии для следующих настроек:
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23
…
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
…
TLSOptions NoCertRequest EnableDiags NoSessionReuseRequired
…
TLSVerifyClient off
…
TLSRequired on
* параметр TLSRequired можно задать в значение off, если мы не хотим требовать от клиента соединения по TLS.
Приводим значение для одного из раскомментированных параметров к следующему:
TLSProtocol SSLv23 TLSv1.2
* мы добавили TLSv1.2 для поддержки более актуального протокола шифрования. В противном случае, некоторые старые клиенты могут возвращать ошибку Error in protocol version.
Генерируем сертификат:
openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=ftp.dmosk.local/CN=ftp»
* где ftp.dmosk.local — имя сервера в формате FQDN (не принципиально).
Перезапускаем ProFTPd:
systemctl restart proftpd
Max connections per single IP Address
By default VSFTPD allows unlimited connection from the same client IP address, which can expose the FTP service to flood-based attacks or make it prone to some sort of client’s abuse. In order to overcome this, there is a special directive called max_per_ip that can be used to force the server to use limited number of connection:
INI
#set maximum allowed connections per single IP address (0 = no limits)
max_per_ip=10
1 |
#setmaximumallowedconnectionspersingleIPaddress(=nolimits) max_per_ip=10 |
That’s it for now: in the following article we’ll show how to strengthen the FTP server even further using SSL/TLS for secure connections and file transfers.
Настройка хостинга
На предыдущем шаге представлена ссылка на статью, по которой мы сконфигурировали полноценный веб-сервер. Но для хостинга необходимо внести некоторые дополнительные настройки.
Общий пользователь
Так как к одним и тем же каталогам необходимы права доступа для nginx и apache, создаем общую группу и добавим в нее учетные записи, от которых работают данные веб-сервисы.
Добавим группу virtwww:
groupadd virtwww
Задаем созданную группу как дополнительную для apache и nginx:
usermod apache -G virtwww
usermod nginx -G virtwww
Запуск виртуальных доменов от определенного пользователя
Чтобы каждый виртуальный домен apache мог работать от отдельного пользователя, устанавливаем модуль httpd-itk:
yum install httpd-itk
После открываем следующий файл:
vi /etc/httpd/conf.modules.d/00-mpm-itk.conf
и снимаем комментарий для LoadModule — получится:
LoadModule mpm_itk_module modules/mod_mpm_itk.so
Настройка Apache
Добавим разрешения на каталоги, в которых будут храниться файлы сайтов:
vi /etc/httpd/conf/httpd.conf
<Directory /var/www/*/*/www>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>
<Directory /var/www/*/*/cgi>
AllowOverride All
Options Indexes ExecCGI FollowSymLinks
Require all granted
</Directory>
* по предложенной статье права были выданы на каталоги /var/www/*/www, для хостинга мы будем использовать немного другую вложенность.
SELinux Configuration File
The main configuration file for SELinux is /etc/selinux/config. We can run the following command to view its contents:
The output will look something like this:
There are two directives in this file. The SELINUX directive dictates the SELinux mode and it can have three possible values as we discussed before.
The SELINUXTYPE directive determines the policy that will be used. The default value is . With a targeted policy, SELinux allows you to customize and fine tune access control permissions. The other possible value is “MLS” (multilevel security), an advanced mode of protection. Also with MLS, you need to install an additional package.
Enabling and Disabling SELinux
Enabling SELinux is fairly simple; but unlike disabling it, should be done in a two-step process. We assume that SELinux is currently disabled, and that you’ve installed all of the SELinux packages from the earlier section.
As a first step, we need to edit the file to change the SELINUX directive to permissive mode.
Setting the status to permissive first is necessary because every file in the system needs to have its context labelled before SELinux can be enforced. Unless all files are properly labelled, processes running in confined domains may fail because they can’t access files with the correct contexts. This can cause the boot process to fail or start with errors. We will introduce contexts and domains later in the tutorial.
Now issue a system reboot:
The reboot process will see all the files in the server labelled with an SELinux context. Since the system is running in permissive mode, SELinux errors and access denials will be reported but it won’t stop anything.
Log in to your server again as root. Next, search for the string “SELinux is preventing” from the contents of the /var/log/messages file.
If there are no errors reported, we can safely move to the next step. However, it would still be a good idea to search for text containing “SELinux” in /var/log/messages file. In our system, we ran the following command:
This showed some error messages related to the GNOME Desktop that was running. This was happening when SELInux was either disabled or in permissive mode:
These types of errors are fine.
In the second phase, we need to edit the config file to change the SELINUX directive from permissive to enforcing in the file:
Next, reboot the server again.
Once the server is back online, we can run the command to check the SELinux status. It should now show more details about the server:
Check the /var/log/messages file:
There should be no errors. The output should look something like this:
Checking SELinux Modes and Status (Again)
We can run the command to check the current SELinux mode.
If our system is running in enforcing mode the output will look like this:
The output will be different if SELinux is disabled:
We can alo run the command to get a better picture.
If SELinux isn’t disabled, the output will show its current status, its current mode, the mode defined in the configuration file, and the policy type.
When SELinux is disabled the output will show:
We can also temporarily switch between enforcing and permissive modes using the command. (Note that we can’t run when SELinux is disabled.)
First change the SELinux mode from enforcing to permissive in our CentOS 7 system:
Running the command now shows the current mode is different from the mode defined in config file:
Switch back to enforcing:
5. Verify ProFTPD installation on CentOS
At this point you are ready to use the ProFTPD service on your CentOS VPS. To upload or download files, you can use your favorite FTP client. As username and password you can use any system user that exists on your server. Alternatively, you can access your FTP server using a web browser. Open your favorite web browser and enter the following:
ftp://111.111.111.111
For demonstrative purposes we used 111.111.111.111. You should either use your server IP address or a domain name which points to your server IP address.
If you like to take full advantage of the ProFTPD’s functionality, you can tweak the default settings. The default configuration file of the service is . The configuration file has Apache-like syntax and description for all the settings. To learn more you can visit http://www.proftpd.org/docs/ where you can find the official project documentation.
Настройка ftpd
Настройка ftpd для FreeBSD (для Linux больших отличий быть не может):
Для включение ftpd нужно раскоментировать одну строку в inetd.conf и перезапустить inetd> ee /etc/inetd.conf
ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l
> /etc/rc.d/inetd restart
Некоторые настройки сервера, в том числе и касающиеся ограничения доступа, можно выполнить с помощью ключей командной строки. Если вы запускаете ftpd из inetd, добавьте нужные параметры в соответствующей строке файла inetd.conf (по умолчанию там записан только ключ l).
Для протоколирования даемон ftpd использует сообщения Использование syslog.> ee /etc/syslog.conf
ftp.info /var/log/xferlog
В файле /etc/ftpusers находится список пользователей, которым запрещен доступ по FTP. По умолчанию он включает системные учетные записи, но в него можно добавить и определенных пользователей, которым будет запрещен доступ по FTP.
Анонимный доступ: Для анонимного FTP доступа на сервер, в системе FreeBSD необходимо создать пользователя ftp. Этот пользователь сможет входить на FTP сервер с именем пользователя ftp или anonymous, с любым паролем (существует соглашение об использовании почтового адреса пользователя в качестве пароля). FTP сервер выполнит chroot при входе пользователя anonymous для ограничения доступа только домашним каталогом пользователя ftp. У этого пользователя должна быть «легальная» оболочка (одна из указанных в /etc/shells). Также у него не может быть пустого пароля.
Существуют два текстовых файла, определяющих сообщение, отправляемое FTP клиентам. Содержимое файла /etc/ftpwelcome будет выведено пользователям перед приглашением на вход. После успешного входа будет выведено содержимое файла /etc/ftpmotd
Обратите внимание, что путь к этому файлу задается относительно домашнего каталога пользователя, так что анонимным пользователям будет отправляться ~ftp/etc/ftpmotd.
Ограниченный доступ: Вам может понадобиться ограничить доступ определенных пользователей без полного запрета использования FTP. Это можно сделать через файл /etc/ftpchroot
В нем находится список пользователей и групп, к которым применяется ограничение доступа. В том случае, если имя пользователя присутствует в файле /etc/ftpchroot, то соответствующий процесс запускается в chroot-окружении, ограничивая пользователю доступ только его домашним каталогом (или тем, который указан во втором поле файла ftpchroot). При необходимости организовать такую работу для большого числа пользователей (например, дать всем абонентам доступ для обновления своих домашних веб-страничек), в ftpchroot можно указать общую для них группу, предварив ее имя символом @. Во втором поле дополнительно может быть указан каталог, который следует использовать в качестве корневого для соответствующего пользователя или группы. Вот пример такого файла:vasya
petya /var/db/petya
@dialup
Теперь Вася и все пользователи группы dialup смогут работать только в пределах своих домашних каталогов, а для Пети в качестве рабочей будет определена указанная папка /var/db/petya. С помощью разделителя /./ можно указать каталог, отличающийся от корневого, который станет текущим:
serg /home/serg/./public_html
В данном случае для пользователя serg доступ будет ограничен каталогом /home/serg, но в качестве текущего при входе на сервер установится /home/serg/public_html.
Install and Configure OpenSSH Server in CentOS 7
Another of the alternatives we have is to install and configure SSH in CentOS 7 to access from port 22 and to do this we will do the following.
For this we will enter the following command:
sudo yum -y install openssh-server-y install openssh-server
Once downloaded and installed, we will create a group for FTP access , for which we will enter the following:
sudo groupadd accesoftp
By default the path where the configuration is stored is /etc/ssh/sshd_config so we open this file using the preferred editor, and we will see the following.
Subsystem sftp/usr/libexec/openssh/sftp-server# symbol
Finally we enter the following lines in the bottom of the file:
- Subsystem sftp internal-sftp
- Match group accesoftp (Here we enter the name of the created group)
- ChrootDirectory% h
- X11Forwarding not
- AllowTcpForwarding not
- ForceCommand internal-sftp
restart the SSH service
sudo systemctl restart sshd
To save the changes: Ctrl +O
To exit the editor: Ctrl +X
Настройка vsftpd с виртуальными пользователями
Рассмотрим вариант, когда пользователи ftp сервера не должны пересекаться с локальными. В данном примере будут работать только виртуальные пользователи. Я мельком проверил, можно ли настроить и тех и других, оказалось, что можно. Но там надо аккуратно с правами разбираться и со списками разрешенных пользователей. Я решил, что не буду описывать эту ситуацию, так как не очень представлю, когда она может пригодиться. Если кому-то надо, то на базе этой статьи он сам сможет разобраться.
Чтобы авторизовать виртуальных пользователей, установим дополнительный пакет compat-db:
# yum install compat-db
На всякий случай сохраните оригинальный pam.d файл, если захотите снова вернуться к системным пользователям:
# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.orig
Нужно изменить pam файл /etc/pam.d/vsftpd, приведя его к следующему виду:
# mcedit /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/virt_users account required pam_userdb.so db=/etc/vsftpd/virt_users session required pam_loginuid.so
# mcedit /etc/vsftpd/vsftpd.conf
Рисуем следующий конфиг для vsftpd vsftpd.conf
Создаем файл с виртуальными пользователями:
# touch /etc/vsftpd/virt_users
Добавляем туда в первую строку имя пользователя, во вторую его пароль
В конце не забудьте перейти на новую строку, это важно. Файл должен быть примерно таким:
ftp-virt1 password1 ftp-virt2 password2
Сохраняем файл и генерируем локальное хранилище учеток:
# db_load -T -t hash -f /etc/vsftpd/virt_users /etc/vsftpd/virt_users.db
У вас должен появиться файл virt_users.db.
Нужно создать каталоги для этих пользователей:
# mkdir /ftp/ftp-virt1 /ftp/ftp-virt2
Для папки /ftp надо назначить соответствующего владельца, от которого ftp сервер будет пускать виртуальных пользователей:
# chown -R ftp. /ftp
На этом настройка виртуальных пользователей ftp закончена. Перезапускаем vsftpd и пробуем залогиниться:
# systemctl restart vsftpd
Я набросал небольшой скрипт, чтобы было удобно добавлять новых пользователей, предлагаю воспользоваться:
# mcedit /etc/vsftpd/add_virt_user.sh
#!/bin/sh echo -n "Enter name of virtual user: " read virtuser echo -n "Enter password: " read virtpass mkdir /ftp/$virtuser chown ftp. /ftp/$virtuser touch /etc/vsftpd/users/$virtuser echo "$virtuser" >> /etc/vsftpd/virt_users echo "$virtpass" >> /etc/vsftpd/virt_users db_load -T -t hash -f /etc/vsftpd/virt_users /etc/vsftpd/virt_users.db
Делаете файл исполняемым и запускаете:
# chmod 0700 /etc/vsftpd/add_virt_user.sh # /etc/vsftpd/add_virt_user.sh Enter name of virtual user: ftp-virt2 Enter password: 123456
Все, пользователь добавлен, можно сразу им заходить. Вот так легко и просто настраиваются виртуальные пользователи в vsftpd. Рассмотрим теперь третий вариант, когда эти пользователи хранятся в mysql базе.
Установка Nextcloud
Для загрузки и распаковки архива на нужны следующие пакеты:
dnf install wget unzip
Переходим во временную папку:
cd /tmp
Заходим на и копируем ссылку на скачивание последней версии программы:
Скачиваем исходник для установки:
wget https://download.nextcloud.com/server/releases/nextcloud-19.0.1.zip
Распаковываем скачанный архив:
unzip nextcloud-*.zip -d /var/www
Задаем права доступа:
chown -R apache:apache /var/www/nextcloud
Открываем браузер и переходим по адресу https://nextcloud.dmosk.ru, где nextcloud.dmosk.ru — наш адрес облачного сервиса, который мы создали в NGINX. Если мы используем самоподписанный сертификат, браузер выдаст предупреждение безопасности — игнорируем его и переходим на страницу.
* так как мы настроили виртуальный домен, важно обратиться к серверу, именно, по имени. Таким образом, настроенный узел (в моем случае, nextcloud.dmosk.ru) должен разрешаться в DNS или быть внесен в локальный файл hosts. Прописываем логин и пароль администратора, которые хотим использовать для входа, кликаем по Хранилище и база данных:
Прописываем логин и пароль администратора, которые хотим использовать для входа, кликаем по Хранилище и база данных:
Переключаемся на MySQL/MariaDB, вводим в качестве логина, пароля и базы nextcloud:
Завершаем установку, при желании, оставим галочку для установки рекомендованных приложений:
После установки мы окажемся в системе.