Inhaltsverzeichnis
TeamSpeak
TeamSpeak ist eine proprietäre Sprachkonferenz-Software, die es ermöglicht, über das Internet oder ein LAN miteinander zu kommunizieren.
Mumble → Open Source & freie TeamSpeak-Alternative mit Verschlüsselung
Aktuell ist TeamSpeak 3 (Version 3.0.19.4)
-
- Client-Software gibt es für Linux
- Server-Software (Die Versionierung der Server-Software ist unabhängig von der Versionierung der Client-Software!) gibt es für Linux und FreeBSD
TeamSpeak 3 - Client
hier die Anleitung für Ubuntu, sie sollte aber für alle Linux-Distributionen so funktionieren, da hier nichts Distributionsabhängiges gemacht wird:
Installation:
> bash TeamSpeak3-Client-linux_amd64-3.0.19.4.run
das hier ist die Startdatei:
> ls -lha TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh -rwx------ 1 fritz fritz 283 Jul 14 12:19 TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh
TeamSpeak 3 - Musik-Bot
TeamSpeak 3 - Server (Raspberry Pi 4 + Linux Ubuntu 20.04 LTS)
Download der Server-Version für Linux:
root@linux:~# useradd -m -s /bin/bash ts3 root@linux:~# passwd ts3
Datei runterladen: https://files.teamspeak-services.com/releases/server/
V="$(links -dump https://files.teamspeak-services.com/releases/server/ | egrep '[^0-9]3[.]' | awk '{a=$1;gsub("[.]","");print $1,a}' | sort -nr | head -n1 | awk '{print $2}')";wget https://files.teamspeak-services.com/releases/server/${V}/teamspeak3-server_freebsd_amd64-${V}.tar.bz2
ts3@ubuntu:~$ tar xjf teamspeak3-server_linux_amd64-3.13.3.tar.bz2 ts3@ubuntu:~$ cd teamspeak3-server_linux_amd64/ ts3@ubuntu:~$ less doc/server_quickstart.md ts3@ubuntu:~$ touch .ts3server_license_accepted ts3@ubuntu:~$ ./ts3server_startscript.sh start Starting the TeamSpeak 3 server ./ts3server_startscript.sh: 44: ./ts3server: Exec format error TeamSpeak 3 server could not start
Warum? ⇒ Teamspeak3-Server installieren auf ein Raspberry Pi 4
Antwort: Der "TeamSpeak 3 - Server" wurde für "Intel-CPUs" gebaut und läuft deshalb nicht auf "ARM-CPUs".
TeamSpeak 3 - Server (FreeBSD 13.0 RC1)
[root@freebsd ~]# pw useradd -m -M 0700 -s bash -n ts3 [root@freebsd ~]# passwd ts3
ggf. ist das folgende noch zu tun...
[root@freebsd ~]# echo "tmpfs /dev/shm tmpfs rw,mode=1777 0 0" >> /etc/fstab [root@freebsd ~]# mount /dev/shm
Datei runterladen: https://files.teamspeak-services.com/releases/server/
V="$(links -dump https://files.teamspeak-services.com/releases/server/ | egrep '[^0-9]3[.]' | awk '{a=$1;gsub("[.]","");print $1,a}' | sort -nr | head -n1 | awk '{print $2}')";wget https://files.teamspeak-services.com/releases/server/${V}/teamspeak3-server_freebsd_amd64-${V}.tar.bz2
[ts3@freebsd ~]$ tar xjf teamspeak3-server_freebsd_amd64-3.13.3.tar.bz2 [ts3@freebsd ~]$ cd teamspeak3-server_freebsd_amd64 [ts3@freebsd ~]$ less doc/server_quickstart.md [ts3@freebsd ~]$ touch .ts3server_license_accepted [ts3@freebsd ~]$ vi ts3server_startscript.sh ... COMMANDLINE_PARAMETERS="createinifile=1" ... [ts3@freebsd ~]$ ./ts3server_startscript.sh start [ts3@freebsd ~]$ vi ts3server_startscript.sh ... COMMANDLINE_PARAMETERS="inifile=ts3server.ini" ... [ts3@freebsd ~]$ vi ts3server.ini [ts3@freebsd ~]$ ./ts3server_startscript.sh restart
In der FreeBSD-Version gibt es einen Fehler (Bug).
Der bewirkt, dass man hier den default_voice_port nicht ändern kann, egal was man im inifile einträgt, er startet immer mit dem default_voice_port=9987.
Alle anderen Ports kann man ändern, nur diesen einen nicht.
Allerdinsgs habe ich es bis jetzt noch nicht geschafft, den TeamSpeak 3 - Server ohne root-Rechte zu starten.
Bei mir startet er nur so:
[root@freebsd ~]$ cd /home/ts3/teamspeak3-server_freebsd_amd64/ [root@freebsd ~]$ ./ts3server_startscript.sh restart
Dieses Sicherheitsproblem habe ich dadurch gelöst, dass ich meinen TeamSpeak-Server jetzt in einer Bhyve-VM mit Linux laufen lasse. Und damit meine Fritz!Box nicht immerzu mit der IP des Host- und der IP des Gast-Systems durcheinander kommt und dadurch der Zugriff auf den TeamSpeak-Server gestört ist, muß das Netzwerk für die Bhyve-VM als NIC Passthrough (eine Netzwerkkarte alleine nur für die VM) konfiguriert werden. Dann gibt es keine Sicherheitslücke und keine Probleme mehr.
TeamSpeak 3 - Server (FreeBSD 12.0)
ACHTUNG! Wenn eine neue Version veröffentlicht wurde, dann funktionieren die alten nicht mehr. Es gibt dann die Fehlermeldung "Failed loading default license file!".
Um den Fehler zu beseitigen, muss man ein Upgrade durchführen.
Um den TeamSpeak-Server mit der Version 3.12.1 starten zu können, benötigt der Kernel von FreeBSD 12.1 diese beiden Optionen:
options INET6 # IPv6 communications protocols options COMPAT_FREEBSD11 # Compatible with FreeBSD11
- Sprache (UDP): 9987
- Dateitransfer (TCP): 30033
failed to register local accounting service: File exists
Leider kann man den "TeamSpeak 3 - Server" auf FreeBSD nicht in einer Jail und nicht mit einem unprivilegierten Benutzer starten. Dann erscheint diese Fehlermeldung im Log.
2021-01-05 20:52:36.738472|ERROR |Accounting | |failed to register local accounting service: File exists
Ruft man dagegen das Startkommando als "root" auf, dann startet der TS3-Server.
Es hat irgendwie mit den SHM-Rechten zu tun… Mit diesem Kommando kann man sich die "POSIX shared memory segments" anzeigen lassen
> posixshmcontrol ls
meine Lösung: Ich habe mir in einer Bhyve-VM ein Linux installiert und betreibe da drin einen Linux-TS3-Server.
Download: TeamSpeak 3 - Server (FreeBSD 12.0)
diese Version ist oft aktueller als die Version aus den Ports:
Beispiel Version 3.5 (es funktionierte nicht in einer Jail):
> pkg install security/ca_root_nss
> tar xjf teamspeak3-server_freebsd_amd64-3.5.1.tar.bz2 -C /usr/local/
> cd /usr/local/teamspeak3-server_freebsd_amd64/
> less doc/server_quickstart.txt
> touch .ts3server_license_accepted
> ./ts3server_startscript.sh start
...
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
Server Query Admin Account created
loginname= "serveradmin", password= "5dES0fRS"
------------------------------------------------------------------
------------------------------------------------------------------
I M P O R T A N T
------------------------------------------------------------------
ServerAdmin privilege key created, please use it to gain
serveradmin rights for your virtualserver. please
also check the doc/privilegekey_guide.txt for details.
token=EroSShyR4R00o961S+ucdknq0NJ6yiJ68hsWUcSc
------------------------------------------------------------------
> netstat -anp tcp
> netstat -anNp tcp
> ls -lha logs/
> less logs/ts3server_*.log
Backup: TeamSpeak 3 - Server (FreeBSD 12.0)
https://www.teamspeak-info.de/ts_server_backup_erstellen.htm
Die folgenden Dateien bzw. Verzeichnisse gehören in ein Backup rein:
ts3server.sqlitedb- enthält u.a. Channels, Einstellungen, User, Rechte, alle virtuellen Serverts3server.ini(falls vorhanden)query_ip_whitelist.txtquery_ip_blacklist.txtfiles/
zum Beispiel könnte man das so machen:
> tar czf /home/TS3-Server_Backup.tgz /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb /usr/local/teamspeak3-server_freebsd_amd64/ts3server.ini /usr/local/teamspeak3-server_freebsd_amd64/query_ip_whitelist.txt /usr/local/teamspeak3-server_freebsd_amd64/query_ip_blacklist.txt /usr/local/teamspeak3-server_freebsd_amd64/files/ /usr/local/teamspeak3-server_freebsd_amd64/.ts3server_license_accepted
- /root/bin/TS3-Server_Backup.sh
#!/bin/sh # # http://wir1234.de/wiki/doku.php?id=teamspeak#downloadteamspeak_3_-_server_freebsd_120 # SiK="/home" if [ -e ${SiK}/TS3-Server_Backup.tgz ] ; then if [ -e ${SiK}/TS3-Server_Backup_01.tgz ] ; then if [ -e ${SiK}/TS3-Server_Backup_02.tgz ] ; then if [ -e ${SiK}/TS3-Server_Backup_03.tgz ] ; then rm -f ${SiK}/TS3-Server_Backup_03.tgz fi mv ${SiK}/TS3-Server_Backup_02.tgz ${SiK}/TS3-Server_Backup_03.tgz fi mv ${SiK}/TS3-Server_Backup_01.tgz ${SiK}/TS3-Server_Backup_02.tgz fi mv ${SiK}/TS3-Server_Backup.tgz ${SiK}/TS3-Server_Backup_01.tgz fi tar czf ${SiK}/TS3-Server_Backup.tgz /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb /usr/local/teamspeak3-server_freebsd_amd64/ts3server.ini /usr/local/teamspeak3-server_freebsd_amd64/query_ip_whitelist.txt /usr/local/teamspeak3-server_freebsd_amd64/query_ip_blacklist.txt /usr/local/teamspeak3-server_freebsd_amd64/files/
Fehlermeldung: Failed loading default license file!
Bei dieser Fehlermeldung hat es mir geholfen, das ich mir die neueste Version runtergeladen und installiert habe (Update von Version 3.5.1 auf 3.9.1).
Und dann die folgenden Dateien und Verzeichnisse aus dem alten einfach rüber kopiert (Backup + .ts3server_license_accepted):
ts3server.sqlitedb- enthält u.a. Channels, Einstellungen, User, Rechte, alle virtuellen Serverts3server.ini(falls vorhanden)query_ip_whitelist.txtquery_ip_blacklist.txtfiles/.ts3server_license_accepted
WARNING ! For security reasons we advise: DO NOT RUN THE SERVER AS ROOT
Update des TeamSpeak-Servers
neueste FreeBSD-Version (64-Bit) holen: https://www.teamspeak.com/de/downloads/#server
Daten sichern:
tar czf TS3-Server_Backup_-_SiK_der_Daten.tgz /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb /usr/local/teamspeak3-server_freebsd_amd64/ts3server.ini /usr/local/teamspeak3-server_freebsd_amd64/query_ip_whitelist.txt /usr/local/teamspeak3-server_freebsd_amd64/query_ip_blacklist.txt /usr/local/teamspeak3-server_freebsd_amd64/files/ /usr/local/teamspeak3-server_freebsd_amd64/.ts3server_license_accepted
alte Version bei Seite legen:
mv /usr/local/teamspeak3-server_freebsd_amd64 /usr/local/teamspeak3-server_freebsd_amd64_-_$(date +'%F_%H-%M-%S')
neueste Version entpacken:
tar xjf teamspeak3-server_freebsd_amd64-3.12.1.tar.bz2 -C /usr/local/
gesicherte Daten zurückspielen:
tar xzf TS3-Server_Backup_-_SiK_der_Daten.tgz -C /
und zum Schuß ggf. noch die Rechte anpassen:
chown -R teamspeak:teamspeak /usr/local/teamspeak3-server_freebsd_amd64
Admin-Rechte in der Datenbank vergeben
Quelle: Rechte in der Datenbank mit Sqlite Manager ändern
Wenn man Zugang zu den SQLite-Dateien von TeamSpeak hat, dann kann man sich Admin-Rechte verschaffen, wie im folgenden beschrieben. In diesem Beispiel wurde es auf einem FreeBSD 12 durchgeführt.
1. vom richtigen Server die ID ermitteln:
> echo -e ".header on \n SELECT * FROM servers;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb server_id|server_port|server_autostart|server_machine_id|server_month_upload|server_month_download|server_total_upload|server_total_download 1|9987|1||0|120429|3543318|6131488 server_id=1
2. vom Admin die ID ermitteln:
> echo -e ".header on \n SELECT * FROM groups_server;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb group_id|server_id|name|type|org_group_id 1|0|Guest Server Query|2| 2|0|Admin Server Query|2| 3|0|Server Admin|0| 4|0|Normal|0| 5|0|Guest|0| 6|1|Server Admin|1|3 group_id=6
3. vom User mit der richtigen client_unique_id bzw. dem richtigen Namen ("Fritz"):
> echo -e ".header on \n SELECT * FROM clients;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb client_id|server_id|client_unique_id|client_nickname|client_login_name|client_login_password|client_lastconnected|client_totalconnections|client_month_upload|client_month_download|client_total_upload|client_total_download|client_lastip|org_client_id 1|0|serveradmin|serveradmin|serveradmin|V4ZvXlLwn3nJa2qxhjs4R77G4rs=|0|0|0|0|0|0|| 2|1|eu7t26sa4sfADoiKris1u9DLI0A=|Otto|||1546627755|1|0|0|0|0|192.168.2.111| 3|1|ServerQuery|ServerQuery Guest|||1546627755|0|0|0|0|0|| 4|1|zs04xrL8e853l0tk5o6nklWsUPg=|Fritz|||1569873812|318|0|40619|2761850|818703|192.168.2.169| client_id=4
4. Zwischenstand, jetzt sollten wir folgende Daten haben:
group_id=6 server_id=1 client_id=4
5. einen Admin-Datensatz wie folgt anlegen:
group_id = 6 (group_id) server_id = 1 (server_id) id1 = 4 (client_id) id2 = 0 > echo "INSERT INTO group_server_to_client (group_id,server_id,id1,id2) VALUES(6,1,4,0);" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb > echo -e ".header on \n SELECT * FROM group_server_to_client WHERE group_id=6 AND server_id=1 AND id1=4 ORDER BY group_id;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb group_id|server_id|id1|id2 6|1|4|0
Jetzt hat "Fritz" Admin-Rechte.
Admin Server Query - Rechte
Wenn man über den TS3-Client Berechtigungsschlüssel erstellt, dann haben diese nur max. das Recht "Server Admin" (6), um sich aber Instanz-Rechte wieder zurück holen zu können, benötigt man Berechtigungsschlüssel mit dem Recht "Admin Server Query" (2).
echo -e ".header on \n SELECT * FROM groups_server/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb group_id|server_id|name|type|org_group_id 1|0|Guest Server Query|2| 2|0|Admin Server Query|2| 3|0|Server Admin|0| 4|0|Normal|0| 5|0|Guest|0| 6|1|Server Admin|1|3 8|1|Neuling|1|5
Und so kann man erstellte Berechtigungsschlüssel vom Recht "6" auf das Recht "2" anheben.
hier die Schlüssel mit den Standardrechten "6":
echo -e ".header on \n SELECT * FROM tokens;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb server_id|token_key|token_type|token_id1|token_id2|token_created|token_description|token_customset|token_from_client_id 1|AGRowEv4RZcs+WZb2XZG6xxiADWBXi14bmqhEhHN|0|6|0|1594161216|||4 1|BiWmEeAeYxEpYKvreWhGknxQx9OwwzvLTYvY+6hM|0|6|0|1594161226|||4 1|CWiv+NhTvfbTlfyMYRBX3RsC7s4cJLT9UdSnT1FL|0|6|0|1594161226|||4 1|DQ2Vf2yG0nRrp1RQEAkby7bz6OYJ5AFvLWCTmYhK|0|6|0|1594161227|||4 1|EXH+PWHuQmwRbCFxhLOWfD9S6ukRsVKG1ZwCifBJ|0|6|0|1594161227|||4 1|FqpJs38WTdk22gbRQgZ46olk7rGxqzqnw9Gfyh2I|0|6|0|1594161227|||4 1|Go2Wsj5KssHRWtFzgubdC7dRER0Gj5ReN7d14lXH|0|6|0|1594161229|||4
die Rechte der Schlüssel aufwerten:
echo "UPDATE tokens SET token_id1 = 2 WHERE token_id1 = 6;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb
jetzt haben die Schlüssel die erweiterten Rechten "2":
echo -e ".header on \n SELECT * FROM tokens;" | sqlite3 /usr/local/teamspeak3-server_freebsd_amd64/ts3server.sqlitedb server_id|token_key|token_type|token_id1|token_id2|token_created|token_description|token_customset|token_from_client_id 1|AGRowEv4RZcs+WZb2XZG6xxiADWBXi14bmqhEhHN|0|2|0|1594161216|||4 1|BiWmEeAeYxEpYKvreWhGknxQx9OwwzvLTYvY+6hM|0|2|0|1594161226|||4 1|CWiv+NhTvfbTlfyMYRBX3RsC7s4cJLT9UdSnT1FL|0|2|0|1594161226|||4 1|DQ2Vf2yG0nRrp1RQEAkby7bz6OYJ5AFvLWCTmYhK|0|2|0|1594161227|||4 1|EXH+PWHuQmwRbCFxhLOWfD9S6ukRsVKG1ZwCifBJ|0|2|0|1594161227|||4 1|FqpJs38WTdk22gbRQgZ46olk7rGxqzqnw9Gfyh2I|0|2|0|1594161227|||4 1|Go2Wsj5KssHRWtFzgubdC7dRER0Gj5ReN7d14lXH|0|2|0|1594161229|||4
