cnremctrl
1. cnremctrl.1.man
Manpage of cnremctrl
cnremctrl
Section: (1)Updated: 0.1.0
Index Return to Main Contents
NAME
cnremctrl - Server fuer das Linux-Fernsteuerprogramm cnRemoteControl
SYNTAX
cnremctrl [-st] [-l /path/logfile] [--cmd01=/path/cmd] [--cmd02=/path/cmd] ... [--cmd10=/path/cmd]
BESCHREIBUNG
Dieses Programm ist der Empfaenger oder Server einer Fernsteuerung fuer Linux-Rechner. Der Sender bzw. Client der Fernsteuerung ist das Microsoft Windows-Programm cnRemoteControl.exe.
Das Client-Programm hat je nach Konfiguration zwischen 1 und 10 Buttons. Mit der Betaetigung eines Buttons, z.B . Button Nr. 3, sendet der Client via TCP/IP auf Port 26056 den String Button03 zum Linux-Rechner.
cnremctrl verwendet den weit verbreiteten TCP-Wrappper xinetd(8). xinetd ist an den cnremctrl-Port gebunden und wird aktiv, wenn dort ein Paket eintrifft. Er ueberprueft anhand der IP-Adresse des Absenders, ob dieser berechtigt ist cnremctrl zu nutzen. Falls ja, wird der String Button03 an stdin von cnremctrl weitergeleitet.
cnremctrl ueberprueft daraufhin, ob das Kommando Nr. 3 konfiguriert ist und fuehrt es, falls vorhanden, per Systemaufruf aus. Alle stdout-Ausgaben und der Rueckgabewert des Kommandos werden von cnremctrl aufgezeichnet und zurueck zum Client gesandt. Dieser zeigt diese Informationen in einem log-Fenster an.
Konfiguration
Alle Programm-Einstellungen werden in /etc/xinetd.d/cnremctrl vorgenommen. Wenn der Daemon xinetd gestartet wird, parst er alle Dateien im Verzeichnis /etc/xinetd.d/ und bindet sich anhand der dort vorgefundenen Einstellungen an die entsprechenden Netzwerkports. Das Default-File fuer cnremctrl ist:
service cnremctrl
{
type = UNLISTED
port = 26056
socket_type = stream
protocol = tcp
user = root
server = /usr/local/bin/cnremctrl
server_args = -s --cmd01=/path/to/command1 --cmd02=/command2%20-para
wait = no
instances = 1
per_source = 1
only_from = 1.2.3.4 1.2.3.5 192.168.0.0/24
log_type = SYSLOG daemon
log_on_success = PID HOST EXIT DURATION
log_on_failure = HOST ATTEMPT
}
Ueblicherweise sind nur folgende Parameter anzupassen:
server_args- Die Systemaufrufe und Logging-Einstellungen.
only_from- Eine Liste von IP-Adressen oder IP-Adressbereichen in CIDR-Notation von denen cnremctrl aufgerufen werden darf.
xinetd ist gut dokumentiert in der man-page xinetd(8). Detailliertere Infos sind auf der xinetd-Homepage unter http://www.xinetd.org zu finden.
Hinweis: Nach dem Aendern der Konfiguration muss xinetd das Konfigurationsverzeichnis neu einlesen, damit die Aenderungen wirksam werden! Unter Red Hat lautet das entsprechende Kommando /etc/rc.d/init.d/xinted reload und unter SuSE rcxinetd reload. Nach dem Reload sollte man auf xinetd-Fehlermeldungen auf der Konsole oder im System-Log achten. Wenn eine Konfigurationsdatei Fehler enthaelt, startet xinetd nicht.
Leerzeichen im Kommando-String
Falls ein Kommando Leerzeichen enthaelt, wie zum Beispiel ls -al, muessen diese durch %20 ersetzt werden. Der Aufruf lautet damit --cmdXY=ls%20-al.
Grund: xinetd interpretiert beim Parsen der Zeile server_args das Leerzeichen als Trennzeichen. Um die resultierende Aufsplittung von Kommandos mit Leerzeichen zu vermeiden, wuerde man ueblicherweise das Kommando durch Anfuehrungsstriche einschliessen (quoting). Das funktioniert bei xinetd nicht, so dass die Leerzeichenersetzung durchgefuehrt werden muss.
Sicherheit
Der Client sendet nur Strings wie ButtonXY zum Server. Es werden keine direkten Server-Kommandos zum Server geschickt, so dass auf diesem Wege keine Kommandos eingeschleust werden koennen.
Trotzdem sollte man von cnremctrl nur unkritische Kommandos ausfuehren lassen. Ausserdem sollte man den Zugriff auf vertrauenswuerdige IP-Adressen beschraenken (Parameter only_from). Gefaehrlich wird es, wenn man --cmd01=/bin/rm%20-rf%20/ und only_from = 0.0.0.0/32 konfiguriert und damit jedem erlaubt, den Server ins Nirwana zu schicken ;)
cnremctrl hinter einer Firewall
Wenn der Rechner mit iptables(8) geschuetzt wird, muessen zwei Regeln installiert werden, damit cnremctrl funktioniert. Beispiel:
iptables -A INPUT -i eth0 -s 192.168.0.0/24 -p tcp --dport 26056 -j ACCEPT iptables -A OUTPUT -o eth0 -d 192.168.0.0/24 -p tcp --sport 26056 -j ACCEPT
OPTIONEN
- -s, --syslog
- Logging per Systemlog syslog.
- -t, --test
- Testmodus. Es werden keine Kommandos ausgefuehrt aber geloggt.
- -l/path/logfile, --logfile=/path/logfile
- Logging per Logdatei.
- --cmd01=/path/cmd
- Server-Kommando 1. Dieses Kommando wird ausgefuehrt, wenn cnremctrl Button01 ueber stdin liest.
(...)
- --cmd10=/path/cmd
- Server-Kommando 10. Dieses Kommando wird ausgefuehrt, wenn cnremctrl Button10 ueber stdin liest.
- -?, --help
- Ausgabe der Hilfeseite und Programmende.
- --usage
- Ausgabe der ausfuehrlichen usage-Seite und Programmende.
DATEIEN
/usr/local/bin/cnremctrl
/etc/xinetd.d/cnremctrl
/usr/share/man/../cnremctrl.1.gz
BEISPIEL
cnremctrl wird ueblicherweise von xinetd aufgerufen.
Zu Testzwecken kann cnremctrl auf der Kommandozeile gestartet werden. Beispiel:
cnremctrl -t --cmd01=ls%20-al Button01Es sollte folgende Ausgabe erscheinen:
Testmode: System command "ls -al" not executed
LIZENZ
Copyright (c) 2004 Christian Nause. Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen der GNU General Public License, wie von der Free Software Foundation veroeffentlicht, weitergeben und/oder modifizieren, entweder gemaess Version 2 der Lizenz oder (nach Ihrer Option) jeder spaeteren Version.
VERSION
AUTOR
Written by Christian Nause <cn at cntec dot de>
Die neueste Programm-Version, der Windows-Client cnRemoteControl.exe und weitere Informationen sind zu finden unter: https://sourceforge.net/projects/cnremctrl
SEE ALSO
Index
This document was created by man2html using the manual pages.
Time: 23:24:18 GMT, July 09, 2008
