IzzyMenu.com

SECURITY °ü·Ã ÀÚ·á °­ÀÇ ÀÚ·á

 ·Î±×ÀÎ  È¸¿ø°¡ÀÔ

chroot °³¿ä
ANTON  2011-07-23 11:02:37, Á¶È¸ : 261, Ãßõ : 49

1. stack overflow
2. heap overflow

3. frame pointer overflow
4. integer overflow

[ eip ] [ ebp ] [ int 4 ][ long 4 ] [ stack ]

int b;
long i;
char buf[1024];

----

char *buf;
buf = malloc(1024);

...

char *buf2;
buf2 = malloc(1024);

0xbffff
0x8048??


[ buf 1024 ] [ buf2 1024 ]chrootÀÇ ÀÇ¹Ì¿Í °³¿ä

chroot´Â »õ·Î¿î ·çÆ® µð·ºÅ丮¸¦ ¼³Á¤ÇÏ¿© ½ÇÁ¦·Î chrootµÈ ÇÁ·Î¼¼½º´Â
ÀÌ µð·ºÅ丮ÀÇ »óÀ§ µð·ºÅ丮·Î´Â Á¢±ÙÇÒ ¼ö ¾ø°í ¿ÀÁ÷ ÀÌ ÇÏÀ§ÀÇ µð·ºÅ丮·Î¸¸
Á¢±ÙÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â º¸¾È¿¡´Â ¸Å¿ì È¿°úÀûÀÎ ½Ã½ºÅÛ ÇÔ¼öÀÌ´Ù. Áï ÇϳªÀÇ
ÇÁ·Î¼¼½º¸¦ ½ÇÇà½Ãų ¶§ ÀÌ ÇÁ·Î¼¼½º°¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â ¿µ¿ªÀ» ÇÁ·Î¼¼½º »ý¼º
½Ã±â¿¡ ¹Ì¸® Á¦ÇѽÃų ¼ö ÀÖ°Ô ÇØÁÖ´Â °ÍÀÌ´Ù. Àß »ìÆì º¸¸é ÀÌ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¿©
¸¸µé¾îÁø µ¿¸íÀÇ chroot¶ó´Â ¸í·É¾îµµ Á¸ÀçÇϴµ¥ ÀÌ´Â ÇÁ·ÒÇÁÆ®»ó¿¡¼­ ÇÁ·Î¼¼½º¸¦
½ÇÇà½Ãų ¶§µµ ÀÌ·¯ÇÑ ÀÛ¾÷À» °¡´ÉÇÏ°Ô ÇØÁÖ±â À§Çؼ­ÀÌ´Ù. ¾ÆÁ÷ chroot°¡ Àß ÀÌÇØ°¡
¾ÈµÈ´Ù¸é ±ÛÀÇ µÞºÎºÐÀÇ wrapper Äڵ带 º¸¸é ½±°Ô ÀÌÇØ ÇÒ ¼ö ÀÖÀ¸¸®¶ó°í »ý°¢µÈ´Ù.


chrootÀÇ ÀåÁ¡
ÀÌÀü¿¡ ¼Ò°³ Çß´ø À¥ ¼­¹öÀÇ ¹®Á¦Á¡À» ÇØ°áÇØ ÁÖ°í ÀÖ´Ù.


