Entries tagged benutzer

MySQL Server absichern

Posted on 7. März 2012 Comments

Was bei einem Webhoster der Admin automatisch übernimmt, muss man bei einer Installation z.B. auf dem eigenen Homeserver selbst machen. Ich gehe hier von einem über Paketquellen installierten MySQL Server der Version 5.0.57 auf einem Apache der Version 2.2.10 unter SuSE Linux Enterprise Server(SLES) aus. Wer einigermaßen englisch spricht dem ist auch Kapitel 2.18.2. Securing the Initial MySQL Accounts der offiziellen MySQL Dokumentation empfohlen. Bevor man startet natürlich den MySQL Server starten.

Als allererstes sollte man Passwörter setzen, dazu loggt man sich ein:

mysql -u root

Dann bekommt man so eine shell:

 mysql>

Der Befehl um sich die Benutzer anzugucken ist:

SELECT User,Host,Password FROM mysql.user

Der beliebte SELECT * Befehl ist hier nicht zu empfehlen, da mysql.user wie man schön an

describe mysql.user;

merkt, 37 Spalten hat und somit auf den meisten Bildschirm die Konsole sprengt;-)
Hier sollte jetzt eigentlich nur der root-Benutzer(der alles kann) auftauchen und evtl. einige anonyme Accounts. Die bekommt man mit folgendem Befehl gelöscht:

DELETE FROM mysql.user WHERE User='' AND Password=''

Sollte man einen User hinzugefügt haben kann(Empfohlen! Nie den root User für Anwendungen nehmen), man mit folgendem Befehl die Rechte feststellen.

SHOW GRANTS FOR 'user'@'localhost'

Alternativ gehen die folgenden Befehle:

SELECT User,Select_priv,Insert_priv,Update_priv,Delete_priv FROM mysql.user;

Die entsprechenden Rechte aus DDL, DCL und DML kann man dem oben genannten describe Befehl entnehmen. Der User hatte bei mir standardmässig Rechte um von jedem Host aus zu verbinden. Dies wird durch den Wildcard % vermerkt, der sich bei in der Host Spalte vom User befindet. Möchte man die üblichen Web-Applikationen auf dem Server laufen lassen, z.B. CMS wie WordPress für Blogs oder Drupal für Websites, braucht man keine Verbindung von außerhalb sondern nur von localhost(dort liegen die PHP-Dateien von denen die Abfragen kommen, der User kann auf dem ganzen Internet zugreifen, bzw. das ist Sache des Apaches)

DELETE FROM mysql.user WHERE Host='%';

Jetzt kann es sein, dass der User oder auch root nur für einige Hosts ein Passwort hat. Deswegen sollte man für alle Hosts den folgenden Befehl ausführen:

 SET PASSWORD FOR 'root'@'HOST' = PASSWORD('newpwd');

Wenn man Initialisierungsanleitungen gefolgt ist hat man eventuell eine Datebank namens test. Dies lässt sich ganz einfach feststellen:

SHOW DATABASES;

Mit diesem drop-Befehl löscht man diese unnötige Datenbank:

DROP DATABASE test;

Daneben gibts es noch die eben benutze mysql und die information_schema Datenbank, die man nicht löschen sollte.

Ein weiterer Tweak ist, den Benutzernamen von root zu ändern, um automatisierten brute-force Attacken auf das root Passwort aus dem Weg zu gehen:

UPDATE mysql.user SET User='myNameForRoot' WHERE User='root';

Zum Reload der ganzen Berechtigungen, z.B. nach Anlegen eines neuen Users muss man mit folgendem Befehl die Rechte neu einlesen

FLUSH PRIVILEGES;

Ausserdem gibt es noch die Möglichkeit mysqld in einer chroot Umgebung laufen zu lassen, dazu vielleicht später mehr.
Quellen

  • www.pantz.org/software/mysql/mysqlcommands.html
  • http://dev.mysql.com/doc/refman/5.1/de/delete.html
  • http://dev.mysql.com/doc/refman/4.1/en/adding-users.html
  • http://dev.mysql.com/doc/refman/5.0/en/default-privileges.html

Standarddrucker von anderen Benutzern aendern

Posted on 12. September 2011 Comments

Drucker von anderen Usern zu ändern ist ja garnicht mal das Problem, man muss sich halt nur bei jedem User einzeln anmelden und den Drucker per Hand umstellen. Per Skript gibt es 2 Möglichkeiten: über rundll32 oder über die Registry.

1. rundll32-Methode (Danke an daedalus von administrator.de)

rundll32 printui.dll,PrintUIEntry /y /n "Druckername"

Einfach diesen Befehl in eine Textdatei schreiben und als .bat speichern. Das /n ist der Parameter für den Namen, der danach folgen muss, das /y heisst, dieser Drucker soll als Standarddrucker gesetzt werden. Das ist meiner Meinung nach die einfacherere Methode. Wenn der Druckername keine Leerzeichen enthält, können die Anführungszeichen auch weggelassen werden.

2. Registry-Methode (Danke an Micheal von Windows FAQ)

Da ist natürlich noch viel umständlicher ist in der Registry rumzupulen als den Drucker mal eben anzuklicken, kann man ein .reg-Skript schreiben dass den folgenden Inhalt hat:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Sofrware\Microsoft\Windows NT\CurrentVersion\Windows]"Device"="Standarddrucker,winspool,lpt01:"

Dabei steht der erste Wert für den Druckernamen, winspool ist die dll die für das Drucken zuständig ist und dann der Anschluss, wobei LPT: für Lokale und Ne: für Netzwerkdrucker und Software Drucker(z.B. PDF Generator) verwendet wird.

Um jetzt vom Adminstrator aus die Drucker zu ändern, kann man per runas die eben genannten Skripte starten, s. auch

runas /?

Aufrufe:

runas /user:username "C:\pfad\rundllskript.bat"

bzw.

runas /user:username "C:\pfad\registryskript.reg"

Ein Problem ergibt sich, wenn der User kein Passwort hat, da runas standardmässig, ausser bei Windows 2000, keine leeren Passwörter akzeptiert. Wenn man allerdings den Registry-Eintrag LimitBlankPasswordUse im Ordner HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa aus 0 ändert, ist auch das kein Problem mehr.(Tip aus der c’t 1/06)