ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ_OLD > Администрирование > *nix системы
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Совершенный Сервер на Ubuntu 8.10 ( часть 2)
  #11  
Старый 24.12.2008, 02:43
Belfigor
Участник форума
Регистрация: 14.11.2007
Сообщений: 195
Провел на форуме:
1210861

Репутация: 98
Отправить сообщение для Belfigor с помощью ICQ
По умолчанию Совершенный Сервер на Ubuntu 8.10 ( часть 2)

В этой части будет рассказанно , как установить FTP c поддержкой Mysql в частности это будет Proftpd-Mysql

Для начала установим Apache, Mysql и PhpMyadmin , как это сделать я подробно описал ТУТ

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

Код:
sudo su
установим всё одной командой

Код:
apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2
Во время установки вас попросят задать пароль для Mysql , сделаем это

Цитата:
New password for the MySQL "root" user: <-- ваш пароль для mysql
теперь просмотрим коректно ли работают наши устанолвенные программы Apache, Mysql и PhpMyadmin , в папке www создадим файл test.php c следующим содержанием

PHP код:
<?php
phpinfo
();
?>
зайдя на свой хост вы должны уведеть следующие : http://127.0.0.1/test.php



Если всё нормально , едем дальше , и установим proftpd-mysql

Код:
apt-get install proftpd-mysql
при установки proftpd-mysql вы можете столкнуться с некоторыми проблемами :

PHP код:
 apt-get install proftpd-mysql
Чтение списков пакетов
... Готово
Построение дерева зависимостей      
Чтение информации о состоянии
... Готово
Пакет proftpd
-mysql недоступенно упомянут в списке зависимостей другого пакета.
Это может означатьчто пакет отсутствуетустарелили доступен из источниковне упомянутых в sources.list
EДля пакета proftpd-mysql не найдены кандидаты на установку 
в Ubuntu 8.04 , проблем не было , но ничего это всё решаемо :

Идём во сюда http://packages.ubuntu.com/ru/dapper...mysql/download

Страница загрузки пакета proftpd-mysql_1.2.10-27ubuntu3.1_i386.deb для архитектуры Intel x86

далее :

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

Используйте любой из серверов-зеркал, добавив его в свой файл /etc/apt/sources.list, например так:

deb http://fr.archive.ubuntu.com/ubuntu dapper-updates main universe

Заменив fr.archive.ubuntu.com/ubuntu нужным сервером.
затем sources.list я добавил

Код:
deb http://mirrors.kernel.org/ubuntu dapper-updates main universe
и устанавливаем proftpd mysql :

Код:
apt-get install proftpd-mysql
во время установки вам зададут вопрос , ответе:

Цитата:
Run proftpd: <-- standalone
Теперь создадим ftp группу и ftp юзера



PHP код:
groupadd -g 2001 ftpgroup
useradd 
-u 2001 -/bin/false -/bin/null -"proftpd user" -g ftpgroup ftpuser 
Теперь нужно создать в mysql базу для Proftpd :

PHP код:
create database ftp;
  
GRANT SELECTINSERTUPDATEDELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED    BY 'password';
  
GRANT SELECTINSERTUPDATEDELETE ON ftp.* TO 'proftpd'@'localhost.localdomain'    IDENTIFIED BY 'password';
  
FLUSH PRIVILEGES
теперь создадим структуру таблиц в базе ftp:

PHP код:
USE ftp;
 
