E D R , A S I H C RSS

Moni WikiACL

/!\ since MoniWiki 1.1.2

๋ชจ๋‹ˆ์œ„ํ‚ค์˜ SecurityPlugin์˜ ํ•œ๊ฐ€์ง€

1. ์„ค์ •

config.php์— ๋‹ค์Œ์„ ๋„ฃ์œผ๋ฉด ACL SecurityPlugin์ด ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.
$security_class="acl";
$acl_type="default";

2. ๋ฏธ๋ฆฌ ์ •์˜๋œ ๊ทธ๋ฃน @group

  • @ALL: ๋ชจ๋“  ์‚ฌ์šฉ์ž (priority: 1)
  • @User: ๋“ฑ๋ก ์‚ฌ์šฉ์ž (priority: 2)

3. ์‚ฌ์šฉ์ž ์ •์˜ ๊ทธ๋ฃน @group ๊ทธ๋ฆฌ๊ณ  @group์˜ priority

##@๊ทธ๋ฃน์ด๋ฆ„ ์‚ฌ์šฉ์ž๋ฆฌ์ŠคํŠธ [priority]
@Guest  Anonymous                   # priority๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’ 2
@Kiwirian foobar,kiwi,hello123   20 # @Kiwirain ๊ทธ๋ฃน์˜ priority๋ฅผ ์žก๋Š”๋‹ค.
/!\ ์—ฌ๊ธฐ์„œ Anonymous ์‚ฌ์šฉ์ž๋Š” @Guest๋กœ ์ง€์ •๋˜์–ด ์žˆ์œผ๋ฉฐ, @Guest๋Š” ๋ฏธ๋ฆฌ ์ •์˜๋œ ๊ทธ๋ฃน์ด ์•„๋‹™๋‹ˆ๋‹ค.

<!> ๋ชจ๋‹ˆ์œ„ํ‚ค 1.1.5๋ถ€ํ„ฐ๋Š” network/ip ์ฃผ์†Œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
# ๋ถ€๋ถ„ IP, CIDR ๋“ฑ๋“ฑ๋„ ๋ชจ๋‘ ์ง€์›.
@Block 123.123.0.0/255.255.0.0, 123.12, 123.125.0/16 

์œ„์˜ ์˜ˆ์—์„œ @Block ๊ทธ๋ฃน์„ ์ •์˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ด์— ํ•ด๋‹น๋˜๋Š” IP๋Œ€์—ญ, ๋ถ€๋ถ„IP ๋“ฑ๋“ฑ์„ ์ง€์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ๊ทธ๋ฃน์— ๋Œ€ํ•œ ํšจ๋ ฅ์„ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
*       @Block            deny    * // ๋ชจ๋“  ํŽ˜์ด์ง€(*)๋ฅผ @Block ์‚ฌ์šฉ์ž๊ทธ๋ฃน์— ๋Œ€ํ•ด ๋ชจ๋“  ์•ก์…˜(*)์„ ๊ฑฐ๋ถ€(deny)

/!\ IP, CDIR, ๋ถ€๋ถ„IP ๋“ฑ๋“ฑ์€ ๊ทธ๋ฃน ์ง€์ •์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

4. ACL ํƒ€์ž…

  • allow : ํ—ˆ์šฉ
  • deny : ์ œํ•œ
  • protect: ๋น„๋ฐ€๋ฒˆํ˜ธ ์ œํ•œ์ด ๊ฐ€๋Šฅํ•œ ๋ช‡๋ช‡ POST์•ก์…˜์— ๋Œ€ํ•ด (๋ชจ๋“  ์•ก์…˜์ด ๊ด€๋ฆฌ๋น„๋ฒˆ์œผ๋กœ ์ œํ•œ๊ฐ€๋Šฅํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค)
    • ์ผ๋ถ€ POST์•ก์…˜์€ ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์ œํ•œ์„ ๊ฑธ์–ด๋‘˜ ์ˆ˜ ์žˆ๋Š” ์•ก์…˜์€ protect ๊ฐ€๋Šฅํ•œ ์•ก์…˜์ž…๋‹ˆ๋‹ค. protect ์•ก์…˜์€ ์ œํ•œ๋œ allow์ด๋ฉฐ, ์ผ๋ถ€ POST์•ก์…˜๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ) do_post_savepage()๋Š” post ์•ก์…˜์ด๋ฉฐ, ์ผ๋ฐ˜ do_goto()๊ฐ™์€ ์•ก์…˜๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๊ด€๋ฆฌ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ์•ก์…˜์„ ์ œํ•œ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€์ • ๋ฐฉ๋ฒ•์€ *๋Š” ๋ชจ๋“  ์•ก์…˜์„ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, ํŽ˜์ด์ง€ ์ด๋ฆ„์€ regex๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