chrootµÈ µð·ºÅ丮°¡ À¥ ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ·çÆ® µð·ºÅ丮·Î ÀνĵDZ⠶§¹®¿¡ ºÒÇÊ¿äÇÑ ÆÄÀÏÀ̳ª µð·ºÅ丮·ÎÀÇ
Á¢±ÙÀ» Á¦ÇÑÇÒ ¼ö ÀÖ´Ù.
¾Õ¿¡¼­ ¼Ò°³ÇßµíÀÌ ·çÆ® ±ÇÇÑÀÇ ÇÁ·Î¼¼½º°¡ nobody ±ÇÇÑÀÇ ÀÚ½Ä ÇÁ·Î¼¼½º¸¦ »ý¼º½ÃÄѼ­ ÄÁÆ®·ÑÀ» ³Ñ±â±â Àü¿¡
°ø°Ý ´çÇÏ¿© ·çÆ®ÀÇ ±ÇÇÑÀ¸·Î ÀÛ¾÷À» ÇÑ´Ù°í ÇÏ´õ¶óµµ ÀÌ·¯ÇÑ ÀÛ¾÷ÀÌ chrootµÈ µð·ºÅ丮¸¦ ¹þ¾î ³¯ ¼ö ¾ø±â
¶§¹®¿¡ ½Ã½ºÅÛ¿¡ Å« ¿µÇâÀ» ¹ÌÄ¡Áö ¸øÇÑ´Ù. ¹°·Ð ÀÌ´Â chrootµÈ µð·ºÅ丮 ÀÌÇÏ¿¡´Â ½Ã½ºÅÛÀ» ħÀÔÇϴµ¥ »ç¿ëÇÒ¸¸ÇÑ
ÆÄÀÏÀ̳ª µð·ºÅ丮°¡ ¾ø°í ´Ü¼øÈ÷ htmlÆÄÀÏ, ±×¸² ÆÄÀÏ, CGIÆÄÀÏ µîÀÌ ÀÖÀ» »ÓÀ̱⠶§¹®ÀÌ´Ù.
±âÁ¸ÀÇ À¥ ¼­¹öÀÇ °æ¿ì »ç¿ëÀÚµéÀÇ È¨ ÆäÀÌÁöµéÀ̳ª À¥ ¼­ºñ½º¸¦ Çϱâ À§ÇÑ ÇÁ·Î±×·¥(À¥ BBS, DB¿Í ¿¬µ¿µÈ À¥
¼­ºñ½ºÀÇ DB)µéÀÌ µð½ºÅ©¿¡ Èð¾îÁ® ÀÖ¾ú´Ù. ÀÌ´Â ¹°·Ð ±âÁ¸ÀÇ À¥ ¼­¹ö³ª »ý¼ºµÈ ÀÚ½Ä ÇÁ·Î¼¼½º°¡ µð½ºÅ©ÀÇ
¾îµðµçÁö Á¢±ÙÇÒ ¼ö ÀÖ¾ú±â ¶§¹®ÀÌ´Ù. ±×·¯³ª chroot¸¦ ÀÌ¿ëÇÏ¿© À¥ ¼­ºñ½º¸¦ ÇÏ°Ô µÉ °æ¿ì¿¡´Â ÇϳªÀÇ Å«
µð½ºÅ© ÆÄƼ¼ÇÀ» Áö½ÃÇÏ´Â µð·ºÅ丮¸¦ chrootÇÏ¿© ¸¸µé±â ¶§¹®¿¡ ¸ðµç À¥ ¼­ºñ½º °ü·Ã ÆÄÀϵéÀ» ÀÌ µð½ºÅ© ÆÄƼ¼Ç¿¡
¸ð¾Æ µÎ°Ô µÈ´Ù. ±×·¯¸é ½ÇÁ¦·Î À¥ ¼­¹ö´Â ÀÌ µð½ºÅ© ÆÄƼ¼Ç, Á¤È®ÇÏ°Ô´Â ÀÌ µð½ºÅ© ÆÄƼ¼ÇÀ» Áö½ÃÇÏ´Â chrootµÈ
µð·ºÅ丮 ¹ÛÀ» ¸ø ¹þ¾î ³ª¸é¼­ µ¿ÀÛÇ߱⠶§¹®¿¡ ÀÌ µð½ºÅ©¸¸ Á¤±âÀûÀ¸·Î ¹é¾÷À» ¹Þ¾Æ µÐ´Ù¸é ½Ã½ºÅÛÀÌ Áװųª
µð½ºÅ©°¡ ¸Á°¡Áö´õ¶óµµ ´Ù¸¥ È£½ºÆ®ÀÇ ºó µð½ºÅ©¿¡ ¹é¾÷À» Ç®¾î¼­ Áï½Ã À¥ ¼­¹ö¸¦ º¹±¸½Ãų ¼ö ÀÖ°Ô µÈ´Ù.
À̶§ÀÇ º¹±¸ ½Ã°£Àº ´Ü¼øÈ÷ ¹é¾÷ µ¥ÀÌÅ͸¦ »õ·Î¿î µð½ºÅ©¿¡ º¹»çÇÏ´Â ½Ã°£¸¸ÀÌ ¼Ò¿äµÇ°Ô µÉ °ÍÀÌ´Ù. ¹°·Ð »õ·ÎÀÌ
¿Å±ä È£½ºÆ®ÀÇ DNS entry¿¡ ¹®Á¦°¡ »ý±ä È£½ºÆ®ÀÇ À̸§À» alias½ÃÄÑ ³õÀ¸¸é ±âÁ¸¿¡ À¥ ¼­ºñ½º¸¦ ÀÌ¿ëÇÏ´ø »ç¶÷µéÀº
ÀüÇô ¹®Á¦¸¦(È£½ºÆ®°¡ ¿Å°ÜÁö°í µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°í ÀÖ´ø µð½ºÅ©°¡ ¹Ù²î¾ú´Ù´Â »ç½Ç) ´À³¢Áö ¸øÇÒ °ÍÀÌ´Ù.
Áï Åõ¸í¼º(transparency)À» º¸ÀåÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.
¸¸ÀÏ ÀÌ¿Í °°ÀÌ ÇÏÁö ¾Ê°í À¥ ÀÚ·áµéÀÌ ¿©·¯ µð½ºÅ©¿¡ ºÐ»êµÇ¾î ÀÖ´Ù°í °¡Á¤Çϸé ÀÌÁß ¾î´À ÇϳªÀÇ µð½ºÅ©°¡
¸Á°¡Áö°Ô µÇ¸é ÀÌ µð½ºÅ©¿¡ ÀÖ´Â À¥ ÀڷḸ º¹±¸½ÃÅ°´Â ¹®Á¦µµ ÁöÀúºÐÇÒ »Ó¸¸ ¾Æ´Ï¶ó ½Ã½ºÅÛÀÌ Æı«µÉ °æ¿ì¿¡´Â
´õ¿í ´õ Àüü À¥ ¼­ºñ½ºÀÇ º¹±¸ ½Ã°£Àº ±æ¾îÁú °ÍÀÌ¸ç °ü¸®Àڵ鿡°Ô Å« ºÎ´ãÀ» ÁÖ°Ô µÉ °ÍÀÌ´Ù.


