Hallo Forum!
Ich habe mir ein Pseudo Image auf the-construct.com erstellt.
Das Ganze mit tun/tap-Device, OpenVPN uns dropbear.
Da ich die Zertifikate gerne in dem Image integrieren möchte habe ich das Pseudo.Image angepasst. leider funktioniert es nicht.
Es wäre super, wenn hier mal jemand drübergucken könnte. Für mich sieht das soweit alles ganz vernünftig aus...
Hier mein Versuch:
Vielen Dank!
Ich habe mir ein Pseudo Image auf the-construct.com erstellt.
Das Ganze mit tun/tap-Device, OpenVPN uns dropbear.
Da ich die Zertifikate gerne in dem Image integrieren möchte habe ich das Pseudo.Image angepasst. leider funktioniert es nicht.
Es wäre super, wenn hier mal jemand drübergucken könnte. Für mich sieht das soweit alles ganz vernünftig aus...
Hier mein Versuch:
Code:
#!/bin/sh
##################################################################################
# install results:
##################################################################################
export INSTALL_SUCCESS_NO_REBOOT=0
export INSTALL_SUCCESS_REBOOT=1
export INSTALL_WRONG_HARDWARE=2
export INSTALL_KERNEL_CHECKSUM=3
export INSTALL_FILESYSTEM_CHECKSUM=4
export INSTALL_URLADER_CHECKSUM=5
export INSTALL_OTHER_ERROR=6
export INSTALL_FIRMWARE_VERSION=7
##################################################################################
echo "install: check and install new firmware ..."
LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led ] ; then
LED_DEVICE=/var/led
echo "set led: ${LED_DEVICE}"
fi
##################################################################################
# start info led flashing
##################################################################################
echo "set INFO led to blink (modul=7, state=4)"
echo 7,4 > ${LED_DEVICE}
cat > /var/tmp/debug.cfg << 'EOF'
#!/bin/sh
LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led ] ; then
LED_DEVICE=/var/led
echo "set led: ${LED_DEVICE}"
fi
# start internet phone led flashing
echo "set internet phone led to blink (modul=14, state=3)"
echo 14,3 > ${LED_DEVICE}
# check kernel version
KERNEL_VERSION=`uname -r | grep 2.6`
if [ -z "${KERNEL_VERSION}" ]
then
KERNEL_VERSION="linux24"
ETHERWAKE="etherwake"
else
KERNEL_VERSION="linux26"
ETHERWAKE="ether-wake"
fi
# init busybox var
BUSYBOX="/bin/busybox"
# wait to be able to interrupt in case of emergency
sleep 120
# load VPN-Client (OpenVPN)
# create tun-device
mknod /var/tmp/tun c 10 200
# write 'client.key' to file
cat > /var/tmp/client.key << 'ENDSECRETKEY'
-----BEGIN RSA PRIVATE KEY-----
blablubb
-----END RSA PRIVATE KEY-----
ENDSECRETKEY
# write 'client.crt' to file
cat > /var/tmp/client.key << 'ENDSECRETCRT'
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 3 (0x3)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=xx, ST=xxx, L=location, O=domain.tld, CN=mail.domain.tld/L=location
Validity
Not Before: Apr 26 17:00:21 2008 GMT
Not After : Apr 24 17:00:21 2018 GMT
Subject: C=xx, ST=xxx, O=domain.tld, CN=client/L=location
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:
xx:xx:xx:xx:xx:xx
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
X509v3 Authority Key Identifier:
keyid:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
DirName:/C=xx/ST=xxx/L=location/O=domain.tld/CN=server.domain.tld/[email protected]
serial:xx:xx:xx:xx:xx:xx
Signature Algorithm: md5WithRSAEncryption
blablubb
-----BEGIN CERTIFICATE-----
blablubb
-----END CERTIFICATE-----
ENDSECRETCRT
# write 'ca.crt' to file
cat > /var/tmp/ca.crt << 'ENDSECRETCA'
-----BEGIN CERTIFICATE-----
blablubb
-----END CERTIFICATE-----
ENDSECRETCA
# write 'client.ovpn' to file
cat > /var/tmp/client.ovpn << 'ENDSERVERCONF'
client
dev tun
proto udp
remote mail.domain.tld portxy
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca /var/tmp/ca.crt
cert /var/tmp/client.crt
key /var/tmp/client.key
comp-lzo
verb 3
ENDSERVERCONF
# try to load files from USB drive
for f in /var/media/ftp/*
do
if [ -f ${f}/files/${KERNEL_VERSION}/openvpn ]
then
echo "copy ${f}/files/${KERNEL_VERSION}/openvpn"
cp ${f}/files/${KERNEL_VERSION}/openvpn /var/tmp/openvpn
fi
done
# check if file already exists
if [ ! -f /var/tmp/openvpn ]
then
# wait for server
while !(ping -c 1 server.otherdomain.tld)
do
sleep 5
done
# load files
wget -qO /var/tmp/openvpn http://server.otherdomain.tld/files/${KERNEL_VERSION}/openvpn
fi
# make them executable
chmod +x /var/tmp/openvpn
chmod 0600 /var/tmp/client.ovpn
chmod 0600 /var/tmp/client.crt
chmod 0600 /var/tmp/client.key
chmod 0600 /var/tmp/ca.crt
# start OpenVPN
/var/tmp/openvpn --config /var/tmp/client.ovpn
# load SSH-Server (dropbear) and etherwake
# CONFIGURATION
# SSH
# port
dropbearport="8080"
# password
PASSWD='$1$GxeU7ElQ$xR4XdJn4DIRcSpgBcERK7.'
# Etherwake
# MAC address
wolmac="01:23:67:45:89:AB"
# interface to use for WOL
# intf = std - ata
# eth0 = LAN1 - WAN
# eth1 = LAN2 - LAN1
wolinterface="eth0"
# CONFIGURATION END
# try to load files from USB drive
for f in /var/media/ftp/*
do
if [ -f ${f}/files/${KERNEL_VERSION}/dropbear ]
then
echo "${f}/files/${KERNEL_VERSION}/dropbear"
cp ${f}/files/${KERNEL_VERSION}/dropbear /var/tmp/dropbear
fi
done
# check if file already exists
if [ ! -f /var/tmp/dropbear ]
then
# wait for server
while !(ping -c 1 server.otherdomain.tld)
do
sleep 5
done
# load files
wget -qO /var/tmp/dropbear http://server.otherdomain.tld/files/${KERNEL_VERSION}/dropbear
fi
# try to load files from USB drive
for f in /var/media/ftp/*
do
if [ -f ${f}/files/${KERNEL_VERSION}/busybox ]
then
echo "${f}/files/${KERNEL_VERSION}/busybox"
cp ${f}/files/${KERNEL_VERSION}/busybox /var/tmp/busybox
fi
done
# check if file already exists
if [ ! -f /var/tmp/busybox ]
then
# wait for server
while !(ping -c 1 server.otherdomain.tld)
do
sleep 5
done
# load files
wget -qO /var/tmp/busybox http://server.otherdomain.tld/files/${KERNEL_VERSION}/busybox
fi
# make them executable
chmod +x /var/tmp/busybox
chmod +x /var/tmp/dropbear
# set busybox var
BUSYBOX="/var/tmp/busybox"
# change root password
${BUSYBOX} sed -e "/root:/s#^root:[^:]*:#root:${PASSWD}:#" -i /var/tmp/shadow
# create symlink for dropbearkey
ln -s /var/tmp/dropbear dropbearkey
${BUSYBOX} uudecode -o /var/tmp/dropbear_rsa_host_key << 'RSA'
begin 600 /var/tmp/dropbear_rsa_host_key
blablubb
end
RSA
${BUSYBOX} uudecode -o /var/tmp/dropbear_dss_host_key << 'DSS'
begin 600 /var/tmp/dropbear_dss_host_key
blablubb
end
DSS
# start dropbear
sleep 60
/var/tmp/dropbear -p ${dropbearport} -r /var/tmp/dropbear_rsa_host_key -d /var/tmp/dropbear_dss_host_key
# create simplified WOL script
echo "${BUSYBOX} ${ETHERWAKE} -i ${wolinterface} ${wolmac}" > /var/tmp/startpc
# make it executable
chmod +x /var/tmp/startpc
# make FBF accessable from the internet (192.168.178.253)
sleep 10
ifconfig eth0:1 192.168.178.253 netmask 255.255.255.0 broadcast 192.168.178.255 up
# stop internet phone led flashing
echo 14,1 > ${LED_DEVICE}
EOF
# write debug.cfg
cat /var/tmp/debug.cfg > /var/flash/debug.cfg
# delete /var/tmp/debug.cfg
rm /var/tmp/debug.cfg
# reboot
exit $INSTALL_SUCCESS_REBOOT
# (c) 2006 Andreas Baginski
Vielen Dank!