Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Linux Namespace とセキュリティ (2015-10-02) / 6th OWASP Kansai

tenforward
October 02, 2015

Linux Namespace とセキュリティ (2015-10-02) / 6th OWASP Kansai

OWASP Kansaiローカルチャプターミーティング 6th の LT 資料です。
参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。

tenforward

October 02, 2015
Tweet

More Decks by tenforward

Other Decks in Technology

Transcript

  1. Namespace(໊લۭؒ) OS ͕؅ཧ͢ΔϦιʔε ωοτϫʔΫ (ΞυϨεɺιέοτɺϧʔςΟϯάςʔϒϧɺ ϑΟϧλϦϯάςʔϒϧ) Ϛ΢ϯτ PID UTS(uname(2) ͕ฦࣝ͢ผࢠͷू߹ɻυϝΠϯ໊ɺϗετ໊)

    IPC(System V IPC ΦϒδΣΫτɺPOSIX ϝοηʔδΩϡʔ) Ϣʔβ (UID,GID) ͳͲͳͲ Λอ࣋͢Δ ී௨͸ OS ্ͷϓϩηε͸શͯͷ Namespace Λڞ༗͢Δ clone(2) Ͱ৽͍͠ϓϩηεΛ࡞੒͢ΔࡍʹϑϥάΛࢦఆͯ͠ ಠཱͨ͠ Namespace Λ࡞Δ Ճ౻ହจ OWASP Kansai ϩʔΧϧνϟϓλʔϛʔςΟϯά 6th 2015-10-02 8 / 19
  2. Namespaceͷྫ PID Λ؅ཧ͢Δ Namespace Λ৽͘͠࡞Δ   $ sudo unshare

    --fork --pid --mount-proc -- ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 8172 1768 pts/0 R+ 01:54 0:00 ps aux   ৽ͨʹ࡞ͬͨ Namespace Ͱ ps ίϚϯυΛ࣮ߦͨ͠ͷͰɺ ps ίϚϯυ͕ PID:1 Ͱଞʹϓϩηε͸ͳ͍ Ճ౻ହจ OWASP Kansai ϩʔΧϧνϟϓλʔϛʔςΟϯά 6th 2015-10-02 9 / 19
  3. NamespaceʹΑΔSandbox ࣮ྫ Chrome/Chromium ͷ Linux Sandboxing https://chromium.googlesource.com/chromium/src/+/ master/docs/linux_sandboxing.md $ pstree

    -p :(snip) |-chrome(29616)-+-chrome-sandbox(29618)---chrome(29620)-+-chrome(29630)-+-c | | | | :(snip) | | ‘-chrome-sandbox(29 :(snip) Ճ౻ହจ OWASP Kansai ϩʔΧϧνϟϓλʔϛʔςΟϯά 6th 2015-10-02 12 / 19
  4. NamespaceʹΑΔSandbox ֬ೝͯ͠ΈΔ 1 λʔήοτͱͳΔϓϩηε͕ଐ͢Δ Namespace ʹೖΔ   $ sudo

    nsenter --target 29620 --net --pid   2 ωοτϫʔΫΠϯλʔϑΣʔεΛ֬ೝͯ͠ΈΔ   # ip a (ˣϧʔϓόοΫΠϯλʔϑΣʔε͔͠ͳ͍) 1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00   3 Namespace ಺ͷ PID:1 Ͱ࣮ߦ͞Ε͍ͯΔίϚϯυΛݟͯΈΔ   # mount -t proc proc /mnt # cat /mnt/1/cmdline /opt/google/chrome/chrome --type=zygote   Ճ౻ହจ OWASP Kansai ϩʔΧϧνϟϓλʔϛʔςΟϯά 6th 2015-10-02 13 / 19
  5. User Namespace Ұ൪࠷ۙΧʔωϧʹ࣮૷͞Εͨ Namespace (linux 3.8) ௨ৗɺNamespace(=ίϯςφɾԾ૝؀ڥ) Λ࡞Δʹ͸ಛݖ (root ݖݶ)

    ͕ඞཁɻͭ·Γɺ࡞੒ͨ͠ Namespace ಺ͷಛݖ Ϣʔβ͸ϗετ্Ͱ΋ಛݖΛ࣋ͭ ΋͠੬ऑੑ͕ଘࡏͨ͠Βʜ ͦ͜Ͱ User Namespace ϗετ্Ͱ͸ҰൠϢʔβ User Namespace ্Ͱ͸ಛݖϢʔβ ϗετ্ͷ UID/GID ͱ Namespace ಺ͷ UID/GID ͷϚοϐ ϯάΛ࡞੒Ͱ͖Δ ϗετ্ͷಛݖϢʔβͱશ͘ಉ͡ݖݶ͕ Namespace ಺ͷಛ ݖϢʔβʹ༩͑ΒΕ͍ͯΔΘ͚Ͱ͸ͳ͍ Ճ౻ହจ OWASP Kansai ϩʔΧϧνϟϓλʔϛʔςΟϯά 6th 2015-10-02 15 / 19
  6. User Namespace   $ lxc-start -n ct01 (ίϯςφͷىಈ) $

    lxc-info -n ct01 -p (ىಈͨ͠ίϯςφͷ PID) PID: 10443 $ ps -u -p 10443 (10443 ͸ UID:100000 Ͱ࣮ߦ͞Ε͍ͯΔ) USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 100000 10443 0.0 0.0 33380 4004 ? Ss 23:15 0:00 /sbin/init $ lxc-attach -n ct01 (ίϯςφͷதʹೖΔ) root@ct01:/# id (root ϢʔβͰ͋Δ͜ͱΛ֬ೝ) uid=0(root) gid=0(root) groups=0(root) root@ct01:/# touch testfile (ϑΝΠϧΛ࡞Δ) root@ct01:/# ls -l testfile (ॴ༗ݖ͸ root:root) -rw-r--r-- 1 root root 0 Oct 1 11:12 testfile root@ct01:/# exit (ίϯςφ͔Βൈ͚Δ) $ sudo ls -l .local/share/lxc/ct01/rootfs/testfile (ί ϯ ς φ ͷ ֎ ͔ Β ݟ Δ ͱ uid/gid=100000) -rw-r--r-- 1 100000 100000 0 10 ݄ 1 20:12 .local/share/lxc/ct01/rootfs/testfile   Ճ౻ହจ OWASP Kansai ϩʔΧϧνϟϓλʔϛʔςΟϯά 6th 2015-10-02 16 / 19