chrootÀÇ ´ÜÁ¡
chroot¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº º¸¾ÈÀ» À§Çؼ­´Â ¸Å¿ì ÈǸ¢ÇÑ ¹æ¹ýÀÌÁö¸¸ ÀÌ ¶ÇÇÑ ¾à°£ÀÇ ¹®Á¦¸¦ ³»Æ÷ÇÏ°í ÀÖ´Â °ÍÀÌ
»ç½ÇÀÌ´Ù. À̸¦ ¿©±â¼­ °£´ÜÈ÷ ¾ð±ÞÇÏ°í ³Ñ¾î°¡µµ·Ï ÇÏÀÚ.


¼³Ä¡ÇϱⰡ ±î´Ù·Ó´Ù°í ¸»ÇÒ ¼ö ÀÖ´Ù(¹°·Ð ³ë·ÃÇÑ °ü¸®ÀÚ¶ó¸é Å« ¹®Á¦´Â µÇÁö ¾ÊÀ» °ÍÀÌ´Ù). µÞ ºÎºÐ¿¡¼­ ¾ð±ÞÇÏ°ÚÁö¸¸
ÀÌÁø ÆÄÀϵéÀ» binµð·ºÅ丮¿¡ °¡Á®´Ù ³õÀ» ¶§ ±×³É ½Ã½ºÅÛ¿¡ ÀÖ´Â °ÍÀ» º¹»çÇÏ°Ô µÇ¸é À̵éÀº ¸ðµÎ °øÀ¯ ¶óÀ̺귯¸®¸¦
»ç¿ëÇÏ°í Àֱ⠶§¹®¿¡ À̵éÀÌ ÇÊ¿ä·Î ÇÏ°í ÀÖ´Â ¸ðµç ¶óÀ̺귯¸®¸¦ usr/lib¿¡ º¹»ç ÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ƯÈ÷ À¥¿¡¼­´Â
CGI¸¦ ÀÌ¿ëÇÏ°í Àֱ⠶§¹®¿¡ ÀÌ·¯ÇÑ ÀÏÀº ¸Å¿ì ÇÇ°ïÇÏ´Ù. ±×·¡¼­ ´ëºÎºÐÀÇ °æÇèÀÚµéÀº ÀÌÁø ÆÄÀϵéÀº Á¤ÀûÀ¸·Î
ÄÄÆÄÀÏ ÇÏ´Â °ÍÀ» ÃßõÇÏ°í ÀÖ´Ù. ÀÌ °æ¿ì¿¡´Â °øÀ¯ ¶óÀ̺귯¸®¸¦ »ç¿ëÇÒ ÇÊ¿ä°¡ ÀüÇô ¾ø±â ¶§¹®¿¡ °ü¸®ÇϱⰡ
±ò²ûÇÏ°í Æí¸®ÇÏ´Ù. ¹°·Ð À¥¿¡¼­ ÀÌ¿ëµÉ ¸ðµç ÀÌÁø ÆÄÀϵéÀ» Á¤ÀûÀ¸·Î ´Ù½Ã ÄÄÆÄÀÏÇØÁÖ¾î¾ß ÇϹǷΠÃʱ⠼³Ä¡
½Ã¿¡ Á» ½Ã°£ÀÌ ¼Ò¿äµÇ´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. µÚ¿¡¼­ º¸ÀÏ ¿¹Á¦´Â Á¤ÀûÀ¸·Î ÄÄÆÄÀÏÇÏÁö ¾Ê´Â ¹æ¹ýÀ» ¼Ò°³ÇÏ°í ÀÖ´Ù.
±âÁ¸¿¡ ÀÌ¹Ì À¥ ¼­¹ö°¡ ¼³Ä¡ µÇ¾î ÀÖ´Â »óÅ¿¡¼­ chroot¸¦ ÀÌ¿ëÇÑ ¼­¹ö¸¦ ¼³Ä¡ÇÒ °æ¿ì¿¡´Â chroot¸¦ ÀÌ¿ëÇÏ´Â Àå
Á¡À» »ì¸®±â Èûµé ¼ö ÀÖ´Ù. ÇÏÁö¸¸ °ü¸®ÀÚÀÇ Àç·®¿¡ µû¶ó ºÒ°¡´ÉÇÑ °ÍÀº ¾Æ´Ï´Ù. ÀÌ ¸»Àº ÀÌ¹Ì ±âÁ¸ÀÇ À¥ ¼­¹ö°¡
ÀÖ´Ù¸é °³ÀεéÀÌ °¢°¢ÀÇ È¨ µð·ºÅ丮¿¡ ÀÚ½ÅÀÇ È¨ ÆäÀÌÁö¸¦ ¸¸µé¾î ³õ¾ÒÀ» °ÍÀε¥ ÀÌ È¨ ÆäÀÌÁöµéÀÌ chroot¿¡¼­
ÀÌ¿ëÇÏ´Â ÆÄÀÏ ½Ã½ºÅÛÀ̳ª chrootÀÇ tree ¹Ù±ù¿¡ ÀÖÀ» ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. ÀÌ¿¡ ´ëÇÑ ÇØ°áÃ¥À» ¼Ò°³ÇÏ¸é ´ÙÀ½°ú °°´Ù.
¸¸ÀÏ »ç¿ëÀÚµéÀÇ È¨ ÆäÀÌÁö°¡ chroot¸¦ ÀÌ¿ëÇÏ´Â tree ¹Ù±ù¿¡ ÀÖÁö¸¸ °°Àº ÆÄÀÏ ½Ã½ºÅÛ »ó¿¡ ÀÖ´Ù¸é ÇÏµå ¸µÅ©¸¦
ÀÌ¿ëÇؼ­ ÇØ°á ÇÒ ¼ö ÀÖ´Ù(chroot treeÀÌÇÏ¿¡¼­ ¹Ù±ùÀ¸·ÎÀÇ ¼ÒÇÁÆ® ¸µÅ©´Â µ¿ÀÛÇÏÁö ¾Ê´Â´Ù). ÇÏÁö¸¸ ¿ÏÀüÈ÷ ´Ù¸¥
ÆÄÀÏ ½Ã½ºÅÛ¿¡ »ç¿ëÀÚµéÀÇ È¨ ÆäÀÌ°¡ ÀÖÀ» °æ¿ì¿¡´Â loop back ¸¶¿îÆ®(·ÎÄà ÆÄÀÏ ½Ã½ºÅÛ¿¡¼­ ´Ù¸¥ ·ÎÄà ÆÄÀÏ
½Ã½ºÅÛÀ¸·ÎÀÇ ¸¶¿îÆ®)¸¦ ÀÌ¿ëÇÏ¿© ÇØ°á ÇÒ ¼ö ÀÖ´Ù. loop back ¸¶¿îÆ®¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀº »ý·«Çϵµ·Ï ÇÏ°Ú´Ù.


