MariaDB über NAS phpmyAdmin Sicherheit etc...

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von r0tzi.

    MariaDB über NAS phpmyAdmin Sicherheit etc...

    Hi Leute,

    ich habe mich dazu entschlossen mal MariaDB und phpMyAdmin auf mein NAS(synology) zu machen. Habe bisher nur in der Firma mit SQL gearbeitet und da musste ich mir wenig sorgen um die Sicherheit machen, da der Server nur per VPN zu erreichen ist.
    nun los gehts:)

    1. ich connecte mit

    Quellcode

    1. connection As New MySql.Data.MySqlClient.MySqlConnection("SERVER=meinedyndnsadresse;UID=benutzer;PWD=passwort;DATABASE=test;logging=True;Pooling=False;port=3307;")

    und hole natürlich daten aus meinen tabellen mit zb.

    Quellcode

    1. Dim Command As New MySql.Data.MySqlClient.MySqlCommand("SELECT * FROM test1")
    2. Command.Connection = connection
    3. Dim adapter As New MySql.Data.MySqlClient.MySqlDataAdapter(Command)
    4. Dim table As New DataTable()
    5. adapter.Fill(table)
    6. For Each row In table.Rows
    7. MsgBox(row(0).ToString)
    8. Next


    Nehmen wir mal an, mein Programm kommt in die falschen Hände, und er kann aus meinem Program username, passwort, dyndns adresse etc herausbekommen...
    Mir ist völlig klar, dass er mit diesen Daten die Datenbank auslesen kann. Wie sollte ich das am besten machen? Die daten im Program vom user eingeben lassen und diese lokal in den einstellungen z.B. speichern?

    2. Da mein Nas bzw. die DB übers internert erreichbar sind, könnte sich auch jemand auf die DAtenbank zugriff verschaffen "ohne" mein program? Also sagen wir, wenn er nur die Dyndns adresse kennt?

    2.5 komisch finde ich, dass auf der DB ständig verbindungen zu sehen sind.. obwohl ich nichts mache zählt der zähler hoch. es gibt nur ein user der Hostname "%" hat.. was ist da? irgendwelche scanner?

    3. könnte er vllt sogar auf meine anderen daten die auf dem NAS sind zugreifen?

    4. sollte ich die daten verschlüssen? Wenn ja, wie?

    5. was MUSS ich noch in der DB einstellen bezgl. der Sicherheit? ich möchte natürlich unter keinen Umständen, dass jemand der keine Zugansdaten hat auch nicht connecten kann etc


    Vielen Dank für eure Hilfe :)
    zu 1) alles was du in dein Programm schreibst kann jemand auslesen also auch dein user und pass für die DB.
    Ich nutze immer einen webservice der meine Datenbank Angelegenheiten klärt.
    also sende ich nur noch WebRequests mit den Daten die in die DB rein sollen oder eben mit nem request um auszulesen.

    zu 2) theoretisch ja. Wenn du keine ordentliche Firewall hast könnte man da bruteforce starten.

    zu3) kommt ganz darauf an falsch konfiguriert sicherlich aber das kann man so pauschal nicht sagen.

    zu 4) welche daten? den username und Passwort für MySQL? solange dein programm das ja entschlüsselt kann das auch ein Angreifer.

    zu 5) normalerweise ist bei der Standart Installation keine Verbindung ohne User und pass möglich.
    begrenze die User auf die rechte die sie brauchen also nicht einfach überall mit root Rechten rum fummeln.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Hi, danke für die antworten.
    zu 1) webservice sagt mir rein gar nichts... wo kann ich infos darüber finden?

    zu 2) ich habe ein block drin, d.h. bei 5 anmeldeversuchen von der ip innerhalb 2 mins, wird die ip geblockt.

    zu 3) also mein nutzername vom NAS ist natürlich ein anderer wie im SQL. geht es trotzdem irgendwie?

    zu 4) die daten IN den SQL Tabellen.. das verschlüsselung im programm nichts bringt weiss ich :)

    zu 5) ja es ist nur 1 user mit "%" angelegt der ausm WEB zugreifen kann.

    Neue Frage: hab eben meine DAtenbank gestartet und eine minute später hab ich mir die statistik mal angeschaut.... Warum hab ich innerhalb 1 minute soviel zugriffe? ?(
    Bilder
    • Unbenannt.png

      29,57 kB, 860×442, 141 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „r0tzi“ ()

    Heyho,

    also mit nem WebService meine ich eine Art API die deine Daten entgegennimmt und diese in die Datenbank einträgt.
    Die kannst du mit allem möglichen Programmieren ich z.b. mache mir immer PHP Scripts dafür die mir dann JSON ausgeben was ich wiederum verarbeite.

    zu 2) Dann brauchst du schon mal was nen Bruteforce angeht eh keine bange haben.

    zu 3) Nunja wie gesagt solange du nur das Öffentlich machst was du öffentlich machen willst kommt natürlich keiner dran.
    Du solltest halt schon alle Ports die nicht für die Öffentlichkeit gedacht sind für außerhalb deines Netzwerkes blocken.

    zu 4) naja Verschlüsseln brauchst du´s nicht. Halt nur Passwörter und andere sensible Daten.
    zu 5) Jo das reicht ja auch.

    Du nutzt PHPMyAdmin ? Daher kommen natürlich auch die ganzen Anfragen. Solbald du da rein gehst werden ja auch die Befehle ausgeführt damit phpmyadmin auch was anzeigen kann.
    Änder ansonsten dein Passwort und fertig.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Okay,

    zu 3) in meinem modem sind nur die ports fürs NAS und den einen fürs connecten freigegeben. Oder meinst du noch woanderst sperren?

    zu 4) Um die Passwörter aber zu entschlüsseln von der Datenbank, muss ich doch den key auch im Programm haben.. also auch nicht sicher? Oder wie meinst du das?

    habe noch ein anderes problem, wo ich in Google keine Hilfe finde.
    Ich möchte eine Datei hochladen... klappt auch bis 3 MB... wenn ich nun eine mit 20 MB hochladen möchte, sagt er mir

    The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size. Increase the redo log size using innodb_log_file_size."

    In google finde ich nur, dass ich die Datei auf dem Datenträger ändern soll... da komme ich aber nicht hin, da es ja auf dem NAS installiert ist. ich finde unter phpmyadmin unter variablen die innodb_log_file_size aber kann sie nicht bearbeiten, ist gesperrt. gibt es noch eine andere möglichkeit das hochzusetzen dass ich grössere Dateien hochladen kann?

    Vielen DAnk
    Heyho,

    zu 3) Ne genau das meine ich.

    zu 4) Ja sorry, falscher Begriff meinerseits. Ich meine natürlich das Passwort hashen.

    Dann zu deinem neuem Problem.
    Soweit ich weiß muss das natürlich in der ini geändert werden. Wenn du da keinen Zugriff hast ist das natürlich doof.

    ABER warum speicherst du Files in MySQL? Speichere die Dateien auf dem Server und pack nur den Pfad zu der Datei in die Datenbank.
    Für mich ist MySQL keine Datenbank um Dateien darin zu speichern.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    ich habe aber sonst kein server wo ich die datei speichern kann.. deswegen wollte ich sie im sql speichern ;)

    Momentan mache ich es so:

    Quellcode

    1. Using fsreader As New FileStream(ofd.FileName, FileMode.Open, FileAccess.Read)
    2. ReDim MyFile(fsreader.Length - 1)
    3. Using breader As New BinaryReader(fsreader)
    4. breader.Read(MyFile, 0, fsreader.Length)
    5. End Using
    6. End Using
    7. Dim Command As New MySql.Data.MySqlClient.MySqlCommand("Insert into meinetabelle (spalte1, Spalte2, Spalte3) VALUES (@Spalte1, @Spalte2, @Spalte3)")
    8. Command.Connection = connection
    9. Command.Parameters.AddWithValue("@Spalte1", "Spalte1")
    10. Command.Parameters.AddWithValue("@Spalte2", "Spalte2")
    11. Command.Parameters.AddWithValue("@Spalte3", MyFile)
    12. Command.ExecuteNonQuery()
    13. Command.Dispose()


    Hat vllt wer anders ne lösung wie ich 20 MB da rein bringe ? :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „r0tzi“ ()

    das kann ich schon, aber wenn mein programm die datei runterladen möchte, dass muss ich ja wieder ein user anlegen fürs NAS dateisystem...da könnte dann doch jeder den login und pw im programm sehen ?! ODer meinst du extra ein ordner und ein login NUR für diese dateien anlegen? nur... wie komm ich da direkt drauf dass es ein direkt download dann wird?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „r0tzi“ ()

    Ich rede jetzt von der my.cnf für dein MySQL Server. Normalerweise kannst du ja mit root rechten auf den NAS gehen und die Datei editieren.
    Um halt dann den Wert bei "innodb_log_file_size" zu setzten.

    Kannst du evtl. mal sagen was du genau vor hast? Also dein großes vorhaben weil ich glaube das hier ein NAS zuhause echt der falsche weg ist
    vor allem wenn es dann noch um Datei Downloads geht die nicht in deinem Netzwerk sondern von wo anders stattfinden.
    Da brauchst du natürlich auch eine dem entsprechende Internet Leitung.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    as hab ich mit winscp probiert unter dem var/packages/mariadb10 verzeichniss etc... ging nicht, permission denied.. und wie ich die permission setze dass ich da schrieben kann.. keine ahnung :D... na was ich vor habe, eben eine datei downloaden... nur 1 einzige .. und deswegen will ich mir nun nichts mieten ;)
    okay ich linux gar nix wissen.. wie kopier ich von D:\my.cnf in das verzeichnis wohin es soll?
    überall steht mit dem befehl pscp ... geht aber ned

    *edit* habs endlich hinbekommen wow.. was ein act... O_O ... so nun bin ich erstmal zufireden :) herzlichen Dank

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „r0tzi“ ()

    @VB1963
    ich gehe mal davon aus der er sich per SSH verbunden hat und dann die Datei editiert.

    und nur um das nochmal zu sagen ich würde trotzdem bevorzugen das ganze nicht in die MySQL zu speichern sondern halt als datei und nur den Pfad. da wird es sicherlich auch Lösungen für das NAS geben.
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen