੬ऑੑݕπʔϧVULSͷಋೖΛ͔ͯ͠ΒܦͬͯΈͯRYO ADACHI (ADACHIN)
View Slide
ɾ̏ɾΞδΣϯμ▸ ࣗݾհɺࢲ͕ೖࣾ͢Δલ▸ ΠϯϑϥSREνʔϜʹͳ͔ͬͯΒ▸ ΠϯϑϥSREνʔϜͷओͳۀɺར༻͍ͯ͠Δٕज़▸ VulsͱɺͿͬͪΌ͚੬ऑੑରԠͬͯ…▸ VulsߏਤɺΠϯετʔϧํ๏▸ config.tomlɺVulsίϚϯυ▸ Vuls repo Vuls v0.4.0ɾɾɾɾɾɾ▸ ·ͱΊ
ɾ̏ɾࣗݾհ▸ @adachin0817▸ 2017/05~ ϝϯόʔͷλεΫཧɺίʔυϨϏϡʔɺ৽ٕज़ݕূɺ ٕज़վળ νʔϜϚωδϝϯτ etc…..▸ ܦݧ ࣾSE͔ΒϗεςΟϯάɺΞυςΫͳͲͳͲ▸ झຯ HIPHOP ϏδωεϚϯϥοϓτʔφϝϯτͷ ΫϧʔͰϥδΦग़·ͨ͠ʂ https://note.mu/shiburadi/n/nb8bb15a2b7f1
ɾ̏ɾࢲ͕ೖࣾ͢Δલ▸ ͦͦϦʔμʔ͕͍͠(৽ਓʹڭ͑ΔՋ͕ͳ͍)▸ Πϯϑϥϝϯόʔ͕͍ΔͷʹνʔϜͱͯ͠׆ಈͯ͠ͳ͔ͬͨ▸ ͲΜͳϛυϧΣΞͬͯΔͳͲϝϯόʔ͕Ѳ͍ͯ͠ͳ͍▸ ΠϯϑϥϦϙδτϦͳ͍▸ infrastructure as codeͬͯͳ͍▸ खಈͰΠϯετʔϧ͔aws cliͰ͕ΜΔ▸ Πϯϑϥwikiͳ͍X
SREνʔϜ ͱͯ͠ಈ͜͏ʂʂ
(28ষ) SREͷΛՃ͢Δํ๏:৽ਓ͔ΒΦϯίʔϧ୲ɺͦͯͦ͠ͷઌ
ɾ̏ɾSREͷఆٛ▸ αΠτͷ৴པੑΛอূ͢Δ(αΠτ৴པੑΤϯδχΞ)μαΠ▸ ӡ༻ۀͱαΠτͷ৴པੑ্ͷ2ͭͷׂΛ୲͏▸ ੵۃతʹίʔυΛهड़▸ ӡ༻ΛΫϥυࣗಈԽʹஔ͖͑Δ
ɾ̏ɾͦͦSREʹٻΊΒΕΔͷ ᶃ▸ Πϯϑϥٕज़ TCP/IPɺHTTPͳͲͷωοτϫʔΫϓϩτίϧʹ͍ͭͯͷ͔ࣝΒɺύϑΥʔϚϯεվળɺϛυϧΣΞͷػೳࣝ▸ ΞϓϦέʔγϣϯٕज़ Կ͔͠Βͷϓϩάϥϛϯάݴޠࣝ ʢJavaɺPHPɺPythonɺRubyͳͲʣ ͪΖΜΠϯϑϥϓϩϏδϣχϯά
ɾ̏ɾͦͦSREʹٻΊΒΕΔͷ ᶄ▸ ηΩϡϦςΟࣝ ࠷ݶͷηΩϡϦςΟࣝඞਢ(iptablesͱ͔)▸ ίϛϡχέʔγϣϯೳྗ ϝϯόʔ։ൃνʔϜͱͷڞ༗ ڠྗ͍͋͠ͳ͕Β։ൃΛߦ͏ͨΊ (ϦʔμʔίϛϡͰ͢)
ɾ̏ɾSREΤϯδχΞϦϯάʹՃ͑ͯಛΛൃش͢Δ▸ ༏ΕͨϦόʔεΤϯδχΞϦϯάͷεΩϧΛ࣋ͭ ˠγεςϜͷಈ࡞Λཧղ͢Δ▸ ౷ܭతʹߟ͑Δೳྗ͕ඞཁ ˠੳൺֱΛ͏·͘ߦ͑ΔΑ͏ʹ܇࿅͢Δ▸ ྟػԠมʹߦಈ ˠࠜຊతͳݪҼΛൃݟʂ
ɾ̏ɾSREڭҭํ๏
ɾ̏ɾΠϯϑϥSREνʔϜʹͳ͔ͬͯΒ▸ োରԠ৽ਓͨͪʹ(ײΛ࣋ͨͤΔ)▸ infrastructure as codeͰ͖ͯͨΓલ▸ wikiͷॻ͖ํͳͲڭ͑Δ▸ ϓϧϦΫ͠·͘Γ▸ ேձΛ࢝Ίͨ ɾࡢԿΛͬͨͷ͔ ɾࠓԿΛΔͷ͔ ɾԿʹͦΜͳʹϋϚ͍ͬͯΔͷ͔ ɾڞ༗ࣄ߲▸ શϓϩδΣΫτରԠͰ͖ΔΑ͏ʹ
ɾ̏ɾΠϯϑϥSREνʔϜͷओͳۀ▸ αʔόɺϛυϧΣΞͷՄ༻ੑͷҡ࣋ɾ্▸ αʔόɺϛυϧΣΞͷύϑΥʔϚϯεͷ্▸ ϩάऩू/ՄࢹԽɺੳج൫ͷߏஙɺӡ༻(Quick Sight→Redash)▸ αʔόϓϩϏδϣχϯά(Terraform,Ansible)▸ ηΩϡϦςΟ/੬ऑੑͷ୲อ(Vuls)▸ ։ൃڥͳͲͷϝϯς(Vagrant,docker)▸ 24࣌ؒࢹରԠ(zabbix)▸ DevOpsνʔϜͱͯ͠ۀվળˠbitbucketҠߦͳͲ
͋ͯ͞ʂ
VULSͬͯ·͔͢?
ҧ͍·͢
ͪͳΈʹ ݟͨํ
ɾ̏ɾVULSͱ▸ ʮVULnerability Scannerʯͷུ▸ ϑϡʔνϟʔΞʔΩςΫτͷਆށࢯɺྛࢯʹΑΔ։ൃ▸ Linuxαʔόʹଘࡏ͢Δ੬ऑੑΛεΩϟϯ▸ OSύοέʔδཧର֎ͷϛυϧΣΞΛεΩϟϯ▸ ΤʔδΣϯτϨεΞʔΩςΫνϟ(SSH)▸ ઃఆϑΝΠϧͷςϯϓϨʔτࣗಈੜ▸ EmailSlackͳͲ௨ՄೳʢຊޠͰͷϨϙʔτՄೳʣ
ɾ̏ɾͿͬͪΌ͚੬ऑੑରԠͬͯ…▸ ωοτϝʔϧͰใΛಘΔ(ݟಀ͕ͪ͠ɺ͔Βͷ์ஔ)▸ αʔό͕ϨΨγʔͳͷ͋ΓɺରԠ͠ͳ͍͍ͯ͘ͱ͔…(ఘΊ)▸ ଞʹ੬ऑੑ͋ΔͷͰͱશαʔόௐࠪ͠ͳ͍ͱ͍͚ͳ͍(ࠓߋযΓ)▸ ੬ऑੑ༰Λ֬ೝ͢Δ͚ͩͰ͘ͳΔ(ਭ)▸ ຯͳ࡞ۀ….(ٽ͖ͦ͏)▸ ΊΜͲ͍͘͞(ݱ࣮ಀආ)
ɾ̏ɾJVN ੬ऑੑϨϙʔτ @JVNJP
ɾ̏ɾͪͳΈʹ▸ ੬ऑੑରࡦใσʔλϕʔεJVN iPediaͷొঢ়گ [2017ୈ2࢛ظʢ4݄ʙ6݄ʣ70,996݅!!!!!!!!!!!!!
͔ͩΒͦ͜ VULSඞཁͳͷͰ͢
ɾ̏ɾߏਤ▸ 2017/05~▸ CentOS 6.9▸ Zabbix3.0.10▸ Vuls v0.3.0▸ Go v1.8.3
Πϯετʔϧํ๏ʂʁ
ɾ̏ɾΠϯετʔϧํ๏▸ ؆୯ͳͷͰׂѪ͍͖ͤͯͨͩ͞·͆͢▸ ࢀߟࢲͷϒϩάͰ(pvՔ͗) https://blog.adachin.me/wordpress/archives/5540▸ εΩϟϯ͍ͨ͠αʔόͰࣄલʹઃఆ͓ͯ͘͜͠ͱ ɾvulsϢʔβ( ͳΜͰ)NOPASSʹsudoersݖݶΛ͚ͭΔ ɾyum-plugin-changelog͕ೖ͍ͬͯΔ͜ͱ▸ ↑͜͜ΒΜAnsibleԽ͓͖ͯ͘͠
ɾ̏ɾCONFIG.TOML
ɾ̏ɾVULSίϚϯυ▸ vulsσΟΫγϣφϦ(࠷৽੬ऑੑใߋ৽) $ go-cve-dictionary fetchnvd -last2y $ go-cve-dictionary fetchjvn -latest▸ vuls dryrun $ vuls configtest▸ vuls εΩϟϯ $ vuls scan▸ ݁ՌΛαʔόͰ֬ೝ $ vuls tui▸ ݁ՌΛslackʹ௨ $ vuls report -format-short-text -format-json -cvedb-path=$PWD/cve.sqlite3 -ovaldb-path=$PWD/oval.sqlite3 --lang=ja -to-slack -cvss-over=7
ɾ̏ɾఆظతʹ࣮ߦ͍ͨ͠߹▸ cronʹࠐΊOK▸ scan࣌ʹϩά͕resultsԼʹཷ·ΔͷͰআ(5ੈ)
ͦͯ͠ʂ
ɾ̏ɾVULS REPO▸ Web UI ͜Ε͕Ͱ͖ͳ͍
VULS ΧελϚʔ αϙʔτʹฉ͍ͯΈͨ (2िؒϋϚͬͨͨΊ)
ɾ̏ɾVULS SLACK▸ ͳʹΒେܕόʔδϣϯ ग़Δ͔Β Ξοϓͯ͠ࢼͯ͘͠Εͱʂ▸ όϧεʂʂw
2017/08/25 V0.4.0 RELEASE!
ɾ̏ɾVULS UPDATE TO 0.4.0▸ 2017/8/28▸ $ vuls -v vuls v0.4.0 0ba490c▸ $ go version go version go1.9 linux/amd64▸ Ξοϓσʔτ͠·ͨ͠ʂ
ɾ̏ɾVULS V0.4.0▸ εΩϟϯਫ਼େ෯্▸ ϨϙʔτͷใྔΞοϓ(?͕ݮΔ)▸ fast(sudoͳ͠ɺ αʔόෛՙͷεΩϟϯϞʔυ) σϑΥϧτ
ɾ̏ɾVULS REPO V0.4.0▸ 0.4.0͔Βweb αʔόΛ࣋ͨͳͯ͘ OKʹʂ▸ goͷhttpύοέʔδͰ ಈ͘(μΠδΣετೝূ)▸ Port 5111
ɾ̏ɾVULS REPO▸ ՄࢹԽ͢Δ͜ͱͰ੬ऑੑ͕Ͳͷ͘Β͍͋Δͷ͔அͰ͖Δ
ɾ̏ɾVULS ੬ऑੑΞοϓσʔτϑϩʔਤ
ɾ̏ɾVULS/ZABBIX SERVER 1ϲ݄ͷύϑΥʔϚϯε
ɾ̏ɾͲ͜·Ͱ੬ऑੑରԠ͢Δͷ͔▸ ਖ਼ͯ͢Ξοϓσʔτ͢Δͷՙ͕ॏ͍… (Kernel࠶ىಈͱ͔)→ଟ͍▸ ୈࡾऀ͕߈ܸͦ͢͠͏ͳαʔό (LBͿΒԼ͕ͬͯΔͷϚετ)▸ AWSجຊηΩϡΞ▸ ੬ऑੑ0ͱ͍ͬͯະͷͷ͋Δ….(Θ͔ΒΜ)▸ Ͱ੬ऑੑͪΌΜͱΞοϓσʔτ͢Δํ͕҆৺
ɾ̏ɾ·ͱΊ▸ Vulsͷಋೖ؆୯ͰӡӦָͪΜʂ▸ Vulsͷ͓͔͛Ͱ੬ऑੑରԠΛΕͳ͍ʂ▸ vuls scan࣌ʹෛՙͳ͍ʂVulsઐ༻αʔό͍Βͳ͍!▸ ͜Ε͔ΒVulsඞਢʂ▸ όϧεόϧεεόϧʂ
ɾ̏ɾVULSͷͪΐΜ·͛(ਆށ͞Μ)▸ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
ߦ͖·͠ΐ͏ʂʂʂ
͝ਗ਼ௌ ͋Γ͕ͱ͏ ͍͟͝·ͨ͠!ը૾ఏڙ ఱۭͷϥϐϡλ ਕἝ