Ο ανεξερεύνητος κόσμος των Exchange 2007 Logs ( Μέρος 1ο )
Αναζητώντας λύση σε ένα πρόβλημα που είχε ο φίλτατος Blackman με τον Exchange του συνειδητοποίησα πόσο σημαντική μπορεί να είναι η συλλογή των log files και η ανάλυση τους. Η Microsoft το 2005 κυκλοφόρησε το SQL Server 2000 Report Pack for Microsoft Exchange, μια lite έκδοση του Exchange Reporter της SSW.
Εναλλακτικά υπήρχε ο Microsoft Operations Manager (MOM) 2005 μαζί με το Exchange Server Management Pack που έκαναν καταπληκτική δουλειά. Δυστυχώς το επόμενο Management Pack για τον System Center Operations Manager (SCOM) 2007 μας στέρησε κάποιες απο τις δυνατότητες που είχαμε το 2005.Ευτυχώς με το Microsoft Exchange Server 2007 Management Pack for System Center Operations Manager 2007 R2 οι ελλείψεις αυτές διορθώθηκαν .
Πριν προχωρήσουμε όμως ας δούμε που αποθηκεύονται και ποιά είναι τα Exchange Server Logs:
Log | Default Path |
Protocol Logs (SMTP Send) | \Exchange Server\TransportRoles\Logs\ProtocolLog\SmtpSend |
Protocol Logs (SMTP Receive) | \Exchange Server\TransportRoles\Logs\ProtocolLog\SmtpReceive |
Agent Logs | \Exchange Server\TransportRoles\Logs\AgentLog |
IIS Logs | [Windows 2003] \Windows\System32\LogFiles\W3SVC1 [Windows 2008] \Inetpub\Logs\LogFiles\W3SVC1 |
Message Tracking Logs | \Exchange Server\TransportRoles\Logs\MessageTracking |
POP3/IMAP Logs | \Exchange Server\ClientAccess\PopImap |
Connectivity Logs | \Exchange Server\TransportRoles\Logs\Connectivity |
Pipeline Tracing Logs | \Exchange Server\Transport Roles\Logs\PipelineTracing |
Routing Table Logs | \Exchange Server\TransportRoles\Logs\Routing |
MRM Logs | \Exchange Server\Logging\Managed Folder Assistant |
Βέβαια για να υπάρχουν logs πρέπει να υπάρχει σωστά ρυθμισμένο logging level και καθώς όλα τα logs δεν είναι ενεργοποιημένα εξορισμού χρειάζεται να τα ενεργοποιήσουμε όπως και να ορίσουμε το βάθος χρόνου που θα συλλέγονται .
Τα μόνα Logs που ενεργοποιούνται εξορισμού είναι τα SMTP Send και SMTP Receive το logging level των οποίων ελέγχεται στο επίπεδο του Exchange connector.
Βέβαια πρέπει να έχουμε θπόψην μας ότι τα σημαντικότερα Logs προέρχονται απο τους Exchange της περιμέτρου του δικτύου μας καθώς κάνουν register τα SMTP transactions απο τα mail που έρχονται ή φεύγουν απο το organization. Σε περίπτωση ύπαρξης Edge transport server τα logs μπορούν να ρυθμιστούν απο τον internal Hub Transport server (Αν προσπαθήσουμε να το κάνουμε απο τον connector στον Edge server, θα έχουμε αυτό
Για να ενεργοποιήσουμε τα SMTP Protocol Logs στους EdgeSync Send Connectors, στην Exchange Management Console, στο Organization Configuration, επιλέγουμε Hub Transport και μετά με δεξί κλίκ στους Send Connectors επιλέγουμε Properties
Στον EdgeSync Connector αλλάζουμε το Protocol logging level σε Verbose
Για τους σκληροπυρηνικούς που πρτοτιμούν PowerShell:
Set-SendConnector "EdgeSync - Inbound to Default-First-Site-Name" -ProtocolLoggingLevel Verbose
Αφού όλα ενεργοποιηθούν πρέπει να ορίσουμε και το μέγεθος τους. Ο Exchange Server μας επιτρέπει να ορίσουμε το maximum log file size, το maximum directory size και το maximum age των log files, με την χρήση της Set-TransportServer PowerShell cmdlet.
Οι SendProtocolLogMaxDirectorySize και ReceiveProtocolLogMaxDirectorySize παράμετροι ορίζουν το maximum size των Send και Receive Connector Protocol Log directories. Όταν αυτό ξεπεραστεί τότε ο server σβήνει τα παλιότερα. Η ελάχιστη τιμή είναι 1 MB, ενώ η default είναι 250 MB.
Αλλά επειδή 250MB δεν είναι αρκετά ας τα κάνουμε 2GB για το Send Connector directory και 4GB για το Receive connector:
Set-TransportServer -Identity E2K7EDGE -SendProtocolLogMaxDirectorySize 2048MB -ReceiveProtocolLogMaxDirectorySize 4096MB
Τώρα για να μπορέσουμε να πάρουμε τα ωραία πραγματάκια που θα δούμε παρακάτω θα χρησιμοποιήσουμε το Log Parser. Το εργαλειάκι αυτό μας δίνει universal query access σε text-based data όπως log files, XML files και CSV files, όπως επίσης και key data sources των Windows όπως το Event Log, η Registry, το file system η ακόμα και το Active Directory. Το καλύτερο όμως είναι οτι τα αποτελέσματα των queries μπορούν να γίνουν datagrids ή ακόμα καλύτερα visual charts.
Ακόμα ένα καλό είναι οτι δεν χρειαζεται να γίνει εγκατάσταση επάνω στον Exchange απλά πρέπει να έχει πρόσβαση στα logs.
Για την εγκατάσταση χρειαζόμαστε τα εξής:
- Το Microsoft Logparser 2.2.
- Το Office 2003 Add-in: Office Web Components.
- Και τέλος το Microsoft Office 2003 Web Components Service Pack 1 (SP1) for the 2007 Microsoft Office System.
Το Log Parser έχει ένα επεξηγηματικότατο help file που βρίσκεται στο C:\Program Files (x86)\Log Parser 2.2 επίσης έχει κάποια έτοιμα παραδείγματα στο C:\Program Files (x86)\Log Parser 2.2\Samples.
Εάν χρησιμοποιείται Exchange Server anti-spam agents υπάρχουν κάποια reports που μπορούμε να πάρουμε αναλύοντας τα Logs τους.Αυτά βρίσκονται είτε στον Exchange Edge server είτε στον Exchange Hub server.
Για να πάρουμε μια αρχική ιδέα του τι μπαίνει΄στο organization ας δούμε μια κατάταξη με βάση το Spam Confidence Level (SCL) .
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT ReasonData, count(*) AS hits FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\AgentLog\AGENT*.log WHERE ReasonData<>NULL GROUP BY ReasonData ORDER BY hits DESC" -i:CSV -nSkipLines:4 -o:DATAGRID -dtlines:800 -rtp:-1 |
Αν προτιμούμε το προηγούμενο σε μορφή πίτας προσθέτουμε το –chartType:PieExplode3D
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT CASE TO_INT(ReasonData) WHEN NULL THEN 0 ELSE TO_INT(ReasonData) END AS ReasonData2, count(*) AS hits INTO agentreasonspread.gif from C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\AgentLog\AGENT*.log GROUP BY ReasonData2 ORDER BY hits DESC" -i:CSV -nSkipLines:4 -o:CHART -chartType:PieExploded3D -chartTitle:"Agent Reason Spread" -e 200 -dtlines:600 |
Όπως ξέρουμε τα επίπεδα του SCL είναι από 1 μέχρι 9.Αν παρατηρήσουμε όμως τα screenshots θα δούμε ότι υπάρχει και η τιμή 0. Αυτή αντιπροσωπεύει τα “policy is disabled” και “content filtering was bypassed” δηλαδή τα mail που εισήλθαν στο organization.
Και επειδή αυτό μπορεί να μας μπερδέψει ας δούμε απλά τα accepted και rejected mail. Εδώ να υπενθυμίσουμε ότι τα mail με SCL rating 8 ή παραπάνω θεωρούνται rejected, τα SCL 7 θεωρούνται , και όλα τα υπόλοιπα θεωρούνται accepted.
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT CASE TO_INT(ReasonData) WHEN 9 THEN 'REJECTED' WHEN 8 THEN 'REJECTED' WHEN 7 THEN 'QUARANTINED' ELSE 'ACCEPTED' END AS ReasonData2, TO_INT(mul(100.0,PropCount(*))) as Percent, count(*) as hits INTO agentAcceptedRejected.gif FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\AgentLog\AGENT*.log GROUP BY ReasonData2 ORDER BY hits DESC" -i:CSV -nSkipLines:4 -o:CHART -chartType:PieExploded3D -chartTitle:"%% Accepted/Rejected mail" -dtlines:600 -categories:OFF -values:ON -view:ON |
Ας χρησιμοποιήσουμε τώρα και τα SMTP Protocol Logs. Από αυτά μπορούμε να εξάγουμε πληροφορίες για τα SMTP connections και για τους hosts.
Για να πάρουμε μια εικόνα των Total Inbound Simultaneous Connections:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT QUANTIZE(TO_TIMESTAMP (EXTRACT_PREFIX(TO_STRING(EXTRACT_SUFFIX([#Fields: date-time],0,'T')),0,'.'), 'hh:mm:ss'),3600) AS Hour, COUNT(*) AS Hits INTO radar_traffic.gif FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\ProtocolLog\SmtpReceive\RECV*.LOG WHERE event='+' GROUP BY Hour ORDER BY Hour ASC" -i:CSV -nSkipLines:4 -o:CHART -charttype:RadarLineFilled -charttitle:" Global total SMTP inbound simultaneous connections per hours" |
Αντίστοιχα για τα outbound connections:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT QUANTIZE(TO_TIMESTAMP (EXTRACT_PREFIX(TO_STRING(EXTRACT_SUFFIX([#Fields: date-time],0,'T')),0,'.'), 'hh:mm:ss'),3600) AS Hour, COUNT(*) AS Hits INTO radar_traffic_send.gif FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\ProtocolLog\SmtpSend\SEND*.LOG WHERE event='+' GROUP BY Hour ORDER BY Hour ASC" -i:CSV -nSkipLines:4 -o:CHART -charttype:RadarLineFilled -charttitle:" Global total SMTP outbound simultaneous connections per hours" |
Η επόμενη εντολή αναλύει τους suspicious senders. Για να το πετύχει αυτό κάνει extract από τα SMTP Receive Log όλους τους hosts με status code 500 και πάνω:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT EXTRACT_PREFIX(remote-endpoint,0,':') AS Remote-host, count (*) AS hits INTO SuspiciousSenders.xml FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\ProtocolLog\SmtpReceive\RECV*.log WHERE TO_INT(SUBSTR(DATA,0,3)) > 500 AND event = '>' GROUP BY Remote-host ORDER BY hits DESC" -i:CSV -nSkipLines:4 -o:XML "C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 REVERSEDNS(Remote-host), hits FROM SuspiciousSenders.xml" -i:XML -o:DATAGRID |
Προσέξτε ότι υπάρχει και ένας internal host Αυτλος είναι είτε internal application server είτε authorized internal mail relay.
Ας δούμε και τα Top Outbound Rejection Errors για να δούμε μήπως ο server μας είναι blacklisted πουθενά:
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT CASE TO_INT( SUBSTR(DATA,0,3)) when NULL then 0 else TO_INT( SUBSTR(DATA,0,3)) END AS RemoteHostReturnCode, data, count (*) AS hits FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\ProtocolLog\SmtpSend\SEND*.log WHERE RemoteHostReturnCode > 400 AND context <> 'Certificate thumbprint' AND context <> 'sending message' GROUP BY RemoteHostReturnCode, data ORDER BY hits DESC" -i:CSV -nSkipLines:4 -o:DATAGRID |
Και τώρα μια απο τις ποιο επιθυμητές αναφορές: ΟΙ top sender hosts :
"C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 EXTRACT_PREFIX(remote-endpoint,0,':') AS RemoteSendingHost, count(*) AS Hits INTO topsenders.xml FROM C:\Progra~1\Microsoft\Exchan~1\TransportRoles\Logs\ProtocolLog\SmtpReceive\RECV*.LOG WHERE event='+' GROUP BY RemoteSendingHost ORDER BY Hits DESC" -i:CSV -nSkipLines:4 -o:XML "C:\Program Files (x86)\Log Parser 2.2\logparser.exe" "SELECT TOP 10 REVERSEDNS(RemoteSendinghost), Hits INTO topsenders.gif FROM TopSenders.xml" -i:XML -o:CHART -chartType:PieExploded3D -chartTitle:"TOP 10 Senders" -groupSize:1024x768 |
Η συναρπαστική συνέχεια στο 2ο μέρος...
1 Comment
Recommended Comments