chroot¸¦ ÀÌ¿ëÇÑ À¥ ¼­¹ö ¼³Ä¡ °úÁ¤
ÀÌÁ¦ chrootÀ» ÀÌ¿ëÇÏ¿© »õ·Î¿î À¥ ¼­¹ö ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ ¼Ò°³ÇØ º¸µµ·Ï ÇÏ°Ú´Ù.
¾Æ·¡ÀÇ ¿¹Á¦´Â ¼Ö¶ó¸®½º 2.5 ¸Ó½Å¿¡¼­ ¸ðµç ÇÁ·Î±×·¥Àº °øÀ¯ ¶óÀ̺귯¸®¸¦ ÀÌ¿ëÇÏ°Ô ÄÄÆÄÀÏÇÏ¿´´Ù´Â
°¡Á¤ÇÏ¿¡¼­ Á÷Á¢ ¼³Ä¡ÇÑ °úÁ¤À» Á¤¸®ÇÏ¿© º» °ÍÀÌ´Ù. ÀÌ °úÁ¤Àº ¼Ö¶ó¸®½º 2.5ÀÇ °æ¿ìÀ̹ǷΠ¸ðµç ¿î¿µÃ¼Á¦¿¡
Àû¿ëµÇ´Â °ÍÀº ¾Æ´ÏÁö¸¸ ±âº»ÀûÀÎ °úÁ¤À» Àß ÀÌÇØÇÑ´Ù¸é ´Ù¸¥ ¿î¿µÃ¼Á¦¶óµµ Å« ¹®Á¦°¡ µÇÁö´Â ¾ÊÀ» °ÍÀ̶ó
¹Ï°í, ¶Ç ¹ß»ýÇÒ ¼ö ÀÖ´Â »ç¼ÒÇÑ ¹®Á¦µéÀº °ü¸®ÀÚÀÇ Àç·®À¸·Î ÇØ°áÇÒ ¼ö ÀÖÀ» °ÍÀ̶ó°í »ý°¢µÈ´Ù.


chroot´Â ÀÓÀÇÀÇ µð·ºÅ丮¸¦ »õ·Î¿î ·çÆ® µð·ºÅ丮·Î ¸¸µå´Â °ÍÀ̱⠶§¹®¿¡ µð½ºÅ©¿¡ ´ëÇÑ ¿ë·®ÀÌ ÃæºÐÇÑ µð½ºÅ©¸¦
Çϳª ¼±Á¤ÇÑ´Ù.

