FTP сервер полезная вещь, он позволяет легко подключаться к серверу, для загрузки на сервер или скачивания с него данных.
Со всеми недостатками и изъянами в безопасности, FTP должен был отойти на второй план, как и протокол telnet, однако у него оказалось намного больше преимуществ, по этому он используется по сей день и довольно успешно. К нему появилось довольно много модификаций, которые позволяют например: заворачивать трафик в SSL/TLS для повышения безопасности переделываемых по сети данных, как это сделать можно ознакомиться в статье - Настройка ProFTPd для использования TLS. Но на этот раз не Proftpd.
Со всеми недостатками и изъянами в безопасности, FTP должен был отойти на второй план, как и протокол telnet, однако у него оказалось намного больше преимуществ, по этому он используется по сей день и довольно успешно. К нему появилось довольно много модификаций, которые позволяют например: заворачивать трафик в SSL/TLS для повышения безопасности переделываемых по сети данных, как это сделать можно ознакомиться в статье - Настройка ProFTPd для использования TLS. Но на этот раз не Proftpd.
Переходим в режим супер пользователя root:
Для Debian:
su
Для Ubuntu
sudo su
Устанавливаем vsFTPd:
aptitude install vsftpd
Нашей основной задачей является блокирование пользователя внутри своей домашней директории, для того, чтобы не допустить его переход в папки «соседей» по серверу. Для этого мы немного подредактируем конфигурационный файл vsftpd.conf.
nano /etc/vsftpd.conf
Находим и редактируем следующие строчки:
Разрешаем запись:
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
напишем свой баннер для входа, хотя он и не обязателен( на работу он не влияет):
ftpd_banner=Welcome to our FTP service
Запираем пользователей в домашних директориях:
chroot_local_user=YES
Запрещаем анонимный доступ, необходимо найти строку:
#anonymous_enable=YES
И привести ее к виду:
anonymous_enable=NO
Ну и добавим работу в пассивном режиме:
pasv_min_port=50000
pasv_max_port=60000
Поддержка IPv6 в vsFTPd
Для того чтобы добавить возможность работы с ip версии 6, то в конфигурационном файле находим строку:
listen=YES
Её необходимо за комментировать, чтобы она выглядела:
#listen=YES
Также, нам необходимо найти строку:
#listen_ipv6=YES
И снять с нее комментарий.
После этого, наш FTP сервер будет доступен по IPv4 и IPv6
Права доступа на файлы и директории
Параметр local_umask отвечает за то, какие права будут присвоены файлам, которые были закачаны через FTP, по умолчанию там установлено local_umask=022, маска расчитывается очень просто, по формуле 777-A=X
Где:
777-права полного доступа
А-права которые необходимо получить
Х-маска, которую необходимо выставить
Предположим, нам необходимо получить права 754 что соотвествует drwxr-xr--, тогда 777-754=23 получаетсяlocal_umask=023.
В любом случае, тот кто закачал файлы является их владельцем и может расширить права доступа к ним.
В общем, находим строку:
local_umask=022
И меняем 022 на 023 или на ту которая необходима в вашей ситуации:
local_umask=023
Авторизация vsftpd и /bin/false
Для обеспечения безопасности сервера, пользователям виртуальных хостов будет отключен шелл, как пишут на просторах интернетов, рекомендуется это делать следующим способом:
useradd username -b /home/ -m -U -s /bin/false
Создадим для него пароль:
passwd username
Рассмотрим это выражение более подробно.
Где:
username -имя пользователя(логин)
home-Директория где будет находиться его домашний каталог
ключ -m — указывает на то, что его домашней директории будет присвоено название которое было указано в username.
ключ -U -Указывает на то что необходимо создать одноименную группу.
-s /bin/false -что пользователю будет отключен шелл (это важный и тонкий момент!)
Назначение остальных ключей можно нагуглить за пару минут.
Если пользователю отключить шелл, то он не сможет залогиниться на FTP сервер, его будет просто отфутболивать.
Вдумчивое чтение документации по vsFTPd рассказало мне, что доступ к FTP могут получить пользователи которые имеют работоспособный шелл т.е. /bin/bash, для того чтобы пользователи с /bin/false могли авторизироваться на нашем ftp, нам необходимо отредактировать файл /etc/pam.d/vsftpd
nano /etc/pam.d/vsftpd
Найти и закоментировать строку (она самая последняя)
auth required pam_shells.so
чтобы она выглядела:
#auth required pam_shells.so
И перепапускаем vsftpd
/etc/init.d/vsftpd restart
И еще немного для общего развития- Пользователь с отключенным шеллом, не сможет подключиться по SSH! Это можно считать дополнительным плюсом к безопастности.
Как отключить шелл уже существующему в системе пользователю:
nano /etc/passwd
там находим нужного пользователя и /bin/bash меняем на /bin/false, после перезагрузки, изменения переменятся.
Для Debian:
su
sudo su
Устанавливаем vsFTPd:
aptitude install vsftpd
Нашей основной задачей является блокирование пользователя внутри своей домашней директории, для того, чтобы не допустить его переход в папки «соседей» по серверу. Для этого мы немного подредактируем конфигурационный файл vsftpd.conf.
nano /etc/vsftpd.conf
Находим и редактируем следующие строчки:
Разрешаем запись:
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
напишем свой баннер для входа, хотя он и не обязателен( на работу он не влияет):
ftpd_banner=Welcome to our FTP service
Запираем пользователей в домашних директориях:
chroot_local_user=YES
Запрещаем анонимный доступ, необходимо найти строку:
#anonymous_enable=YES
И привести ее к виду:
anonymous_enable=NO
Ну и добавим работу в пассивном режиме:
pasv_min_port=50000
pasv_max_port=60000
Поддержка IPv6 в vsFTPd
Для того чтобы добавить возможность работы с ip версии 6, то в конфигурационном файле находим строку:listen=YES
Её необходимо за комментировать, чтобы она выглядела:
#listen=YES
Также, нам необходимо найти строку:
#listen_ipv6=YES
И снять с нее комментарий.
После этого, наш FTP сервер будет доступен по IPv4 и IPv6
Права доступа на файлы и директории
Параметр local_umask отвечает за то, какие права будут присвоены файлам, которые были закачаны через FTP, по умолчанию там установлено local_umask=022, маска расчитывается очень просто, по формуле 777-A=X
Где:
777-права полного доступа
А-права которые необходимо получить
Х-маска, которую необходимо выставить
Предположим, нам необходимо получить права 754 что соотвествует drwxr-xr--, тогда 777-754=23 получаетсяlocal_umask=023.
В любом случае, тот кто закачал файлы является их владельцем и может расширить права доступа к ним.
В общем, находим строку:
local_umask=022
И меняем 022 на 023 или на ту которая необходима в вашей ситуации:
local_umask=023
Авторизация vsftpd и /bin/false
Для обеспечения безопасности сервера, пользователям виртуальных хостов будет отключен шелл, как пишут на просторах интернетов, рекомендуется это делать следующим способом:
useradd username -b /home/ -m -U -s /bin/false
Создадим для него пароль:
passwd username
Рассмотрим это выражение более подробно.
Где:
username -имя пользователя(логин)
home-Директория где будет находиться его домашний каталог
ключ -m — указывает на то, что его домашней директории будет присвоено название которое было указано в username.
ключ -U -Указывает на то что необходимо создать одноименную группу.
-s /bin/false -что пользователю будет отключен шелл (это важный и тонкий момент!)
Назначение остальных ключей можно нагуглить за пару минут.
Если пользователю отключить шелл, то он не сможет залогиниться на FTP сервер, его будет просто отфутболивать.
Вдумчивое чтение документации по vsFTPd рассказало мне, что доступ к FTP могут получить пользователи которые имеют работоспособный шелл т.е. /bin/bash, для того чтобы пользователи с /bin/false могли авторизироваться на нашем ftp, нам необходимо отредактировать файл /etc/pam.d/vsftpd
nano /etc/pam.d/vsftpd
Найти и закоментировать строку (она самая последняя)
auth required pam_shells.so
чтобы она выглядела:
#auth required pam_shells.so
И перепапускаем vsftpd
/etc/init.d/vsftpd restart
И еще немного для общего развития- Пользователь с отключенным шеллом, не сможет подключиться по SSH! Это можно считать дополнительным плюсом к безопастности.
Как отключить шелл уже существующему в системе пользователю:
nano /etc/passwd
там находим нужного пользователя и /bin/bash меняем на /bin/false, после перезагрузки, изменения переменятся.
Комментариев нет:
Отправить комментарий