![]() |
Knockd Installation
Dies ist ein kleines Tut wie ihr auf eurem Server Knockd installieren könnt.
Serverseitig verwende ich Linux Debian-etch Clientseitig Windows XP In erster Linie ist die sein Tut zum absichern von SSH Das Tutorial ist akribisch in der Reihenfolge zu befolgen, andernfalls werdet ihr euch vom System aussperren! Ich übernehme keinerlei Gewährleistung und gehe davon aus dass dieses Tut nur von denjenigen angewendet wird die sich mit Servern schon eingehend befasst haben. Bei anderen Betriebssystemen kann es Abweichungen geben. Was tut knockd? Knockd ist ein Programm, dass Security by Obscurity bietet, dh. ein eventueller Hacker mit Portscan kann nicht entdecken da die Portöffnung selbst durch eine Art Passwort geschützt ist, dh der Port Standardmässig ZU ist. Diese Art Passwort wird durch eine festgelegte Reihenfolge von Paketen definiert die knockd an bestimmten festgelegten Ports des Servers gemäss seiner Konfiguration erwartet damit er einen Befehl auf dem Server ausführt. In unserem Fall beeinflussen wir damit die Linux Firewall, die iptables Wozu also? Gehn wir von einem nicht mit allen Wassern gewaschenen Hacker aus, der nen Portscan macht... ohne Knockd und installiertem SSH sieht der Hacker also ohne weiteres das der PORT offen ist. Falls wir Knockd installiert haben und damit den SSH Port verschleiert haben (also solange geschlossen bis wir 'anklopfen') sieht dieser hacker diesen Port zu und kann auch nichts machen da er auch wirklich zu ist *lmao* Da wir ja knockd installiert und konfiguriert haben, können wir aber auf den Server verbinden sobald wir vorher angeklopft haben... dies erkläre ich in diesem Tutorial. Howto: 1. knockd Installieren: Code:
apt-get install knockd Datei: /etc/default/knockd Klicke hier, um den gesamten Text zu sehen
################################################ # # knockd's default file, for generic sys config # ################################################ # control if we start knockd at init or not # 1 = start # anything else = don't start START_KNOCKD=1 # command line options #KNOCKD_OPTS="-i -d eth0" Datei /etc/knockd.conf Klicke hier, um den gesamten Text zu sehen
[options] logfile = /var/log/knockd.log [opencloseSSH] sequence = 2222:tcp,3333:tcp,4444:tcp,5555:udp seq_timeout = 20 tcpflags = syn start_command = iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT cmd_timeout = 3600 stop_command = iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT Sequenz anpassen, wie ihr sie haben wollt. Form *PORT*:protokoll Protokoll ist tcp und udp möglich, ich empfehle zu mischen. 3. Client Runterladen: zeroflux.org (Windows Xp/Vista: Cygwin/Win32 Knock Client ) Den Ordner schiebt ihr dorthin wohin ihr ihn haben wollt, ist völlig egal. 4. Neue Batch Datei runterladen (Anhang) Klicke hier, um den gesamten Text zu sehen
leider nötig, da der Konsolenbefehl allein zu schnell ist und die sequenz beim Server dann in unterschiedlicher reihenfolge ankommt... was zur folge hat dass der Knock nicht erfolgreich ist, mit batch kann man nen kleinen Zeitpuffer dawzischen machen
5. Batch anpassen Batches kann man mit nem ganz normalen Editor bearbeiten. Die Batch baut sich so auf: Zitat:
Zitat:
Dann der Befehl: Zitat:
Zitat:
Mein Workaround ist hier also eine Batch die zwischen jedem Paket eine minimale Pause einlegt. Die Pause wird durch einen 1 Sekunden ping auf den eigenen Rechner erreicht (der Befehl war einfach als einzige Pausenfunktion auf allen Windows OS gleich.) Die Batch baut die Sequenz also so auf: 1. Knock Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Diese Batch wurde aufgrund der Beispiel sequenz gemacht, dh ihr solltet eure Sequenz entsprechend ändern. Beispiel: Klicke hier, um den gesamten Text zu sehen
(Mit 5 anderen Knocking Ports) Sequenz: Zitat:
Zitat:
Es können beliebig viele Knocks vereinbart werden. ich empfehle MINDESTENS 3 verschiedene. Gut finde ich 4 , aber für paranoide gehen unendlich mehr.... Batch speichern! 6. Testlauf! Konsole eingeben: knockd --debug --verbose Es sollten einige Zeilen mit infos kommen an dessen Ende: listening on eth0... steht. Dann klopft ihr mit euer gerade eben gemachten Batch an indem ihr ebendiese durch einen doppelklick ausführt. in euer Konsole sollte dann eine Reaktion erfolgen die, bei erfolg die Steps angibt (jedes am richtigen Port angekommene paket ist ein Step) und dann nach den Steps diese Nachricht gibt: Zitat:
Danach wird der befehl den wir vorher in start_command festgelegt haben ausgeführt. nach cmd_timeout (in sekunden) wird der stop_command ausgeführt. ersterer fügt der Firewall eine regel hinzu die UNSERER Ip den Zugang zum SSH Port gewährt. Letztere löscht ebendiese Regel nach der Zeit aus cmd_timeout. Wir haben hier 1 Stunde Konfiguriert. Solange kann man arbeiten am SSH bevor man erneut Knocken muss. 7. knockd aktivieren befehl in der konsole: /etc/init.d/knockd restart Klicke hier, um den gesamten Text zu sehen
knockd --debug --verbose
von vorher hat knockd schon aktiviert, allerdings nur im debugmodus, daher ein einfaches restart 8. SSH Port Sperren Ist dies alles erfolgreich, sperren wir nun den SSH Port komplett. Das ist wohl das gefährlichste, denn wenn in unserer ganzen vorherigen Konfiguration was falsch ist, heißt das SSH zugang ade. Helfen tut dann nur noch direkt an den Server per Schnittstelle ,Providerseitige Hilfe oder (falls vorhanden) Administrationsoberfläche (Webmin etc.). Also falls schiss bekommen... lieber jetzt aufhören bevor man viel ärger wegen unfähigkeit hat :P Befehl der konsole: iptables -A INPUT -p tcp --dport 22 -j DROP 9. Das wars eigentlich... nun solltet ihr erstmal aus der konsole fliegen. Wiederverbinden wäre dann per Knocken und dann Verbinden per SSH client für 1 Stunde. Falls ihr etwas an der Konfiguration von knockd ändern wollt könnt ihr das jederzeit tun, müsst änderungen der Sequenz auch wieder auf eure batch übertragen. knockd muss nach Änderungen wieder neugestartet werden. Als Anhängsel: Ich habe ca. 5 Knockd Dokus gewälzt und Die Funktion der IPtables lernen müssen bis ich dieses Tut machen konnte und auch dass es auf meinem Server funktionierte. Während ich dies an meinem Server gemacht habe habe ich mich 3 Mal ausgesperrt gehabt... habe aber nun rausgefunden woran es lag und so läuft es nun auch auf meinem Server einwandfrei. Grüße von mir... Euer Sol |
nette anleitung ;)
ich verwende seit einiger zeit knock mit einer firewall die alle ports außer port 80 abdichtet diese firewall wird dann über den knock abgeschaltet und nach dem timeout wieder angeschaltet bisher ohne probleme und man fühlt sich besser *g* |
hatte ich das nicht schon einmal irgendwo gepostet ?
|
jup im glossar ist noch ne anleitung :D aber doppelt hält besser :D
|
im glossar steht noch ne knockd anleitung... aber etwas abgespeckter... von DarkEvil...
von dir ist mir das jetzt nicht bekannt GH. Zero... hast du das proble auch dass bei normalaufruf der client schneller sendet als der server empfangen kann und deshalb die reihenfolge der sequenz durchnanderkommt? ich hab hier zwar nen workaround rein aber nett find ich das nich... |
Irgendwo hatte ich das hier mal gepostet mit nem link und dark hat dann die anleitung nochmal ins Glossar gesetzt als der link nicht mehr ging so war das glaube ich
|
Solstice dieses Problem hab ich net... meine Batchdatei besteht nur ein einer Zeile :D nach klick hab ich sofort zugriff
|
müssen es bei der sequenz immer die selben zahlen sein:
Code:
sequence = 2222:tcp,3333:tcp,4444:tcp,5555:udp z.b. Code:
sequence = 2754:tcp,8976:tcp,2445:tcp,0044:udp |
du kannst wahllos mischen... mit 0 sollten sie jedoch nicht beginnen... beachte auch dass der höchste port 65535 ist. alle darüber sind ungültig.
Ich hab nur ein beispiel gemacht... bzw zwei wenn du dir den beispielspoiler auch anschaust. Edit: @Zero Hier so wie es bei mir mit einem Befehl läuft ohne Zeitverzögerung: Auf Client: http://www.info-panel.net/test/uploa...2909client.png Auf dem Server kommt das aber so an: http://www.info-panel.net/test/uploa...2842server.png Also der erste ist dann noch richtig udn die anderen durcheinandergewürfelt... Edit2: Weils mir grad so spass macht hab ich noch n paar gemacht... hähä Meine Sequences hab ich rausgelöscht XD Klicke hier, um den gesamten Text zu sehen
[closeServer] sequence = seq_timeout = 20 tcpflags = syn command = iptables -A INPUT -p tcp --dport ! 80 -j DROP [openServer] sequence = seq_timeout = 20 tcpflags = syn command = iptables -D INPUT -p tcp --dport ! 80 -j DROP [closeServer_http] sequence = seq_timeout = 20 tcpflags = syn command = iptables -A INPUT -p tcp --dport 80 -j DROP [openServer_http] sequence = seq_timeout = 20 tcpflags = syn command = iptables -D INPUT -p tcp --dport 80 -j DROP |
man leute die einzelnen packete haben einfach unterschiedlichelaufzeiten.
würde der knock client inteliegenter alles in einen frame werfen wäre das egal aber so ist jedes anklopfen ein packet und kann unterschiedlich schnell geroutet werden. das ist standart bei tcp :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:13 Uhr. |
Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2025, vBulletin Solutions, Inc.