# df -k
ÆÄÀϽýºÅÛ           K¹ÙÀÌÆ®    »ç¿ë    °¡¿ë   ¿ë·®    ¼³Ä¡ÁöÁ¡
/dev/dsk/c0t0d0s0      86879   21416   56783    28%    /
/dev/dsk/c0t0d0s6     480919  417695   15134    97%    /usr
/proc                      0       0       0     0%    /proc
fd                         0       0       0     0%    /dev/fd
/dev/dsk/c0t1d0s7    1952573  135576 1621747     6%    /WWW
/dev/dsk/c0t0d0s5     288855  212963   47012    82%    /opt
/dev/dsk/c0t0d0s7     724031  227921  423710    35%    /usr1
swap                  409672     224  409448     1%    /tmp
¿©±â¼­´Â /WWW¶ó´Â µð·ºÅ丮¿¡ chroot¸¦ Çϱâ·Î ÇÏ°Ú´Ù.
¸ÕÀú ¾Æ·¡¿Í °°Àº µð·ºÅ丮¸¦ ¸¸µéµµ·Ï ÇÏÀÚ.
# pwd
/WWW
# ls
ÃÑ 28               2 cgi-bin/       2 etc/           2 logs/
   2 HOME_PAGE/     2 conf/          2 home/          6 src/
   2 bin/           2 dev/           4 icons/         2 usr/
À§ÀÇ µð·ºÅ丮µéÀ» °£´ÜÈ÷ ¼³¸íÇÏ¸é ´ÙÀ½°ú °°´Ù.

HOME_PAGE
ÀÌ À¥ ¼­¹ö¿¡ Á¢±ÙÇßÀ» ¶§ ±âº»ÀûÀ¸·Î ã´Â µð·ºÅ丮·Î ¼³Á¤
bin
ÀÌÁø ÆÄÀϵéÀ» °¡Á®´Ù ³õÀ» µð·ºÅ丮
cgi-bin
CGI ÇÁ·Î±×·¥À» °¡Á®´Ù ³õÀ» µð·ºÅ丮
conf
httpdÀÇ ¼³Á¤ ÆÄÀÏÀ» °¡Á®´Ù ³õÀ» µð·ºÅ丮
dev
µð¹ÙÀ̽º ÆÄÀÏÀ» °¡Á®´Ù ³õÀ» µð·ºÅ丮
etc
passwd³ª groupÆÄÀÏÀ» °¡Á®´Ù ³õÀ» µð·ºÅ丮
home
°³ÀΠȨÆäÀÌÁö³ª À¥ ¼­ºñ½º °ü·Ã DBµîÀÇ ÀÚ·áµéÀ» °¡Á®´Ù ³õÀ» µð·ºÅ丮
icons
¾ÆÀÌÄÜÀ» ³õÀ» µð·ºÅ丮
logs
httpd°¡ ¸¸µé ·Î±× ÆÄÀÏÀ» ÀúÀåÇÒ µð·ºÅ丮
usr
usr/lib³ª usr/tmp¸¦ À§ÇÑ µð·ºÅ丮
src
httpd¸¦ ÄÄÆÄÀÏ ÇÒ µð·ºÅ丮
ÀÚ½ÅÀÌ ¿øÇÏ´Â À¥ ¼­¹ö ÇÁ·Î±×·¥À» °¡Á®¿Í /WWW/src ¹Ø¿¡¼­ ÄÄÆÄÀÏÇÏÀÚ. º»ÀÎÀÌ »ç¿ëÇÑ ¾ÆÆÄÄ¡ À¥ ¼­¹ö ¼Ò½º
ÇÁ·Î±×·¥Àº ´ÙÀ½¿¡¼­ ±¸ÇÒ ¼ö ÀÖ´Ù.

http://www.apache.org
±âº»ÀûÀÎ ¼³Ä¡ °úÁ¤Àº À¥ ¼­¹ö¸¦ ¼³Ä¡ÇÒ ¶§¿Í µ¿ÀÏÇÏÁö¸¸, ´ÙÀ½ÀÇ ¼³Ä¡ °úÁ¤¿¡¸¸ ÁÖÀÇÇÏ¸é µÈ´Ù. ¾Õ¿¡¼­ ¸¸µé¾îÁø
conf¶ó´Â µð·ºÅ丮¿¡ ¾Æ·¡ÀÇ ÆÄÀϵéÀ» °¡Á®´Ù ³õ´Â´Ù.


# ls conf
ÃÑ 36                12 httpd.conf      14 srm.conf
   4 access.conf      6 mime.types
conf¹Ø¿¡ ÀÖ´Â httpd.conf¿¡¼­´Â ´ÙÀ½°ú °°ÀÌ ÇØÁÖ¾î¾ß ÇÑ´Ù.