CREATE TABLE ftpgroup    (
  
groupname varchar(16NOT NULL default '',
  
gid smallint(6NOT NULL default '5500',
  
members varchar(16NOT NULL default '',
  
KEY groupname (groupname)
  ) 
TYPE=MyISAM COMMENT='ProFTP group table'
PHP код:
CREATE TABLE ftpquotalimits    (
  
name varchar(30) default NULL,
  
quota_type enum('user','group','class','all'NOT NULL default 'user',
  
per_session enum('false','true'NOT NULL default 'false',
  
limit_type enum('soft','hard'NOT NULL default 'soft',
  
bytes_in_avail int(10unsigned NOT NULL default '0',
  
bytes_out_avail int(10unsigned NOT NULL default '0',
  
bytes_xfer_avail int(10unsigned NOT NULL default '0',
  
files_in_avail int(10unsigned NOT NULL default '0',
  
files_out_avail int(10unsigned NOT NULL default '0',
  
files_xfer_avail int(10unsigned NOT NULL default '0'
  
TYPE=MyISAM
PHP код:
CREATE TABLE ftpquotatallies    (
  
name varchar(30NOT NULL default '',
  
quota_type enum('user','group','class','all'NOT NULL default 'user',
  
bytes_in_used int(10unsigned NOT NULL default '0',
  
bytes_out_used int(10unsigned NOT NULL default '0',
  
bytes_xfer_used int(10unsigned NOT NULL default '0',
  
files_in_used int(10unsigned NOT NULL default '0',
  
files_out_used int(10unsigned NOT NULL default '0',
  
files_xfer_used int(10unsigned NOT NULL default '0'
  
TYPE=MyISAM
PHP код:
CREATE TABLE ftpuser    (
  
id int(10unsigned NOT NULL auto_increment,
  
userid varchar(32NOT NULL default '',
  
passwd varchar(32NOT NULL default '',
  
uid smallint(6NOT NULL default '5500',
  
gid smallint(6NOT NULL default '5500',
  
homedir varchar(255NOT NULL default '',
  
shell varchar(16NOT NULL default '/sbin/nologin',
  
count int(11NOT NULL default '0',
  
accessed datetime NOT NULL default '0000-00-00 00:00:00',
  
modified datetime NOT NULL default '0000-00-00 00:00:00',
  
PRIMARY KEY (id),
  
UNIQUE KEY userid (userid)
  ) 
TYPE=MyISAM COMMENT='ProFTP user table'
выходим из mysql

Код:
quit;
Теперь открываем /etc/proftpd.conf и в конец файла добавлем следующие строки :

Код:
DefaultRoot ~


# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes            Plaintext Crypt
SQLAuthenticate         users* groups*


# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo  ftp@localhost proftpd password


# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo     ftpuser userid passwd uid gid homedir shell

# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo    ftpgroup groupname gid members

# set min UID and GID - otherwise these are 999 each
SQLMinID        500

# create a user's home directory on demand if it doesn't exist
SQLHomedirOnDemand on

# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser

# Update modified everytime user uploads or deletes a file
SQLLog  STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser

# User quotas
# ===========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on

SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"

SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies

SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies

QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

RootLogin off
RequireValidShell off
проверте что вы заменили строку password вашем настроящим паролем для MySQL user proftpd в линии SQLConnectInfo!

Также в /etc/proftpd.conf можно добавить вот такие строки :
из мануала

Цитата:
Martin Mrajca has sent me these lines that you can add to /etc/proftpd.conf so that Proftpd sends you a banner with used / available space after LIST:
Код:
SQLNamedQuery gettally  SELECT "ROUND((bytes_in_used/1048576),2) FROM ftpquotatallies WHERE name='%u'"
SQLNamedQuery getlimit  SELECT "ROUND((bytes_in_avail/1048576),2) FROM ftpquotalimits WHERE name='%u'"
SQLNamedQuery getfree   SELECT "ROUND(((ftpquotalimits.bytes_in_avail-ftpquotatallies.bytes_in_used)/1048576),2) FROM ftpquotalimits,ftpquotatallies WHERE ftpquotalimits.name = '%u' AND ftpquotatallies.name = '%u'"

SQLShowInfo   LIST    "226" "Used %{gettally}MB from %{getlimit}MB. You have %{getfree}MB available space."
Не забудьте перезагрузить Proftpd после добавления этих строк

Вернёмся в mysql и создадим группу и юзера в базе FTP:
Код:
 mysql -u root -p
PHP код:
USE ftp;

INSERT INTO `ftpgroup`    (`groupname`, `gid`, `members`) VALUES ('ftpgroup'2001'ftpuser'); 
PHP код:
INSERT INTO `ftpquotalimits`    (`name`, `quota_type`, `per_session`, `limit_type`, `bytes_in_avail`, `bytes_out_avail`,    `bytes_xfer_avail`, `files_in_avail`, `files_out_avail`, `files_xfer_avail`)    VALUES ('exampleuser''user''true''hard'1572864000000);
  
INSERT INTO `ftpuser` (`id`, `userid`, `passwd`, `uid`, `gid`, `homedir`, `shell`,    `count`, `accessed`, `modified`) VALUES (1'exampleuser''secret'20012001,    '/home/www.example.com''/sbin/nologin'0''''); 
выходим из mysql
Код:
quit;
Итак мы создали юзера exampleuser с паролем secret и директорией /home/www.example.com ,





здесь вы можете указать свою директорю /home/user или /www/user1/ и тд .

Заходим в phpmyadmin и может добавлять новых юзеров , выставлять квоты на размер диского пространства и тд и тп :

http://127.0.0.1/phpmyadmin/





Таблица ftpuser Table

* userid: имя виртального юзера Proftpd user (e.g. exampleuser).
* passwd: пароль храниться в открытом виде , это недостаток , имхо ( The unencrypted (i.e., clear-text) password of the user.)
* uid: юзер ид (The userid of the ftp user you created at the end of step two (e.g. 2001).
* gid: ид группы ( The groupid of the ftp group you created at the end of step two (e.g. 2001).
* homedir: директория виртуально юзера proftpd например /home/www.example.com


Удачной установки и настройки , с уважением Belfigor

источник http://www.howtoforge.com/proftpd_mysql_virtual_hosting

(c)stopxaker.ru

Последний раз редактировалось Belfigor; 25.04.2009 в 16:26..
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