Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование и создание FTP-сервераН.Зиминков...rtf
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
28.18 Mб
Скачать

1.6 Выбор способа реализации ftp-сервера на oc Linux Ubuntu

Для реализации FTP-сервера была выбрана OC Linux Ubuntu 12.04 desktop и server. Распространяются они бесплатно. Весь процесс реализации сервера будет производиться на виртуальной машине VMware Workstation использоваться будет бесплатная пробная версия. Сервер будет без GUI и все действия будут производится через консоль. Все основные настройки через файлы конфигурирования.

Ubuntu — основанная на ядре Linux операционная система, которая идеально подходит для использования на персональных компьютерах, ноутбуках и серверах. Она содержит все необходимые программы: программу просмотра Интернет, офисный пакет для работы с текстами, электронными таблицами и презентациями, программы для общения в Интернет и т.д.

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

  • BIOS

  • жесткий диск (отведенное место на вашем жестком диске)

  • CD-ROM (ваш CD-ROM или подключенный ISO-образ)

  • сетевые адаптеры для соединения с вашей реальной машиной, сетевыми ресурсами или другими виртуальными машинам и т.д.

Рисунок 5. Виртуальная машина VMware Workstation

1.7 Описание процесса реализации

Что будет реализовано:

1. Доступ по SSH,

2. доступ по FTP,

3. сетевой доступ в расшаренные папки (SAMBA),

4. небольшой хостинг для тестирования своих сайтов,

5. торренто-качалка на основе Transmisson,

6. система бекапов.Сервер будет без GUI и все действия будут производится через консоль или веб-интерфейс. Все основные настройки через конфиг-файлы и иногда для наглядности через веб-интерфейс. Сервер будет реализован на виртуальной машине VMware Workstation.

Рисунок 6. Установка Ubuntu Server

Процесс установки самого сервера: указываем директорию с образом дистрибутива Linux загружаемся с него и следуя подсказкам на экране выполняем установку, в конце установки выбираем установку OpenSSH server.

Рисунок 7. Установка OpenSSH server

Сразу после первой загрузки настраивается сеть. Для этого нужно прописать настройки в файле /etc/network/interfaces. sudo nano /etc/network/interfacesЕсть три сетевых адаптера, настроено два из них, конфиг-файл выглядит так: Замыкание на себя auto lo iface lo inet loopback

Первый адаптер eth0 auto eth0 – значит автозапуск этого адаптера при загрузке auto eth0 dhcp – значит айпи и днс настраиваются динамически iface eth0 inet dhcp

Второй адаптер eth1 не настроен и в этом конфиге не прописан

Третий адаптер eth2 автозапуск при загрузке auto eth2 static – значит айпи статический iface eth2 inet static далее указываем айпи, маску и шлюз. address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1

Сохраняем изменения нажатием клавиш Ctrl+o, Enter и закрываем nano Ctrl+x. И перезапускаем сеть. /etc/init.d/networking restart

Теперь можно отключить монитор, клаву, мышь и управлять по сети. Но для этого нужно настроить доступ по SSH.

Рисунок 8. Настройка сети

Установка и настройка доступа к серверу по SSH.

Сервер установлен, сеть настроена. Теперь настраиваем доступ к серверу по SSH. Во время установки системы была выбрана установка дополнительного ПО OpenSSH server.

Конфиг лежит в файле /etc/ssh/sshd_config sudo nano /etc/ssh/sshd_config

Порт для подключения. Можно изменить на другой свободный Port 22

Чтобы сервер отображал содержимое файла /etc/issue.net в качестве сообщения перед логином (типа приветствия), раскомментируем следующую строку: Banner /etc/issue.net

Настроим доступ для разных пользователей. Для этого изменим следующие строки: UsePAM yes AllowUsers sasha@* user2@192.168.1.10 *@192.168.1.*

В строке AllowUsers прописываем пользователей через пробел в виде юзер@хост, т. е. указываем какой пользователь откуда может подключаться. Можно использовать знак * и ? для подстановки. В данном примере пользователю sasha разрешен доступ отовсюду (и с локалки, и извне), для user2 разрешен доступ только с адреса 192.168.1.10, т. е. только с локалки, а для всех остальных (включая первых двух юзеров) доступ разрешен только с локалки.