#ServerRoot /usr/local/etc/httpd
# for chroot()
ServerRoot /
ÀÌ°Í ÀÌ¿ÜÀÇ ¼³Á¤Àº ±âÁ¸ÀÇ ¼³Á¤°ú µ¿ÀÏÇÏ´Ù. Á»´õ ÀÚ¼¼ÇÑ ¾ÆÆÄÄ¡ ¼­¹öÀÇ ±âº»ÀûÀÎ ¼³Á¤ ¹æ¹ýÀº ¿ù°£ Internet
1996³â 10¿ù È£¸¦ Âü°íÇϱ⠹ٶõ´Ù.

src¿¡¼­ ÄÄÆÄÀÏÇÑ httpd¸¦ bin¹ØÀ¸·Î ¿Å°ÜµÎ°í ÀÌ httpd°¡ ÀÌ¿ëÇÏ´Â °øÀ¯ ¶óÀ̺귯¸®µéÀ» ½ÇÁ¦ /usr/lib¿¡¼­
/WWW/usr/lib¹Ø¿¡ º¹»çÇØ µÐ´Ù. httpd°¡ »ç¿ëÇÏ´Â ÀÌÁø ÆÄÀÏÀº ldd¶ó´Â ¸í·É¾î·Î Á¶»çÇÑ´Ù.

# ldd httpd
        libsocket.so.1 =>/usr/lib/libsocket.so.1
        libnsl.so.1 =>   /usr/lib/libnsl.so.1
        libc.so.1 =>     /usr/lib/libc.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        libintl.so.1 =>  /usr/lib/libintl.so.1
        libw.so.1 =>     /usr/lib/libw.so.1
ÀÌ°ÍÀ» ÇÏ´Â ÀÌÀ¯´Â ±âÁ¸ÀÇ ¶óÀ̺귯¸® ÆÄÀÏÀÌ ÀÖ´ø /usr/lib¶ó´Â µð·ºÅ丮´Â httpd µ¥¸ó¿¡°Ô´Â ´õ ÀÌ»ó º¸ÀÌÁö
¾Ê±â ¶§¹®ÀÌ´Ù. µû¶ó¼­, httpd µ¥¸ó¿¡°Ô ·çÆ® µð·ºÅ丮ÀÎ /WWW¹Ø¿¡ »õ·Î¿î usr/libÀ» ¸¸µé¾î ÇÊ¿äÇÑ ¶óÀ̺귯¸®µéÀ»
º¹»çÇØ µÎ¾î¾ß ÇÏ´Â °ÍÀÌ´Ù.


etc ¹Ø¿¡´Â /etc/passwd, /etc/group, /etc/netconfig¸¦ º¹»çÇÑ´Ù. ÀÌ ¶§, ÁÖÀÇÇØ¾ß ÇÒ Á¡Àº Æнº¿öµå ÆÄÀÏÀÇ Æнº¿öµå
ºÎºÐÀ» x·Î ¸·¾Æ ³õ´Â´Ù. ¼Ö¶ó¸®½º´Â shadow passwd¸¦ »ç¿ëÇϱ⠶§¹®¿¡ »ç½Ç ÀÌ·¸°Ô ÇÒ ÇÊ¿ä´Â ¾øÁö¸¸ À̸¦ ÀÌ¿ëÇÏÁö
¾ÊÀº °æ¿ì´Â Æнº¿öµåÀÇ ¾ÏȣȭµÈ ºÎºÐÀº ¹Ýµå½Ã »èÁ¦ ½ÃÄÑ¾ß ÇÑ´Ù. ±×¸®°í ºÒÇÊ¿äÇÑ »ç¿ëÀÚ´Â »èÁ¦ÇÏ´Â °ÍÀÌ ÁÁ´Ù.
dev ¹Ø¿¡´Â ÇÊ¿äÇÑ µð¹ÙÀ̽º ÆÄÀÏÀ» ¸¸µé¾î ³õ´Â´Ù. ¼Ö¶ó¸®½ºÀÇ °æ¿ì¿¡´Â ´ÙÀ½°ú °°ÀÌ ¸¸µé ¼ö Àִµ¥ ÀÌ´Â ¿î¿µÃ¼Á¦¿¡
µû¶ó¼­ ´Þ¶óÁú ¼ö ÀÖ´Â ¿ä¼Ò°¡ °¡Àå Å©±â ¶§¹®¿¡ ´Ù¸¥ ¿î¿µÃ¼Á¦¸¦ ÀÌ¿ëÇÏ´Â °æ¿ì¿¡´Â Á¶½ÉÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.

# mknod /www/httpd/dev/ip c 11 3
# mknod /www/httpd/dev/tcp c 11 42
# mknod /www/httpd/dev/ticotsord c 105 1
# mknod /www/httpd/dev/udp c 11 41
# mknod /www/httpd/dev/zero c 13 12
# mknod /www/httpd/dev/null 13 2
# ls
ÃÑ 0                0 null           0 ticotsord      0 zero
   0 ip             0 tcp            0 udp
