గతం లో
కోర్సు ELK స్టాక్ యొక్క ఇన్స్టాలేషన్ను కవర్ చేయదు, ఎందుకంటే ఈ అంశంపై పెద్ద సంఖ్యలో కథనాలు ఉన్నాయి; మేము కాన్ఫిగరేషన్ భాగాన్ని పరిశీలిస్తాము.
లాగ్స్టాష్ కాన్ఫిగరేషన్ కోసం ఒక కార్యాచరణ ప్రణాళికను రూపొందిద్దాం:
- సాగే శోధన లాగ్లను అంగీకరిస్తుందని తనిఖీ చేయడం (పోర్ట్ యొక్క కార్యాచరణ మరియు బహిరంగతను తనిఖీ చేయడం).
- మేము లాగ్స్టాష్కి ఈవెంట్లను ఎలా పంపవచ్చో, ఒక పద్ధతిని ఎంచుకుని, దాన్ని ఎలా అమలు చేయాలో పరిశీలిస్తాము.
- మేము లాగ్స్టాష్ కాన్ఫిగరేషన్ ఫైల్లో ఇన్పుట్ని కాన్ఫిగర్ చేస్తాము.
- లాగ్ సందేశం ఎలా ఉందో అర్థం చేసుకోవడానికి మేము లాగ్స్టాష్ కాన్ఫిగరేషన్ ఫైల్లో అవుట్పుట్ను డీబగ్ మోడ్లో కాన్ఫిగర్ చేస్తాము.
- ఫిల్టర్ని సెటప్ చేస్తోంది.
- ఎలాస్టిక్ సెర్చ్లో సరైన అవుట్పుట్ని సెటప్ చేస్తోంది.
- లాగ్స్టాష్ ప్రారంభించబడింది.
- కిబానాలో లాగ్లను తనిఖీ చేస్తోంది.
ప్రతి పాయింట్ను మరింత వివరంగా పరిశీలిద్దాం:
సాగే శోధనను తనిఖీ చేయడం లాగ్లను అంగీకరిస్తుంది
దీన్ని చేయడానికి, మీరు లాగ్స్టాష్ అమలు చేయబడిన సిస్టమ్ నుండి సాగే శోధనకు ప్రాప్యతను తనిఖీ చేయడానికి కర్ల్ ఆదేశాన్ని ఉపయోగించవచ్చు. మీరు ప్రామాణీకరణను కాన్ఫిగర్ చేసి ఉంటే, మేము వినియోగదారు/పాస్వర్డ్ను కర్ల్ ద్వారా బదిలీ చేస్తాము, మీరు దానిని మార్చకుంటే పోర్ట్ 9200ని పేర్కొంటాము. మీరు దిగువన ఉన్న ప్రతిస్పందనకు సమానమైన ప్రతిస్పందనను స్వీకరిస్తే, ప్రతిదీ క్రమంలో ఉంటుంది.
[elastic@elasticsearch ~]$ curl -u <<user_name>> : <<password>> -sS -XGET "<<ip_address_elasticsearch>>:9200"
{
"name" : "elastic-1",
"cluster_name" : "project",
"cluster_uuid" : "sQzjTTuCR8q4ZO6DrEis0A",
"version" : {
"number" : "7.4.1",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "fc0eeb6e2c25915d63d871d344e3d0b45ea0ea1e",
"build_date" : "2019-10-22T17:16:35.176724Z",
"build_snapshot" : false,
"lucene_version" : "8.2.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
[elastic@elasticsearch ~]$
ప్రతిస్పందన అందకపోతే, అప్పుడు అనేక రకాల లోపాలు ఉండవచ్చు: సాగే శోధన ప్రక్రియ అమలులో లేదు, తప్పు పోర్ట్ పేర్కొనబడింది లేదా elasticsearch ఇన్స్టాల్ చేయబడిన సర్వర్లోని ఫైర్వాల్ ద్వారా పోర్ట్ బ్లాక్ చేయబడింది.
చెక్ పాయింట్ ఫైర్వాల్ నుండి మీరు లాగ్స్టాష్కి లాగ్లను ఎలా పంపవచ్చో చూద్దాం
చెక్ పాయింట్ మేనేజ్మెంట్ సర్వర్ నుండి మీరు లాగ్_ఎక్స్పోర్టర్ యుటిలిటీని ఉపయోగించి సిస్లాగ్ ద్వారా లాగ్స్టాష్కి లాగ్లను పంపవచ్చు, మీరు దాని గురించి ఇక్కడ మరింత చదవవచ్చు
cp_log_export పేరుని జోడించండి check_point_syslog టార్గెట్-సర్వర్ < > టార్గెట్-పోర్ట్ 5555 ప్రోటోకాల్ tcp ఫార్మాట్ జెనరిక్ రీడ్-మోడ్ సెమీ-యూనిఫైడ్
< > - లాగ్స్టాష్ నడుస్తున్న సర్వర్ చిరునామా, టార్గెట్-పోర్ట్ 5555 - మేము లాగ్లను పంపే పోర్ట్, tcp ద్వారా లాగ్లను పంపడం సర్వర్ను లోడ్ చేస్తుంది, కాబట్టి కొన్ని సందర్భాల్లో udp ఉపయోగించడం సరైనది.
లాగ్స్టాష్ కాన్ఫిగరేషన్ ఫైల్లో INPUTని సెటప్ చేస్తోంది
డిఫాల్ట్గా, కాన్ఫిగరేషన్ ఫైల్ /etc/logstash/conf.d/ డైరెక్టరీలో ఉంది. కాన్ఫిగరేషన్ ఫైల్ 3 అర్థవంతమైన భాగాలను కలిగి ఉంటుంది: INPUT, FILTER, OUTPUT. IN ఇన్పుట్ సిస్టమ్ లాగ్లను ఎక్కడ నుండి తీసుకుంటుందో మేము సూచిస్తాము వడపోత లాగ్ను అన్వయించండి - సందేశాన్ని ఫీల్డ్లు మరియు విలువలుగా ఎలా విభజించాలో సెటప్ చేయండి అవుట్పుట్ మేము అవుట్పుట్ స్ట్రీమ్ను కాన్ఫిగర్ చేస్తాము - ఇక్కడ అన్వయించబడిన లాగ్లు పంపబడతాయి.
ముందుగా, INPUTని కాన్ఫిగర్ చేద్దాం, ఫైల్, tcp మరియు exe వంటి కొన్ని రకాలను పరిశీలిద్దాం.
Tcp:
input {
tcp {
port => 5555
host => “10.10.1.205”
type => "checkpoint"
mode => "server"
}
}
మోడ్ => "సర్వర్"
Logstash కనెక్షన్లను అంగీకరిస్తున్నట్లు సూచిస్తుంది.
పోర్ట్ => 5555
హోస్ట్ => “10.10.1.205”
మేము IP చిరునామా 10.10.1.205 (Logstash), పోర్ట్ 5555 ద్వారా కనెక్షన్లను అంగీకరిస్తాము - పోర్ట్ తప్పనిసరిగా ఫైర్వాల్ విధానం ద్వారా అనుమతించబడాలి.
రకం => "చెక్ పాయింట్"
మేము పత్రాన్ని గుర్తు చేస్తాము, మీకు అనేక ఇన్కమింగ్ కనెక్షన్లు ఉంటే చాలా సౌకర్యవంతంగా ఉంటుంది. తదనంతరం, ప్రతి కనెక్షన్ కోసం మీరు లాజికల్ ఇఫ్ కన్స్ట్రక్ట్ని ఉపయోగించి మీ స్వంత ఫిల్టర్ను వ్రాయవచ్చు.
దస్త్రం:
input {
file {
path => "/var/log/openvas_report/*"
type => "openvas"
start_position => "beginning"
}
}
సెట్టింగుల వివరణ:
మార్గం => "/var/log/openvas_report/*"
ఫైల్లను చదవాల్సిన డైరెక్టరీని మేము సూచిస్తాము.
రకం => "ఓపెన్వాస్"
ఈవెంట్ రకం.
start_position => "ప్రారంభం"
ఫైల్ను మార్చేటప్పుడు, అది మొత్తం ఫైల్ను చదువుతుంది; మీరు “ముగింపు”ని సెట్ చేస్తే, ఫైల్ చివరిలో కొత్త రికార్డ్లు కనిపించే వరకు సిస్టమ్ వేచి ఉంటుంది.
కార్యనిర్వాహకుడు:
input {
exec {
command => "ls -alh"
interval => 30
}
}
ఈ ఇన్పుట్ ఉపయోగించి, ఒక (మాత్రమే!) షెల్ కమాండ్ ప్రారంభించబడుతుంది మరియు దాని అవుట్పుట్ లాగ్ సందేశంగా మార్చబడుతుంది.
కమాండ్ => "ls -alh"
మనకు ఆసక్తి ఉన్న అవుట్పుట్ కమాండ్.
విరామం => 30
సెకన్లలో కమాండ్ ఆహ్వాన విరామం.
ఫైర్వాల్ నుండి లాగ్లను స్వీకరించడానికి, మేము ఫిల్టర్ను నమోదు చేస్తాము tcp లేదా UDPలాగ్స్టాష్కి లాగ్లు ఎలా పంపబడతాయి అనే దానిపై ఆధారపడి ఉంటుంది.
లాగ్ సందేశం ఎలా ఉంటుందో అర్థం చేసుకోవడానికి మేము లాగ్స్టాష్ కాన్ఫిగరేషన్ ఫైల్లో అవుట్పుట్ను డీబగ్ మోడ్లో కాన్ఫిగర్ చేస్తాము
మేము INPUTని కాన్ఫిగర్ చేసిన తర్వాత, లాగ్ సందేశం ఎలా ఉంటుందో మరియు లాగ్ ఫిల్టర్ (పార్సర్) కాన్ఫిగర్ చేయడానికి ఏ పద్ధతులను ఉపయోగించాలో మనం అర్థం చేసుకోవాలి.
దీన్ని చేయడానికి, మేము అసలు సందేశాన్ని వీక్షించడానికి ఫలితాన్ని stdoutకి అవుట్పుట్ చేసే ఫిల్టర్ని ఉపయోగిస్తాము; ప్రస్తుతానికి పూర్తి కాన్ఫిగరేషన్ ఫైల్ ఇలా కనిపిస్తుంది:
input
{
tcp
{
port => 5555
type => "checkpoint"
mode => "server"
host => “10.10.1.205”
}
}
output
{
if [type] == "checkpoint"
{
stdout { codec=> json }
}
}
తనిఖీ చేయడానికి ఆదేశాన్ని అమలు చేయండి:
sudo /usr/share/logstash/bin//logstash -f /etc/logstash/conf.d/checkpoint.conf
మేము ఫలితాన్ని చూస్తాము, చిత్రం క్లిక్ చేయగలదు:
మీరు దానిని కాపీ చేస్తే, ఇది ఇలా కనిపిస్తుంది:
action="Accept" conn_direction="Internal" contextnum="1" ifdir="outbound" ifname="bond1.101" logid="0" loguid="{0x5dfb8c13,0x5,0xfe0a0a0a,0xc0000000}" origin="10.10.10.254" originsicname="CN=ts-spb-cpgw-01,O=cp-spb-mgmt-01.tssolution.local.kncafb" sequencenum="8" time="1576766483" version="5" context_num="1" dst="10.10.10.10" dst_machine_name="[email protected]" layer_name="TSS-Standard Security" layer_name="TSS-Standard Application" layer_uuid="dae7f01c-4c98-4c3a-a643-bfbb8fcf40f0" layer_uuid="dbee3718-cf2f-4de0-8681-529cb75be9a6" match_id="8" match_id="33554431" parent_rule="0" parent_rule="0" rule_action="Accept" rule_action="Accept" rule_name="Implicit Cleanup" rule_uid="6dc2396f-9644-4546-8f32-95d98a3344e6" product="VPN-1 & FireWall-1" proto="17" s_port="37317" service="53" service_id="domain-udp" src="10.10.1.180" ","type":"qqqqq","host":"10.10.10.250","@version":"1","port":50620}{"@timestamp":"2019-12-19T14:50:12.153Z","message":"time="1576766483" action="Accept" conn_direction="Internal" contextnum="1" ifdir="outbound" ifname="bond1.101" logid="0" loguid="{0x5dfb8c13,
ఈ సందేశాలను చూస్తే, లాగ్లు ఇలా ఉన్నాయని మేము అర్థం చేసుకున్నాము: ఫీల్డ్ = విలువ లేదా కీ = విలువ, అంటే kv అనే ఫిల్టర్ అనుకూలంగా ఉంటుంది. ప్రతి నిర్దిష్ట సందర్భంలో సరైన ఫిల్టర్ని ఎంచుకోవడానికి, సాంకేతిక డాక్యుమెంటేషన్లో వారితో మిమ్మల్ని మీరు పరిచయం చేసుకోవడం లేదా స్నేహితుడిని అడగడం మంచిది.
ఫిల్టర్ని సెటప్ చేస్తోంది
చివరి దశలో మేము kvని ఎంచుకున్నాము, ఈ ఫిల్టర్ యొక్క కాన్ఫిగరేషన్ క్రింద ప్రదర్శించబడింది:
filter {
if [type] == "checkpoint"{
kv {
value_split => "="
allow_duplicate_values => false
}
}
}
మేము ఫీల్డ్ మరియు విలువను విభజించే చిహ్నాన్ని ఎంచుకుంటాము - “=”. మేము లాగ్లో ఒకేలాంటి నమోదులను కలిగి ఉన్నట్లయితే, మేము డేటాబేస్లో ఒక ఉదాహరణను మాత్రమే సేవ్ చేస్తాము, లేకుంటే మీరు ఒకే విధమైన విలువల శ్రేణితో ముగుస్తుంది, అంటే, మనకు “foo = some foo=some” అనే సందేశం ఉంటే మేము foo మాత్రమే వ్రాస్తాము. = కొన్ని
ఎలాస్టిక్ సెర్చ్లో సరైన అవుట్పుట్ని సెటప్ చేస్తోంది
ఫిల్టర్ కాన్ఫిగర్ చేయబడిన తర్వాత, మీరు డేటాబేస్కు లాగ్లను అప్లోడ్ చేయవచ్చు సాగే శోధన:
output
{
if [type] == "checkpoint"
{
elasticsearch
{
hosts => ["10.10.1.200:9200"]
index => "checkpoint-%{+YYYY.MM.dd}"
user => "tssolution"
password => "cool"
}
}
}
పత్రం చెక్పాయింట్ రకంతో సంతకం చేయబడితే, మేము ఈవెంట్ను సాగే శోధన డేటాబేస్లో సేవ్ చేస్తాము, ఇది డిఫాల్ట్గా పోర్ట్ 10.10.1.200లో 9200లో కనెక్షన్లను అంగీకరిస్తుంది. ప్రతి పత్రం నిర్దిష్ట సూచికకు సేవ్ చేయబడుతుంది, ఈ సందర్భంలో మేము ఇండెక్స్ "చెక్ పాయింట్-" + ప్రస్తుత సమయ తేదీకి సేవ్ చేస్తాము. ప్రతి ఇండెక్స్ నిర్దిష్ట ఫీల్డ్లను కలిగి ఉండవచ్చు లేదా సందేశంలో కొత్త ఫీల్డ్ కనిపించినప్పుడు స్వయంచాలకంగా సృష్టించబడుతుంది; ఫీల్డ్ సెట్టింగ్లు మరియు వాటి రకాన్ని మ్యాపింగ్లలో చూడవచ్చు.
మీరు ప్రామాణీకరణను కాన్ఫిగర్ చేసి ఉంటే (మేము దానిని తరువాత పరిశీలిస్తాము), నిర్దిష్ట సూచికకు వ్రాయడానికి ఆధారాలు తప్పనిసరిగా పేర్కొనబడాలి, ఈ ఉదాహరణలో ఇది "కూల్" అనే పాస్వర్డ్తో "tssolution". మీరు నిర్దిష్ట సూచికకు మాత్రమే లాగ్లను వ్రాయడానికి వినియోగదారు హక్కులను వేరు చేయవచ్చు మరియు మరేమీ లేదు.
లాగ్స్టాష్ని ప్రారంభించండి.
లాగ్స్టాష్ కాన్ఫిగరేషన్ ఫైల్:
input
{
tcp
{
port => 5555
type => "checkpoint"
mode => "server"
host => “10.10.1.205”
}
}
filter {
if [type] == "checkpoint"{
kv {
value_split => "="
allow_duplicate_values => false
}
}
}
output
{
if [type] == "checkpoint"
{
elasticsearch
{
hosts => ["10.10.1.200:9200"]
index => "checkpoint-%{+YYYY.MM.dd}"
user => "tssolution"
password => "cool"
}
}
}
మేము కాన్ఫిగరేషన్ ఫైల్ ఖచ్చితత్వం కోసం తనిఖీ చేస్తాము:
/usr/share/logstash/bin//logstash -f checkpoint.conf
లాగ్స్టాష్ ప్రక్రియను ప్రారంభించండి:
sudo systemctl start logstash
ప్రక్రియ ప్రారంభమైందని మేము తనిఖీ చేస్తాము:
sudo systemctl స్థితి లాగ్స్టాష్
సాకెట్ పైకి ఉందో లేదో చూద్దాం:
netstat -nat |grep 5555
కిబానాలో లాగ్లను తనిఖీ చేస్తోంది.
ప్రతిదీ రన్ అయిన తర్వాత, కిబానాకి వెళ్లండి - డిస్కవర్, ప్రతిదీ సరిగ్గా కాన్ఫిగర్ చేయబడిందని నిర్ధారించుకోండి, చిత్రం క్లిక్ చేయదగినది!
అన్ని లాగ్లు స్థానంలో ఉన్నాయి మరియు మేము అన్ని ఫీల్డ్లను మరియు వాటి విలువలను చూడవచ్చు!
తీర్మానం
మేము లాగ్స్టాష్ కాన్ఫిగరేషన్ ఫైల్ను ఎలా వ్రాయాలో చూశాము మరియు ఫలితంగా మేము అన్ని ఫీల్డ్లు మరియు విలువల యొక్క పార్సర్ని పొందాము. ఇప్పుడు మనం నిర్దిష్ట ఫీల్డ్ల కోసం శోధించడం మరియు ప్లాట్ చేయడంతో పని చేయవచ్చు. కోర్సులో తదుపరి మేము కిబానాలో విజువలైజేషన్ని పరిశీలిస్తాము మరియు సాధారణ డాష్బోర్డ్ను రూపొందిస్తాము. లాగ్స్టాష్ కాన్ఫిగరేషన్ ఫైల్ నిర్దిష్ట పరిస్థితులలో నిరంతరం నవీకరించబడాలని పేర్కొనడం విలువ, ఉదాహరణకు, మేము ఫీల్డ్ విలువను సంఖ్య నుండి పదానికి భర్తీ చేయాలనుకున్నప్పుడు. తదుపరి కథనాలలో మేము దీన్ని నిరంతరం చేస్తాము.
కాబట్టి చూస్తూ ఉండండి
మూలం: www.habr.com