Запретим доступ для определенных пользователей директивой DenyUsers. Хосты, можно не указывать. Запретим доступ для user4: DenyUsers user4

Таким же образом можно настроить доступ для групп в директивах AllowGroups, DenyUsers, для групп хост нельзя указывать.

Далее перезапускаем сеть. sudo /etc/init.d/ssh restart

Пробуем подключиться набрав ip сервера: ssh 192.168.1.100 или сразу ip сервера и пользователя: ssh user1@192.168.1.100

Для ускорения подключения в файлах /etc/pam.d/login и /etc/pam.d/sshd закомментируем строки session optional pam_motd.so

и удаляем landscape-клиент: sudo apt-get remove landscape-client landscape-common

Установка и настройка торрент-клиента Transmission-daemon

Установливаем и настроиваем торрентокачалку пока настраиваем все остальные сервисы. В качестве торрент-клиента была выбрана Transmission-daemon с веб-интерфейсом. В отличие от некоторых других клиентов, Transmission не требует наличия веб-сервера для работы веб-интерфейса. Веб-сервер тоже будет, да и функционал Transmission не очень широкий, но все же он подходит, необходимый функционал обеспечивает.

Установливаем sudo apt-get install transmission-daemon

Запускаем transmission-daemon

Конфиг Transmission-daemon-а можно найти в нескольких местах: ~/config/transmission-daemon/settings.json,

/var/lib/transmission-daemon/info/settings.json,

/etc/transmission-daemon/settings.json.

Но только последний является настоящим конфигом. Первый – это конфиг для версии с GUI, второй – ссылка на третий файл. Его и нужно править, но сначала останавливаем демон: sudo /etc/init.d/transmission-daemon stop sudo nano /etc/transmission-daemon/settings.json

Конфигурация: download-dir: папка для загрузки торрентов, например, /home/user/torrents/ watch-dir: папка, откуда будут забираться .torrent-файлы для автоматической загрузки, например, /home/user/torrents/files/ watch-dir-enabled: разрешить автозагрузку .torrent-файлов, true или false

rpc-authentication-required: нужна ли авторизация для доступа к веб-интерфейсу, true или false rpc-enabled: вкл/выкл веб-интерфейс, true или false rpc-username: пользователь rpc-password: пароль, после перезапуска демона будет зашифрован rpc-port: порт, по умолчанию 9091 rpc-whitelist: ip-адреса через запятую, с которых разрешен доступ, можно использовать *, например, "127.0.0.*,192.168.*.*" rpc-whitelist-enabled: разрешить белый список

speed-limit-down: ограничение скорости загрузки в кбит/с, по умолчанию 100 speed-limit-down-enabled: включить ограничение скорости загрузки, true или false speed-limit-up: ограничение скорости раздачи в кбит/с, по умолчанию 100 speed-limit-up-enabled: включить ограничение скорости раздачи, true или false

alt-speed-enabled: включение "Turtle Mode" - временное ограничение скорости alt-speed-up: временное ограничение скорости загрузки в кбит/с, по умолчанию 50 alt-speed-down: временное ограничение скорости раздачи в кбит/с, по умолчанию 50

Планировщик позволяет ограничивать скорость по расписанию: ratio-limit: лимит на отдачу, по умолчанию 2.0 alt-speed-time-enabled: включить планировщик, по умолчанию false (отключены) alt-speed-time-begin: время в минутах от 0:00 до начала действия правил, по умолчанию=540 — 9 часов утра alt-speed-time-end: время в минутах от 0:00 до окончания действия правил, по умолчанию=1020 — 5 часов вечера alt-speed-time-day: битовая маска дней, по которым действуют правила, по умолчанию=127, каждый день воскресенье: 1 (0000001) понедельник: 2 (0000010) вторник: 4 (0000100) среда: 8 (0001000) четверг: 16 (0010000) пятница: 32 (0100000) суббота: 64 (1000000) рабочие дни: 62 (0111110) выходные: 65 (1000001) все дни: 127 (1111111)

peer-limit-global: максимальное количество подключенных пиров, по умолчанию 240 peer-limit-per-torrent: максимальное количество подключенных пиров на торрент, по умолчанию 60 blocklist-enabled: блоклист, true или false dht-enabled: включить DHT, true или false encryption: режим шифрования для пиров: 0=выкл, 1=предпочтительно, 2=принудительно, по умолчанию 1 peer-socket-tos: по умолчанию 0 pex-enabled: обмен пирами, true или false peer-port: порт входящих соединений, 51413

