FTP-Speicher: Unterschied zwischen den Versionen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche
(Konfiguration)
(Konfiguration)
Zeile 40: Zeile 40:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
openssl rsa -in /etc/mysql/server-key.pem -out /etc/mysql/server-key.pem
 
openssl rsa -in /etc/mysql/server-key.pem -out /etc/mysql/server-key.pem
 +
</syntaxhighlight>
 +
 +
Nun konfigurieren wir den eigentlichen FTP-Server. Als erstes muss eine Benutzergruppe angelegt werden:
 +
 +
<syntaxhighlight lang="bash">
 +
groupadd -g 2001 ftpgroup
 +
useradd -u 2001 -s /bin/false -d /bin/null -g ftpgroup ftpuser
 +
</syntaxhighlight>
 +
 +
Wir bauen nun die Datenbank-Struktur auf:
 +
 +
<syntaxhighlight lang="bash">
 +
mysql -uroot -p
 +
</syntaxhighlight>
 +
 +
<syntaxhighlight lang="mysql">
 +
CREATE DATABASE proftpd;
 +
USE proftpd;
 +
 +
CREATE TABLE ftpgroup (
 +
    groupname varchar(16) NOT NULL default '',
 +
    gid smallint(6) NOT NULL default '5500',
 +
    members varchar(16) NOT NULL default '',
 +
    KEY groupname (groupname)
 +
) ENGINE=MyISAM COMMENT='ProFTP group table';
 +
 +
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 bigint(20) unsigned NOT NULL default '0',
 +
    bytes_out_avail bigint(20) unsigned NOT NULL default '0',
 +
    bytes_xfer_avail bigint(20) unsigned NOT NULL default '0',
 +
    files_in_avail int(10) unsigned NOT NULL default '0',
 +
    files_out_avail int(10) unsigned NOT NULL default '0',
 +
    files_xfer_avail int(10) unsigned NOT NULL default '0'
 +
) ENGINE=MyISAM;
 +
 +
CREATE TABLE ftpquotatallies (
 +
    name varchar(30) NOT NULL default '',
 +
    quota_type enum('user','group','class','all') NOT NULL default 'user',
 +
    bytes_in_used bigint(20) unsigned NOT NULL default '0',
 +
    bytes_out_used bigint(20) unsigned NOT NULL default '0',
 +
    bytes_xfer_used bigint(20) unsigned NOT NULL default '0',
 +
    files_in_used int(10) unsigned NOT NULL default '0',
 +
    files_out_used int(10) unsigned NOT NULL default '0',
 +
    files_xfer_used int(10) unsigned NOT NULL default '0'
 +
) ENGINE=MyISAM;
 +
 +
CREATE TABLE ftpuser (
 +
    id int(10) unsigned NOT NULL auto_increment,
 +
    userid varchar(32) NOT NULL default '',
 +
    passwd varchar(32) NOT NULL default '',
 +
    uid smallint(6) NOT NULL default '2001',
 +
    gid smallint(6) NOT NULL default '2001',
 +
    homedir varchar(255) NOT NULL default '',
 +
    shell varchar(16) NOT NULL default '/sbin/nologin',
 +
    count int(11) NOT 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)
 +
) ENGINE=MyISAM COMMENT='ProFTP user table';
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
== Hinzufügen ==
 
== Hinzufügen ==
 
Beim Hinzufügen eines Produktes in sourceDESK muss nur der Hostname und das Root-Passwort für den MySQL-Server angegeben werden. Natürlich muss auch eine Quota gesetzt werden.
 
Beim Hinzufügen eines Produktes in sourceDESK muss nur der Hostname und das Root-Passwort für den MySQL-Server angegeben werden. Natürlich muss auch eine Quota gesetzt werden.

Version vom 30. August 2016, 10:44 Uhr

Diese Anleitung beschreibt die Konfiguration von FTP-Servern für das sourceDESK-Plugin für FTP-Speicher. Als System wird hier Debian 8 verwendet.

Software-Installation

Als erstes installieren wir die benötigte Software.

apt-get install proftpd proftpd-mod-mysql mysql-server mysql-client

ProFTPd soll im Servermodus gestartet werden. Für den MySQL-Administrator sollte ein möglichst sicheres Passwort eingegeben werden.

Konfiguration

Zuerst sollte der Hostname des Nodes konfiguriert werden. Dieser wird in die Datei /etc/hostname eingetragen und über das Kommando hostname gesetzt.