ÀÌ·¸°Ô ÇÏ¸é µð¹ÙÀ̽º ÆÄÀÏÀ» »ý¼ºÇÒ ¼ö ÀÖ´Ù. ¸¸¾à¿¡ major, minor ¼ýÀÚ¸¦ ¸ð¸£´Â °æ¿ì¿¡´Â ½ÇÁ¦ /dev ¹Ø¿¡ ÀÖ´Â
ÆÄÀÏÀ» ¾Æ·¡¿Í °°ÀÌ »ìÆ캸¸é µÈ´Ù.


# ls -lL /dev/zero
   0 crw-rw-rw-   1 root     sys       13, 12  5¿ù  8ÀÏ  04:48 /dev/zero
Âü°í·Î zero´Â µ¿Àû ·Î´õ(dynamic loader)¿¡ ÀÇÇؼ­ »ç¿ëµÇ´Â °ÍÀÌ¸ç ³ª¸ÓÁö´Â ³×Æ®¿÷(network)¿¡ »ç¿ëµÇ´Â °ÍÀÌ´Ù.
CGI ÇÁ·Î±×·¥À» À¥ ¼­¹ö°¡ Á¦°øÇÒ Áö¿¡ ´ëÇØ °áÁ¤ÇÑ ÈÄ CGI ÇÁ·Î±×·¥À» »ç¿ëÀÚµéÀÌ ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô ÇÏ·Á¸é, CGI
ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â ÀÌÁø ÆÄÀÏÀ» Á¶»çÇÑ ÈÄ, CGI ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â ÀÌÁø ÆÄÀÏ°ú ±×¿¡ µû¸¥ ¶óÀ̺귯¸®¸¦ /WWW/bin,
/WWW/usr/lib¿¡ °¢°¢ ³Ö¾î ÁÖ¿©¾ß ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é CGI ÇÁ·Î±×·¥¿¡ ÇÊ¿äÇÑ ÀÌÁø ÆÄÀϵé(sh, perlµî)À» chrootµÈ
»õ·Î¿î ·çÆ® µð·ºÅ丮¿¡¼­ ãÁö ¸øÇÏ°Ô µÇ¹Ç·Î CGI ÇÁ·Î±×·¥À» ÀÌ¿ëÇÒ ¼ö ¾ø°Ô µÈ´Ù. ¿ì¼± ±âº»ÀûÀÎ sh°ú perlÀ»
ÄÄÆÄÀÏÇÑ ÈÄ bin ¹Ø¿¡ ³Ö¾î ÁØ´Ù. ¿©±â¼­´Â Á¤ÀûÀ¸·Î ÄÄÆÄÀÏÇÏÁö ¾Ê´Â °æ¿ìÀ̹ǷΠsh¿Í perlÀÌ ÀÌ¿ëÇÏ´Â
¶óÀ̺귯¸®µéÀ» È®ÀÎÇÏ¿© usr/lib¿¡ º¹»çÇÏ¿© µÐ´Ù.
´ÙÀ½Àº ±âº»ÀûÀ¸·Î ³Ö¾î µÎ¸é CGI »ç¿ë¿¡ À¯¿ëÇÑ ÇÁ·Î±×·¥µéÀÌ´Ù.

cat     comm      cp     csplit       cut  
du      expand    find   fmt          fold
grep    head      join   locate       ls
mkdir   mv        nl     od           paste
pr      rm        rmdir  sort         split
sum     tail      touch  tr           unexpand
uniq    wc        xargs
º»ÀÎÀÇ °æ¿ì´Â bin¿¡ csh, sh, perl, httpd¸¸À» ³Ö¾î µÎ¾ú´Âµ¥ À̵éÀÌ ÇÊ¿ä·Î ÇÏ´Â ¶óÀ̺귯¸®µéÀº ´ÙÀ½°ú °°¾Ò´Ù.


# pwd
/WWW
# ls usr
ÃÑ 4          2 lib/     2 tmp/
# ls usr/lib
ÃÑ 3322                     2 libmapmalloc.so@      78 libw.so.1*
  48 ld.so*                14 libmapmalloc.so.1*    32 nss_compat.so.1*
288 ld.so.1*               2 libmp.so@             22 nss_dns.so.1*
   2 libc.so@              32 libmp.so.1*           42 nss_files.so.1*
1312 libc.so.1*             2 libnsl.so@            48 nss_nis.so.1*
   2 libdl.so@           1136 libnsl.so.1*          58 nss_nisplus.so.1*
   6 libdl.so.1*            2 libsocket.so@          2 straddr.so@
   2 libintl.so@          136 libsocket.so.1*       20 straddr.so.2*
  32 libintl.so.1*          2 libw.so@
¸¶Áö¸·À¸·Î httpd µ¥¸óÀ» ½ÇÇà½ÃÅ°±â À§ÇÑ wrapper¸¦ ¸¸µç´Ù. ´ÙÀ½Àº wrapperÀÇ ¼Ò½º ÄÚµåÀÌ´Ù.

#include <stdio.h>