cashe-size-mb: 2 (размер кеша в Мб) preallocation: 2 (чтобы не фрагментировалась фс)

Остальные настройки остаются как есть. Вписываем настройки и сохраняем.

Конфиг для примера:

"alt-speed-down": 300,

"alt-speed-enabled": false,

"alt-speed-time-begin": 540,

"alt-speed-time-day": 127,

"alt-speed-time-enabled": true,

"alt-speed-time-end": 1380,

"alt-speed-up": 150,

"bind-address-ipv4": "0.0.0.0",

"bind-address-ipv6": "::",

"blocklist-enabled": false,

"cashe-size-mb": 2,

"dht-enabled": true,

"download-dir": "/home/user1/torrents",

"download-limit": 100,

"download-limit-enabled": 0,

"encryption": 1,

"lazy-bitfield-enabled": true,

"max-peers-global": 200,

"message-level": 2,

"open-file-limit": 32,

"peer-limit-global": 200,

"peer-limit-per-torrent": 60,

"peer-port": 11523,

"peer-port-random-high": 65535,

"peer-port-random-low": 49152,

"peer-port-random-on-start": false,

"peer-socket-tos": 0,

"pex-enabled": true,

"port-forwarding-enabled": true,

"preallocation": 2,

"proxy": "",

"proxy-auth-enabled": false,

"proxy-auth-password": "",

"proxy-auth-username": "",

"proxy-enabled": false,

"proxy-port": 80,

"proxy-type": 0,

"ratio-limit": 1.0000,

"ratio-limit-enabled": true,

"rename-partial-files": true,

"rpc-authentication-required": true,

"rpc-bind-address": "0.0.0.0",

"rpc-enabled": true,

"rpc-password": "{00656fa2590aadfd78c3aceab6f3f2c616f57cc3uokaCTEm",

"rpc-port": 9091,

"rpc-username": "user1",

"rpc-whitelist": "127.0.0.1,192.168.1.*",

"rpc-whitelist-enabled": true,

"speed-limit-down": 5000,

"speed-limit-down-enabled": true,

"speed-limit-up": 5000,

"speed-limit-up-enabled": true,

"umask": 18,

"upload-limit": 100,

"upload-limit-enabled": 0,

"upload-slots-per-torrent": 14,

"watch-dir": "/home/user1/torrents/files",

"watch-dir-enabled": true

Итог:

  • торренты качаются и раздаются круглосуточно, но с 9 утра до 11 вечера скорость загрузки ограничиваем до 300 кбит, скорость раздачи до 150 кбит;

  • ночью 5000 кбит на загрузку и раздачу;

  • все торренты скачиваются в папку ~/torrents;

  • торрент файлы кладутся в папку ~/torrents/files/, откуда Transmission сам будет их забирать и ставить на скачивание;

  • веб-интерфейс доступен по адресу http://192.168.1.100:9091;

  • доступ разрешен для пользователя sasha только с локальной сети.

Запускаем: sudo /etc/init.d/transmission-daemon

Рисунок 6. Transmission-daemon

Установка пакета программ, для обращения к сетевым дискам по протоколу SMB/CIFS. Samba

sudo apt-get install samba

Настройка. Самба хранит все свои настройки в файле /etc/samba/smb.conf. Открываем его для редактирования. sudo nano /etc/samba/smb.conf

Каждый раздел файла начинается с заголовка раздела: [global], [homes], [printers], и т.п.

В [global] определяются глобальные настройки для всего сервера.

Раздел [homes] позволяет удаленным пользователям иметь доступ к своим (и только своим) домашним директориям на сервере. Т. е., если к серверу подключиться пользователь user1, то он будет подключены к своему домашнему каталогу. Для этого он должен быть зарегистрированы на сервере.

В [printers] прописаны настройки для принтеров.

Глобальные настройки:

[global]

сюда записывать логи

log file = /var/log/samba/log.%m

максимальный размер файла журнала

max log size = 1000

имя самба сервера в сетевом окружении

netbios name = HomeServer

коментарий самба сервера

server string = Home Server Ubuntu

