ペパボ・はてな技術大会〜インフラ技術基盤〜@福岡 「ホスティングにおける安定運用のためのアクセスコントロール手法」 https://pepabo.connpass.com/event/65932/
ٱถഅ(.01FQBCP *ODϖύϘɾͯͳٕज़େձʙΠϯϑϥٕज़ج൫ʙϗεςΟϯάʹ͓͚Δ҆ఆӡ༻ͷͨΊͷΞΫηείϯτϩʔϧख๏
View Slide
ࣗݾհٱถ അ (@takumakume)20164݄͔ΒϖύϘʹೖࣾΠϯϑϥΤϯδχΞ
ϩϦϙοϓʂֹ݄ԁ͔Βར༻Ͱ͖ΔʂສαΠτҎ্ӡ༻தʂඵؒສઍϦΫΤετΛॲཧʂ
ϗεςΟϯάʹ͓͚Δ҆ఆӡ༻ͷͨΊͷΞΫηείϯτϩʔϧख๏
࣍wϗεςΟϯάαʔϏεͷ҆ఆӡ༻͕؆୯Ͱͳ͍ཧ༝w͜Ε·ͰͷΞΫηείϯτϩʔϧख๏ͷհͱ՝w՝Λղܾͨ͠৽͍͠ΞΫηείϯτϩʔϧख๏ͷհw·ͱΊ
ຊͷεϥΠυͰɺߴෛՙͷαΠτʹରͯ͠ΞΫηε੍ޚΛ࣮ࢪ͢Δख๏ʹ͍ͭͯͷհΛ͠·͢ɻͯ͢ͷతɺαʔϏεͷ҆ఆӡ༻ͱɺΑΓଟ͘ͷ͓٬༷͕շదʹ͝ར༻͍͚ͨͩΔΑ͏ʹ͢Δ͜ͱ͕೦಄ʹ͋Γ·͢ʂ
ϗεςΟϯάαʔϏεͷ҆ఆӡ༻͕؆୯Ͱͳ͍ཧ༝
ͦͷલʹɺͱ͋Δ8FCαʔϏεͷαʔόͷ$16༻ΛݟͯΈ·͢ɻ
$16༻ͱ͋Δ8FCαʔϏεͷ$16༻࣌ ࣌࣌
࣌ ࣌࣌ΰʔϧσϯλΠϜனٳΈόονॲཧͱ͋Δ8FCαʔϏεͷ$16༻
ΰʔϧσϯλΠϜனٳΈόονॲཧ$16༻8FCαʔϏεͷ߹λʔήοτ࣮ΛѲ͍ͯ͠ΔͨΊɺΛ૾͍͢͠
ͰɺϗεςΟϯάαʔόͷ$16༻ΛݟͯΈ·͢ɻ
࣌ ࣌ ࣌࣌ϗεςΟϯάαʔόͷ$16༻
ϗεςΟϯάαʔόͷ$16༻Կ͔͕ಈ͍͍ͯΔ
ϗεςΟϯάαʔόͷ߹ɺ༷ʑͳϓϩάϥϜ͕࣮ߦ͞ΕΔͨΊෛՙͷݪҼ༷ʑͰରԠ͠ʹ͍͘
༷ʑͳෛՙͷݪҼ੬ऑੑ੬ऑੑͷ͋Δ$.4ͳͲΛܦ༝ͯ͠ෆਖ਼ͳॲཧ͕࣮ߦ͞ΕΔɻ߈ܸαʔόͨΓͷαΠτ͕ଟ͍ͨΊ߈ܸͷରʹͳΓ͍͢ɻϢʔβϓϩάϥϜϗεςΟϯάͰࣗ༝ʹϓϩάϥϜͷ࣮ߦ͕ՄೳͳڥɻେྔʹϦιʔεΛফඅ͢ΔϓϩάϥϜ͕࣮ߦ͞ΕΔ͜ͱ͕͋ΔɻͳͲʜ
͜ΕΒʹରͯ͠Կͷରࡦ͠ͳ͍߹αʔόߴෛՙͳঢ়ଶͱͳΓαʔϏεͷఏڙ࣭͕Լͯ͠͠·͏
͜Ε·ͰͷΞΫηείϯτϩʔϧख๏
NPE@WIPTU@NBYDMJFOUT"QBDIFIUUQE7JSUVBM)PTU# httpd.confDocumentRoot /path/to/webServerName www.example.jpVhostMaxClients 3w"QBDIFͷϞδϡʔϧw7JSUVBM)PTUຖͷ࠷େಉ࣌ଓΛ੍ݶ͢Δ͜ͱ͕Ͱ͖Δ8FCΞΫηε
NPE@WIPTU@NBYDMJFOUT"QBDIFIUUQE7JSUVBM)PTUಛఆͷ7JSUVBM)PTUͷภΓΛࢭॏ͍εΫϦϓτͷଟॏ࣮ߦΛࢭ8FCΞΫηεw"QBDIFͷϞδϡʔϧw7JSUVBM)PTUຖͷ࠷େಉ࣌ଓΛ੍ݶ͢Δ͜ͱ͕Ͱ͖Δ
NPE@WIPTU@NBYDMJFOUTʹΑΔ੍ݶͷࣗಈԽγεςϜ04IUUQEMPH DPOpH(PMBOH ࣗಈ੍ޚγεςϜᶃࢹ ᶄղੳ ᶅઃఆᶆөࢹɾϩʔυΞϕϨʔδɾ)551Ϩεϙϯεղੳઃఆ ݪҼαΠτʹಉ࣌ଓ੍ݶΛઃఆө IUUQEͷHSBDFGVMSFTUBSUΛ࣮ߦϩά͔ΒෛՙݪҼͷαΠτΛಛఆෛՙͷߴ͍αΠτʹࣗಈతʹ੍ݶΛߦ͏γεςϜΛ(PMBOHͰ։ൃ
͜Ε͚ͩͰߴෛՙରࡦ͕ෆेͩͬͨ
՝
՝੍ޚ୯Ґ7JSUVBM)PTUຖͷ੍ޚͷΈߦ͏⇛ෛՙύλʔϯʹΑͬͯɺΞΧϯτ୯ҐϑΝΠϧ୯ҐɹͳͲ੍ޚ୯ҐΛม͍͑ͨɻөʹHSBDFGVMSFTUBSU͕ඞཁ⇛HSBDFGVMSFTUBSUͷॲཧॏ͘ϨεϙϯεԆͷݪҼʹɹͳΔͨΊۃྗ࣮ߦͨ͘͠ͳ͍ɻөॲཧಉ࣌ଓ੍ݶͷΈߦ͏⇛୯ൃͰେྔͷϦιʔεΛফඅ͢ΔϓϩάϥϜʹରԠͰ͖ͳ͍ɻɹϦιʔεͷ੍ݶ࣮ࢪ͍ͨ͠ɻ੍ݶखஈ
ཁٻ͕૿͑Δʹ࿈ΕͯطଘͷιϑτΣΞͷΈͰ՝Λղܾ͠ʹ͘͘ͳͬͨ
͜Ε·Ͱɺ՝͕͋Δͷͷίʔυʹམͱ͠ࠐΜͰ͍͘εϐʔυ͕͔ͬͨɻ
ӡ༻πʔϧʑਐԽ͕ඞཁͰ͋Δ
࠷ॳ͔ΒᘳͳιϑτΣΞΛ࡞Δ͜ͱͰ͖ͳ͍ਐԽ͍ͤ͢͞ج൫Λ࡞Γ͍ͨʂ
NPE@NSVCZ✕
NPE@NSVCZͱʁwฐࣾͷ!NBUTVNPUPSZ͕։ൃ͍ͯ͠ΔIUUQEͷϞδϡʔϧwϓϩηεͷىಈϦΫΤετͷλΠϛϯάͳͲΛܖػʹNSVCZͷεΫϦϓτΛ࣮ߦͰ͖ΔɻwϦΫΤετύϥϝʔλΛऔಘͨ͠ΓҙͷεςʔλείʔυΛฦͨ͠ΓͰ͖Δɻ
NPE@NSVCZΛબΜͩཧ༝
NPE@NSVCZΛબΜͩཧ༝ߴͳॲཧ$ݴޠͷϥΠϒϥϦΛ͍͍ͨ߹NSCHFNͱ͍͏֦ுػೳΛͬͯ$ݴޠͰͷ࣮ՄೳͱͳΔɻ։ൃऀͷ!NBUTVNPUPSZ͕ࡏ੶͍ͯ͠ΔɻNPE@NSVCZΛ༻͍Δ͜ͱͰIUUQEͷৼΔ͍Λ։ൃޮ͕Α͍3VCZߏจͰΧελϚΠζ͢Δ͜ͱ͕Ͱ͖Δɻʢैདྷ.PEVMFΛ$ݴޠͰ։ൃ͢Δඞཁ͕͋ͬͨɻʣ
NPE@NSVCZΛબΜͩཧ༝NPE@NSVCZΛ༻͍Δ͜ͱͰIUUQEͷৼΔ͍Λ3VCZߏจͰΧελϚΠζ͢Δ͜ͱ͕Ͱ͖Δɻ3VCZ։ൃޮ͕ྑ͍ɻʢैདྷ.PEVMFΛ$ݴޠͰ։ൃ͢Δඞཁ͕͋ͬͨɻʣߴͳॲཧ$ݴޠͷϥΠϒϥϦΛ͍͍ͨ߹NSCHFNͱ͍͏֦ுػೳΛͬͯ$ݴޠͰͷ࣮ՄೳͱͳΔɻ։ൃऀͷ!NBUTVNPUPSZ͕ࡏ੶͍ͯ͠Δɻ֦ுੑɺอकੑΛଛͳΘͣޮΑ͘։ൃՄೳ
NPE@NSVCZΛબΜͩཧ༝NPE@NSVCZΛ༻͍Δ͜ͱͰIUUQEͷৼΔ͍Λ3VCZߏจͰΧελϚΠζ͢Δ͜ͱ͕Ͱ͖Δɻ3VCZ։ൃޮ͕ྑ͍ɻʢैདྷ.PEVMFΛ$ݴޠͰ։ൃ͢Δඞཁ͕͋ͬͨɻʣߴͳॲཧ$ݴޠͷϥΠϒϥϦΛ͍͍ͨ߹NSCHFNͱ͍͏֦ுػೳΛͬͯ$ݴޠͰͷ࣮ՄೳͱͳΔɻ։ൃऀͷ!NBUTVNPUPSZ͕ࡏ੶͍ͯ͠ΔɻਐԽ͠ଓ͚Δ͜ͱ͕Ͱ͖Δ
NPE@NSVCZΛ࣠ͱͨ͠৽͍͠ΞΫηείϯτϩʔϧख๏
IUUQBDDFTTMJNJUFSͱ͍͏ιϑτΣΞͷΞʔΩςΫνϟΛϕʔεʹ৽͍͠ΞΫηείϯτϩʔϧج൫Λ։ൃ
IUUQBDDFTTMJNJUFSNSVCZΛͬͯϦΫΤετύϥϝʔλΛݩʹಉ࣌ଓΛΧϯτ͢ΔIUUQENPE@NSVCZᶃlFYBNQMFDPNzʹΞΫηε1)1$(*ͳͲ,74,FZFYBNQMFDPN7BMVFಉ࣌ଓΧϯλʔᶄΠϯΫϦϝϯτᶅॲཧ ᶆσΫϦϝϯτ͜ͷΑ͏ͳྲྀΕͰಉ࣌ଓΛΧϯτ͢Δ
IUUQBDDFTTMJNJUFSΛͬͯղܾͰ͖Δ͜ͱ
IUUQBDDFTTMJNJUFSΛͬͯղܾͰ͖Δ͜ͱ੍ޚ୯ҐNPE@NSVCZͰऔಘͰ͖ΔϦΫΤετύϥϝʔλΛશͯར༻Ͱ͖ΔɻઃఆөNSVCZΛͬͯ؆୯ʹɺHSBDFGVMSFTUBSUΛඞཁͱ͠ͳ͍өํ๏Ͱ࣮͢Δ͜ͱ͕Ͱ͖Δɻ
IUUQBDDFTTMJNJUFSΛϕʔεʹՃػೳΛ࣮
੍ݶ༰ͷཧ
੍ݶ༰ͷཧ੍ݶର͝ͱͷಉ࣌ଓΛཧ͍ͨ͠ʂIUUQEIPHFDPNGVHBVTFSͷυϝΠϯϦΫΤετIPHFDPNͷಉ࣌ଓ·Ͱʹ͍ͨ͠ʜGVHBVTFSͷಉ࣌ଓ·Ͱʹ͍ͨ͠ʜ
੍ݶ༰ͷཧIUUQBDDFTTMJNJUFSͷΞʔΩςΫνϟʹ੍ݶ༰Λཧ͢ΔػೳΛ࣮IUUQENPE@NSVCZ ,74ϦΫΤετॲཧΠϯΫϦϝϯτσΫϦϝϯτಉ࣌ଓΧϯλʔʴ1)1 $(*
੍ݶ༰ͷཧIUUQENPE@NSVCZ ,74ϦΫΤετॲཧΠϯΫϦϝϯτσΫϦϝϯτಉ࣌ଓΧϯλʔ,FZ7BMVFIPHFDPNGPPDPN,741)1 $(*੍ݶ༰Λอ͢ΔͨΊͷ,74Λ४උ੍ݶ༰Λࢀর
੍ݶ༰ͷཧIUUQENPE@NSVCZ ,74ϦΫΤετॲཧΠϯΫϦϝϯτσΫϦϝϯτಉ࣌ଓΧϯλʔ,FZ7BMVFIPHFDPNGPPDPN,741)1 $(*੍ݶ༰Λࢀর,74,FZ7BMVFIPHFVTFSGPPVTFSϗετ୯ҐΞΧϯτ୯Ґ੍ݶ୯ҐΛ૿͍ͨ࣌͠,74Λ૿ͤྑ͍
ࣗಈ੍ޚγεςϜͱͷ࿈ܞ
ࣗಈ੍ޚγεςϜͱͷ࿈ܞIUUQENPE@NSVCZ,FZ7BMVFIPHFDPNGPPDPN,74(PMBOH ࣗಈ੍ޚγεςϜIPHFDPNNBY@DMJFOUTGPPDPNNBY@DMJFOUTᶃ੍ݶใͷ:".-ϑΝΠϧΛੜᶄ:".-ΛಡΈࠐΈᶅ,74ॻ͖ࠐΈෛՙͷݕ ϩάͷղੳ ݪҼͷಛఆHSBDFGVMSFTUBSUͷΑ͏ʹॏ͍ॲཧෆཁ
,74ʹॻ͖ࠐΊྑ͍ͷͰʁz:".-Λϩʔυ͢Δzͱ͍͏൚༻తͳΠϯλʔϑΣΠεʹ͢Δ͜ͱͰɺผͷ੍ޚγεςϜ͕࡞ΒΕͯ؆୯ʹ࿈ܞͰ͖Δɻ,74ͷഉଞ੍ޚNPE@NSVCZͰ࣮͍ͯ͠Δ⇛֎෦͔Βॻ͖ࠐΈΛ͠Α͏ͱ͢ΔͱλΠϛϯάʹΑͬͯɹΤϥʔʹͳΔ
୯ൃͰେྔͷ$16ϦιʔεΛফඅ͢ΔϓϩάϥϜͷରࡦ
DHSPVQ
DHSPVQͱϓϩηεΛάϧʔϓԽͯ͠$16ϝϞϦɺσΟεΫ*0ͷ੍ޚΛߦ͏ɺ-JOVYΧʔωϧͷػೳৄ͘͢͠ͱ͕࣌ؒΓͳ͍ͷͰׂѪ͠·͢ʜ
ಛఆͷϦΫΤετͷΈΛରͱͯ͠DHSPVQʹΑΔ$16ͷ੍ݶΛ͍ͨ͠ʂ
ಛఆͷϦΫΤετͷΈDHSPVQͰ੍ޚ͢ΔIUUQEXPSLFS IUUQEXPSLFS IUUQEXPSLFSίϯςϯπॲཧ ίϯςϯπॲཧϦΫΤετ ϦΫΤετ$16ͷ੍ݶΛ͍ͨ͠ϦΫΤετࣗʹDHSPVQͷ੍ݶΛ࣮ࢪNSVCZίϯςϯπॲཧࣗΛݩͷDHSPVQʹ͢NSVCZ$16੍ݶ
ಛఆͷϦΫΤετͷΈΛରͱͨ͠DHSPVQʹΑΔ$16ͷ੍ݶΛ࣮ݱͨ͠ʂ
՝ʹ͍͓ͭͯ͞Β͍
՝੍ޚ୯Ґ7JSUVBM)PTUຖͷ੍ޚͷΈߦ͏⇛ෛՙύλʔϯʹΑͬͯɺΞΧϯτ୯ҐϑΝΠϧ୯ҐɹͳͲ੍ޚ୯ҐΛม͍͑ͨɻNPE@NSVCZ͔Βऔಘͨ͠ϦΫΤετύϥϝʔλΛݩʹ͋ΒΏΔ୯ҐͰ੍ޚΛߦ͏͜ͱ͕Ͱ͖ΔΑ͏ʹͳͬͨɻ
՝੍ޚ୯Ґ7JSUVBM)PTUຖͷ੍ޚͷΈߦ͏⇛ෛՙύλʔϯʹΑͬͯɺΞΧϯτ୯ҐϑΝΠϧ୯ҐɹͳͲ੍ޚ୯ҐΛม͍͑ͨɻNSVCZΛͬͯ,74ʹσʔλΛ࣋ͭ͜ͱͰ࠶ಡࠐΈॲཧ͕ඞཁͳ͘ͳͬͨɻөʹHSBDFGVMSFTUBSU͕ඞཁ⇛HSBDFGVMSFTUBSUͷॲཧॏ͘ϨεϙϯεԆͷݪҼʹɹͳΔͨΊۃྗ࣮ߦͨ͘͠ͳ͍ɻөॲཧ
՝੍ޚ୯Ґ7JSUVBM)PTUຖͷ੍ޚͷΈߦ͏⇛ෛՙύλʔϯʹΑͬͯɺΞΧϯτ୯ҐϑΝΠϧ୯ҐɹͳͲ੍ޚ୯ҐΛม͍͑ͨɻDHSPVQʹΑΔ$16ͷίϯτϩʔϧΛߦ͏͜ͱͰղܾͨ͠ɻಉ࣌ଓ੍ݶͷΈߦ͏⇛୯ൃͰେྔͷϦιʔεΛফඅ͢ΔϓϩάϥϜʹରԠͰ͖ͳ͍ɻɹϦιʔεͷ੍ݶ࣮ࢪ͍ͨ͠ɻ੍ݶखஈ
·ͱΊ
·ͱΊϗεςΟϯάαʔόͷ҆ఆӡ༻؆୯Ͱͳ͍ʂ՝Λղܾ͢ΔͨΊʹNPE@NSVCZΛ༻͍ͨ$16Ϧιʔεͷ੍ޚख๏ͱͯ͠ɺϦΫΤετຖͷDHSPVQʹΑΔ$16Ϧιʔε੍ޚΛ࣮ݱͨ͠ʂ֦ுੑɾอकੑɾੜ࢈ੑͷߴ͍ΞΫηείϯτϩʔϧج൫Λ։ൃͨ͠ʂ
܅ϖύϘͰಇ͔ͳ͍͔ʁ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