OpenSSHBackDoor script
#!/bin/sh
### BEGIN INIT INFO
# Provides: open-backdoor
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Should-Start: $network
# Should-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: S 0 1 6
# Short-Description: Open SSH backdoor to get around firewalls
# Description: Nice script that opens an ssh backdoor to get
# around firewalls that blocks incoming ssh.
# To configure, create /etc/default/open-backdoor
# with the user, host and port settings.
### END INIT INFO
# chkconfig: 2345 52 78
# Look at the launchtool and daemon packages to solve the file
# descriptor problem.
RPORT=
RHOST=
RUSER=
PIDFILE=/var/run/backdoor.pid
LASTFILE=/var/run/backdoor.last
DEFAULTS=/etc/default/backdoor
[ -f $DEFAULTS ] && . $DEFAULTS
is_enabled() {
if [ -z "$RPORT" -o -z "$RHOST" -o -z "$RUSER" ] ; then
#echo "open-backdoor: Not enabled, backdoor parameters not set."
false
else
true
fi
}
do_start() {
# Check if there is another backdoor running
OLDPID=`cat "$PIDFILE" 2> /dev/null`
if [ -n "$OLDPID" ] ; then
ps "$OLDPID" | grep -q backdoor && exit
fi
# Save it for a rainny day
echo $$ > "$PIDFILE"
while true ; do
if [ -f "$LASTFILE" -a \
`date -r "$LASTFILE" +%s` -ge `date -d -5min +%s` ] ; then
sleep 300
else
touch "$LASTFILE"
ssh -l "$RUSER" "$RHOST" -R "$RPORT:localhost:22" sleep 3600
fi
done
}
do_stop() {
OLDPID=`cat $PIDFILE 2> /dev/null`
if [ -n "$OLDPID" ] ; then
ps $OLDPID | grep -q backdoor && kill $OLDPID
fi
}
do_status() {
OLDPID=`cat $PIDFILE 2> /dev/null`
if [ "$OLDPID" ] && kill -0 "$OLDPID" ; then
echo "info: SSH backdoor is running with pid '$OLDPID'."
else
echo "info: SSH backdor is not running."
fi
}
case "$1" in
start) #start running in the background
is_enabled || exit 0
echo "info: Opening SSH backdoor from $RHOST:$RPORT" 1>&2
# This need to be properly detached. It will hang on upgrades
# because some file descriptor is still open, and the postinst
# shell script refuses to terminate because of this. See
# skolelinux bug #783 for info on the problem.
do_start < /dev/null > /dev/null 2>&1 &
;;
stop) #find a way to stop this
is_enabled || exit 0
do_stop
;;
restart|force-reload)
is_enabled || exit 0
do_stop
do_start < /dev/null > /dev/null 2>&1 &
;;
status)
if is_enabled ; then
do_status
else
echo "info: SSH backdoor isn't enabled. Edit $DEFAULTS to enable."
fi
;;
*)
echo $"Usage: $0 {start|stop|restart|force-reload|status}"
exit 2
;;
esac
exit 0