Nur mySQL auf Server, Iptables?, Portscan

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Novos
Beiträge: 12
Registriert: 04.02.2008 09:15:38

Nur mySQL auf Server, Iptables?, Portscan

Beitrag von Novos » 04.02.2008 09:24:26

Hallo,

ich habe im Moment einen Linuxserver in unserem internen Firmennetz der nichts anderes als mysql bereitstellen soll.
Zukünftig wird der selbe Server auch im externen Netz erreichbar sein.
Ich habe, soweit mir es bisher möglich war, alle sonstigen Demons abgeschalten, trotzdem findet er beim Portscan noch etwas.
Ich kenne mich recht gut mit mySQL aus, doch bei Linux stoße ich immer wieder an Grenzen, dafür kann ich aber lesen und zuhören. ;)
Mich stören die beiden Ports 111 und 113.
Vielleicht kann mir ja jemand weiterhelfen, der Portscan Nmap sieht so aus:

Code: Alles auswählen

Initiating ARP Ping Scan at 09:09
Scanning 192.168.1.5 [1 port]
Completed ARP Ping Scan at 09:09, 0.06s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 09:09
Completed Parallel DNS resolution of 1 host. at 09:09, 0.00s elapsed
Initiating SYN Stealth Scan at 09:09
Scanning 192.168.1.5 [1714 ports]
Discovered open port 113/tcp on 192.168.1.5
Discovered open port 3306/tcp on 192.168.1.5
Discovered open port 111/tcp on 192.168.1.5
Completed SYN Stealth Scan at 09:09, 0.73s elapsed (1714 total ports)
Initiating Service scan at 09:09
Scanning 3 services on 192.168.1.5
Completed Service scan at 09:09, 6.02s elapsed (3 services on 1 host)
Initiating OS detection (try #1) against 192.168.1.5
Initiating RPCGrind Scan against 192.168.1.5 at 09:09
Completed RPCGrind Scan against 192.168.1.5 at 09:09, 0.00s elapsed (1 port)
SCRIPT ENGINE: Initiating script scanning.
Initiating SCRIPT ENGINE at 09:09
Completed SCRIPT ENGINE at 09:09, 6.02s elapsed
Host 192.168.1.5 appears to be up ... good.
Interesting ports on 192.168.1.5:
Not shown: 1711 closed ports
PORT     STATE SERVICE VERSION
111/tcp  open  rpcbind  2 (rpc #100000)
|  rpcinfo:  
|  100000 2       111/udp rpcbind
|  100024 1     32768/udp status
|  100000 2       111/tcp rpcbind
|_ 100024 1     46337/tcp status
113/tcp  open  ident
3306/tcp open  mysql   MySQL 5.0.32-Debian_7etch1-log
|  MySQL Server Information: Protocol: 10
|  Version: 5.0.32-Debian_7etch1-log
|  Thread ID: 8
|  Some Capabilities: Connect with DB, Compress, Transactions, Secure Connection
|  Status: Autocommit
|_ Salt: bDkoiCRQ}G(/R1>#1oZX
MAC Address: 00:14:85:39:AF:B2 (Giga-Byte)
Device type: general purpose
Running: Linux 2.6.X
OS details: Linux 2.6.17 - 2.6.18 (x86_64, SMP)
Network Distance: 1 hop
TCP Sequence Prediction: Difficulty=200 (Good luck!)
IP ID Sequence Generation: All zeros

Benutzeravatar
king-crash
Beiträge: 722
Registriert: 08.08.2006 12:07:56
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von king-crash » 04.02.2008 09:57:16

111:
http://de.wikipedia.org/wiki/Portmapper
Sofern du kein NFS nutzt kannst du ihn ausschalten bzw deinstallieren.

113:
http://de.wikipedia.org/wiki/Ident
Auch raushauen.

goecke
Beiträge: 289
Registriert: 12.01.2007 11:57:27

Beitrag von goecke » 04.02.2008 11:19:22

Hi,

ein paar ergänzungen noch:

1.
normalerweise brauchst du keinen Portscan von aussen zu machen
um die portbelegung herauszubekommen
netstat und lsof sind deine Freunde (z.B. als Root: "netstat -patu" gibt auch ProcessID und Programm-Name aus)

2.
es ist Richtig, dass auf einem Server, der nach Aussen sichtbar ist so wenig Dienste ( = Fehlerquellen)
wie möglich laufen sollten. Aber wenn du keine öffentliche Adresse hast sondern 192.168.xxx.yy
wird (hoffentlich!!) von Router / Firewall nur der eine Port (z.B. mysql = 3306 ) an diesen
Rechner weitergeleitet, so daß alle anderen offenen Ports an sich keine schwachstelle
darstellen dürften.

3. Ich bin mir nicht sicher wie und ob die Mysql Verbindung verschlüsselt ist und wie die Authentifizierung läuft,
deshalb überprüfe das und versuche im Zweifel die Mysql Verbindung per ssh zu tunneln (mit pub-key authentifikation - geht recht einfach auch von Windows aus mit putty)

just my 3 Pfennigs
Johannes

Novos
Beiträge: 12
Registriert: 04.02.2008 09:15:38

Beitrag von Novos » 04.02.2008 11:58:16

Ok,
danke schon mal soweit.

Ich habe nun folgendes gemacht:
- Default Runlevel in inittab rausgesucht
- in /etc/rc2.d folgendes gelöscht: portmap, exim4, openbsd-inetd, nfs-common

netstat -patu ist wirklich recht nett :)

Nicht sicher bin ich mir bei cron, ich bräuchte cron eigentlich nicht, weis allerdings nicht ob das System den Daemon braucht.
Über adt finde ich leider nichts, beziehungsweise werde ich durch das gefundene nicht schlauer.

---

Der Rechner soll eine zweite Netzwerkkarte bekommen und hat damit eine statische 62er IP.
Die Sicherheit für mySQL werde ich über Compress, SSL und X509 realisieren mit je gebundenen Interfaces
SSH werde ich nicht auf dem Server laufen lassen, da ich den Remotezugriff über eine Hardwarelösung verfügbar habe.

Edit: Portmap läuft nach Neustart weiterhin.


Offen bleiben für mich nun noch folgende Fragen?
Muss ich nach den bisherigen Maßnahmen noch etwas unternehmen um ein Routing zwischen externen und internen Netz zu vermeiden?
Wie Leite ich temporär die Ausgabe eines Befehls in eine Datei? ;) (ist sicher fürs Forumsposten hilfreich.
Was macht adt?
Woran könnte es liegen das Portmap weiterhin geladen wird?

Vielen Dank schon mal
Novos

goecke
Beiträge: 289
Registriert: 12.01.2007 11:57:27

Beitrag von goecke » 04.02.2008 12:44:03

Hi,

also,

cron und mail sind schon tolle Dinge - die würd ich nicht komplett deaktivieren

z.B. cron macht routineaufgaben wie logrotate (damit das Logverzeichnis nicht übervoll wird)
und schickt die Ergebnisse per mail.

Du kannst den SMTP nur an localhost binden, dann besteht keine Gefahr (-> netstat ausgabe überprüfen)

wenn du die anderen Programme nicht brauchst kannst du sie auch mit "aptitude purge paketname" komplett
löschen. Aber schau welche Pakete er zusätzlich als abhängigkeiten löschen will (=> apt-cache show paketname) .

pormap kann von sowas wie inetd gestartet werden (xinetd oder openbsd-inetd, ?? ). Das sind
Programme, die an den Ports lauschen und nur bei Anfragen den eigendlichen Server starten. das kann
Speicher bei selten genutzen Diensten sparen. Warscheinlich kannst du alle paktete inetd xinetd und openbsd-inetd
komplett purgen.

HTH
Johannes

goecke
Beiträge: 289
Registriert: 12.01.2007 11:57:27

Beitrag von goecke » 04.02.2008 12:59:33

Novos hat geschrieben:
Offen bleiben für mich nun noch folgende Fragen?
Muss ich nach den bisherigen Maßnahmen noch etwas unternehmen um ein Routing zwischen externen und internen Netz zu vermeiden?
Pakete von "draussen nach drinnen" sollten sowieso nicht kommen, wenn du intern 192.168.xx adressen
hast.
Pakete von "drinnen nach draussen" (IMHO unkritisch es sei denn du hast auf deiner Firewall
sachen blockiert, die Deine benutzer nicht dürfen). Normal haben alle Clients ja eine default-Route
über Router/Firewall. Damit interne User nicht über die Datenbank nach draußen routen können
müsste sowas funktionieren:

http://blog.christian-jaeckle.de/2008/0 ... ktivieren/


Wie Leite ich temporär die Ausgabe eines Befehls in eine Datei? ;) (ist sicher fürs Forumsposten hilfreich.
befehl > ausgabe.txt


http://www.debiananwenderhandbuch.de/pipes.html

evtl noch mit grep zum filtern der relevanten einträge

http://www.errorinitus.de/studium/s2_bs ... pbeis.html

dann (bei langen ausgaben) nach nopaste und den Link ins forum:

http://wiki.debianforum.de/debianforum.de/NoPaste

gruß
Johannes

Novos
Beiträge: 12
Registriert: 04.02.2008 09:15:38

Beitrag von Novos » 05.02.2008 09:26:53

Ok, vielen Dank soweit. :)

