NetVision-Technik

Zur?ck   NetVision-Technik > Forum > Server > Webserver > Security

Security Hier kommen alle Fragen und Lösungen zur Sicherheit und zu Fixes am Serversystem rein

Antwort
 
Themen-Optionen Ansicht
Alt 22.12.2009, 12:04  
Knockd Installation
Solstice Solstice ist offline 22.12.2009, 12:04

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
2. Knockd  konfigurieren:
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*rotokoll
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:
@echo off
ist damit die Ausgabe unterdrückt wird
Zitat:
cls
ist damit der Konsolenschirm gesäubert wird

Dann der Befehl:
Zitat:
knock *ip-server* -v 2222:tcp, 3333:tcp, 4444:tcp, 5555:udp
So würde er zumindest aussehen, jedoch fiel mir auf, wie oben schon gesagt dass er die Pakete so verdammt schnell abschickt, dass sie beim server als
Zitat:
2222:tcp, 4444:tcp, 3333:tcp, 5555:udp
ankommen oder schlimmer durchgewürfelt, also in falscher reihenfolge.
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:
knock *ip-server* -v 2222:tcp
Pause
Zitat:
ping 127.0.0.1 -n 1
2. Knock
Zitat:
knock *ip-server* -v 3333:tcp
Pause
Zitat:
ping 127.0.0.1 -n 1
3. Knock
Zitat:
knock *ip-server* -v 4444:tcp
Pause
Zitat:
ping 127.0.0.1 -n 1
4. Knock
Zitat:
knock *ip-server* -v 5555:udp
Nach dem Letzten muss keine Pause, es sei denn es folgen weitere Knocks.
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:
sequence = 345:tcp,6654:udp,6578:tcp,2465:udp,5665:tcp
Batch:
Zitat:
@echo off
cls
knock 91.121.152.55 -v 345:tcp
ping 127.0.0.1 -n 1
knock 91.121.152.55 -v 6654:udp
ping 127.0.0.1 -n 1
knock 91.121.152.55 -v 6578:tcp
ping 127.0.0.1 -n 1
knock 91.121.152.55 -v 2465:udp
ping 127.0.0.1 -n 1
knock 91.121.152.55 -v 5665:tcp


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:
*deineip*: opencloseSSH: OPEN SESAME
Da haben die Entwickler wohl etwas Humor gehabt... nunja XD
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
__________________
Schmutziges Geschirr schimmelt nicht,
wenn man es einfriert


Ge?ndert von Solstice (22.12.2009 um 16:05 Uhr).

 
Benutzerbild von Solstice
Solstice
Moderator
Punkte: 71.264, Level: 100 Punkte: 71.264, Level: 100 Punkte: 71.264, Level: 100
Levelaufstieg: 0% Levelaufstieg: 0% Levelaufstieg: 0%
Aktivität: 0% Aktivität: 0% Aktivität: 0%
Letzte Erfolge
Auszeichnungen
Registriert seit: 10.04.2008
Alter: 36
Beitr?ge: 4.074
Abgegebene Danke: 200
Erhielt 1.331 Danke für 153 Beiträge
Downloads: 2
Uploads: 1
Nachrichten: 731
Hits: 85141
Mit Zitat antworten
Folgende 9 Benutzer sagen Danke zu Solstice für den nützlichen Beitrag:
$iMpLy (23.12.2009), bl0bb (31.05.2012), Bluesteel (24.12.2009), Feudas (22.12.2009), Lex (27.12.2009), One12 (22.12.2009), Rasta (22.12.2009), Shizuku (30.09.2010), Zero111 (22.12.2009)
Alt 10.01.2010, 08:51   #31
SP4C3
Erfahrener Benutzer
Punkte: 19.573, Level: 88 Punkte: 19.573, Level: 88 Punkte: 19.573, Level: 88
Levelaufstieg: 45% Levelaufstieg: 45% Levelaufstieg: 45%
Aktivität: 0% Aktivität: 0% Aktivität: 0%
Letzte Erfolge
 
Benutzerbild von SP4C3
 
Registriert seit: 06.12.2008
Ort: /dev
Beitr?ge: 433
Abgegebene Danke: 12
Erhielt 77 Danke für 8 Beiträge
Downloads: 10
Uploads: 0
Nachrichten: 331
Renommee-Modifikator:
791 SP4C3 genießt hohes AnsehenSP4C3 genießt hohes AnsehenSP4C3 genießt hohes AnsehenSP4C3 genießt hohes AnsehenSP4C3 genießt hohes AnsehenSP4C3 genießt hohes AnsehenSP4C3 genießt hohes AnsehenSP4C3 genießt hohes AnsehenSP4C3 genießt hohes AnsehenSP4C3 genießt hohes AnsehenSP4C3 genießt hohes Ansehen
Standard

Zitat:
Zitat von gotthummer Beitrag anzeigen
wobei ne aussage wie port verlegen auch nicht haltbar ist den port verlegen bringt gleich 0 einmal nen scanner laufen lassen und jeder weiß in 5 min welchen port du für was nutzt
Mir bekannt. Hilft höchstens was gegen von bots gefloodete Logs.

Das nur eine 768-bit zahl in ihre Primzahlfaktoren zerlegt wurde hab ich mittlerweile auch gelesen.@feudas
SP4C3 ist offline   Mit Zitat antworten Nach oben
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, G?ste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beitr?ge zu antworten.
Es ist Ihnen nicht erlaubt, Anh?nge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beitr?ge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 Uhr.


Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Template-Modifikationen durch TMS