# ํŽ˜์ด์ง€์ด๋ฆ„ @๊ทธ๋ฃน/ํŠน์ •์‚ฌ์šฉ์ž allow/deny ์•ก์…˜๋ฆฌ์ŠคํŠธ
FoobarPage @ALL allow *
FoobarPage babo deny edit,diff,info
HelpOn.*   @ALL deny edit,savepage

4.1. ๊ฐ„๋‹จํ•œ ์ ์šฉ์˜ ์ผ๋ถ€

@Guest  Anonymous  // @Guest ์‚ฌ์šฉ์ž ๊ทธ๋ฃน ์ •์˜
*       @ALL            deny    * // ๋ชจ๋“  ํŽ˜์ด์ง€(*)๋ฅผ ๋ชจ๋“  ์‚ฌ์šฉ์ž(@ALL)์—์„œ ๋ชจ๋“  ์•ก์…˜(*)์„ ๊ฑฐ๋ถ€(deny)
*       @ALL            allow   ticket // ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ticket ์•ก์…˜์„ ํ—ˆ๋ฝ(allow)
*       @ALL            allow   read,userform,rss_rc,aclinfo,fortune,deletepage,fixmoin,ticket // ์—ฌ๋Ÿฌ ์ค„๋กœ ๋‚˜๋ˆ ์“ฐ๊ธฐ ๊ฐ€๋Šฅ
*       @User           allow   *
// ๋ชจ๋“  ํŽ˜์ด์ง€(*)๋ฅผ ์ผ๋ฐ˜ ๊ฐ€์ž… ์‚ฌ์šฉ์ž์—๊ฒŒ(@User) ํ—ˆ๋ฝ(*)
WikiSandBox     @Guest  allow   edit,info,diff
// WikiSandBox ํŽ˜์ด์ง€๋ฅผ @Guest ๊ทธ๋ฃน์— edit,info,diff ์•ก์…˜์„ ํ—ˆ์šฉ(allow)
WikiSandBox     Foobar deny edit
// ์‚ฌ์šฉ์ž Foobar๋Š” WikiSandbox ํŽธ์ง‘ ๋ชปํ•˜๊ฒŒ ํ•จ

4.2. ์™„์ „ํ•œ ์ ์šฉ์˜ ์˜ˆ