рабочая группа

workgroup = WORKGROUP

выступать как контролер домена

domain master = no

привязка к интерфейсам, на каких слушать, если не указано слушает на все интерфейсах, можно указать ай-пи адреса

interfaces = lo, eth2

подчиняться директивам учетных записей PAM и управлению сессиями

obey pam restrictions = yes

шифрование паролей между сервером и клиентом

encrypt passwords = true

параметр сообщают демону smbd что делать с запросами, которые не удалось аутентифицировать в UNIX

bad user – запросы с неправильным паролем будут отклонены, если такое имя пользователя существует. Если не существует, то такие запросы будут считаться как попытки зайти гостем (guest account).

map to guest = bad user

определяет будет ли демон nmbd делать запрос к DNS, если WINS не смог разрешить NetBIOS имя

dns proxy = no

параметр заставляет синхронизировать пароль UNIX с паролем SMB при изменении зашифрованного пароля SMB в файле smbpasswd. При включении этого параметра (yes) от пользователя ROOT вызывается программа, определенная в параметре passwd program, что позволяет установить новый пароль UNIX без доступа к старому паролю UNIX

unix password sync = yes

имя программы, которую можно использовать для смены паролей UNIX, любые вхождения %u будут заменены именем пользователя

passwd program = /usr/bin/passwd %u

механизм для хранения информации о пользователях

passdb backend = tdbsam

уровень отладки журналов событий, которые будут записываться в системный syslog, 0 - события LOG_ERR, 1 - LOG_WARNING, 2 — LOG_NOTICE, 3 - LOG_INFO.

syslog = 0

режим работы Samba:

share - уровень ресурсов,

user - уровень пользователей, доступ по логин-паролю,

domain - домен,

server - сервер паролей,

ads - Active directory

security = user

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

usershare allow guests = yes

panic action = /usr/share/samba/panic-action %d

os level = 20

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

pam password change = yes

разрешаем доступ для всех со своей подсетки и локалхоста

hosts allow = 192.168.10. 127.

пользователь с root-правами

admin users = user1

выступать сервером времени

time server = yes

Основные настройки сделаны. Теперь расшарим нужные папки.

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

[HOMES]

комментарий

comment = Home directories

путь к папке, %U = имя пользователя

path = /home/samba/homes/%U

только для чтения?

read only = no

вход с паролем?

public = no

запись разрешена?

writable = yes

права создаваемых файлов и папок

create mask = 0600

directory mask = 0700

отображать в списке ресурсов в сетевом окружении?

browseable = no

Далее расшариваем нужные папки. Для каждой папки можно определить свои параметры доступа. Для этого дописываем в конец конфиг-файла smb.conf разделы как представлено в примере ниже.

Пример:

создадим расшаренную папку files

[files]

комментарий к создаваемой папке

comment = Media files

путь к папке

path = /home/user1/files

будем разрешать доступ только по паролю

public = yes

не видно в сетевом окружении всем кроме владельцев

printable = no

запрещаем запись всем

writable = no

и разрешаем запись для user1 и пользователям из группы adm

write list = user1 @adm

По аналогии создаются все остальные шары.

Для добавления пользователей в Samba делается следующее: smbpasswd -a username

Будет предложено ввести пароль, пользователь будет добавлен в базу, теперь необходимо включить этого пользователя. smbpasswd -e username

Для проверки правильности сделанных настроек выполняем команду testparm

если testparm сообщает об отсутствии проблем, то smbd правильно загрузит файл настроек.

Перезапускаем Samba после изменения конфиг-файла. sudo /etc/init.d/samba restart

Если расшаривать внешние устройства, нтфс диски и т. д., следует добавить пользователя в группу plugdev.

Установка протокола передачи файлов

Папки на сервере расшарили теперь по сети обмениваться файлами. Удобно и быстро. Но файлы и папки доступны только в локальной сети, т. е. физически нужно быть подключенным к серверу у себя на ПК. А если срочно что-то понадобиться из вне? На этот случай поднимается FTP-сервер. Тогда будет доступ к своим файлам из любой точки планеты, где есть интернет. Еще и можно обмениваться файлами не пользуясь файлообменниками.

В качестве FTP-сервера была выбрана vsftpd. Разработчик позиционирует его как very security, т. е. очень безопасный. Безопасность лишней не бывает. sudo apt-get install vsftpd

