Änderungen

FTP-Speicher

2.151 Byte hinzugefügt, 11:37, 7. Okt. 2016
/* Konfiguration */
<syntaxhighlight lang="bash">
dpkg-reconfigure tzdata
</syntaxhighlight>
 
Wir müssen nun sicherstellen, dass der Netzwerk-Manager von Debian deaktiviert ist:
 
<syntaxhighlight lang="bash">
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
</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 nicht deaktiviert werden.
Jetzt kommt Als nächstes konfigurieren wir den MySQL-Server. Hier wird die Variable ''bind-address'' in der komplizierteste Schritt bei KVM: Die NetzwerkkonfigurationDatei ''/etc/mysql/my. Wir nutzen hierzu eine Netzwerkcnf'' 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-Brücke (Bridge)Zugriff für root nicht deaktiviert werden.
Wir erstellen die Bridge Nun müssen wir den Remote-Zugriff noch explizit erlauben, hierbei unbedingt ''br0IHR_PASSWORT'' mit folgendem Kommando von ''bridgedurch das Root-utils''Passwort für MySQL ersetzen:
<syntaxhighlight lang="bash">
brctl addbr br0mysql -uroot -p
</syntaxhighlight>
Als nächstes müssen wir einen Autostart der Bridge beim Server-Start einrichten. Wir gehen mit dieser Konfiguration davon aus, dass ''eth0'' zum Zugriff auf das Netzwerk durch den Server genutzt wird. Andernfalls muss das Interface entsprechend geändert werden. Wir müssen nun die Datei ''/etc/network/interfaces'' bearbeiten. Am Ende der Datei fügen wir folgende Konfiguration für die Bridge ein: <syntaxhighlight lang="bashmysql">auto br0iface br0 inet dhcp bridge_ports eth0 bridge_stp off bridge_fd 0GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'IHR_PASSWORT'; bridge_maxwait 0FLUSH PRIVILEGES;
</syntaxhighlight>
Diese Konfiguration geht davon ausFür erhöhte Sicherheit muss SSL aktiviert werden, dass DHCP für die IP-Adresse verwendet eine unverschlüsselte Verbindung ist. Ist dies nicht der Fall, übernehmen möglich. Dazu bearbeiten Sie bitte erneut die IP''/etc/mysql/my.cnf'' und entfernen Sie das Kommentar-Konfiguration von Zeichen # vor den Variablen ''eth0ssl-ca''. , ''eth0ssl-cert'' taucht später nicht mehr in der Konfigurationsund ''ssl-Datei aus, das komplette Netzwerk läuft über die Bridgekey''.
Wir starten den Server Legen Sie nun neu. Nach dem Neustart muss die Dateien ''ifconfig/etc/mysql/cacert.pem'' zeigen, dass die Bridge ''br0/etc/mysql/server-cert.pem'' eine IP-Adresse hat und ''eth0/etc/mysql/server-key.pem'' keine IPmit Ihrem SSL-Adresse mehr zugeordnet istZertifikat an. Damit ist die NetzwerkWichtig: Der SSL-Konfiguration abgeschlossenSchlüssel muss im RSA-Format sein. Ist er das nicht, wirft MySQL eine Fehlermeldung.Die Konvertierung geht mit OpenSSL:
<syntaxhighlight lang== Templates =="bash">Da die Betriebssystemopenssl rsa -Installation bei KVM vom Nutzer via VNC erfolgt, ist eine ISOin /etc/mysql/server-Datei notwendig, die dann beim Boot-Vorgang eingebunden wirdkey. Es kann hier also theoretisch jedes Betriebssystem verwendet werden, auch Windows. Die entsprechenden Distributionen kann man also direkt auf der jeweiligen Seite der Distribution herunterladen. Der Einfachheit halber nutzt sourceDESK nur ISOpem -Dateien aus dem Verzeichnis ''out /homeetc/iso'', welches Sie anlegen müssen. Dorthin laden Sie bitte sämtliche ISOmysql/server-Dateien, die Sie mit KVM verwenden möchtenkey.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>
 
Damit ist die Konfiguration abgeschlossen.
== 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 werden. Sie können sodann die Einstellungen 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.