Hoe maak je een gecentraliseerde Log Server met Rsyslog in CentOS / RHEL 7

om ervoor te zorgen dat de systeembeheerder een probleem op een CentOS 7-of RHEL 7-serversysteem kan identificeren of oplossen, moet hij de gebeurtenissen kennen en bekijken die op het systeem zijn gebeurd in een specifieke periode van tijd uit logbestanden die zijn opgeslagen in het systeem in de map /var/log.

de syslog-server op een Linux-machine kan fungeren als een centraal controlepunt over een netwerk waar alle servers, netwerkapparaten, routers, switches en de meeste van hun interne diensten die logs genereren, of het nu gaat om specifieke interne problemen of alleen informatieve berichten, hun logs kunnen verzenden.

op een CentOS/RHEL 7-systeem is de Rsyslog-daemon de voorgeïnstalleerde hoofdlogserver, gevolgd door Systemd Journal-Daemon (journald).

Rsyslog-server in build als een client / server-architectuurservice en kan beide rollen gelijktijdig bereiken. Het kan worden uitgevoerd als een server en het verzamelen van alle logboeken verzonden door andere apparaten in het netwerk of het kan worden uitgevoerd als een client door het verzenden van alle interne systeemgebeurtenissen geregistreerd naar een externe endpoint syslog-server.

als rsyslog is geconfigureerd als een client, kunnen de logs lokaal worden opgeslagen in bestanden op het lokale bestandssysteem of kunnen ze op afstand worden verzonden in plaats van ze in bestanden op de machine te schrijven of gebeurtenissen logbestanden lokaal te schrijven en ze tegelijkertijd naar een externe syslog-server te sturen.

Syslog-server gebruikt elk logboekbericht met behulp van het volgende schema:

type (facility).priority (severity) destination(where to send the log)

A. De faciliteit-of typegegevens worden weergegeven door de interne systeemprocessen die de berichten genereren. In Linux zijn interne processen (faciliteiten) die logs genereren als volgt gestandaardiseerd:

  • auth = berichten gegenereerd door authenticatie processen (login).
  • cron = berichten gegenereerd door geplande processen (crontab).
  • daemon = berichten gegenereerd door daemons (interne diensten).
  • kernel = berichten gegenereerd door de Linux Kernel zelf.
  • mail = berichten gegenereerd door een mailserver.
  • syslog = berichten gegenereerd door de rsyslog-daemon zelf.
  • LPR = berichten gegenereerd door lokale printers of een afdrukserver.
  • local0-local7 = aangepaste berichten gedefinieerd door een beheerder (local7 wordt meestal toegewezen voor Cisco of Windows).

B. Ook de prioriteitsniveaus (ernst) zijn gestandaardiseerd. Elke prioriteit wordt voorzien van een standaard afkorting en een nummer zoals hieronder beschreven. De 7e prioriteit is het hogere niveau van iedereen.

  • emerg = Emergency-0
  • alert = Alerts-1
  • err = fouten-3
  • warn = Warnings-4
  • notice = Notification-5
  • info = Information-6
  • debug = Debugging– 7

speciale rsyslog trefwoorden:

  • * = alle faciliteiten of prioriteiten
  • geen = de faciliteiten hebben geen bepaalde prioriteiten, bijv. post.geen

C. Het derde deel voor het syslog-schema wordt weergegeven door de bestemmingsrichtlijn. De rsyslog-daemon kan logberichten verzenden om te worden geschreven in een bestand op het lokale bestandssysteem (meestal in een bestand in /var/log/ map) of om naar een ander lokaal proces te worden doorgesluisd of om naar een lokale gebruikersconsole te worden verzonden (naar stdout), of om het bericht naar een externe syslog-server te sturen via het TCP/UDP-protocol, of zelfs om het bericht te verwerpen naar /dev/null.

om CentOS/RHEL 7 te configureren als een centrale logserver, moeten we eerst controleren en er zeker van zijn dat de /var partitie waar alle logbestanden worden opgeslagen groot genoeg is (een paar GB minimum) om alle logbestanden op te slaan die door andere apparaten worden verzonden. Het is een goede beslissing om een aparte schijf te gebruiken (LVM, RAID) om de /var/log/ directory te mounten.

vereisten

  1. CentOS 7.3 installatieprocedure
  2. RHEL 7.3 installatieprocedure

rsyslog configureren in CentOS / RHEL 7 Server

1. Standaard wordt de rsyslog-service automatisch geïnstalleerd en moet deze worden uitgevoerd in CentOS / RHEL 7. Om te controleren of de daemon in het systeem is gestart, geef je het volgende commando met root rechten.

# systemctl status rsyslog.service
Controleer Rsyslog Service
Controleer Rsyslog Service

als de service niet standaard draait, voert u het onderstaande commando uit om de rsyslog-daemon te starten.

# systemctl start rsyslog.service

2. Als het rsyslog-pakket niet is geïnstalleerd op het systeem dat u wilt gebruiken als een gecentraliseerde logserver, voer dan het volgende commando uit om het rsyslog-pakket te installeren.

# yum install rsyslog

3. De eerste stap die we op het systeem moeten doen om de rsyslog daemon te configureren als een gecentraliseerde logserver, zodat deze logberichten voor externe clients kan ontvangen, is het openen en bewerken, met behulp van uw favoriete teksteditor, van het hoofdconfiguratiebestand van /etc/rsyslog.conf, zoals weergegeven in het onderstaande uittreksel.

# vi /etc/rsyslog.conf

in het hoofdconfiguratiebestand van rsyslog, zoek en verwijder commentaar op de volgende regels (verwijder het hashtag # – teken aan het begin van de regel) om UDP-transportontvangst naar de rsyslog-server te bieden via de poort 514. UDP is het standaardprotocol dat wordt gebruikt voor de overdracht van logboeken door Rsyslog.

$ModLoad imudp $UDPServerRun 514
Rsyslog-Server
Rsyslog-Server Configureren

4. UDP protocol heeft niet de TCP overhead, waardoor het sneller voor het verzenden van gegevens dan TCP protocol. Aan de andere kant garandeert het UDP-protocol de betrouwbaarheid van de verzonden gegevens niet.

echter, als u TCP-protocol wilt gebruiken voor logontvangst, moet u de volgende regels uit /etc/rsyslog zoeken en verwijderen.conf bestand om rsyslog daemon te configureren om een TCP socket op 514 poort te binden en te beluisteren. TCP-en UDP-luistersockets voor ontvangst kunnen tegelijkertijd op een rsyslog-server worden geconfigureerd.

$ModLoad imtcp $InputTCPServerRun 514 

5. In de volgende stap, sluit het bestand nog niet, maak een nieuwe sjabloon die zal worden gebruikt voor het ontvangen van berichten op afstand. Dit sjabloon zal de lokale rsyslog-server instrueren waar de ontvangen berichten die door syslog-netwerkclients worden verzonden, moeten worden opgeslagen. De sjabloon moet worden toegevoegd vóór het begin van het blok GLOBAL DIRECTIVES zoals weergegeven in het onderstaande uittreksel.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" . ?RemoteLogs & ~
Maak Rsyslog Sjabloon
Maak Rsyslog Sjabloon

De bovenstaande $template RemoteLogs richtlijn geeft Rsyslog daemon te verzamelen en schrijven van de ontvangen worden log boodschappen naar verschillende bestanden, gebaseerd op de client machine naam en externe client installatie (toepassing) die de berichten op basis van de gedefinieerde eigenschappen presenteert in de sjabloon configuratie: %HOSTNAAM% en %PROGRAMMANAAM%.

al deze logbestanden zullen naar het lokale bestandssysteem worden geschreven naar een speciaal bestand dat vernoemd is naar de hostnaam van de clientcomputer en opgeslagen worden in /var/log/ map.

de & ~ redirect regel instrueert de lokale rsyslog server om verder te stoppen met het verwerken van het ontvangen Logbericht en de berichten te verwerpen (niet naar interne logbestanden schrijven).

de RemoteLogs-naam is een willekeurige naam die aan deze template-richtlijn wordt gegeven. U kunt de naam gebruiken die het meest geschikt is voor uw sjabloon.

gebruik het onderstaande fragment om alle ontvangen berichten van clients te schrijven in een enkel logbestand dat vernoemd is naar het IP-adres van de externe client, zonder de faciliteit te filteren die het bericht heeft gegenereerd.

$template FromIp,"/var/log/%FROMHOST-IP%.log" . ?FromIp & ~ 

een ander voorbeeld van een sjabloon waarin alle berichten met auth-faciliteitvlag worden gelogd naar een sjabloon met de naam “TmplAuth”.

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" authpriv.* ?TmplAuth

hieronder staat een uittreksel van een sjabloondefinitie van de rsyslog 7-server:

template(name="TmplMsg" type="string" string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" )

het bovenstaande sjabloon uittreksel kan ook worden geschreven als:

template(name="TmplMsg" type="list") { constant(value="/var/log/remote/msg/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") }

om complexe rsyslog-sjablonen te schrijven, leest u de handleiding voor het configuratiebestand van Rsyslog door man rsyslog uit te geven.conf commando of raadpleeg rsyslog online documentatie.

6. Nadat u het rsyslog configuratiebestand hebt bewerkt met uw eigen instellingen zoals hierboven uitgelegd, herstart u de rsyslog daemon om wijzigingen toe te passen door het volgende commando uit te voeren:

# service rsyslog restart

7. Inmiddels moet de rsyslog-server zijn geconfigureerd om een gecentraliseerde logserver op te treden en berichten van syslog-clients op te nemen. Om rsyslog netwerk sockets te verifiëren, voer je netstat commando uit met root privileges en gebruik je grep om rsyslog string te filteren.

# netstat -tulpn | grep rsyslog 
Rsyslog-Netwerksocket
Rsyslog-Netwerksocket Verifiëren

8. Als je SELinux ingeschakeld hebt in CentOS/RHEL 7, Voer het volgende commando uit om SELinux te configureren om rsyslog verkeer toe te staan afhankelijk van het netwerk socket type.

# semanage -a -t syslogd_port_t -p udp 514# semanage -a -t syslogd_port_t -p tcp 514 

9. Als de firewall is ingeschakeld en actief, voer je het onderstaande commando uit om de nodige regels toe te voegen voor het openen van rsyslog poorten in Firewalld.

# firewall-cmd --permanent --add-port=514/tcp# firewall-cmd --permanent --add-port=514/udp# firewall-cmd –reload

dat is alles! Rsyslog is nu geconfigureerd in de servermodus en kan logs centraliseren van externe clients. In het volgende artikel, zullen we zien hoe u rsyslog client configureren op CentOS/RHEL 7 server.

met behulp van de Rsyslog-server als centraal controlepunt voor logberichten op afstand kunt u logbestanden inspecteren en de statusstatus van de clients observeren of problemen met de client debuggen wanneer systemen crashen of worden aangevallen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.