Aufgrund einiger Nachfragen, möchte ich hier kurz darstellen, wie ich meinen VPS mit Openvpn und Oscam bestückt habe.
Als Betriebssystem habe ich auf meinem VPS Debain 7 installiert. Dann erstmal die obligatorische beschaffung der benötigten Pakete.
Per Putty via SSH am VPS als root anmelden.
Per Winscp o.ä per SFTP mit dem VPS verbinden in Verzeichnis /etc/openvpn/easy-rsa wechseln und Datei "vars" öffnen.
Putty(VPS):
Die Server.conf entsprechnend anpassen
Nun noch die Clientzertifikate exportieren. Hab mir dazu den kompletten Ordner "keys" kopiert, zu finden unter /etc/openvpn/easy-rsa/
Clientseitig:
Je nach Clientbetriebssystem Debian in meinem Fall
# apt-get update
# apt-get upgrade
# apt-get install openvpn
Per Winscp auf den Clienten einloggen. In Ordner /etc/openvpn wechseln. Dort nun folgende Dateien einfügen:
ca.crt
clientname.crt
clientname.csr
clientname.key
Nun müssen wir noch ein Client.conf erstellen, welches Openvpn "die Richtung" vorgibt.
Client.conf
Ip weiterleitung auf beiden Seiten aktivieren, dazu Winscp nutzen. Unter /etc/sysctl.conf die Zeile
"#net.ipv4.ip_forward = 1" ändern zu "net.ipv4.ip_forward = 1"
Iptables anpassen(Putty am VPS)
#iptables -A FORWARD -i §ändern -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A FORWARD -s 10.9.8.0/24 -o §ändern -j ACCEPT #falls IP angepasst, muss diese auch hier geändert werden
#iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -o §ändern -j MASQUERADE #und auch hier
§ändern = #ifconfig wirft die Interfaces aus, da wird etwas stehen wie "venet0" o.ä. stehen, sowie die/das tunnelinterface/s
# iptables-save > /etc/iptables.up.rules
Openvpn auf beiden seiten per Putty starten
# /etc/init.d/openvpn start
Nun sollte es möglich sein, vom Client(ifconfig am Client zeigt dessen IP) zum Server(10.9.8.1) und andersrum zu pingen.
Oscam am Server installieren
Arbeite hier mit dem simplebuild script
Oscam kompilieren für "nativ". Oscam in gewählten Ordner verschieben, rechte setzen(rechtsklick->Eigenschaften->755).Oscam Startskript in /etc/init.d/ erstellen. Neue Datei oscam mit folgendem Inhalt
Putty(VPS):
# chmod +x /etc/init.d/oscam
# update-rc.d oscam defaults
# service oscam start
Oscam durch vpn tunneln
Habe meine lokalen Reader per newcamd eingebunden, so geht kein Hop verloren und finde das in diesem Fall auch ok. Für ne v13 sähe das so aus:
Clientseite:
oscam.conf
oscam.server
oscam.user
Serverseite:
oscam.server
Jetzt Oscam wie gewohnt einrichten. Hoffe das hilft ein wenig weiter, hab teilweise anderen Anleitungen zusammengefügt und angepasst.
Kleines Update
Da ich desöfteren gefragt wurde, wie sich die Firewall von Meister85 einbinden lässt, habe ich mich mal etwas damit beschäftigt und nun eine config erstellt die auf dem System laufen sollte.
Den Rest bitte aus dem Howto von Meister85 übernehmen
Zur weiteren Steigerung der Sicherheit empfiehlt es sich, wie vom Chef beschrieben die Standardports zu ändern(dieses natürlich dann in dem Firewallskript entsprechend anpassen, sonst sperrt ihr euch per ssh aus!)
Gruß
SR-88
Als Betriebssystem habe ich auf meinem VPS Debain 7 installiert. Dann erstmal die obligatorische beschaffung der benötigten Pakete.
Per Putty via SSH am VPS als root anmelden.
# apt-get update
# apt-get upgrade
# apt-get install openvpn
# cd /etc/openvpn
# mkdir easy-rsa
# cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* easy-rsa/
# apt-get upgrade
# apt-get install openvpn
# cd /etc/openvpn
# mkdir easy-rsa
# cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* easy-rsa/
Per Winscp o.ä per SFTP mit dem VPS verbinden in Verzeichnis /etc/openvpn/easy-rsa wechseln und Datei "vars" öffnen.
...
#Diese Zeilen entsprechend anpassen
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="mail@domain"
export KEY_EMAIL=mail@domain
#Diese Zeilen entsprechend anpassen
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="mail@domain"
export KEY_EMAIL=mail@domain
Putty(VPS):
# cd easy-rsa/
# . ./vars
# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-dh
# ./build-key clientname #Hier werden nun Clientzerfitifikate erstellt, ich würde empfehlen direkt auf "vorrat" Zertifikate zu erstellen (Handy, Hauptrechner, Receiver, Router usw.)
# . ./vars
# ./clean-all
# ./build-ca
# ./build-key-server server
# ./build-dh
# ./build-key clientname #Hier werden nun Clientzerfitifikate erstellt, ich würde empfehlen direkt auf "vorrat" Zertifikate zu erstellen (Handy, Hauptrechner, Receiver, Router usw.)
Die Server.conf entsprechnend anpassen
port 1194
proto udp
dev tun # tap wäre auch möglich, hab es bei mir jedoch als tun eingerichtet
ca /etc/openvpn/easy-rsa/keys/ca.crt # generated keys
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key # keep secret
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
cipher AES-256-CBC
server 10.9.8.0 255.255.255.0 # Das ist nun die Ip des virtuellen Netzwerkes,
#diese ist natürlich beliebig zu wählen, nur drauf achten,
#dass das Subnetz passt!
ifconfig-pool-persist ipp.txt # Zeigt reale Ip´s sowie dazugehörige,
#vergebene virtuelle Ip´s des Tunnels an
keepalive 10 120
persist-key
persist-tun
status log/openvpn-status.log
verb 3 # verbose mode
client-to-client # ganz praktisch da man Clienten so direkt
#vom eigenen Rechner aus warten kann, Nachteil ist,
#dass sich Clienten untereinander auch sehen können.
#So schafft man evtl unwissentlich eine Backdoor.
proto udp
dev tun # tap wäre auch möglich, hab es bei mir jedoch als tun eingerichtet
ca /etc/openvpn/easy-rsa/keys/ca.crt # generated keys
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key # keep secret
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
cipher AES-256-CBC
server 10.9.8.0 255.255.255.0 # Das ist nun die Ip des virtuellen Netzwerkes,
#diese ist natürlich beliebig zu wählen, nur drauf achten,
#dass das Subnetz passt!
ifconfig-pool-persist ipp.txt # Zeigt reale Ip´s sowie dazugehörige,
#vergebene virtuelle Ip´s des Tunnels an
keepalive 10 120
persist-key
persist-tun
status log/openvpn-status.log
verb 3 # verbose mode
client-to-client # ganz praktisch da man Clienten so direkt
#vom eigenen Rechner aus warten kann, Nachteil ist,
#dass sich Clienten untereinander auch sehen können.
#So schafft man evtl unwissentlich eine Backdoor.
Nun noch die Clientzertifikate exportieren. Hab mir dazu den kompletten Ordner "keys" kopiert, zu finden unter /etc/openvpn/easy-rsa/
Clientseitig:
Je nach Clientbetriebssystem Debian in meinem Fall
# apt-get update
# apt-get upgrade
# apt-get install openvpn
Per Winscp auf den Clienten einloggen. In Ordner /etc/openvpn wechseln. Dort nun folgende Dateien einfügen:
ca.crt
clientname.crt
clientname.csr
clientname.key
Nun müssen wir noch ein Client.conf erstellen, welches Openvpn "die Richtung" vorgibt.
Client.conf
client
dev tun
port 1194
proto udp
remote hier eure öffentliche VPS ip
nobind
ca /etc/openvpn/ca.crt
cert /etc/openvpn/clientname.crt
key /etc/openvpn/clientname.key
cipher AES-256-CBC
persist-key
persist-tun
verb 3
dev tun
port 1194
proto udp
remote hier eure öffentliche VPS ip
nobind
ca /etc/openvpn/ca.crt
cert /etc/openvpn/clientname.crt
key /etc/openvpn/clientname.key
cipher AES-256-CBC
persist-key
persist-tun
verb 3
Ip weiterleitung auf beiden Seiten aktivieren, dazu Winscp nutzen. Unter /etc/sysctl.conf die Zeile
"#net.ipv4.ip_forward = 1" ändern zu "net.ipv4.ip_forward = 1"
Iptables anpassen(Putty am VPS)
#iptables -A FORWARD -i §ändern -o tun0 -m state --state ESTABLISHED,RELATED -j ACCEPT
#iptables -A FORWARD -s 10.9.8.0/24 -o §ändern -j ACCEPT #falls IP angepasst, muss diese auch hier geändert werden
#iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -o §ändern -j MASQUERADE #und auch hier
§ändern = #ifconfig wirft die Interfaces aus, da wird etwas stehen wie "venet0" o.ä. stehen, sowie die/das tunnelinterface/s
# iptables-save > /etc/iptables.up.rules
Openvpn auf beiden seiten per Putty starten
# /etc/init.d/openvpn start
Nun sollte es möglich sein, vom Client(ifconfig am Client zeigt dessen IP) zum Server(10.9.8.1) und andersrum zu pingen.
Oscam am Server installieren
Arbeite hier mit dem simplebuild script
Sie müssen registriert sein, um Links zu sehen.
#!/bin/bash
### BEGIN INIT INFO
# Provides: oscam
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Init script for oscam
### END INIT INFO
. /lib/lsb/init-functions
NAME=oscam
DAEMON="/usr/local/bin/oscam" #individuell angepasst
PIDFILE=/tmp/.oscam/oscam.pid
DAEMON_OPTS="-b"
start() {
echo -n "Starting daemon: "$NAME
start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_OPTS
echo "."
}
stop() {
echo -n "Stopping daemon: "$NAME
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
echo "."
}
restart(){
stop
sleep 3
start
}
status(){
pidof $DAEMON > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "$NAME is not running"
exit $RETVAL
else
echo "$NAME is running"
fi
}
reload(){
kill -1 $(cat $PIDFILE)
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "$NAME reloading successfully"
else
echo "$NAME reloading failed"
exit $RETVAL
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
### BEGIN INIT INFO
# Provides: oscam
# Required-Start: $local_fs $network
# Required-Stop: $local_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Init script for oscam
### END INIT INFO
. /lib/lsb/init-functions
NAME=oscam
DAEMON="/usr/local/bin/oscam" #individuell angepasst
PIDFILE=/tmp/.oscam/oscam.pid
DAEMON_OPTS="-b"
start() {
echo -n "Starting daemon: "$NAME
start-stop-daemon --start --quiet --exec $DAEMON -- $DAEMON_OPTS
echo "."
}
stop() {
echo -n "Stopping daemon: "$NAME
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
echo "."
}
restart(){
stop
sleep 3
start
}
status(){
pidof $DAEMON > /dev/null 2>&1
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
echo "$NAME is not running"
exit $RETVAL
else
echo "$NAME is running"
fi
}
reload(){
kill -1 $(cat $PIDFILE)
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "$NAME reloading successfully"
else
echo "$NAME reloading failed"
exit $RETVAL
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload)
reload
;;
status)
status
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
Putty(VPS):
# chmod +x /etc/init.d/oscam
# update-rc.d oscam defaults
# service oscam start
Oscam durch vpn tunneln
Habe meine lokalen Reader per newcamd eingebunden, so geht kein Hop verloren und finde das in diesem Fall auch ok. Für ne v13 sähe das so aus:
Clientseite:
oscam.conf
...
[newcamd]
port = Port@09C4:000000
allowed = 127.0.0.1,0.0.0.0-255.255.255.255 # diese dann nach konfiguration
#auf serverip beschränken
key =
keepalive = 1
...
[newcamd]
port = Port@09C4:000000
allowed = 127.0.0.1,0.0.0.0-255.255.255.255 # diese dann nach konfiguration
#auf serverip beschränken
key =
keepalive = 1
...
oscam.server
[reader]
label = skyv13
protocol = mouse
device = /dev/ttyUSB0
caid = 09C4
boxid = 12345678
ins7e11 = 15
detect = cd
nagra_read = 1
mhz = 600
ident = 09C4:000000
group = 1
emmcache = 1,2,2
ndsversion = 2
label = skyv13
protocol = mouse
device = /dev/ttyUSB0
caid = 09C4
boxid = 12345678
ins7e11 = 15
detect = cd
nagra_read = 1
mhz = 600
ident = 09C4:000000
group = 1
emmcache = 1,2,2
ndsversion = 2
oscam.user
[account]
user = user
pwd = password
caid = 09C4
au = 1
group = 1
user = user
pwd = password
caid = 09C4
au = 1
group = 1
Serverseite:
oscam.server
[reader]
label = Sky_09C4
protocol = newcamd
device = #Tunnel Ip des Clienten mit den lokalen Readern,Port
key =
user = user
password = password
inactivitytimeout = -1
connectoninit = 1
caid = 09C4
group = 1
emmcache = 1,1,2
cccreshare = 1
label = Sky_09C4
protocol = newcamd
device = #Tunnel Ip des Clienten mit den lokalen Readern,Port
key =
user = user
password = password
inactivitytimeout = -1
connectoninit = 1
caid = 09C4
group = 1
emmcache = 1,1,2
cccreshare = 1
Jetzt Oscam wie gewohnt einrichten. Hoffe das hilft ein wenig weiter, hab teilweise anderen Anleitungen zusammengefügt und angepasst.
Kleines Update
Da ich desöfteren gefragt wurde, wie sich die Firewall von Meister85 einbinden lässt, habe ich mich mal etwas damit beschäftigt und nun eine config erstellt die auf dem System laufen sollte.
Code:
#!/bin/sh
### BEGIN INIT INFO
# Provides: custom firewall
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: firewall initscript
# Description: Custom Firewall
### END INIT INFO
IPT=/sbin/iptables
case "$1" in
start)
# bestehende Verbindungen
$IPT -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Über Loopback alles erlauben
$IPT -I INPUT -i lo -j ACCEPT
$IPT -I OUTPUT -o lo -j ACCEPT
# vpn
$IPT -A INPUT -i eth0 -p udp --dport 1194 -j ACCEPT #Port aus Server.conf(udp oder tcp beachten)
# SSH
$IPT -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
# OSCAM WEB
$IPT -A INPUT -i eth0 -p tcp --dport 16002 -j ACCEPT
# CCCAM
$IPT -A INPUT -i eth0 -p tcp --dport 12000 -j ACCEPT
# PING SPERRE
$IPT -A INPUT -i eth0 -j REJECT
# SICHERHEIT
$IPT -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP
$IPT -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s
echo "Firewall wurde aktiviert, der Server ist geschützt"
exit 0
;;
stop)
$IPT -F INPUT
echo "Achtung, Firewall wurde gestoppt, der Server ist ungeschützt"
exit 0
;;
stop)
$IPT -F INPUT
echo "Achtung, Firewall wurde gestoppt, der Server ist ungeschützt"
exit 0
;;
restart|reload|force-reload)
$0 stop
sleep 1
$0 start
exit 0
;;
*)
echo "Usage: $0 {start|stop|restart|reload|force-reload}"
exit 1
;;
esac
Den Rest bitte aus dem Howto von Meister85 übernehmen
Zur weiteren Steigerung der Sicherheit empfiehlt es sich, wie vom Chef beschrieben die Standardports zu ändern(dieses natürlich dann in dem Firewallskript entsprechend anpassen, sonst sperrt ihr euch per ssh aus!)
Gruß
SR-88
Zuletzt bearbeitet: