ElasticSeachã¯éåžžã«æè»ãªãã©ãããã©ãŒã ã§ãããåä¿¡ããããŒã¿ã¯ãELKã¹ã¿ãã¯ã®å€éšã§ãããŸããŸãªæ¹æ³ã§åŠçã§ããŸãã ãã®ããã«ã12ãè¶
ããããŸããŸãªAPIãæäŸãããŠããŸãã ããããå€ãã®ã¿ã¹ã¯ã§ã¯ãKibanaã®æ©èœã§ååã§ãã
ãããã®1ã€ãã³ãã¥ããã£ãšå
±æããããšæããŸãã ç§ã«ãšã£ãŠãä»ã®ã»ãã¥ãªãã£ã¬ãŒããšåæ§ã«ãã€ã³ãã©ã¹ãã©ã¯ãã£ãšå€éšãšã®éä¿¡ã確èªããŠçè§£ããããšãéèŠã§ãã æãè峿·±ããã®ã®1ã€ã¯ãã¿ããã®ãããã¯ãŒã¯ïŒTorïŒãšã®éä¿¡ã§ãã

ãã¡ãããELKã¯ã¹ã¿ãã¯ã«éå®ããããæ
å ±ãä¿åããã³åŠçããããã®åãªãããŒã«ã§ãã ããã«åºã¥ã補åã®æå¹æ§ã¯ãã©ããã§ååŸããå¿
èŠãããããŒã¿ã«ãã£ãŠæ±ºãŸããŸãã ç§ã®å Žåãããã¯ãããã¯ãŒã¯ããã€ã¹ããçŽæ¥åä¿¡ããçã®NetflowããŒã¿ã§ãããããã€ã³ããªãžã§ã³ããªã³ã¬ã¯ã¿ãŒã«ããäºååŠçã¯è¡ãããŸããã ãã®ã¢ãããŒãã«ã¯é·æãšçæããããŸãããããã«ã€ããŠã§ã¯ãããŸããã
ããšãã°ãåºåã¯ãããæ¬¡ã®æ
å ±ã§ãã

ãã®äŸã§ã¯ãæãè峿·±ããã£ãŒã«ãã®ã¿ã衚瀺ãããNetflowãä»ããŠåä¿¡ããæ
å ±ã®ã»ãšãã©ã¯çç¥ãããŠããããšã«æ³šæããŠãã ããã ç§ã®æèŠã§ã¯ãäž»ãªå©ç¹ã®1ã€ã¯ãã¹ããªãŒã å
ã®ãã©ãã£ãã¯ã®éã«é¢ããããŒã¿ãæäœã§ããããšã§ãã
ãã£ã«ã¿ãŒãäœæãã
ãã§ã«ãã®æ®µéã§ãTorãããã¯ãŒã¯ãšã®éä¿¡ã®åé¡ã«1ã€ã®æ³šæäºé
ãããããšãäºçŽããããšæããŸãã æ®å¿µãªãããããªããšç§ã«ã¯Torãããã¯ãŒã¯ããã®ãã©ãã£ãã¯ã®ã¿ãç¹å®ããæ©äŒããããŸãããToãããã¯ãŒã¯ã«ã¯ç¹å®ã§ããŸããã torprojects.orgã³ãã¥ããã£ã¯ExitããŒãã®ãªã¹ãã®ã¿ãæäŸããŸãããEntryããŒãã®ãªã¹ããäžæã«èå¥ã§ããªããšãããããã¯ã«é¢ããããã€ãã®ãããã¯ã«åºäŒããŸããã
ãããã¯ãŒã¯ã«ã¯ãããããçä¿¡TorããŒãã説æãããªã¹ãããããŸãããæ®å¿µãªãããã®æ
å ±ã«ã¯ä¿¡é Œæ§ããããŸããã åºå£ããŒãã®ä¿¡é Œã§ãããªã¹ãã¯ã次ã®ãªã³ã¯ã§å
¥æã§ããŸãïŒ
https :
//check.torproject.org/exit-addresses ã ãã®çµæãç§ãã¡ã¯Torããã®ãã©ãã£ãã¯ã§ã®ã¿åäœããŸãã
次ã«ãELKå
ã§ãã®æ
å ±ã䜿çšããæ¹æ³ã«ã€ããŠèª¬æããŸãã ããŒã¿ã¹ããªãŒã å
šäœããTorãããã¯ãŒã¯ããã®ãã©ãã£ãã¯ããã£ã«ã¿ãªã³ã°ããã«ã¯ã次ã®ã·ããªãªã«åŸã£ãŠæ§ç¯ããããã£ã«ã¿ãŒãäœæã§ããŸãã
( '1st.Exit.Node.IP' OR '2nd.Exit.Node.IP' OR .... 'Last.Exit.Node.IP' ) AND my_regex
å¿
èŠã«å¿ããŠããANDãã®åŸã«ãã£ã«ã¿ãŒã«çµã蟌ã¿ã远å ããŸãã ãã£ã«ã¿ãŒã®ããã©ãŒãã³ã¹ã確èªããã«ã¯ãbashã䜿çšããŠæ§é ïŒäžå€®ã«ãORããä»ããããŒãã®çµäºïŒãæåã§äœæããæ€çŽ¢ãæ£ããæ©èœãããã©ãããã¯ãªããããŒãã§ç¢ºèªããŸãã
curl -XGET https://check.torproject.org/exit-addresses | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ OR /g'
ãªã¹ãã¯å€§ãããããElasticSearchã®ããã©ã«ãèšå®ã§ã¯ããŒã«æŒç®åã®äœ¿çšãå€ããããšæèšã§ãããã
ãæ¬¡ã®èšå®ã§
/etc/elastcisearch/elasticsearch.ymlã®å¶éãå¢ãããŠããŒã¢ã³ãåèµ·åããŸãã
indices.query.bool.max_clause_count: 2048
ElasticSearchã®åŒ·åãªæ©èœã¯ãèŠæ±ãããæ
å ±ããã°ãããã£ã«ã¿ãªã³ã°ãããããçµæã¯éåžžã«é«éã§ãã Kibanaã§æ€çŽ¢ãšããŠä¿åããŠäœ¿çšããŸãã çè«äžãç§ãã¡ã¯ã¿ã¹ã¯ãéæããŸãã-ããªãã®ç®ã®åã®ã¿ããã®ãããã¯ãŒã¯ããã®éä¿¡ã
ã»ãšãã©ã®å Žåã1æé以å
ã«ãããã¯ããã€ãã®ã¹ã¬ããã«ãªããŸããããããããè峿·±ããã®ã§ãã

ãã£ã«ã¿ãŒãæŽæ°
åé¡ã¯ãExitããŒãã®ãªã¹ãã«äžè²«æ§ããªããããäžå®ã®èŠåã§æŽæ°ããããšããå§ãããŸãã æåã®æ¹æ³ã¯é©åã§ã¯ãããŸããã çè«çã«ã¯ãæ€çŽ¢ãã£ã«ã¿ã®å€ãšãã®èå¥åãå«ãKibanaã€ã³ã¿ãŒãã§ã€ã¹ãžã®POSTãªã¯ãšã¹ãã®æ£ãã圢åŒãèŠã€ããããšãã§ããŸãã ãããã£ãŠãWebèŠæ±ãçæããã«ã¯ããªã¹ããæŽæ°ããŸãã ãããããã䟿å©ãªãªãã·ã§ã³ããããŸãã
Kibanaã¯ããªããžã§ã¯ãã«é¢ãããã¹ãŠã®æ
å ±ãåãElasticSearchã¯ã©ã¹ã¿ãŒã®ã·ã¹ãã ã€ã³ããã¯ã¹ã.kibanaãã«ä¿åããŸãã ããã§ãExitããŒãã®ãªã¹ããå«ãã以åã«äœæãããæ€çŽ¢ã¯ãšãªã説æããããã¥ã¡ã³ããèŠã€ããããšãã§ããŸãã

ãããã£ãŠãæ
å ±check.torproject.org/exit-adressesã«åŸã£ãŠãã®ç¹å®ã®ããã¥ã¡ã³ãã®ãã¯ãšãªããã£ãŒã«ããæŽæ°ããå¿
èŠããããŸãã ãããè¡ãããã«ãPythonã¹ã¯ãªãããã¢ããããŒãããŸã
ã ãçŸåšã®ããŒãžã§ã³ã¯
ãã¡ãã«ãããŸã ã åèã®ããã«ããã¿ãã¬ã®äžã§ãçŸæç¹ã§ææ°ããŒãžã§ã³ãæäŸããŸãã
ã¹ã¯ãªããã¯ExitããŒãã®ãªã¹ããåãåããããã«åºã¥ããŠæ€çŽ¢ãªããžã§ã¯ãã®ãã¯ãšãªããçæããŸãã ããã¥ã¡ã³ããæŽæ°ããããã«ãPython APIãå®å
šã«åäžã®ãªã¯ãšã¹ãã§ãElasticSearchã解決ã§ããªãã·ãªã¢ã«åãšã©ãŒãååŸããããããã«ãŒã«ãOSãåŒã³åºãå¿
èŠããããŸããã ãcurlãã¯
query.jsonãã¡ã€ã«ã䜿çšããŸãããã®ãã¡ã€ã«ãžã®ãã¹ã¯ã¹ã¯ãªããã§æå®ããå¿
èŠããããŸãã äžè¬ã«ãREADMEã®èŠå®ã«åŸã£ãŠã³ãŒãã調æŽãããã®åŸãã¹ã¯ãªããããµãŒããŒã®crontabã«ããããããåçã«æŽæ°ãããæ€çŽ¢çµæãååŸããŸããããã¯åŸã§äœ¿çšã§ããŸãã
ãã©ãã£ãã¯èªäœãåæããŸã
æåã«ç®ã«ããã®ã¯ããã¡ããè€æ°ã®ã¹ãã£ã³ã§ãã äžè¬çã«ã¯ãã¡ãããã©ãããã§ãTorããçµ¶ããã¹ãã£ã³ãããŸãã 圌ãã¯OSIã®ç¬¬4ã¬ãã«ãWebã¢ããªã±ãŒã·ã§ã³ãããã³ãã®ä»ãã¹ãŠã§ãªãã¹ã³ããŸãã ãããã£ãŠããã¡ã€ã¢ãŠã©ãŒã«ã®åã§ã¯ãªãåéããããããã¯ãŒã¯æ
å ±ãåæããããšããå§ãããŸãã ãŸããå
éšã«å
¥ããªãã£ããã®ã¯ãã¹ãŠäžæãããæ¬¡ã«ãå
éšããŒãã®ãã§ã«å€æãããã¢ãã¬ã¹ã衚瀺ãããŸãã
2çªç®-ããŒã¿ã®å€§éšåã¯ããããã¯ãŒã¯äžã®ãµãŒãã¹ã«å¯Ÿããå®å
šã«æå¹ãªèŠæ±ã§ãã 仿¥ã§ã¯ããããã¯ãŒã¯ã®äœ¿çšãå¿ååããã®ãæ®éã§ãããã®ãããTorããã®éä¿¡ã«ã¯äž»ã«æã人æ°ã®ãããµãŒããŒãžã®æ¥ç¶ãå«ãŸããŸãã ãã¡ãããäžéšã®çµç¹ïŒãŠãŒã¶ãŒã¯ãŠãŒã¶ãŒãå¿
èŠãšãã以äžã®ãã®ãå¿
èŠãšããŠããïŒãããã®éä¿¡ãããã¯ããããšããæ¬²æ±ãæã€å¯èœæ§ããããŸãã 確ãã«ãã®ãããªå ŽåããããŸãã ããããç§ã¯ãã€ã³ã¿ãŒãããã³ãã¥ããã£ã®çºå±ã®ãã®åéãå¶éããæš©å©ã¯ãªãã®ã§ããã®ãã©ãã£ãã¯ãçè§£ããããšãåŠã¶å¿
èŠããããšèããŠããŸãã
以åã®ã°ã«ãŒãã®äž¡æ¹ã«ç¹å¥ãªæ³šæãæãå¿
èŠã¯ãããŸãããããããèªèããéãéããããšãåŠã³ãŸãã ãã ããããã ãã§ã¯ãããŸããã æ£ããåæã¯ãè峿·±ãäºå®ãã¿ã€ã ãªãŒã«æããã«ããããšãã§ããŸãã
ãããããããã·ã³ã§ããããšæšçåæ»æã§ããããšããããã¯ãŒã¯äžã®æ»æè
ã®åœ±é¿ããã§ã«åããŠããCïŒCïŒã³ãã³ãïŒã³ã³ãããŒã«ïŒããŒãã®ãã©ãã£ãã¯ããã§ãã¯ããŸãã
ååãšããŠã以äžã®éä¿¡ã®äž¡æ¹ãCïŒCã«ã€ããŠåæããå¿
èŠããããŸãã
- ããã©ã«ãã§pingããã倧ããICMPãã±ããã
- åãçç¶ã®DNSéä¿¡-éæšæºã®å€§ããªãã±ããã
äž¡æ¹ã®ãµãŒãã¹ã¯ãæšçãšãªãé«åºŠãªæç¶çè
åšæ»æã®å Žåã§ãããã©ãã£ãã¯ããã³ãã«ããããã«ãäŸç¶ãšããŠç©æ¥µçã«äœ¿çšãããŠããŸãã æè¿ã®æãé¡èãªäŸã®1ã€ã¯ãããšãã°ãå°æ¹Ÿã®æåã®éè¡ã«å¯Ÿããæ»æã®å Žåã®Cobaltã°ã«ãŒãã®è¡åïŒ
ãªã³ã¯ ïŒã§ãã
ãŸããéæšæºã®WebèŠæ±ã«æ³šæããããšããå§ãããŸãã ãã£ã«ã¿ãªã³ã°ããããšã¯ããå°é£ã«ãªããŸããããŸã ããã€ãã®ãªãŒãããå§ãããŸãã
çŸåšããã¹ãŠã®åãCïŒCã®å€§éšåãWebãééããŠããŸããããã¯ããã®ãã©ãã£ãã¯ãããããçµç¹ã®ããããçµç¹ã§èš±å¯ãããŠããããã§ãã ãããã£ãŠãååãšããŠããããã¯ãŒã¯ããWeb以å€ã®ãµãŒããŒã«æ¥ç¶ãããŠããTCP 80ããã³443ã¯è峿·±ããã®ã§ãã
ãŸããããŸã人æ°ã®ãªãWebãµãŒããŒã察象ãšããã¯ãšãªã«ã泚æããŠãã ããã ç¹ã«ããªãŒãã³ãœãŒã¹ãã¬ãŒã ã¯ãŒã¯ã«åºã¥ãããã®ãããå Žåãç¹ã«ãã©ãã£ãã¯éãæšæºãè¶
ããŠããå Žåã ããã«éææ§ãé«ããã«ã¯ãåãElasticSearchã€ã³ããã¯ã¹ã«ãã®ãããªãµãŒããŒãŸãã¯WAFã®ãã°ãå
¥åããHTTPãã£ãŒã«ããšå€ã«ãªã¯ãšã¹ãèªäœãçŽæ¥å«ãŸãã䞊åèŠèŠåãŠã£ã³ããŠã確èªããŸãã
ELKã䜿çšããããŒã¿åæ
æ ¹æ ã«ãªããªãããã«ãELKã¹ã¿ãã¯ã§ãã®ãããªããŒã¿åæãæé©åããæ¹æ³ã瀺ããŸãã ããšãã°ãåéãããããŒã¿ã«åºã¥ããŠICMPãŸãã¯DNSãã³ããªã³ã°ã®è©Šã¿ãè¿
éã«ç¹å®ããããšãã詊ã¿ã«æ²¡é ããŸãã
æ
å ±ã¯ãã¹ãŠã°ã©ãã£ã«ã«åœ¢åŒã§èªèãããã®ã§ããã©ãã£ãã¯éã®ç¹ã§æšæºãè¶
ããICMPéä¿¡ã®èŠèŠåãäœæããããšããŸãã éåžžã®ICMPæäœããããã¢ããããªãããã«ãããã¯ãŒã¯äžã®ã¢ã¯ãã£ããªãã©ãã£ãã¯ã芳å¯ããããšã§åºæºã決å®ããŸãããã¹ã¯ãªãããåããããšããããICMPãã±ããã§ã³ãã³ãã®åºåãéä¿¡ããããšãããšããã£ãããããå¯èœæ§ããããŸãã ã¹ããªãŒã ããšã«2KBãè¶
ããå€ã«æ±ºããŸããã åã®æ€çŽ¢ãããã®ãã©ãã£ãã¯ãååŸããã«ã¯ãæ°ãããã©ãã£ãã¯ãäœæããæåŸã«æ¬¡ã®ãã¿ãŒã³ã远å ããŸãã
netflow.in_bytes: {2000 TO *} AND netflow.protocol: 1
次ã«ãèŠèŠå>åã°ã©ããéžæããŸãã æ¡åŒµæ€çŽ¢ã®ã¿ãããŒã¿ãœãŒã¹ãšããŠéžæãããŸãã

ã»ã¯ã¿ãŒã®è§åºŠã決å®ããããã®ãã©ã¡ãŒã¿ãŒãšããŠããã©ã¡ãŒã¿ãŒ 'netflow.in_bytes'ã®åèšãæå®ããŸãã

å®å
IPã¢ãã¬ã¹ã«ãã£ãŠãã€ãã»ã¯ã¿ãŒã«åå²ããå¿
èŠãããããšã瀺ããŸãã

Torãããã¯ãŒã¯ã®å Žåãéä¿¡å
ã¢ãã¬ã¹ã¯äœãèšããªãã®ã§ïŒåãéä¿¡ãè€æ°ã®ã¢ãã¬ã¹ã§è¡ãããå¯èœæ§ãããããïŒãæ¥ç¶ã¯ãããã¯ãŒã¯äžã®ã¢ãã¬ã¹ã«ãã£ãŠèå¥ãããŸãã ããããã¹ããªãŒã ãèå¥ããã®ã«äŸ¿å©ãªããã«ãTorãããã¯ãŒã¯ã®ããŒãã¢ãã¬ã¹ã瀺ããããã€ã®2çªç®ã®ã¬ãã«ãäœæããŸããã
1ã€ã®ãã¥ã¢ã³ã¹ã«æ³šæããã-é·ãæéããããã25 +ã®äžæ¹åã®ãã±ããæ°ãåéããéåžžã®pingããåè¿°ã®æ€çŽ¢ãã©ã¡ãŒã¿ãŒã«è©²åœããŸãã
å¥ã®æé©åãå®è¡ã§ããŸã-Kibanaã§æåã§1ã€ã®ç¹å®ã®Netflowã¹ããªãŒã ã®ãã±ãããããã®ãã€ãæ°ã衚瀺ãããã£ãŒã«ããäœæããŸãã ãããè¡ãã«ã¯ã[ã¹ã¯ãªãããã£ãŒã«ã]ã»ã¯ã·ã§ã³ã§ãçã¿ã®ãªãèšèªã§æ¬¡ã®ã¿ã¹ã¯ãå®è¡ãããŠããããäœæããŸãã
doc['netflow.in_bytes'].value / doc['netflow.in_pkts'].value
ãã®ãã£ãŒã«ããæ€çŽ¢ã«è¿œå ãããšãæ
å ±ã衚瀺ãããšãã«ãæšæºãµã€ãºã®ãã±ãããããã«é€å€ã§ããŸãã æ®å¿µãªããããã®ãã£ãŒã«ãã§ã¹ããªãŒã ããã£ã«ã¿ãªã³ã°ããããšã¯ã§ããŸãã; Kibanaã¯ãã£ãŒã«ããäœæãããšãã«ãããå ±åããŸãïŒ
ãããã®ã¹ã¯ãªãããã£ãŒã«ãã¯ãããŒã¿ãããã®å Žã§èšç®ãããŸãã ããžã¥ã¢ã©ã€ãŒãŒã·ã§ã³ã§äœ¿çšããŠããã¥ã¡ã³ãã«è¡šç€ºã§ããŸãããæ€çŽ¢ããããšã¯ã§ããŸããã ããã§ãããã管çããå¿
èŠã«å¿ããŠæ°ãããã®ã远å ã§ããŸãããã¹ã¯ãªããã«ã¯æ³šæãå¿
èŠã§ãã
ãã ããããã·ã¥ããŒãã§ã¯ãèŠèŠåã®åŽã«æ€çŽ¢ããã®æ
å ±ãçŽæ¥é
眮ããããŒã¿ããããã§ããŸãã
çµæã¯æ¬¡ã®ãšããã§ãã

ã»ã¯ã¿ãŒãåºãã»ã©ãIPã¢ãã¬ã¹ãåä¿¡ããããŒã¿ãå€ããªããŸãã ãŸãããã®äŸã§ã¯ããã¹ãŠã®ICMPã¹ããªãŒã ãæšæºã®ãã±ãããµã€ãºãæã£ãŠããããšãããã«ããããŸãã
åæ§ã®åæã¯ã1KBãè¶
ããã¹ããªãŒã ã§è§£æ±ºããDNSéä¿¡ã«ãé©ããŠããŸãã æ€çŽ¢ãä¿®æ£ããæ¬¡ã®ã¯ãšãªã远å ããŠãåãæäœãå®è¡ããŸãã
netflow.in_bytes: {1000 TO *} AND netflow.protocol: 17 AND ( netflow.l4_dst_port: 53 OR netflow.l4_src_port: 53 )
ããããããããã¯ãŒã¯å
ã®ç¹å®ã®ããŒãïŒç£èŠãµãŒããŒãŸãã¯DNSãµãŒããŒïŒããç§ãææ¡ããäŸã«å
¥ãå¯èœæ§ããããŸãããã¡ããããããããã£ã«ã¿ãŒã§åãé€ããŸãã ãã®çµæãçŸåšã®ãµãŒãã¹ã®åå·®ã瀺ãæç¢ºãªç»åãåŸãããŸãã äžè¬ã«ããããã®ãµãŒãã¹ã®ãã®ãããªåæã¯ãTorããã®ãã©ãã£ãã¯ã ãã§ãªãå®è¡ããå¿
èŠãããããããã®ã¢ãããŒãã¯äžè¬ã«ElasticSearchãåä¿¡ãããã¹ãŠã®æ
å ±ã«é©çšã§ããŸãã
çµè«ãšããŠ
ãã¡ããããã®æ
å ±ã®å¯èœãªåæã®ãªã¹ãã¯å®å
šã§ãããšäž»åŒµããŠããŸããã ããã¯åãªã衚é¢çãªäŸã§ãããããã«çºå±ãããããšãæãŸããã èªè
ããã®ãããªæ
å ±ãåæããæ¹æ³ã説æã§ãããªãããããå
±æããŠãã ãããããã¯ç§ãšã³ãã¥ããã£ã«ãšã£ãŠè峿·±ããã®ã«ãªãã§ãããã
ãŸããã»ãšãã©ã®å Žåããããã®ãã³ãã®ããããã¯ãç§ã«ã¯çºçããªãåŒæ°ã«ãã£ãŠïŒãŠãŒãã£ãªãã£ã®é¢ã§ïŒå§åãããå¯èœæ§ããããŸãã ãã®å Žåããããã®è°è«ãéåžžã«èãããã§ãã
ãã¡ãããèªåã®è¡åãå¿ååããããšããæœåšçãªæ»æè
ãVPN-Tor-VPNæ¥ç¶ãŸãã¯ããé«åºŠãªè©æ¬ºã䜿çšããŠããå Žåããã®ãã¹ãŠã¯è¡šç€ºãããŸããã ãããã£ãŠãåæ§ã®æ¹æ³ã䜿çšããŠãã€ã³ãã©ã¹ãã©ã¯ãã£å
ã®ãã¹ãŠã®ãã©ãã£ãã¯ãåæããããšããå§ãããŸãã ãããããã®æ
å ±ã衚瀺ããããšã¯ãã§ã«éåžžã«è峿·±ãã§ãã
èªãã§ãããŠããããšãïŒ ããããã/圹ã«ç«ãŠã°å¹žãã§ãã
PSèªè
ã®ä¿®æ£ã«åŸã£ãŠè²¬ä»»ãæã£ãŠèšäºãä¿®æ£ããŸãã å人ã®ã¡ãŒã«ã«ã¯ããã¹ãã®å質ã«é¢ããã¡ã¢ãèšå
¥ããŠãã ããããã ããèšäºã®ãããã¯ã«çŽæ¥ã³ã¡ã³ããæ®ãããã«ã³ã¡ã³ããæ®ããŠãã ããã