Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
O
Online-Werkzeuge
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Peter Gerwinski
Online-Werkzeuge
Commits
5490e911
Commit
5490e911
authored
5 years ago
by
Peter Gerwinski
Browse files
Options
Downloads
Patches
Plain Diff
Nachhaltige Online-Werkzeuge; Dokumentation für Administratoren: Let's Encrypt (Fortsetzung)
parent
07956d09
No related branches found
No related tags found
No related merge requests found
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
online-werkzeuge-admin.pdf
+0
-0
0 additions, 0 deletions
online-werkzeuge-admin.pdf
online-werkzeuge-admin.tex
+332
-30
332 additions, 30 deletions
online-werkzeuge-admin.tex
with
332 additions
and
30 deletions
online-werkzeuge-admin.pdf
+
0
−
0
View file @
5490e911
No preview for this file type
This diff is collapsed.
Click to expand it.
online-werkzeuge-admin.tex
+
332
−
30
View file @
5490e911
...
@@ -28,6 +28,13 @@
...
@@ -28,6 +28,13 @@
\newcommand
{
\sep
}{
~
$
\cdot
$
~
}
\newcommand
{
\sep
}{
~
$
\cdot
$
~
}
\newcommand
{
\mylicense
}{
CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder höher)
}
\newcommand
{
\mylicense
}{
CC-by-sa (Version 3.0) oder GNU GPL (Version 3 oder höher)
}
\lstdefinestyle
{
terminal
}{
basicstyle=
\small\ttfamily\color
{
darkgreen
}
,
language=
{}
,
columns=fixed,
moredelim=**[is][
\color
{
darkred
}
]
{
¡
}{
¿
}
,
moredelim=**[is][
\color
{
blendedblue
}
]
{
°
}{
¿
}
,
moredelim=**[is][
\sffamily\it\lstset
{
columns=fullflexible
}
]
{
²
}{
¿
}}
\begin{document}
\begin{document}
\makebox
(0,0.005)[tl]
{
\includegraphics
[scale=0.72]
{
logo-hochschule-bochum-cvh-text-v2.pdf
}}
\hfill
\makebox
(0,0.005)[tl]
{
\includegraphics
[scale=0.72]
{
logo-hochschule-bochum-cvh-text-v2.pdf
}}
\hfill
...
@@ -104,7 +111,7 @@
...
@@ -104,7 +111,7 @@
\item
\item
Wir haben einige proprietäre Online-Kommunikationswerkzeuge ausprobiert
Wir haben einige proprietäre Online-Kommunikationswerkzeuge ausprobiert
und können das oft behauptete Plus an Funktionsumfang und Stabilität
und können das oft behauptete Plus an Funktionsumfang und Stabilität
unter gleichen Bedingungen nicht bestätigen.
\emph
{
unter gleichen Bedingungen
\/
}
nicht bestätigen.
(So darf man zum Beispiel ein Web-Interface
(So darf man zum Beispiel ein Web-Interface
nur mit einem anderen Web-Interface vergleichen,
nur mit einem anderen Web-Interface vergleichen,
nicht jedoch mit einer installierten Software.)
nicht jedoch mit einer installierten Software.)
...
@@ -165,8 +172,8 @@
...
@@ -165,8 +172,8 @@
\section
{
Let's Encrypt
}
\section
{
Let's Encrypt
}
Die diversen Online-Dienste benötigen X.509-Zertifikate.
Für sichere Verbindungen mittels TLS
%
Oft laufen die Dienste auf separaten (virtuellen) Rechnern
.
benötigen die Online-Dienste X.509-Zertifikate
.
Wir zeigen hier, wie man mit Hilfe von
\newterm
{
Let's Encrypt
}
Wir zeigen hier, wie man mit Hilfe von
\newterm
{
Let's Encrypt
}
sichere Zertifikate erhält.
sichere Zertifikate erhält.
...
@@ -181,7 +188,7 @@
...
@@ -181,7 +188,7 @@
In unserem Beispiel läuft der DNS-Server auf einem Rechner
\file
{
comm-0
}
,
In unserem Beispiel läuft der DNS-Server auf einem Rechner
\file
{
comm-0
}
,
der
\term
{
Let's Encrypt
\/
}
-Client hingegen auf einem anderen Rechner
\file
{
main-1
}
,
der
\term
{
Let's Encrypt
\/
}
-Client hingegen auf einem anderen Rechner
\file
{
main-1
}
,
auf dem
letzt
lich das Zertifikat benötigt wird.
auf dem
tatsäch
lich das Zertifikat benötigt wird.
Die Installation erfolgt mittels:
Die Installation erfolgt mittels:
\begin{lstlisting}
[style=terminal]
\begin{lstlisting}
[style=terminal]
...
@@ -225,12 +232,27 @@
...
@@ -225,12 +232,27 @@
Zum Aktualisieren des DNS
-
Records wird einmalig
\file
{
dnssec
-
keygen
}
Zum Aktualisieren des DNS
-
Records wird einmalig
\file
{
dnssec
-
keygen
}
(
Installation mittels
\lstinline
[
style
=
cmd
]
{
apt install bind
9
utils
}
)
und
(
Installation mittels
\lstinline
[
style
=
cmd
]
{
apt install bind
9
utils
}
)
und
jedesmal
\file
{
nsupdate
}
(
\lstinline
[
style
=
cmd
]
{
apt install dnsutils
}
)
benötigt.
jedesmal
\file
{
nsupdate
}
(
\lstinline
[
style
=
cmd
]
{
apt install dnsutils
}
)
benötigt.
Nach dem Erstellen des Schlüssels in
\file
{
/
etc
/
bind
}
(
Kommando s.
\,
u.
)
und der Konfiguration des Rechners
\file
{
comm
-
0
}
kann das Update erfolgen.
\goodbreak
Wir erstellen zunächst im Verzeichnis
\file
{
/
etc
/
bind
}
mit
\file
{
dnssec
-
keygen
}
einen Schlüssel:
\begin
{
lstlisting
}
[
style
=
terminal
]
root@main
-
1
:
/
etc
/
bind# ¡dnssec
-
keygen
-
a hmac
-
sha
512
-
b
512
-
n host
\
main
-
1
.
$
DOMAIN¿
\end{lstlisting}
(Auch hier muß
\lstinline
[style=cmd]
{$
DOMAIN
}
durch
die von Ihnen verwendete Internet
-
Domain ersetzt werden.
)
% Nach dem Erstellen des Schlüssels in \file{/etc/bind} (Kommando s.\,u.)
% und der Konfiguration des Rechners \file{comm-0} kann das Update erfolgen.
Für das dynamische DNS
-
Update verwenden wir das folgende Shell
-
Skript:
\begin
{
lstlisting
}
[
style
=
terminal
]
\begin
{
lstlisting
}
[
style
=
terminal
]
root@main
-
1
:~# ¡cat
/
usr
/
local
/
sbin
/
letsencrypt
_
dns
_
update¿
root@main
-
1
:~# ¡cat
/
usr
/
local
/
sbin
/
letsencrypt
_
dns
_
update¿
#
!/
bin
/
bash
#
!/
bin
/
bash
# Generate key using: dnssec
-
keygen
-
a hmac
-
sha
512
-
b
512
-
n host ¡main
-
1
.
$
DOMAIN¿
# Generate key using:
# dnssec
-
keygen
-
a hmac
-
sha
512
-
b
512
-
n host ¡main
-
1
.
$
DOMAIN¿
if [ -z "
$
CERTBOT
_
DOMAIN"
]
||
[
-
z "
$
CERTBOT
_
VALIDATION" ]
if [ -z "
$
CERTBOT
_
DOMAIN"
]
||
[
-
z "
$
CERTBOT
_
VALIDATION" ]
then
then
...
@@ -240,7 +262,8 @@
...
@@ -240,7 +262,8 @@
HOST="
_
acme-challenge"
HOST="
_
acme-challenge"
/usr/bin/nsupdate -k /etc/bind/keys/Kmain-1.¡
$
DOMAIN¿.
+
165
+
52870
.private << EOM
/usr/bin/nsupdate -k
\
/etc/bind/keys/Kmain-1.¡
$
DOMAIN¿.
+
165
+
52870
.private << EOM
server comm
-
0
.¡
$
DOMAIN¿
server comm
-
0
.¡
$
DOMAIN¿
zone
${
HOST
}
.
${
CERTBOT
_
DOMAIN
}
zone
${
HOST
}
.
${
CERTBOT
_
DOMAIN
}
update delete
${
HOST
}
.
${
CERTBOT
_
DOMAIN
}
TXT
update delete
${
HOST
}
.
${
CERTBOT
_
DOMAIN
}
TXT
...
@@ -249,14 +272,10 @@
...
@@ -249,14 +272,10 @@
EOM
EOM
echo ""
echo ""
\end
{
lstlisting
}
\end
{
lstlisting
}
Der auf
\file
{
main
-
1
}
erzeugte Schlüssel
\iffalse
muß natürlich von
\file
{
comm
-
0
}
auch akzeptiert werden.
Hierzu tragen wir in die Datei
\file
{
/
etc
/
bind
/
named.conf.local
}
folgendes ein:
## comm
-
0
\begin
{
lstlisting
}
[
style
=
terminal
]
Der auf main
-
1
erzeugte Key muss natürlich von comm
-
0
auch akzeptiert werden:
root@comm
-
0
:~# grep
-
A
6
-
F mumble.¡
$
DOMAIN¿ /etc/bind/named.conf.local; grep '
^
include .*main-1' /etc/bind/named.conf.local
zone "
_
acme
-
challenge.mumble.¡
$
DOMAIN¿"
{
zone "
_
acme
-
challenge.mumble.¡
$
DOMAIN¿"
{
type master;
type master;
file "/etc/bind/dynamic/db.
_
acme-challenge.mumble.¡
$
DOMAIN¿";
file "/etc/bind/dynamic/db.
_
acme-challenge.mumble.¡
$
DOMAIN¿";
...
@@ -266,6 +285,7 @@ zone "_acme-challenge.mumble.¡$DOMAIN¿" {
...
@@ -266,6 +285,7 @@ zone "_acme-challenge.mumble.¡$DOMAIN¿" {
allow
-
update
{
key main
-
1
.¡
$
DOMAIN¿;
}
;
allow
-
update
{
key main
-
1
.¡
$
DOMAIN¿;
}
;
}
;
}
;
include "/etc/bind/keys/key.main-1.¡
$
DOMAIN¿";
include "/etc/bind/keys/key.main-1.¡
$
DOMAIN¿";
root@comm
-
0
:~# cat
/
etc
/
bind
/
keys
/
key.main
-
1
.¡
$
DOMAIN¿
root@comm
-
0
:~# cat
/
etc
/
bind
/
keys
/
key.main
-
1
.¡
$
DOMAIN¿
...
@@ -273,19 +293,22 @@ key main-1.¡$DOMAIN¿. {
...
@@ -273,19 +293,22 @@ key main-1.¡$DOMAIN¿. {
algorithm HMAC
-
SHA
512
;
algorithm HMAC
-
SHA
512
;
secret "
$
KEY
_
AUS
_
/etc/bind/keys/Kmain-1.¡
$
DOMAIN¿.
+
165
+
52870
.private
_
AUF
_
MAIN
-
1
";
secret "
$
KEY
_
AUS
_
/etc/bind/keys/Kmain-1.¡
$
DOMAIN¿.
+
165
+
52870
.private
_
AUF
_
MAIN
-
1
";
}
;
}
;
\end
{
lstlisting
}
\iffalse
Damit die eigentliche Challenge direkt beim eigenem DNS
-
Server abgefragt
Damit die eigentliche Challenge direkt beim eigenem DNS
-
Server abgefragt
wird
(
um Verzögerungen durch den nötigen AXFR
-
Transfer zu umgehen, wird
wird
(
um Verzögerungen durch den nötigen AXFR
-
Transfer zu umgehen, wird
der entsprechende DNS
-
Eintrag auf den sonst für cvh
-
server.de benutzten
der entsprechende DNS
-
Eintrag auf den sonst für cvh
-
server.de benutzten
Servern auf unseren eigenen Server delegiert
)
, außerdem muss
Servern auf unseren eigenen Server delegiert
)
, außerdem muss
mumble.
¡
$
DOMAIN¿
natürlich einen CNAME oder A
-
Eintrag erhalten:
mumble.
cvh
-
server.de
natürlich einen CNAME oder A
-
Eintrag erhalten:
root@comm
-
0
:~# grep
-
F mumble
/
var
/
lib
/
bind
/
db.
¡
$
DOMAIN¿
root@comm
-
0
:~# grep
-
F mumble
/
var
/
lib
/
bind
/
db.
cvh
-
server.de
mumble IN CNAME main
-
0
mumble IN CNAME main
-
0
_
acme
-
challenge.mumble IN NS dns
-
0
_
acme
-
challenge.mumble IN NS dns
-
0
Aus Sicherheitsgründen wollen wir Port
53
aber von dort nicht allgemein
Aus Sicherheitsgründen wollen wir Port
53
aber von dort nicht allgemein
beantworten, sondern uns eigentlich auf die
\term
{
Let's E
ncrypt
\/
}
-Server
beantworten, sondern uns eigentlich auf die
Letse
ncrypt
-
Server
beschränken. Leider scheinen deren Anfragen nun von sehr vielen
beschränken. Leider scheinen deren Anfragen nun von sehr vielen
verschiedenen Amazon
-
Servern zu kommen
(
siehe root@root
-
1
:~# grep
-
F
verschiedenen Amazon
-
Servern zu kommen
(
siehe root@root
-
1
:~# grep
-
F
letsencrypt
/
etc
/
iptables.rules, welches aktuell unvollständig ist
)
,
letsencrypt
/
etc
/
iptables.rules, welches aktuell unvollständig ist
)
,
...
@@ -296,6 +319,285 @@ außen erlaubt.
...
@@ -296,6 +319,285 @@ außen erlaubt.
TODO: Schöner lösen
!
TODO: Schöner lösen
!
# Mumble
Läuft auf main
-
1
.cvh
-
server.de.
apt install mumble
-
server
Standardmäßig besetzt Mumble den Port
64738
. Da ich zwei unabhängige
Server haben wollte, läuft auf der VM eine zweite Instanz auf Port
64739
. Die Hardware auf der die VM läuft, hat zwei offizielle
IP
-
Adressen, dort wird das jeweils wieder nach außen unter Port
64738
angeboten.
## root
-
0
:
root@jitsi:~# grep mumble
/
etc
/
iptables.rules
-
A PREROUTING
-
d
88
.
99
.
194
.
201
/
32
-
p tcp
-
m multiport
--
dports
1191
,
1935
,
8888
,
64738
-
m comment
--
comment main
-
1
,..,fex,mumble
-
j DNAT
--
to
-
destination
192
.
168
.
137
.
11
-
A PREROUTING
-
s
130
.
180
.
23
.
228
/
30
-
d
88
.
99
.
194
.
201
/
32
-
p udp
-
m multiport
--
dports
5060
,
64738
-
m comment
--
comment sip,mumble
-
j DNAT
--
to
-
destination
192
.
168
.
137
.
11
-
A PREROUTING
-
d
88
.
99
.
194
.
245
/
32
-
p tcp
-
m tcp
--
dport
64738
-
m comment
--
comment second
-
0
-
mumble
-
j DNAT
--
to
-
destination
192
.
168
.
137
.
11
:
64739
-
A PREROUTING
-
d
88
.
99
.
194
.
245
/
32
-
p udp
-
m udp
--
dport
64738
-
m comment
--
comment second
-
0
-
mumble
-
j DNAT
--
to
-
destination
192
.
168
.
137
.
11
:
64739
## Konfiguration auf main
-
0
Konfiguration der vorkonfigurierten Instanz geschieht durch
/
etc
/
mumble
-
server.ini.
Die Zweit
-
Instanz wird durch
/
etc
/
mumble
-
server
2
.ini konfiguriert. Ich habe zum Starten das Init
-
Skript kopiert und angepasst:
root@main
-
1
:~# diff
--
unified
/
etc
/
init.d
/
mumble
-
server
{
,
2
}
---
/
etc
/
init.d
/
mumble
-
server
2019
-
02
-
28
17
:
36
:
21
.
000000000
+
0100
+++
/
etc
/
init.d
/
mumble
-
server
2
2020
-
03
-
17
13
:
59
:
37
.
916856121
+
0100
@@
-
1
,
7
+
1
,
7
@@
#
!
/
bin
/
sh
#
### BEGIN INIT INFO
-
# Provides: mumble
-
server
+
# Provides: mumble
-
server
2
# Required
-
Start:
$
network
$
local
_
fs
$
remote
_
fs
# Required-Stop:
$
network
$
local
_
fs
$
remote
_
fs
# Should
-
Start:
$
mysql dbus
@@ -13,7 +13,7 @@
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
-NAME=mumble-server
+NAME=mumble-server2
DESC="Mumble VoIP Server"
PIDDIR=/run/
$
NAME
PIDFILE
=
$
PIDDIR/
$
NAME.pid
@@
-
23
,
7
+
23
,
7
@@
test
-
x
$
DAEMON || exit 0
-INIFILE=/etc/mumble-server.ini
+INIFILE=/etc/mumble-server2.ini
DAEMON
_
OPTS="-ini
$
INIFILE"
MURMUR
_
USE
_
CAPABILITIES
=
0
MURMUR
_
LIMIT
_
NOFILE
=
0
Wichtig: Es reicht nicht, die Angabe des PIDFILE dort anzupassen. Dies
muss auch in der ini
-
Datei passieren, wichtig ist es auch eine getrennte
Datenbank zu benutzen:
---
/
etc
/
mumble
-
server.ini
2020
-
03
-
15
23
:
45
:
20
.
694309575
+
0100
+++
/
etc
/
mumble
-
server
2
.ini
2020
-
03
-
15
23
:
44
:
17
.
324835415
+
0100
@@
-
13
,
7
+
13
,
7
@@
; Path to database. If blank, will search for
; murmur.sqlite in default locations or create it if not found.
-
database
=/
var
/
lib
/
mumble
-
server
/
mumble
-
server.sqlite
+
database
=/
var
/
lib
/
mumble
-
server
/
mumble
-
server
2
.sqlite
; Murmur defaults to using SQLite with its default rollback journal.
; In some situations, using SQLite's write
-
ahead log
(
WAL
)
can be
@@
-
102
,
13
+
102
,
13
@@
; logs to the file 'murmur.log'. If you leave this field blank
; on Unix
-
like systems, Murmur will force itself into foreground
; mode which logs to the console.
-
logfile
=/
var
/
log
/
mumble
-
server
/
mumble
-
server.log
+
logfile
=/
var
/
log
/
mumble
-
server
/
mumble
-
server
2
.log
; If set, Murmur will write its process ID to this file
; when running in daemon mode
(
when the
-
fg flag is not
; specified on the command line
)
. Only available on
; Unix
-
like systems.
-
pidfile
=/
run
/
mumble
-
server
/
mumble
-
server.pid
+
pidfile
=/
run
/
mumble
-
server
2
/
mumble
-
server
2
.pid
; The below will be used as defaults for new configured servers.
; If you're just running one server
(
the default
)
, it's easier to
@@
-
120
,
7
+
120
,
7
@@
welcometext
=
"<br
/
>Welcome to this server running <b>Murmur<
/
b>.<br
/
>Enjoy your stay
!
<br
/
>"
; Port to bind TCP and UDP sockets to.
-
port
=
64738
+
port
=
64739
## Letsencrypt
Standardmäßig läuft Mumble mit einem selbst
-
signiertem Zertifikat, was
zu Warnmeldungen beim ersten Verbinden führt und dem damit verbundenen
Sicherheitsverlust. Die Erlangung eines entsprechenden Zertifikats wurde
bereits oben beschrieben. Um das Zertifikat und den Schlüssel für Mumble
zu nutzen, wird es mit dem folgenden Skript installiert:
root@main
-
1
:~# cat
/
usr
/
local
/
sbin
/
letsencrypt
-
install
-
new
-
keys
#
!/
bin
/
sh
install
-
m
644
-
o root
-
g mumble
-
server
/
etc
/
letsencrypt
/
live
/
mumble.cvh
-
server.de
/
fullchain.pem
/
var
/
lib
/
mumble
-
server
/
cert.pem
install
-
m
640
-
o root
-
g mumble
-
server
/
etc
/
letsencrypt
/
live
/
mumble.cvh
-
server.de
/
privkey.pem
/
var
/
lib
/
mumble
-
server
/
privkey.pem
systemctl force
-
reload mumble
-
server
## Benutzerverwaltung
Zu Beginn existiert in Mumble lediglich der Benutzer SuperUser. Neue
Benutzer
*
innen können sich direkt mit dem Mumble
-
Server verbinden und
dann mittels des Menüpunktes Self
-
>Register ihr beim Starten des
Mumble
-
Clients erzeugtes
(
oder von einem anderen Rechner importiertes
)
Zertifikat mit dem aktuell verwendeten Benutzernamen verknüpfen.
Mit dem Mumble
-
Client kann der SuperUser dann genutzt werden, um die
entsprechenden Personen in eine neu erstellte privilegierte Gruppe
"lehrende" aufzunemen und diesen Rechte zu geben, die es z.B.
ermöglichen, störende Teilnehmer
*
innen eines Gesprächs ggf.
stummzuschalten oder auszuschließen.
# OpenMeetings
Da die Installationsanleitungen für OpenMeetings von der Installation
auf einem Ubuntu
-
System ausgehen und andere Softwarepakete
(
insb. ros
)
gezeigt haben, dass für Ubuntu vorgesehene Software u.U. nur
problematisch auf einem Debian GNU
/
Linux zum Laufen zu bringen ist,
wurde hierfür eine VM auf Ubuntu
-
Basis installiert:
root@root
-
1
:~# xen
-
create
-
image
--
size
=
15
Gb
--
swap
=
4096
Mb
--
memory
=
4096
Mb
--
maxmem
=
4096
Mb
--
dist
=
bionic
--
ip
=
192
.
168
.
137
.
90
--
no
-
pygrub
--
hostname
=
ubuntu
-
0
.cvh
-
server.de
--
mirror
=
http:
//
mirror.hetzner.de
/
ubuntu
/
packages
Bei der Anleitung wurde im Wesentlichen
https:
//
cwiki.apache.org
/
confluence
/
display
/
OPENMEETINGS
/
Tutorials
+
for
+
installing
+
OpenMeetings
+
and
+
Tools?preview
=/
27838216
/
140774282
/
Installation
%20OpenMeetings%205.0.0-M3%20on%20Ubuntu%2018.04%20LTS.pdf
gefolgt, allerdings wurde ffmpeg nicht selbst kompiliert, sondern aus
den Paketquellen installiert.
## Kurento Media Server
Der Kurento
-
Media
-
Server ist für die Verarbeitung von Medienströmen
(
Audio
-
, Video
-
und Screensharing
-
Streams
)
notwendig und wird von
OpenMeetings verwendet. Damit Medienströme weitergeleitet werden können,
obwohl sich sowohl OpenMeetings als auch i.d.R. die Teilnehmenden hinter
einem NAT befinden, wird dieser so konfiguriert, dass er Zugriff auf
einen TURN
-
Server besitzt.
root@ubuntu
-
0
:~# grep
^
turnURL
/
etc
/
kurento
/
modules
/
kurento
/
WebRtcEndpoint.conf.ini
turnURL
=
kurento:
$
TURN
_
PASSWORT@88.99.194.201:3478
### Coturn
Dieser TURN-Server wird außerhalb einer VM direkt auf dom0 (siehe
https://en.wikipedia.org/wiki/Xen) mittels 'apt install coturn'
installiert, die verwendete Konfiguration lautet:
root@root-1:~# cat /etc/turnserver.conf
listening-port=3478
tls-listening-port=5349
fingerprint
lt-cred-mech
user=kurento:
$
TURN
_
PASSWORT
realm
=
root
-
0
.cvh
-
server.de
total
-
quota
=
100
stale
-
nonce
cert
=/
etc
/
ssl
/
le
/
fullchain.pem
pkey
=/
etc
/
ssl
/
le
/
privkey.pem
cipher
-
list
=
"ECDH
+
AESGCM:DH
+
AESGCM:ECDH
+
AES
256
:DH
+
AES
256
:ECDH
+
AES
128
:DH
+
AES:ECDH
+
3
DES:DH
+
3
DES:RSA
+
AES:RSA
+
3
DES:
!
ADH:
!
AECDH:
!
MD
5
"
no
-
loopback
-
peers
no
-
multicast
-
peers
verbose
## Raumkonfiguration
Räume und Benutzer wurden über die Weboberfläche angelegt, da keine
einfache Möglichkeit gefunden wurde, die Lehrenden jeweils automatisch
zu Moderatoren zu machen, wurden diese jeweils über ein Shellskript zu
Moderatoren jeden Raumes ernannt. Nach Anwendung ist einmalig
root@ubuntu
-
0
:~#
/
etc
/
init.d
/
tomcat
3
restart
auszuführen.
root@ubuntu
-
0
:~# cat
/
usr
/
local
/
sbin
/
give
_
rights
_
to
_
all
_
lecture
_
rooms
#
!/
bin
/
sh
(
for user in
2
5
6
7
8
12
30
31
32
33
34
35
; do
for room in
$
(seq 21 32); do
echo "insert into room
_
moderator (roomId, user
_
id) values (
$
room,
$
user);"
done
done) | mysql --database=open503 -B
# NoVNC
Installation mittels 'apt install novnc'.
## systemd
Um mehrere Räume bereitstellen zu können, wird ein entsprechendes Skript
für systemd geschrieben. Dies lässt NoVNC dauerhaft laufen, alternativ
wäre auch eine Aktivierung beim Kontaktaufbau zum entsprechenden
TCP-Socket denkbar.
root@main-0:~# cat /etc/systemd/system/novnc@.service
[Unit]
Description = start noVNC service
%i
After=syslog.target network.target
[Service]
Type=simple
User=novnc
ExecStart = /usr/local/sbin/hsbo
_
novnc
%i
[Install]
WantedBy=multi-user.target
root@main-0:~# cat /usr/local/sbin/hsbo
_
novnc
#!/bin/bash
i=
$
1
; shift
exec
/
usr
/
share
/
novnc
/
utils
/
launch.sh
--
listen
$
((6080 +
$
i
))
--
vnc localhost:
$
((5900 +
$
i
))
$
*
Wir wollen 13 Instanzen, diese werden mittels
root@main-0:~# for i in
$
(
seq
0
12
)
; do systemctl start novnc@
$
i; systemctl enable novnc@
$
i;done
gestartet und dauerhaft aktiviert
(
sodass sie nach einem Reboot wieder zur Verfügung stehen
)
.
## Apache
NoVNC soll hinter einem Apache
-
Proxy bleiben. Zur Kommunikation werden WSS
(
secure Websockets
)
benötigt.
Daher müssen mittels 'a
2
enmod proxy
_
wstunnel proxy
_
http' die entsprechenden Module aktiviert werden.
Die entsprechende Apache
-
Konfiguration sieht so aus, die Verbindungen sollen grundsätzlich verschlüsselt passieren:
root@main
-
0
:~# cat
/
etc
/
apache
2
/
sites
-
enabled
/
novnc.cvh
-
server.de.conf
<VirtualHost
_
default
_
:
80
>
ServerAdmin webmaster@cvh
-
server.de
ServerName novnc.cvh
-
server.de
ServerAlias www.novnc.cvh
-
server.de
Redirect
/
https:
//
novnc.cvh
-
server.de
/
ErrorLog
${
APACHE
_
LOG
_
DIR
}
/novnc.cvh-server.de-error.log
LogLevel warn
CustomLog
${
APACHE
_
LOG
_
DIR
}
/
novnc.cvh
-
server.de
-
access.log combined
<
/
VirtualHost>
<VirtualHost
_
default
_
:
443
_
default
_
:
8443
>
ServerAdmin webmaster@cvh
-
server.de
ServerName novnc.cvh
-
server.de
ServerAlias www.novnc.cvh
-
server.de
ProxyPass
/
websockify ws:
//
localhost:
6080
/
websockify
ProxyPassReverse
/
websockify ws:
//
localhost:
6080
/
websockify
ProxyPass
/
websock
/
0
/
ws:
//
localhost:
6080
/
websockify
ProxyPassReverse
/
websock
/
0
/
ws:
//
localhost:
6080
/
websockify
ProxyPass
/
websock
/
1
/
ws:
//
localhost:
6081
/
websockify
ProxyPassReverse
/
websock
/
1
/
ws:
//
localhost:
6081
/
websockify
…
ProxyPass
/
websock
/
12
/
ws:
//
localhost:
6092
/
websockify
ProxyPassReverse
/
websock
/
12
/
ws:
//
localhost:
6092
/
websockify
ProxyPass
/
http:
//
localhost:
6080
/
ProxyPassReverse
/
http:
//
localhost:
6080
/
ErrorLog
${
APACHE
_
LOG
_
DIR
}
/novnc.cvh-server.de-error.log
LogLevel warn
CustomLog
${
APACHE
_
LOG
_
DIR
}
/
novnc.cvh
-
server.de
-
access.log combined
SSLEngine on
<
/
VirtualHost>
Auf die einzelnen Räume kann jetzt über URLs der Form
https:
//
novnc.cvh
-
server.de
/
vnc.html?host
=
novnc.cvh
-
server.de
&
port
=
443
&
path
=
websock
/
0
/
&
reconnect
=
1
&
resize
=
scale
https:
//
novnc.cvh
-
server.de
/
vnc.html?host
=
novnc.cvh
-
server.de
&
port
=
443
&
path
=
websock
/
1
/
&
reconnect
=
1
&
resize
=
scale
…
https:
//
novnc.cvh
-
server.de
/
vnc.html?host
=
novnc.cvh
-
server.de
&
port
=
443
&
path
=
websock
/
12
/
&
reconnect
=
1
&
resize
=
scale
zugegriffen werden.
\fi
\fi
\emph
{
(
Fortsetzung folgt.
)
}
\emph
{
(
Fortsetzung folgt.
)
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment