Datenbankzugriff für ausenstehende zu 100% Sperren

05/13/2011 19:15 LiiKeZZ#1
Hey, da mir ne Sicherheitslücke in der DB aufgefallen ist (soweit ich zur Zeit weiß kann man diese auch nicht fixxen -.-) hab ich mir mal Gedanken gemacht, ob man nicht einfach auch allen Ip´s (außer ein paar erlaubte) sperren lassen kann.


Das kam dabei heraus :

Datenbank vor fremdzugriff schützen :
Vorraussetzung:
- installierte IPFW Firewall!


ihr öffnet die /etc/ipfw.rules datei und löscht den eintrag mit dem port: 3306 (alle davon !)

dann hat standartmäßig niemand zugriff auf die DB ! (außer der Mt2 server da er über localhost läuft)
um einer einzelnen Ip den Zugriff auf die Db zu erlauben müsst ihr eingeben
Code:
ipfw -q add allow all from ip to any 3306 in
und:
Code:
ipfw -q add allow all from ip to any 3306 out


also für die ip 123.145.167.123 sieht es dann folgendermaßen aus:
Code:
ipfw -q add allow all from 123.145.167.123 to any 3306 in
und:
Code:
ipfw -q add allow all from 123.145.167.123 to any 3306 out

Um am Tag darauf (bzw dann wenn sich die ip von dem der zugriff haben will geändert hat) machen wir folgendes:

Code:
ipfw -q add deny all from 123.145.167.123 to any 3306 in
und:
Code:
ipfw -q add deny all from 123.145.167.123 to any 3306 out
um der Ip den Zugriff zu sperren (also der alten )

danach suchen wir uns die neue ip raus

und erlauben der wieder den zugriff ^^ :)

um die änderungen zu übernehmen noch eingeben :
Code:
/etc/rc.d/ipfw restart
Natürlich alles in Freebsd eingeben:)


Erklärung dazu:
Die Firewall weist alle connect-versuche auf den port 3306 standartmäßig zurück wir geben nur ein ob einer bestimmte Ip erlaubt ist auf die DB zu connecten (also der port freigegeben ist!)

um die änderungen zu übernehmen noch eingeben :
Code:
/etc/rc.d/ipfw restart

ADD: Ihr müsst natürlich die Ip der Homepage, auf der eure Regi etc steht freigeben, dies sollte für euch allerdings kein Problem darstellen, funktioniert nach dem gleichen Schema oder per /etc/ipfw.rules

Für alle die mehr wissen wollen: [Only registered and activated users can see links. Click Here To Register...]<----- Sehr zu empfehlen

Für alle, die gleich wieder sagen: " Das weiß doch jeder etc" oder "ist doch total einfach":
Nicht jeder weiß wie es geht und genau denen, die es nicht wissen hilft das enorm!
Für mich ist es ne arbeit von 2 minuten die Commands etc aus der Ipfw.rules rauszulesen und umzuschreiben aber es gibt durchaus Leute, die es nunmal nicht verstehen!
Wem es also nicht passt drücke doch bitte ALT+F4
05/13/2011 19:30 ZyoX#2
Sieht ganz nett aus.

Quote:
[...]da mir ne Sicherheitslücke in der DB aufgefallen ist (soweit ich zur Zeit weiß kann man diese auch nicht fixxen -.-) [...]
Nur das beunruhigt mich.
05/13/2011 19:31 0x4D617276#3
Naja, gehört eher zum Grundwissen, nicht zu Metin2, da so ziemlich jeder Server eine eigene Datenbank besitzt!

Außerdem muss man auch noch, wenn man ein Proxy auf dem selben Server laufen lässt, dem Proxy Benutzerdaten hinzufügen!
05/13/2011 19:42 LiiKeZZ#4
nein muss man nicht 0x4d617276, da du über den proxie zwar mit der root-ip zugreifts, allerdings nicht über localhost sondern über die root-ip und der ist die db ja nicht frei gegeben ^^

Ja es gehört zum Grundwissen, da ich es allerdings im Zusammenhang mit metin2 benutze/entdeckt habe, denke ich ist es gerechtfertigt, dass es hier steht ;)

@ ZyOX:
darauf kommen 99,99% der Com eh nicht,da sie einfach nicht das nötige wissen dazu haben also keine Sorge ;)

Und glaub mir es gibt so viele Bugs, durch die man auf einen Server zugreifen kann, da macht der auch nichts mehr aus ^^

Zurzeit sind mir 49 Bugs bekannt, von denen man 45 Fixen kann ^^
05/13/2011 19:51 0x4D617276#5
Also wenn du alles, Proxy, Game Server, Datenbank auf einem Root laufen lässt musst du Userdaten hinzufügen, da man sonst einfach dem Proxy joinen kann, somit hätte man, wenn auf die Datenbank zugreift die IP des Roots, sprich localhost!


Achja musst noch die IP des Webspace´s freigeben, sonst wird die hp nicht funtzen!
ABER, dann musst du auch wieder deine HP gegen SQL Injection usw. schützen, sonst sind sie ganz schnell wieder in deiner Datenbank!
05/13/2011 20:02 LiiKeZZ#6
0x4D617276 liest du dir eigentlich thread´s auch mal ganz durch?

1. nein man joined nicht mit localhost sonder mit der IP des ROOT´s (glaub mir ich weiß des ich habs selbst probiert!)
denn das shcema sieht dann folgendermaßen aus:
User-->Proxie-->Internet--->Root-DB

und eben nicht:
User-->Proxie-->Root-DB
2. des Mit der HP etc hab ich schon lange drin stehen :facepalm: ganz unten unter : ADD

3. das tutorial ist nur dafür da, dass man grundsätzlich mal nen Schutz hat, das mit der Homepage etc ist mir sehrwohl bewusst, nur kann man die rechte der Homepage auch ganz einfach beschränken ^^
05/13/2011 20:40 Daroolein#7
Loool, fag !
Musst du machen allowed hosts diggah, nicht umständlich tun
Port sperren !

/Edit: Und ihr wisst schon, was passiert, wenn du versuchen mit Proxy selbe
IP auf Root zu connecten Proxy laufen?
05/13/2011 23:05 LiiKeZZ#8
Daroo ihr blickt es nicht oder?

es macht die ports zu und das bedeutet wiederum, dass man von außen nicht zugreifen kann.

Und selbst wenn auf dem Root ein proxie ist geht dieser zuvor ins internet und müsste wieder durch die Firewall durch mit der IP des Server und diese ist nicht freigegeben. :facepalm:

naja wenn ihr anderer Meinung seit probiert es ruhig aus :)

Und allowed host bringt leuten mit ner wechselnden Ip rein garnichts ^^

das Tut ist speziell für leute mit einer wechselnden IP gedacht :)
05/13/2011 23:14 Daroolein#9
Hehe, da meint wohl einer, er ist klüger :awesome:
Also um es klarzustellen, wenn der Root merkt, dass jemand
mit der selben IP connected, die der Root hat, gibts Connection Refused.
Abgesehen davon, wird der Root doch wohl intern zugreifen können, ansonsten
würde MySQL nicht starten.
So, und man braucht trotzdem diesen ganzen Müll nicht. Man erstellt einfach nen
localhost User, gibt ein
PHP Code:
mysql -u lu1 
dann
PHP Code:
UPDATE mysql.user SET host='IP' WHERE user='root' 
und schon hat man es.
Ich hab jetzt mal keine Facepalms eingefügt, nimm einfach deine aus deinem
Post, und denk sie dir in meinem Post.

/Edit: Btw. heißt es im Singular Proxy und im Plural Proxies. Nicht Proxie und Proxys.
05/13/2011 23:16 ~LuckyStrike~#10
Ja mein Gott Port 3306 wird komplett blocked ausser auf dem Localhost der den MT2 Server leitet sprich V-Box oder Hamachi whatever ... ist nicht schwer zu verstehen aber was bringts dir ??

Ständig wieder die Rule rein && Raus tun damit du in deiner Datenbank was bearbeiten kannst ... :facepalm: Unnötig
05/13/2011 23:19 .Scy#11
das Deny is unnötig einfach die ip im allow ändern und fertig.
wenn man das mit dem deny immer macht hat man am ende ca. 2000000000deny's und 1 allow. ohne das deny da er ja so oder so port 3306 net frei gibt nur für die 1 ip hat man keine deny's und nur einen allow.
05/13/2011 23:21 Daroolein#12
Btw. ist euch schon klar, dass falls eine IP auf allow und deny steht allowed wird?
05/13/2011 23:24 ~LuckyStrike~#13
Ouh man der Thread gehört in den Papierkorb .... :facepalm:
Leider mal wieder nur etwas unnötiges ^^
05/13/2011 23:26 LiiKeZZ#14
Quote:
Originally Posted by ~LuckyStrike~ View Post
Ja mein Gott Port 3306 wird komplett blocked ausser auf dem Localhost der den MT2 Server leitet sprich V-Box oder Hamachi whatever ... ist nicht schwer zu verstehen aber was bringts dir ??

Ständig wieder die Rule rein && Raus tun damit du in deiner Datenbank was bearbeiten kannst ... :facepalm: Unnötig
Nein die jeweilige Rule ist für einen ganzen Tag (bzw solange bis sich deine Ip ändert) aktiv.

An Daroo:
ja so kann man es per mysql auch machen, allerdings gibt es wie im Thread angesprochen nen netten kleinen Bug in Mysql und der einzige mir bekannte weg diesen zu fixxen ist es den port zu blocken.
Außerdem fixxt man dadurch zb folgenden Hack-Aufbau:

server besitzt zb das script von hen!
---> user bekommt das mit sucht sich die variables raus aus der config datei
--->included die Datei auf seinem Webspace
---> kann damit in der db per PhP scripts machen was er will.

Naja jeder wie er es mag, für mich ist das die sicherste Variante.
05/13/2011 23:30 0x4D617276#15
Quote:
Originally Posted by LiiKeZZ View Post
Nein die jeweilige Rule ist für einen ganzen Tag (bzw solange bis sich deine Ip ändert) aktiv.

An Daroo:
ja so kann man es per mysql auch machen, allerdings gibt es wie im Thread angesprochen nen netten kleinen Bug in Mysql und der einzige mir bekannte weg diesen zu fixxen ist es den port zu blocken.
Außerdem fixxt man dadurch zb folgenden Hack-Aufbau:

server besitzt zb das script von hen!
---> user bekommt das mit sucht sich die variables raus aus der config datei
--->included die Datei auf seinem Webspace
---> kann damit in der db per PhP scripts machen was er will.

Naja jeder wie er es mag, für mich ist das die sicherste Variante.
Tja, und dann musste jeden Tag die Rule ändern!
Einfach so machen wie Daroo meint!
Und dieser "Bug" in MySQL wie du ihn nennst, kannst du das mal genauer erläutern?? In welchen Thread stand das usw.