Die System-Zeit und die Zeitzone sollte überprüft werden, diese Einstellungen müssen korrekt sein. Die Zeitzone können wir wie folgt auf die deutsche Zeitzone stellen:

dpkg-reconfigure tzdata

Eine Portänderung von SSH ist möglich, auch wenn wir davon abraten. Wenn der Port geändert wird, auf jeden Fall einen Port kleiner als 1024 wählen! Passwort-Authentifizierung darf und sollte deaktiviert werden.

Als nächstes konfigurieren wir den MySQL-Server. Hier wird die Variable bind-address in der Datei /etc/mysql/my.cnf von 127.0.0.1 auf 0.0.0.0 geändert. Danach wird der MySQL-Server neugestartet. Zusätzlich sollten wir noch mysql_secure_installation ausführen, hier darf der Remote-Zugriff für root nicht deaktiviert werden.

Nun müssen wir den Remote-Zugriff noch explizit erlauben, hierbei unbedingt IHR_PASSWORT durch das Root-Passwort für MySQL ersetzen:

mysql -uroot -p
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'IHR_PASSWORT';
FLUSH PRIVILEGES;

Für erhöhte Sicherheit muss SSL aktiviert werden, eine unverschlüsselte Verbindung ist nicht möglich. Dazu bearbeiten Sie bitte erneut die /etc/mysql/my.cnf und entfernen Sie das Kommentar-Zeichen # vor den Variablen ssl-ca, ssl-cert und ssl-key.

Legen Sie nun die Dateien /etc/mysql/cacert.pem, /etc/mysql/server-cert.pem und /etc/mysql/server-key.pem mit Ihrem SSL-Zertifikat an. Wichtig: Der SSL-Schlüssel muss im RSA-Format sein. Ist er das nicht, wirft MySQL eine Fehlermeldung. Die Konvertierung geht mit OpenSSL:

openssl rsa -in /etc/mysql/server-key.pem -out /etc/mysql/server-key.pem

Nun konfigurieren wir den eigentlichen FTP-Server. Als erstes muss eine Benutzergruppe angelegt werden:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -g ftpgroup ftpuser

Wir bauen nun die Datenbank-Struktur auf:

mysql -uroot -p
CREATE DATABASE proftpd;
USE proftpd;
 
CREATE TABLE ftpgroup (
    groupname varchar(16) NOT NULL default '',
    gid smallint(6) NOT NULL default '5500',
    members varchar(16) NOT NULL default '',
    KEY groupname (groupname)
) ENGINE=MyISAM COMMENT='ProFTP group table';
 
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 bigint(20) unsigned NOT NULL default '0',
    bytes_out_avail bigint(20) unsigned NOT NULL default '0',
    bytes_xfer_avail bigint(20) unsigned NOT NULL default '0',
    files_in_avail int(10) unsigned NOT NULL default '0',
    files_out_avail int(10) unsigned NOT NULL default '0',
    files_xfer_avail int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM;
 
CREATE TABLE ftpquotatallies (
    name varchar(30) NOT NULL default '',
    quota_type enum('user','group','class','all') NOT NULL default 'user',
    bytes_in_used bigint(20) unsigned NOT NULL default '0',
    bytes_out_used bigint(20) unsigned NOT NULL default '0',
    bytes_xfer_used bigint(20) unsigned NOT NULL default '0',
    files_in_used int(10) unsigned NOT NULL default '0',
    files_out_used int(10) unsigned NOT NULL default '0',
    files_xfer_used int(10) unsigned NOT NULL default '0'
) ENGINE=MyISAM;
 
CREATE TABLE ftpuser (
    id int(10) unsigned NOT NULL auto_increment,
    userid varchar(32) NOT NULL default '',
    passwd varchar(32) NOT NULL default '',
    uid smallint(6) NOT NULL default '2001',
    gid smallint(6) NOT NULL default '2001',
    homedir varchar(255) NOT NULL default '',
    shell varchar(16) NOT NULL default '/sbin/nologin',
    count int(11) NOT 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)
) ENGINE=MyISAM COMMENT='ProFTP user table';

Hinzufügen

Beim Hinzufügen eines Produktes in sourceDESK muss nur der Hostname und das Root-Passwort für den MySQL-Server angegeben werden. Natürlich muss auch eine Quota gesetzt werden.