Protokollierungsmöglichkeit wer sich von wo angemeldet hat

Diskussionen über Anwenderwünsche und deren Sinn oder Unsinn für die Allgemeinheit

Moderator: SYNERPY

Antworten
Gast

Protokollierungsmöglichkeit wer sich von wo angemeldet hat

Beitrag von Gast »

Hallo,

vielleicht gibt es sie schon, aber wir würden uns eine Möglichkeit wünschen, mit der sich protokollieren ließe welcher Benutzername sich wann von welcher IP-Adresse (oder MAC-Adresse) aus angemeldet hat, oder sogar auch wer sich angemeldet hat und wo Anmeldungen fehlgeschlagen sind.

Hintergrund ist der Missbrauch von Anmeldenamen in unserem AvERP um Fähigkeiten eines Benutzernamens auszunutzen die der eigene nicht bietet... was natürlich absolut unerwünscht ist und hart geahndet wird.
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Wir protokollieren derzeit nur die Daten in A_AKTIVUSER. In FB2.x werden die anderen genannten Parameter automatisch in den Systemtabellen von FB gespeichert. Wir machen das derzeit allerdings nicht.
Gast

Beitrag von Gast »

Also wir setzen ja FB 2.1 ein, aber ich kann im IBExpert keine Systemtabelle finden, die die entsprechenden Werte bereit stellt. Auf der Firebirdhomepage habe ich einen Hinweis darauf gefunden, wie man Loginversuche schon damals bei Interbase loggen konnte, dort scheint aber nicht der Ursprung des Logins aufgezeichnet zu werden.
Oder meinten Sie, dass die Daten schon jetzt von Anfang an, ohne Änderung, geloggt werden, ich sie nur nicht finden konnte?
admin
Site Admin
Beiträge: 2673
Registriert: Di Feb 10, 2004 5:48 am
Wohnort: Bayreuth

Beitrag von admin »

Ich habe gerade keine FB2.x-Installation zur Hand, um die genauen Tabellen abzufragen, aber über Context-Variablen müsste es auch gehen:

Code: Alles auswählen


select rdb$get_context('SYSTEM', 'NETWORK_PROTOCOL') as protocol,
       rdb$get_context('SYSTEM', 'CLIENT_ADDRESS') as client_address from rdb$database;
ibexpert

Beitrag von ibexpert »

hoFFy hat geschrieben:Also wir setzen ja FB 2.1 ein, aber ich kann im IBExpert keine Systemtabelle finden, die die entsprechenden Werte bereit stellt. Auf der Firebirdhomepage habe ich einen Hinweis darauf gefunden, wie man Loginversuche schon damals bei Interbase loggen konnte, dort scheint aber nicht der Ursprung des Logins aufgezeichnet zu werden.
Oder meinten Sie, dass die Daten schon jetzt von Anfang an, ohne Änderung, geloggt werden, ich sie nur nicht finden konnte?
einfach mal in der DB einen neuen Trigger mit rechtsklick auf den Trigger eintrag im Explorer machen und dann oben auf database trigger umschalten.

http://www.ibexpert.net/ibe/index.php?n ... iggerTypes

Im OnConnect bekommt man das passende event. Dann z.B. über die Context variablen oder über die Inhalte der Tabelle mon$attachments suchen mit current_connection und das in eine eigenen Tabelle schreiben.

Gruß

Holger
www.ibexpert.com
Gast

Beitrag von Gast »

Okay, dann muss ich wohl warten bis unser Programmierer wieder im Hause ist, denn um einen solchen Trigger zu erstellen fehlen mir schlichtweg, wie geschrieben, die Kenntnisse.
ibexpert

Beitrag von ibexpert »

hoFFy hat geschrieben:Okay, dann muss ich wohl warten bis unser Programmierer wieder im Hause ist, denn um einen solchen Trigger zu erstellen fehlen mir schlichtweg, wie geschrieben, die Kenntnisse.
Hi, Hoffy,

da gibt es zwei Lösungsmöglichkeiten:
1. warten
2. deine Kenntnisse erweitern :-) (machen wir auch gerne im Rahmen der Hotline)

zu 2.

im IBExpert script executive folgendes script ausführen

Code: Alles auswählen

/******************************************************************************/
/****              Generated by IBExpert 06.03.2010 09:46:09               ****/
/******************************************************************************/

/******************************************************************************/
/****     Following SET SQL DIALECT is just for the Database Comparer      ****/
/******************************************************************************/
SET SQL DIALECT 3;



/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/


CREATE GENERATOR ID;

CREATE TABLE IBE$LOGCONNECT (
    ID   BIGINT NOT NULL,
    USR  VARCHAR(30),
    PRG  VARCHAR(255),
    TME  TIMESTAMP,
    IP   VARCHAR(255)
);




/******************************************************************************/
/****                             Primary Keys                             ****/
/******************************************************************************/

ALTER TABLE IBE$LOGCONNECT ADD PRIMARY KEY (ID);


/******************************************************************************/
/****                               Triggers                               ****/
/******************************************************************************/


SET TERM ^ ;



/******************************************************************************/
/****                         Triggers for tables                          ****/
/******************************************************************************/



/* Trigger: IBE$LOGCONNECT_BI */
CREATE OR ALTER TRIGGER IBE$LOGCONNECT_BI FOR IBE$LOGCONNECT
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.ID IS NULL) THEN
    NEW.ID = GEN_ID(ID,1);
END
^


SET TERM ; ^



/******************************************************************************/
/****                              Privileges                              ****/
/******************************************************************************/


/* Privileges of users */
GRANT ALL ON IBE$LOGCONNECT TO PUBLIC;


SET TERM ^ ;



CREATE OR ALTER TRIGGER IBE$LOGCONNECT_I
ACTIVE ON CONNECT POSITION 0
AS
begin
  insert into IBE$LOGCONNECT (USR, PRG, TME, IP)
  select current_user,mon$attachments.mon$remote_process,current_timestamp,mon$attachments.mon$remote_address
  from mon$attachments
  where mon$attachments.mon$attachment_id=current_connection;
end
^


SET TERM ; ^
Gast

Beitrag von Gast »

ibexpert hat geschrieben:[...]
2. deine Kenntnisse erweitern :-) (machen wir auch gerne im Rahmen der Hotline)

zu 2.

im IBExpert script executive folgendes script ausführen [...]

Hallo,

das mit dem Script einspielen hat prima funktioniert, die Spalte "IP" liefert genau das was ich benötige. Nur hat die Sache einen Haken:
Auf dem einen Server wird die IP-Adresse korrekt angezeigt, auf dem anderen, dem Produktivsystem erhalte ich nur 0.0.0.0. Ich kann die Ursache jedoch nicht feststellen. Schon in mon$remote_address steht 0.0.0.0 drin.
Wir arbeiten mit zwei Netwerksegmenten 192.168.1.x und 192.168.2.x. Der Server verfügt über 2 Netzwerkkarten, jede für ein Netzwerksegment. Kann hier evtl. der Ursprung dafür liegen, dass die IP-Adressen nicht mit angegeben werden?

Der andere Server verfügt nur über eine Netzwerkkarte, er zeigt mir meine IP-Adresse wenn ich mich einlogge korrekt an.
Antworten