Der Rechner bekommt eine zweite Netzwerkkarte und ist dann sowohl im internen als auch im externen Netz (62.x), deshalb meine Routingfrage.
Die Sicherheit von mySQL löse ich über Compress, SSL und X509 (zumindest für die externe Schnittstelle).
Portmap hätte ich gerne noch weg, ich suche also immer noch, woran es liegt.

In meinem rc2.d Verzeichnis findet sich nur noch:
S10sysklogd, S11klogd, S17mysql-ndb-mgm, S18mysql-ndb, S19mysql, S20acpid, S20makedev, S89atd, S89cron, S99rc.local, S99rmnologin, S99stop-bootlogd

Und aufgrund der Beschreibungen kann ich mir eigentlich nicht vorstellen das irgendetwas von denen den Dienst startet.

Was wird sonst noch alles beim Systemstart abgearbeitet? Könnte da etwas dabei sein?
"atd" ist mir weiterhin nicht wirklich ein Begriff.
Cron für Logrotate macht wirklich Sinn, Mail brauch ich nicht.
Ist das Purgen von Portmap ein Problem? Ich habe mal "apt-cache show portmap" gemacht, fand aber nichts über irgendwelche Abhängigkeiten.

Grüße
Novos

Benutzeravatar
Simmel
Beiträge: 698
Registriert: 08.03.2004 14:43:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Simmel » 05.02.2008 09:41:13