/!\ //๋กœ ์‹œ์ž‘๋˜๋Š” ์ค„์€ ์„ค๋ช…์ค„์ž…๋‹ˆ๋‹ค.
# acl.default.php
# <?php exit()?> // ํŒŒ์ผ์€ php์ด์ง€๋งŒ ํ˜•์‹์€ php๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋‹ค.
# Please don't modify the lines above
#
# A sample Access Control Lists file for Moniwiki
#
@Guest  Anonymous  // @Guest ์‚ฌ์šฉ์ž ๊ทธ๋ฃน ์ •์˜
*       @ALL            deny    *
// ๋ชจ๋“  ํŽ˜์ด์ง€(*)๋ฅผ ๋ชจ๋“  ์‚ฌ์šฉ์ž(@ALL)์—์„œ ๋ชจ๋“  ์•ก์…˜(*)์„ ๊ฑฐ๋ถ€(deny)
*       @ALL            allow   ticket
// ๋ชจ๋“  ํŽ˜์ด์ง€(*)๋ฅผ ๋ชจ๋“  ์‚ฌ์šฉ์ž(@ALL)์—๊ฒŒ ticket ์•ก์…˜์„ ํ—ˆ๋ฝ(allow) ticket์€ ๊ฐ€์ž… ํผ์— ๋‚˜์˜ค๋Š” ๋กœ๋ด‡๊ฐ€์ž…๋ฐฉ์ง€ captcha
*       @User           allow   *
// ๋ชจ๋“  ํŽ˜์ด์ง€(*)๋ฅผ ์ผ๋ฐ˜ ๊ฐ€์ž… ์‚ฌ์šฉ์ž์—๊ฒŒ(@User) ํ—ˆ๋ฝ(*)
# some pages are allowed to edit
WikiSandBox     @Guest  allow   edit,info,diff
// WikiSandBox ํŽ˜์ด์ง€๋ฅผ @Guest ๊ทธ๋ฃน์— edit,info,diff ์•ก์…˜์„ ํ—ˆ์šฉ(allow)
# some POST actions support protected mode using admin password
*       @ALL            protect deletefile,deletepage,rename,rcspurge,rcs,chmod,backup,restore
// ๋ชจ๋“  ํŽ˜์ด์ง€(*)์— ๋Œ€ํ•ด ๋ชจ๋“  ์‚ฌ์šฉ์ž์˜(@ALL) detetefile,deltetepage ๋“ฑ๋“ฑ์˜ protect ๊ฐ€๋Šฅํ•œ ์•ก์…˜์„ protect
# some actions allowed to @ALL
*       @ALL            allow   read,userform,rss_rc,aclinfo,fortune,deletepage,fixmoin,ticket
# some pages have restrict permission
MoniWiki        @ALL    deny    edit,uploadfile,diff
// MoniWiki ํŽ˜์ด์ง€๋ฅผ @ALL ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ edit,upload,diff๋“ฑ์˜ ์ผ๋ถ€ ์•ก์…˜์„ ๊ฑฐ๋ถ€

5. ACL์ด ์„ฑ๋ฆฝ๋˜๋Š” ๊ณผ์ •

5.1. ๋งˆ์ง€๋ง‰ ACL ํ•ญ๋ชฉ์ด ์ ์šฉ๋œ๋‹ค

explicitํ•˜๊ฒŒ ์ง€์ •ํ•  ๊ฒฝ์šฐ ์ตœ์ข… ACL ํ•ญ๋ชฉ์ด ์ ์šฉ๋œ๋‹ค.
  • allow read + deny read = deny read
  • deny read + allow read = allow read

wildcard๋ฅผ ์“ด ๊ฒฝ์šฐ๋„ ์—ญ์‹œ ์ตœ์ข… ACL ํ•ญ๋ชฉ์ด ์ ์šฉ๋œ๋‹ค.
  • allow * + deny * = deny * ๋ชจ๋“  ์•ก์…˜์„ ๊ฑฐ๋ถ€
  • deny * + allow * = allow * ๋ชจ๋“  ์•ก์…˜์„ ์Šน์ธ

5.2. explicitํ•˜๊ฒŒ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค

wildcard๋ฅผ ์“ด ๊ฒƒ ๋ณด๋‹ค explicitํ•˜๊ฒŒ ์ง€์ •๋œ ๊ฒƒ์ด ๋จผ์ € ์ ์šฉ๋œ๋‹ค. (์ˆœ์„œ์— ์ƒ๊ด€ ์—†๋‹ค)
  • deny * + allow edit,info = edit์™€ info ์•ก์…˜๋งŒ ๊ฐ€๋Šฅ: explicitํ•˜๊ฒŒ ์ง€์ •๋œ ์•ก์…˜๋งŒ ํ—ˆ๋ฝ
  • allow * + deny info,diff = info/diff ์ด์™ธ์˜ ์•ก์…˜์ด ๋ชจ๋‘ ํ—ˆ์šฉ: explicitํ•˜๊ฒŒ ์ง€์ •๋œ ์•ก์…˜๋งŒ ๊ฑฐ๋ถ€
  • deny info,diff + allow * = ์œ„์˜ ๊ฒฝ์šฐ์™€ ๊ฐ™๋‹ค. explicitํ•˜๊ฒŒ ์ง€์ •๋œ ์•ก์…˜์ธ info, diff๋งŒ ๊ฑฐ๋ถ€

/!\ deny * + allow read๋Š” ์•„ํŒŒ์น˜์˜ Order allow,deny์™€ ๊ฐ™๋‹ค. ์ฆ‰, explicitํ•˜๊ฒŒ ์ง€์ •๋œ allow์— ๋Œ€ํ•ด ๋จผ์ € ๊ฒ€์‚ฌํ•˜์—ฌ ์•ก์…˜์ด read์ผ๋•Œ๋งŒ ํ—ˆ๋ฝํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์•ก์…˜์€ deny.

deny edit + allow *์€ ๊ทธ ๋ฐ˜๋Œ€๋กœ Order deny,allow๊ฐ€ ๋œ๋‹ค.

5.3. ์˜ˆ

๋ชจ๋“  ํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅํ•˜๊ฒŒ, ProtectedPage์— ๋Œ€ํ•ด์„œ๋Š” ์ฝ๊ธฐ๋„ ๊ฑฐ๋ถ€
* @ALL deny *
* @ALL allow read
ProtectedPage @ALL deny read
ProtectedPage๋Š” deny * + allow read + deny read = deny *์ด ๋œ๋‹ค.

/!\ ์ฃผ์˜: ๋ชจ๋“  ๊ฒฝ์šฐ, explicitํ•˜๊ฒŒ ์ง€์ •๋  ๊ฒฝ์šฐ์— ํšจ๋ ฅ์ด ๋ฐœ์ƒํ•œ๋‹ค.

* @ALL deny *
* @ALL allow read
ProtectedPage @ALL deny *
ProtectedPage๋Š” deny * + allow read + deny *์ด ๋œ๋‹ค: explicitํ•˜๊ฒŒ ํ—ˆ๋ฝ๋œ read๊ฐ€ ํ—ˆ์šฉ๋œ๋‹ค.
๋งˆ์ง€๋ง‰ ์ค„ ProtectedPage @ALL deny *๋Š” ๋ฌด์‹œ๋˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

6. priority๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ACL์˜ ์„ฑ๋ฆฝ ๊ณผ์ •

์•ž์ ˆ์˜ ์„ค๋ช…์€ priority๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์„ค๋ช…์ด์—ˆ๋‹ค. ๊ทธ๋ฃน์˜ priority๋ฅผ ๋‘์—ˆ์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ์ ์šฉ๋ ๊นŒ?

6.1. ์˜ˆ์ œ 1

@ALL deny *
@User allow *
์ด ๊ฒฝ์šฐ @User์˜ priority๊ฐ€ ๋†’์œผ๋ฏ€๋กœ allow *์ด ์ ์šฉ๋œ๋‹ค.

6.2. ์˜ˆ์ œ 2

@ALL deny *
@User allow read

@User์—์„œ read๊ฐ€ ํ—ˆ์šฉ. ๋‚˜๋จธ์ง€๋Š” @ALL deny *์— ์˜ํ•ด ๊ฑฐ๋ถ€๋œ๋‹ค.

6.3. ์˜ˆ์ œ 3

*       @ALL            deny    *
*       @ALL            allow   read,ticket,info,diff,titleindex,bookmark,pagelist
ProtectedPage @All      deny    read,ticket,info,diff,titleindex,bookmark,pagelist
  • ๋ชจ๋“  ์‚ฌ์šฉ์ž(@ALL)์—๊ฒŒ allow๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ์•ก์…˜ ๊ฑฐ๋ถ€.
  • ProtectedPage๋Š” edit,savepage๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋ชจ๋‘ ๋ถˆํ—ˆ
    • ์ด ๊ฒฝ์šฐ, allow๋ฅผ explicitํ•˜๊ฒŒ ํ•œ ๋ชจ๋“  ์•ก์…˜์— ๋Œ€ํ•ด explicitํ•˜๊ฒŒ deny๋ฅผ ๊ฑธ์–ด์ฃผ์–ด์•ผ ๋œ๋‹ค. deny * ๋ผ๊ณ ๋งŒ ํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

