cnremctrl

Section: (1)
Updated: 0.1.1
Index Zurück
 

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).

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/de/man1/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
  Button01
Es sollte folgende Ausgabe erscheinen:
  Testmode: System command "ls -al" not executed
 

LIZENZ

Copyright (c) 2020 Christian Nause-Müller. 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

Version 0.1.1, 29.01.2020  

AUTOR

Written by Christian Nause-Müller <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

NAME
SYNTAX
BESCHREIBUNG
OPTIONEN
DATEIEN
BEISPIEL
LIZENZ
VERSION
AUTOR
SEE ALSO

This document was created by man2html, using the manual pages.