Änderungen

FTP-Speicher

3.147 Byte hinzugefügt, 11:37, 7. Okt. 2016
/* Konfiguration */
</syntaxhighlight>
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 nicht 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:
<syntaxhighlight lang="bash">
mysql -uroot -p
mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'IHR_PASSWORT';
</syntaxhighlight>
-MySQL-SSL<syntaxhighlight lang="mysql">GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'IHR_PASSWORT';FLUSH PRIVILEGES;</syntaxhighlight>
== Templates ==Da die Betriebssystem-Installation bei KVM vom Nutzer via VNC erfolgtFür erhöhte Sicherheit muss SSL aktiviert werden, ist eine ISO-Datei notwendig, unverschlüsselte Verbindung ist nicht möglich. Dazu bearbeiten Sie bitte erneut die dann beim Boot-Vorgang eingebunden wird''/etc/mysql/my. Es kann hier also theoretisch jedes Betriebssystem verwendet werdencnf'' und entfernen Sie das Kommentar-Zeichen # vor den Variablen ''ssl-ca'', auch Windows''ssl-cert'' und ''ssl-key''.
Die entsprechenden Distributionen kann man also direkt auf der jeweiligen Seite der Distribution herunterladenLegen 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:
Der Einfachheit halber nutzt sourceDESK nur ISO<syntaxhighlight lang="bash">openssl rsa -Dateien aus dem Verzeichnis ''in /homeetc/iso'', welches Sie anlegen müssenmysql/server-key. Dorthin laden Sie bitte sämtliche ISOpem -Dateien, die Sie mit KVM verwenden möchtenout /etc/mysql/server-key.pem</syntaxhighlight>
Zu Testzwecken laden Nun konfigurieren wir einfach eine minimale Debianden eigentlichen FTP-Version mit NetinstallServer. Als erstes muss eine Benutzergruppe angelegt werden:
<syntaxhighlight lang="bash">
mkdir groupadd -p /home/isog 2001 ftpgroupcd useradd -u 2001 -s /homebin/isowget http://cdimage.debian.org/debianfalse -cdd /8.5.0bin/amd64/iso-cd/debian-8.5.0-amd64null -netinst.isog ftpgroup ftpuser
</syntaxhighlight>
== Testen ==Wir erstellen bauen nun die Verzeichnisse ''/home/xml'' und ''/home/hdd''Datenbank-Struktur auf:
<syntaxhighlight lang="bash">
mkdir mysql -p /home/xmlmkdir uroot -p /home/hdd
</syntaxhighlight>
Wir erstellen nun die Datei ''/home/xml/test.xml'' mit folgendem Inhalt:<syntaxhighlight lang="mysql">CREATE DATABASE proftpd;USE proftpd;
<syntaxhighlight lang="xml">CREATE TABLE ftpgroup (<domain type= groupname varchar(16) NOT NULL default 'kvm'>, <name>test</name> gid smallint(6) NOT NULL default '5500', <uuid>f5b8c05b-9c7a-3211-49b9-2bd635f7e2aa</uuid> members varchar(16) NOT NULL default '', <memory>1048576</memory> KEY groupname (groupname) <currentMemory>1048576</currentMemory>) ENGINE=MyISAM COMMENT='ProFTP group table'; <vcpu>1</vcpu> <os>CREATE TABLE ftpquotalimits ( <type>hvm</type>name varchar(30) default NULL, <boot dev=quota_type enum('cdromuser'/>,'group','class','all') NOT NULL default 'user', </os> per_session enum('false','true') NOT NULL default 'false', <features> limit_type enum('soft','hard') NOT NULL default 'soft', <acpi/>bytes_in_avail bigint(20) unsigned NOT NULL default '0', </features> bytes_out_avail bigint(20) unsigned NOT NULL default '0', <clock offset= bytes_xfer_avail bigint(20) unsigned NOT NULL default 'utc0'/>, <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> files_in_avail int(10) unsigned NOT NULL default '0', <emulator>/usr/bin/kvm</emulator>files_out_avail int(10) unsigned NOT NULL default '0', <disk type="file" device="disk">files_xfer_avail int(10) unsigned NOT NULL default '0' <driver name) ENGINE="qemu" type="raw"/>MyISAM; <source file="/home/hdd/test.img"/> <target dev="vda" bus="virtio"/>CREATE TABLE ftpquotatallies ( <address type="pci" domain="0x0000" bus="0x00" slot="0x04" function="0x0"/> name varchar(30) NOT NULL default '', </disk>quota_type enum('user','group','class','all') NOT NULL default 'user', <disk type="file" device="cdrom">bytes_in_used bigint(20) unsigned NOT NULL default '0', <driver name="qemu" type="raw"/> <source file="/home/iso/debian-8.5. bytes_out_used bigint(20) unsigned NOT NULL default '0-amd64-netinst.iso"/>', <target dev="hdc" bus="ide"/> <readonly/> <address type="drive" controller=" bytes_xfer_used bigint(20) unsigned NOT NULL default '0" bus="1" target="0" unit="0"/>', </disk>files_in_used int(10) unsigned NOT NULL default '0', <interface type=files_out_used int(10) unsigned NOT NULL default 'bridge0'>, <source bridge= files_xfer_used int(10) unsigned NOT NULL default 'br00'/> <mac address) ENGINE="00:00:A3:B0:56:10"/>MyISAM; CREATE TABLE ftpuser ( </interface>id int(10) unsigned NOT NULL auto_increment, <controller type="ide" index="0"> <address type="pci" domain="0x0000" bus="0x00" slot="0x01" function="0x1"/>userid varchar(32) NOT NULL default '', </controller>passwd varchar(32) NOT NULL default '', <input type=uid smallint(6) NOT NULL default 'mouse2001' bus=, gid smallint(6) NOT NULL default 'ps22001'/>, <graphics type=homedir varchar(255) NOT NULL default 'vnc' port=, shell varchar(16) NOT NULL default '5900/sbin/nologin' listen=, count int(11) NOT NULL default '0.0.0.0' passwd=, accessed datetime NOT NULL default 'test12340000-00-00 00:00:00'/>, <console type=modified datetime NOT NULL default 'pty0000-00-00 00:00:00'>, <target port PRIMARY KEY (id), UNIQUE KEY userid (userid)) ENGINE=MyISAM COMMENT='0ProFTP user table'/>; </console> </devices></domain>INSERT INTO `ftpgroup` (`groupname`, `gid`, `members`) VALUES ('ftpgroup', 2001, 'ftpuser');
</syntaxhighlight>
Nun muss Danach wird das Backend für PowerDNS konfiguriert. Hierfür bearbeiten wir die Festplatte noch erstellt Datei ''/etc/proftpd/modules.conf''. Hier werdendie Module ''mod_sql.c'', wir nutzen hierzu qcow2 als Image-Format''mod_sql_mysql.c'' und ''mod_quotatab_sql.c'' einkommentiert. Unter der Sektion "Alternative authentication frameworks" fügen Sie folgendes hinzu:
<syntaxhighlight lang="bash">
qemuDefaultRoot ~ SQLBackend mysql# The passwords in MySQL are encrypted using CRYPTSQLAuthTypes Plaintext CryptSQLAuthenticate users groups # used to connect to the database# databasename@host database_user user_passwordSQLConnectInfo proftpd@localhost root <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 dbSQLUserInfo 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 dbSQLGroupInfo ftpgroup groupname gid members # set min UID and GID -img otherwise these are 999 eachSQLMinID 500 # create a user's home directory on demand if it doesn't existCreateHome on # Update count every time user logs inSQLLog PASS updatecountSQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser # Update modified everytime user uploads or deletes a fileSQLLog STOR,DELE modifiedSQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser # User quotas# ===========QuotaEngine onQuotaDirectoryTally onQuotaDisplayUnits MbQuotaShowQuotas on SQLNamedQuery get-f qcow2 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:/homeget-quota-limitQuotaTallyTable sql:/hddget-quota-tally/test.img 10G<update-quota-tally/syntaxhighlight>insert-quota-tally RootLogin offRequireValidShell off
Damit haben eine 10 GB große Festplatte und erstellen nun den vServer mit einem CPU<IfModule mod_tls.c>TLSEngine onTLSLog /var/log/proftpd/tls.logTLSProtocol SSLv3 TLSv1TLSOptions NoCertRequestTLSRSACertificateFile /etc/mysql/server-Kern und 1 GB RAM:cert.pemTLSRSACertificateKeyFile /etc/mysql/server-key.pemTLSCertificateChainFile /etc/mysql/cacert.pemTLSVerifyClient offTLSRequired on</IfModule>
<syntaxhighlight lang="bash">User ftpuservirsh create /home/xml/test.xmlGroup ftpgroup
</syntaxhighlight>
Nun sollte die VM ein virtuelles Interface Unter ''vnet0SQLConnectInfo'' bei der Bridge muss ''br0<password>'' bekommen haben, durch das überprüfen wir:Root-Passwort von MySQL ersetzt werden.
<syntaxhighlight lang="bash">brctl show</syntaxhighlight>Wichtig: Sollte irgendwo anders die Zeile ''QuotaEngine off'' auftauchen, muss diese unbedingt auskommentiert werden.
Es sollte nun auch ein VNCNun muss der FTP-Server auf Port 5900 gestartet wurden sein, dies können wir auch prüfennoch neugestartet werden:
<syntaxhighlight lang="bash">
netstat -nap | egrep '(kvm|qemu)'service proftpd restart
</syntaxhighlight>
Als nächstes verbinden Zuletzt legen wir uns mit einem VNC-Client auf den Host-Server auf Port 5900, hier hört der VNC-Server der VM. Das Passwort lautet ''test1234''. == Freie IP-Adressen ==Damit sourceDESK weiß, welche IP-Adressen das Verzeichnis für die vServer noch zur Verfügung stehen, muss die Datei ''/root/freeFTP-v4.txt'' und/oder ''/root/free-v6.txt'' angelegt werden. In diese Dateien wird pro Zeile eine freie IPv4-/IPv6-Adresse eingetragen. Beispielan:
<syntaxhighlight lang="bash">
1.2.3.4mkdir -p /var/ftp5.6.7.89.0.1.2chown -R ftpuser:ftpgroup /var/ftp
</syntaxhighlight>
== Hinzufügen ==Beim Hinzufügen eines Produktes in sourceDESK muss nur der Hostname (eventuell mit geändertem SSH-Port, zum Beispiel vm01.sourceway.de:923) und das Root-Passwort angegeben werdenDamit ist die Konfiguration abgeschlossen.
Sie können sodann die Einstellungen == Hinzufügen ==Beim Hinzufügen eines Produktes in sourceDESK muss der Hostname, das Root-Passwort für den vServer vornehmen, hier können Sie die Anzahl der CPUMySQL-KerneServer, den Arbeitsspeicher das Root-Passwort des Servers und die Festplatte einstellender SSH-Port angegeben werden. Natürlich muss auch eine Quota gesetzt werden.