*       @ALL            deny    *
*       @ALL            allow   show,ticket,titleindex,bookmark,pagelist
*       @User           allow   edit,savepage
ProtectedPage @User     deny    * # ์ด๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์˜๋„๋Œ€๋กœ ์ž‘๋™ ์•ˆํ•œ๋‹ค.
# ๋‹ค์Œ์„ explicitํ•˜๊ฒŒ ๋ช…์‹œํ•ด์•ผ ์˜๋„๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค.
ProtectedPage @User     deny    edit,savepage
  • ์ผ๋ฐ˜ ๋“ฑ๋ก ์‚ฌ์šฉ์ž(@User)๋Š” edit,savepage ํ—ˆ๋ฝ.
  • ProtectedPage๋Š” ๋ชจ๋‘ ๋ถˆํ—ˆ
    • ์ด ๊ฒฝ์šฐ ๋“ฑ๋ก ์‚ฌ์šฉ์ž์— ๋Œ€ํ•ด @User deny * + @User allow edit,savepage์ด๋ฏ€๋กœ edit,savepage๋งŒ ํ—ˆ์šฉ๋œ๋‹ค.
    • allow edit,savepage๋ผ๊ณ  explicitํ•˜๊ฒŒ ์ •์˜๋œ ๊ฒƒ์„ ๋‹ค์‹œ ์ทจ์†Œ์‹œ์ผœ์•ผ ์˜๋„๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ProtectedPage @User deny edit,savepage๋ผ๊ณ  ์จ ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

6.4. ์—ฐ์Šต

1) ๊ทธ๋ฃน priority๊ฐ€ ๊ฐ™์€ ํ•ญ๋ชฉ๋ผ๋ฆฌ ํ•ฉ์ณ์ง€๊ณ , 2) ๊ทธ๋ฃน priority๊ฐ€ ๋†’์€ ํ•ญ๋ชฉ์ด ์šฐ์„ ์ ์œผ๋กœ ์ ์šฉ๋œ๋‹ค.
####### @ALL ๊ทธ๋ฃน์˜ priority๋Š” 1์ด๋‹ค.
@Guest     Anonymous             # @ALL์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ทธ๋ฃน์˜ priority๋Š” ๊ทธ ๊ฐ’์ด ์ง€์ •๋˜์ง€ ์•Š์œผ๋ฉด 2 ์ด๋‹ค.
@Group1    peter,john      20    # priority = 20
@Group2    simon,soo             # default group priorty = 2
* @ALL     allow *               # group priority = 1
* @ALL     deny  backup,restore
* @Guest   deny  *               # group priority = 2
* @Group1  deny  *               # User defined @Group1 group
* @Group1  allow read,info,diff
* @Group2  deny  info,diff
  • peter์™€ john: allow read,info,diff + deny * = read,info,diff๋งŒ ํ—ˆ์šฉ
  • Anonymous (@Guest): deny *: ๋ชจ๋‘ ๊ฑฐ๋ถ€ (@Guest๊ทธ๋ฃน์˜ priority๊ฐ€ ๋†’์œผ๋ฏ€๋กœ @ALL์— ๋Œ€ํ•ด ํ—ˆ์šฉ๋œ ๊ฒƒ๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ฑฐ๋ถ€๋œ๋‹ค)
  • ๋‹ค๋ฅธ ๋ชจ๋“  ์‚ฌ์šฉ์ž(@ALL): deny backup,resotre + allow * (Order Deny,Allow)
  • @Group1 : allow read,info,diff + deny * (Order Allow,Deny)
  • @Group2 : deny info,diff + @ALL deny backup,restore + allow *: priority๊ฐ€ ๊ฐ™์€ ํ•ญ๋ชฉ์ด ํ•ฉ์ณ์ง„๋‹ค.

/!\ ๊ฐ ACL ํ•ญ๋ชฉ์˜ ๊ฐ™์€ priority๋ฅผ ๊ฐ€์ง€๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์ด ํ•ฉํ•ด์ ธ์„œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

config.php์— $acl_debug=1 ์˜ต์…˜์„ ๋„ฃ์œผ๋ฉด, ์–ด๋–ค ์‹์œผ๋กœ ์ ์šฉ๋ ์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.


See TwinPages : MoniWiki:MoniWikiACL
SecurityPlugin
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:47
Processing time 0.0127 sec