Novos hat geschrieben:Ok, vielen Dank soweit. :)

"atd" ist mir weiterhin nicht wirklich ein Begriff.

Grüße
Novos
Den at kannste auch lassen. Wenn dein Scheffe Geburtstag ahst und du willst das nicht vergessen kannst du den at füttern damit er dir ne Mail schreibt. Das macht er allerdings nur einmal (im Gegensatz zum cron der dafür da ist bestimmte Dinge immer in bestimmten wiederkehrenden Abständen zu erledigen).

Kannste drin lassen..
you've got to know how far to go in going too far

perl -le'print+(split//,"schaeuble")[6,8,7,3,5,0..2,4]'

http://creativecommons.org/licenses/by-nc-sa/2.0/

Novos
Beiträge: 12
Registriert: 04.02.2008 09:15:38

Beitrag von Novos » 05.02.2008 09:46:11

ah, ok, ich hätte ja mal an das at zu Doszeiten denken können und ein d für daemon setzen können...
Danke :)

Achja, mir ist gerade aufgefallen, das Portmap schon vor dem init:2 aufgerufen wird.

goecke
Beiträge: 289
Registriert: 12.01.2007 11:57:27

Beitrag von goecke » 05.02.2008 10:29:10

Novos hat geschrieben: Cron für Logrotate macht wirklich Sinn, Mail brauch ich nicht.
ist schon irgendwie sinnvoll, wenn du über probleme informiert wirst,
aber wenn du den Rechner "Im Auge" behältst kannst du ggf. darauf verzichten.

Ist das Purgen von Portmap ein Problem? Ich habe mal "apt-cache show portmap" gemacht, fand aber nichts über irgendwelche Abhängigkeiten.

Grüße
Novos
Warscheinlich nein.

Wenn du dein paket "removen" oder "purgen" willst, fragt aptitude nach, ob du
wirklich dies oder jenes Paket auch löschen willst. Dann kannst du immer noch abbrechen
und mit "apt-cache show ..." Dir anzeigen lassen wozu das Paket gut ist.
Wenn bei Portmap nichts angezeigt wird, kannst du es löschen.

Bei "apt-cache show portmap" siehst du bei "depends" alle pakete von denen portmap abhängt,
die Info ist (fürs löschen) nicht relevant.

Tip1 :

im Paket "apt-rdepends"

ein "apt-rdepends -p -r portmap"
erzeugt ein listing mit allem was von portmap abhängt (incl Status installiert ja / nein)

Tip2 :

dpkg -S /usr/sbin/atd
gibt das Paket aus, in dem sich atd befindet


Gruß
Johannes

Novos
Beiträge: 12
Registriert: 04.02.2008 09:15:38

Beitrag von Novos » 05.02.2008 13:37:08

Ok,

ich hab alles durch gechecked und Portman entfernt (es waren nur Abhängikeiten von sowieso nicht benötigtem und bereits deaktivierten Diensten vorhanden)

sowohl netstat als auch mein Portscan liefern mir nun das Ergebnis das ich auch sehen wollte :)

Vielen Dank für eure Hilfe, vor allem dir goecke :)

Novos

Antworten