ServerAdmin.ru
28.9K subscribers
305 photos
35 videos
13 files
2.63K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
Я почти не работаю с ftp протоколом из-за его ограничений и проблем с безопасностью. Тем не менее иногда приходится иметь с ним дело, потому что предоставляют доступ к каким-то ресурсам по ftp. Мне понадобилось загружать готовые бэкапы на ftp сервер. На удивление, я потратил много времени, пока не нашел простой и подходящий вариант.
https://serveradmin.ru/zagruzka-fajla-po-ftp-cherez-konsol-v-odnu-komandu/

#совет #ftp
Обновил на днях старую статью про настройку ftp сервера. Она была написана года 4 назад и уже тогда я не пользовался ftp протоколом и не рекомендовал его никому. Есть же sftp, никакой особой настройки не надо, если есть ssh. Но тем не менее, иногда встречаю просьбы настроить ftp, либо от вебмастеров просьбу предоставить доступ по ftp. В общем, статью актуализировал и добавил туда настройку ftps, то есть ftp с tls. Так что можно пользоваться, если кому-то реально нужен ftp.
https://serveradmin.ru/ustanovka-i-nastroyka-ftp-servera-na-centos-7/
Используете ftp?

#статья #centos #ftp
​​Садитесь поудобнее и внимательно прочитайте пост, так как он будет полезен всем. Я попробовал интересный софт, который может пригодиться как админам Linux, так и Windows, а также всем остальным любителям настраивать сервера. Речь пойдёт про файловый сервер SFTPGo. Мне очень понравилась его простота, удобство настройки и функционал. Расскажу обо всё по порядку.

Основные возможности SFTPGo:
хранение файлов локально, в том числе в зашифрованных хранилищах, в S3 совместимых хранилищах, в хранилищах с доступом по sftp, в Google Cloud Storage, в Azure Blob Storage
доступ к файлам возможен по sftp, ftp, dav, http
доступ настраивается на основе пользователей и групп, аутентификация по паролю или сертификату
управление сервером осуществляется через web интерфейс
есть REST API с доступом как к управлению, так и к данным
веб интерфейс не только для управления, но и для доступа к файлам пользователями
гибкие настройки правд доступа на основе ACLs
умеет отдавать все свои метрики в формате Prometheus
установка возможна на все популярные операционные системы, в том числе и Windows.

Теперь рассказываю на практике, как выглядит настройка. Устанавливаете SFTPGo. Проще всего через Docker:
# docker run --name some-sftpgo \
-p 8080:8080 \
-p 2022:2022 \
-d drakkan/sftpgo
8080 порт для управления, 2022 для доступа по sftp. По дефолту остальные службы (FTP и WevDAV) не запущены. Docker рекомендую только для теста. В прод лучше ставить без него. Это будет удобнее, если используете локальное хранилище для файлов. Меньше проблем с монтированием и правами доступа в контейнере.

Идёте в web интерфейс и создаёте пользователя. В момент создания вы указываете, где будут храниться его данные. Это может быть локальная папка, удалённая с доступом через sftp или S3 бакет. Тут же прописываются все доступы к этому удалённому хранилищу. И тут я вижу большое удобство - один раз создаёте пользователя, подключаете ему S3 хранилище и дальше уже везде, где вам надо, используете этого пользователя.

При этом, если пользователю настроена аутентификация с помощью пароля, эту же учётную запись можно использовать для доступа к файлам через web интерфейс.

SFTPGo как минимум удобный и современный ftp/sftp сервер с управлением и доступом к файлам через веб интерфейс. А в дополнение расширенные варианты для хранилищ. Удобно использовать не только как непосредственно файловый сервер для пользователей, но и для служебных целей, таких как организация бэкапов. Особенно если ими необходимо будет пользоваться обычным людям. Для них web доступ будет очень кстати.

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

Исходники - https://github.com/drakkan/sftpgo
Репозитории rpm и deb - https://github.com/drakkan/sftpgo/blob/main/docs/repo.md
Инструкция - https://github.com/drakkan/sftpgo/blob/main/docs/howto/getting-started.md#Installation

#fileserver #ftp #sftp
​​Несмотря на то, что протокол FTP в современном мире успешно заменяется другими, отказываться полностью некоторые люди от него не хотят. Меня иногда просят его настроить веб разработчики. И также регулярно вижу его на серверах, где 1Сники что-то делают. Не знаю, как конкретно они его используют, но для 1С он по-прежнему иногда нужен.

Из линуксовых ftp серверов я всегда отдавал предпочтение vsftpd. Не знаю, чем они все отличаются друг от друга, но этот всегда успешно решал все мои задачи, поэтому пробовать что-то другое не было особого смысла.