Настройки vsftpd сервера находятся в файле /etc/vsftpd.conf

Первым делом создается резервная копия sudo cp /etc/vsftpd.conf/ etc/vsftpd.conf_original

Потом очищается содержимое файла cat /dev/null > /etc/vsftpd.conf

И откраваем его для редактирования sudo nano /etc/vsftpd.conf

Сервер будет работать следующим образом. Для анонимных пользователей разрешен доступ на скачивание из папки /home/ftp. Эта папка является домашней для пользователя ftp (он же anonymous). Любое изменение файлов, включая загрузку, запрещено. Подключаться анонимусы будут без пароля.

Анонимный доступ я открываем для обмена файлами. А для себя делаются следующие настройки. На сервере есть локальные пользователи. Открываем для них доступ с полными правами в определенную папку, т. е. файлы и папки можно не только скачивать, но и загружать, переименовывать, удалять и т.д. Настройки самого сервера в примере конфиг файла. Файл настроек vsftpd сервера имеет следующую структуру: опция=параметр. Параметр может быть значением YES или NO, числом, строковым значением. Строки начинающиеся с символа # являются комментариями и на настройки не влияют.

Пример настройки: vsftpd будет загружаться в автономном режиме и сам позаботится о прослушивании и перехвате входящих соединений. inetd использоваться не будет listen=YES работать в фоновом режиме background=YES если на сервере несколько сетевых интерфейсов, можно прямо прописать какой из них прослушивать listen_address=192.168.1.100 максимальное количество подключений max_clients=20 максимальное количество подключений с одного ip max_per_ip=10 разрешить доступ анонимным пользователям anonymous_enable=YES папка анонимусов anon_root=/home/ftp не спрашивать пароль no_anon_password=YES разрешить доступ локальным пользователям local_enable=YES папка локальных пользователей local_root=/media/files включить команду "async ABOR" для "плохих" клиентов async_abor_enable=YES разрешить изменение файлов write_enable=YES скачивать и загружать данные в режиме ASCII ascii_download_enable=YES ascii_upload_enable=YES вся пользовательская и груповая информация в списке директорий, выводится как "ftp" hide_ids=YES детальный отчет о скачиваниях и загрузках (пишется в /var/log/vsftpd.log) xferlog_enable=YES активируем 20-й порт connect_from_port_20=YES приветствие при подключении ftpd_banner=Welcome to home FTP server. пустая папка "для безопасности" secure_chroot_dir=/var/run/vsftpd/empty имя сервиса PAM, который будет использоваться vsftp pam_service_name=passwd

Так выглядит файл конфигурации vsftpd сервера.

Запуск ftp сервера sudo vsftpd

Все заработало сразу же, если у не подключается, проверяем еще раз настройки. При запуске, возможно, некоторые ошибки. Например: 500 OOPS: config file not owned by correct user – измените владельца файлов конфигураций пользователей на roor:root

500 OOPS: vsftpd: refusing to run with writable anonymous root – изменить права каталога указаного в anon_root на 555

425 Security: bad IP connecting – добавить опцию pasv_promiscuous=YES, хотя добавление этой опции является нежелательным.

Подключаемся: user@user-pc:~$ ftp 192.168.1.100 Connected to 192.168.1.100. 220 Welcome to user`s FTP server. Name (192.168.1.100:user): ftp 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>

Чтобы можно было подключаться из интернета необходимо, чтобы сервер имел внешний ip-адрес, либо можно воспользоваться сервисами вроде DynDNS.org.

1.7.1 Эффективное использование корпоративного сервера

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

– внутри корпоративный сайт

– файловое хранилище организации

– хранилище баз данных предприятия

– и т.д.

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

В большинстве случаев корпоративный сервер, выполняющих роль прокси-сервера, является одной из составляющих IT инфраструктуры предприятия, то есть кроме прокси-сервера, на предприятии может быть развёрнута служба каталогов (Active Directory), организован корпоративный почтовый сервер, файл сервер и многое другое. Для повышения эффективности их работы все эти сервисы должны быть максимально интегрированы. Чаще всего интеграция происходит на базе Active Directory, прокси-сервера Squid поддерживает такую интеграцию.

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

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

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

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

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

корпоративный файловый сервер