main(int argc, char *argv[])
{

if (chdir(argv[1])) {
        fprintf(stderr,"change directory to %s failed !",argv[1]);
        exit(1);
}

if (chroot(argv[1])) {
        fprintf(stderr,"chroot %s failed !",argv[1]);
        exit(1);
}

execl("/bin/httpd","httpd","-f","/conf/httpd.conf",(char *)0);
exit(0);
}
ÀÌ ÇÁ·Î±×·¥ÀÇ Àǹ̴ ´ÙÀ½¿¡ ¿À´Â ½ÇÇà ¹æ¹ýÀ» º¸¸é È®½ÇÈ÷ ÀÌÇØ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
´ÙÀ½ÀÇ °úÁ¤Àº /WWWÀÌÇÏ µð·ºÅ丮¿Í ÆÄÀÏÀÇ ¼ÒÀ¯¸¦ °¡»óÀÇ »ç¿ëÀÚÀÎ wwwÀ¸·Î ÇÑ´Ù. ¹°·Ð wwwÀ̶ó´Â »ç¿ëÀÚ´Â
/etc/passwd¿¡ µî·ÏµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ°ÍÀº nobody¸¦ µî·Ï½ÃŲ °úÁ¤°ú µ¿ÀÏÇÏ°Ô ÇÏ¸é µÈ´Ù.

# grep www /etc/passwd
www:x:1000:1000:WWW server:/www/httpd:

# grep webgroup /etc/group
webgroup::1000:web

# chown -R www /WWW
# chgrp -R webgroup /WWW
# chmod -R 755 /WWW
ÀÌÁ¦ wrapper ÇÁ·Î±×·¥ ÆÄÀÏÀ» ¸¸µé¾î¼­ ºÎÆà ½ºÅ©¸³Æ®¿¡ Ãß°¡ÇØ Áֱ⸸ ÇÏ¸é µÈ´Ù.

# pwd
/etc/rc3.d
# ls
ÃÑ 1258                 4 S15nfs.server*  2 S97wrapper*
   4 README             2 S98smbd*
# cat S97wrapper
#!/bin/sh
# for httpd wrapper daemon

if [ -f /WWW/bin/httpd_wrapper ]
then
        echo  "start httpd wrapper"
        /WWW/bin/httpd_wrapper
        echo  "/WWW/bin/httpd_wrapper"
fi




°á·Ð
Áö±Ý±îÁö chroot¸¦ ÀÌ¿ëÇÏ¿© ¾ÆÆÄÄ¡ À¥ ¼­¹ö¸¦ ¼³Ä¡ÇÏ´Â ¹æ¹ý¿¡ ´ëÇÏ¿© ¼³¸íÇÏ¿´´Ù.
ÀÌ ¼³¸íÀÌ ¿Ïº®ÇÏÁø ¸øÇϸ®¶ó »ý°¢ÀÌ µÇ°í ½ÇÁ¦·Î À̸¦ ±¸ÇöÇÏ´Ù º¸¸é ±Û·Î½á ¼³¸íÇϱ⿡´Â Á» °ï¶õÇÑ ¿©·¯ °¡Áö
¹®Á¦¸¦ ¸¹ÀÌ °æÇèÇϸ®¶ó°í ¿¹»óÀÌ µÈ´Ù. ÀϹÝÀûÀ¸·Î chroot¸¦ ÀÌ¿ëÇÏ´Â °æ¿ì´Â ¾ÈÀüÇÑ FTP archive¸¦ ¼³Ä¡ÇÒ °æ¿ì¿¡
¸¹ÀÌ »ç¿ëµÇ¾î ¿À´ø ¹æ¹ýÀ̾ú´Ù. ¿©±â¼­´Â À̸¦ À¥¿¡ Àû¿ë½ÃÄÑ º¸¾Ò´Âµ¥ ¼ÖÁ÷È÷ FTP archiveº¸´Ù À¥ ¼­¹ö°¡ ´õ
¾î·Æ´Ù´Â °ÍÀ» ÀÎÁ¤ÇÏ°í ½Í´Ù. À¥ÀÌ Á» ±î´Ù·Î¿î ÀÌÀ¯´Â À¥ÀÌ CGI¸¦ ÀÌ¿ëÇϱ⠶§¹®Àε¥ À¥ÀÇ À¯¿ë¼ºÀ» À§Çؼ­
°ü¸®ÀÚ°¡ Á» ¼ö°íÇÑ´Ù´Â »ý°¢À» ÇÏ¸é ±×·¡µµ Çغ¼¸¸ÇÑ °ÍÀÌ°í À¥ ¼­¹ö¸¦ ¾ÈÀüÇÏ°Ô ¼³Ä¡ÇØ¾ß ÇÒ °æ¿ì¿¡´Â ÀÌ ¹æ¹ýÀ»
ÃßõÇÏ°í ½Í´Ù.




  ÃßõÇÏ±â   ¸ñ·Ïº¸±â

Copyright 1999-2024 Zeroboard / skin by zero