Я покажу как быстро установить и настроить vsftpd на Debian, сразу прикрутив к нему TLS. Без шифрования сейчас как-то не принято настраивать передачу, хотя зачастую оно не нужно. Особенно если передача ведётся в рамках виртуальных машин одного гипервизора. Если TLS не нужен будет, просто закомментируете соответствующие настройки. И сразу дам подсказку, пока не забыл. Если какие-то FTP клиенты не захотят подключаться по TLS, выдавая неинформативные ошибки, проверяйте версию TLS, которую они используют. Современные системы могут не позволить без дополнительных настроек подключиться с помощью протокола ниже TLS1.2, а какие-то старые клиенты могут его не использовать.

Устанавливаем vsftd на Debian 12:

# apt install vsftpd

Рисуем ему конфиг /etc/vsftpd.conf:

listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
connect_from_port_20=YES
idle_session_timeout=600
data_connection_timeout=120
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
ascii_upload_enable=YES
ascii_download_enable=YES
rsa_cert_file=/etc/ssl/localhost.pem
rsa_private_key_file=/etc/ssl/localhost.pem
ssl_enable=YES

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

# useradd -s /usr/sbin/nologin -m ftp-user
# passwd ftp-user

Сразу скажу важный нюанс. По умолчанию vsftpd не пускает пользователя без shell. Я не знаю, зачем так сделано. Отключить проверку shell можно в файле /etc/pam.d/vsftpd, закомментировав строку:
#auth required pam_shells.so
Если будете подключаться пользователями с оболочкой, то делать этого не обязательно.

Создаем файл со списком пользователей ftp, которым разрешен доступ к серверу:

# touch /etc/vsftpd.user_list
# echo 'ftp-user' >> /etc/vsftpd.user_list

Создаём сертификат:

# openssl req -new -x509 -keyout /etc/ssl/localhost.pem -out /etc/ssl/localhost.pem -days 3650 -nodes

Перезапускаем vsftpd с новым конфигом:

# systemctl restart vsftpd

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

#ftp
​​Один подписчик поделился со мной информацией о необычном и полезном программном продукте. Изначально он обратился ко мне с просьбой подсказать, какой веб сервер под Windows можно использовать для быстрого запуска локально с флешки размещённого там небольшого проекта. Первое, что мне пришло в голову - Caddy. Это максимально простой веб сервер, состоящий из одного бинарника на Go, который всю конфигурацию хранит в едином конфиге. Версия под Windows тоже есть.

Он в итоге нашёл для себя вариант ещё проще и лучше - Small HTTP server. Пошёл, посмотрел, что это такое. Очень заинтересовала программа. Раньше про неё не слышал. Она из далёкого прошлого. Написана изначально была под Windows 95 и NT, но развивается до сих пор. Свежий релиз от 24.03.24. Код, как я понял, написан на С++ и очень хорошо оптимизирован. Установщик занимает примерно 1 мегабайт (❗️). При этом программа имеет следующие возможности:

HTTP сервер. Поддерживает CGI и FastCGI интерфейсы для скриптов (запуск исполняемых файлов; Perl, PHP, и других внешних интерпретаторов), ISAPI (Internet Server API — API для веб-сервера IIS) интерфейс, виртуальные хосты и каталоги.

Почтовый сервер POP3 и SMTP. Анти-спам фильтры. Белый, чёрный, и серый списки общие для всех и персональные для каждого пользователя. Переотправка и возможности запускать скрипты для входящих сообщений. Запуск внешнего антивируса.

FTP сервер с виртуальными каталогами.

HTTP proxy сервер. Поддерживаются HTTP, FTP, HTTPS запросы
Сохранение большого объема трафика, быстрый доступ. Внутренняя докачка при разрывах соединения. Сервер может запрашивать сжатый контент и распаковывать ответ на лету (с использованием внешней Zlib библиотеке).

DNS сервер. 🔥Опция динамической проверки сервиса на удаленном хосту и если сервис не работает, автоматическая замена одного IP адреса на другой во всех запросах. Рекурсивный поиск имен от корневых DNS серверов или от DNS серверов провайдера. Кеширование. Опция автоматического ответа на запросы IPv6 адреса. (для сетей, не использующих Internet по IPv6). DNSBL сервер (работает совместно с SMTP). DNS через HTTP(S) известный как DoH (RFC8484).

DHCP сервер.

HTTP TLS VPN сервер и клиент! Используется OpenVPN Windows TAP драйвер. Описание, как это работает и для чего.

Всё это собрано под Windows и Linux, в том числе ARM. Для Debian есть готовый пакет. Хорошее решение для маломощных одноплатников.

По работе всех служб есть статистика в веб интерфейсе. Я попробовал работу на Windows. Всё работает чётко, запустил без каких-либо проблем. Конфигурация хранится в текстовом файле. Управлять можно как в нём, так и через интерфейс программы. Для запуска достаточно запустить экзешник. По умолчанию веб сервер работает в режиме листинга файлов директории, которая указана, как корень веб сервера. Можно настроить работу как служба.

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

Предлагаю автору накидать звёздочек в github и подписаться на Telegram канал. Думаю, ему будет приятно. Программа реально интересная и необычная. Не знаю, что за мотивация у человека столько лет её развивать и поддерживать.

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

Сайт / Исходники / TG канал

#webserver #dns #dhcp #ftp