ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>¾ÈÀüÇÑ_ÇÁ·Î±×·¡¹Ö
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
HTML º¯È¯¹®¼
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<article lang="ko">
<!-- -->
<!-- ¹®¼ Á¤º¸ -->
<!-- http://www.tldp.org/linuxfocus/English/January2001/article182.shtml -->
<!-- -->
<articleinfo>
<title>¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß½Ã º¸¾È¹®Á¦ ÇÇÇϱâ</title>
<author>
<surname>À± »ó¹è</surname>
<affiliation>
<address>
<email>dreamyun@yahoo.co.kr</email>
</address>
</affiliation>
</author>
<revhistory>
<revision>
<revnumber>0.8</revnumber>
<date>2003³â 7¿ù 26ÀÏ 23½Ã</date>
<revremark>ÃÖÃÊ ¹®¼ÀÛ¼º</revremark>
</revision>
</revhistory>
</articleinfo>
<!-- -->
<!-- ¼½¼Ç ½ÃÀÛ -->
<!-- -->
<section>
<title>¼Ò°³</title>
<para>
ÀÌ ¹®¼´Â Avoiding security holes when developing an application¸¦
¹ø¿ªÇÑ ¹®¼·Î½á ¿øº»Àº <ulink url=>linuxfocus</ulink>¿¡¼
ãÀ» ¼ö ÀÖ´Ù.
¿ø¹®Àº ¸ðµÎ 7°³ÀÇ ÀåÀ¸·Î ±¸ºÐµÇ¾î ¿¬ÀçµÇ¾úÀ¸¸ç ÀÌ ¹®¼´Â ±×Áß
ù¹øÂ° ÀåÀÇ ¹ø¿ªÆÇÀÌ´Ù.
</para>
<para>
ÄÄÇ»ÅͽýºÅÛÀ» ¿î¿µÇϴµ¥ ÀÖ¾î¼ ÇöÀç °¡Àå Áß¿äÇÑ À̽´´Â º¸¾È¹®Á¦ÀÏ
°ÍÀÌ´Ù. º¸¾È ¹®Á¦°¡ ¹ß»ýÇÏ´Â ÀÌÀ¯´Â Çã¶ôÇÏÁö ¾ÊÀº »ç¿ëÀÚ°¡ ½Ã½ºÅÛÀÇ
ÀÚ¿øÀ» Á¢±ÙÇÏ·Á´Âµ¥¿¡¼ ¹ß»ýÇÏ°Ô µÈ´Ù. ÀÌ»óÀûÀ¸·Î º¸ÀÚ¸é ¿î¿µÃ¼Á¦°¡
¿Ïº®ÇÏ°í ±× ¿î¿µÃ¼Á¦ÇÏ¿¡¼ µ¹¾Æ°¡´Â ¼ÒÇÁÆ®¿þ¾î¿¡ ¾î¶°ÇÑ °áÇÔµµ Á¸Àç
ÇÏÁö ¾Ê´Â´Ù¸é º¸¾È¹®Á¦°¡ ¹ß»ýÇÒ ¾î¶°ÇÑ ÀÌÀ¯µµ ¾ø°ÚÁö¸¸, ¾ÈŸ±õ°Ôµµ
¿ÏÀüÇÑ ¿î¿µÃ¼Á¦¿Í ¿ÏÀüÇÑ ÇÁ·Î±×·¥Àº Á¸ÀçÇÏÁö ¾Ê´Â´Ù.
(¿î¿µÃ¼Á¦ ¿ª½Ã ÇÁ·Î±×·¥ÀÇ ÀÏÁ¾ÀÌ´Ù) ÀÌ·± ÀÌÀ¯·Î ƯÁ¤ ÇÁ·Î±×·¥ÀÇ
°áÇÔÀ» ã¾Æ¼ ¹ß»ý°¡´ÉÇÑ º¸¾È¹®Á¦¸¦ ¹Ì¿¬¿¡ ¹æÁöÇÏ´Â ±â¼úÀº ¸Å¿ì
Áß¿äÇÏ´Ù°í ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¡¸ÓÀÇ °æ¿ì °¡´ÉÇÑÇÑ ÀÌ·¯ÇÑ °áÇÔÀÌ
¹ß»ýÇÏÁö ¾Êµµ·Ï ¾î¶² "±ÔÄ¢"À» °¡Áö°í ÇÁ·Î±×·¡¹ÖÀ» ÇØ¾ßÇÑ´Ù.
</para>
<para>
º¸¾È¹®Á¦¿¡ ¾à°£ÀÇ °ü½ÉÀ» °¡Áö°í ÀÖ´Ù¸é, °ÅÀÇ ¸ÅÀÏ º¸¾È°áÇÔÀÌ ¹ß»ýÇÑ
ÇÁ·Î±×·¥°ú ÀÌ·¯ÇÑ °áÇÔÀÌ ½Ã½ºÅÛ¿¡ ¹ÌÄ¡´Â ¿µÇâ ÀÌ·¯ÇÑ °áÇÕÀ» Á¦°ÅÇϱâ
À§ÇÑ ÆÐÄ¡°¡ ¹ßÇ¥µÇ°í ÀÖÀ½À» ¾Ë¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ º¸¾È °áÇÔÀ» º¸¸é
ÇÁ·Î±×·¡¸ÓÀÇ »ç¼ÒÇÑ ºÎÁÖÀÇ¿Í À߸øµÈ ÄÚµù ½À°üµî¿¡ ±âÀÎÇÑ Á¡ÀÌ ¸¹À¸¸ç
¾à°£ÀÇ ÇнÀÀ» ÅëÇØ¼ ¸¹Àº ¼öÀÇ °áÇÔÀ» ÁÙÀÏ ¼ö ÀÖ´Ù.
</para>
<para>
À̹ø ¹®¼¿¡¼´Â ÀÏ¹Ý ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀÛ¼º¿¡¼ ¹ß»ýÇϱ⠽¬¿î ¹®Á¦Áß
±ÇÇÑ(privileges)°ú °ü·ÃµÈ ³»¿ë ƯÈ÷ Set-UID¿Í Set-GID¿¡ ´ëÇØ¼ ¾Ë¾Æ
º¸µµ·Ï ÇϰڴÙ.
</para>
</section>
<section>
<title>±ÇÇÑ(privileges) °ü·Ã</title>
<para>
Unix½Ã½ºÅÛÀÇ °æ¿ì ¸ðµç À¯Àú°¡ µ¿ÀÏÇÏ°Ô Ãë±ÞµÇÁö ¾ÊÀ¸¸ç, °íÀ¯ÀÇ ±ÇÇÑÀ»
°¡Áö¸ç ÇØ´ç ±ÇÇѳ»¿¡¼ Çൿ¿¡ Á¦¾àÀ» ¹Þ°Ô µÈ´Ù. ÀÌ·¯ÇÑ ÇൿÀº ÆÄÀÏÀ»
»èÁ¦Çϰí, ¿Å±â°í, ÆíÁýÇϰųª ½Ã½ºÅÛ¼³Á¤À» ¹Ù²Ù´Â µîÀÇ ÀÛ¾÷ÀÌ µÈ´Ù.
¸¶Ä¡ ¿µÈ ¸ÞÆ®¸¯½º¿¡¼ ¿ä¿ø ½º¹Ì½ºÀÇ ÇൿÀÌ ¸ÞÆ®¸¯½º³»¿¡¼ Á¦ÇÑÀ»
¹Þ´Â °Í°ú °°´Ù.
</para>
<para>
Unix½Ã½ºÅÛ¿¡ µî·ÏµÈ ¸ðµç À¯Àú´Â yundream, yungum°ú °°Àº ÀÚ½ÅÀÇ À̸§À»
°¡Áø´Ù. ±×·¯³ª ÀÌ·¯ÇÑ ¹®ÀÚ¿·Î µÈ À¯ÀúÀ̸§Àº Àΰ£ÁöÇâÀûÀ̱ä ÇÏÁö¸¸
ÄÄÇ»ÅÍ ÀÔÀå¿¡¼ ºÃÀ»¶§´Â »ç¿ëÇϱⰡ ±×¸® ÁÁÁö ¾Ê´Ù.
±×·¡¼ À̸§°ú ¸ÊÇεǴ intÇüÀÇ (À¯ÀÏÇÑ)°íÀ¯¹øÈ£¸¦ ÇÒ´çÇÑ´Ù.
ÀÌ·¯ÇÑ °íÀ¯ ¹øÈ£¸¦
<emphasis>UID<emphasis>(User Identifier)¶ó°í ÇÑ´Ù. À̵é À¯ÀúÁ¤º¸´Â
/etc/passwd ÆÄÀÏ¿¡ ÀúÀåµÈ´Ù.
</para>
<para>
ÀÌÁß UID 0À» °¡Áö´Â À¯Àú°¡ Àִµ¥ À̸¦ rootÀ¯Àú¶ó°í ÇÏ¸ç ½Ã½ºÅÛ¿¡
´ëÇÏ¿© Ưº°ÇÑ ±ÇÇÑÀ» °¡Áö¸ç ¾î¶°ÇÑ Á¦Çѵµ °¡ÁöÁö ¾Ê´Â´Ù.
rootÀ¯Àú´Â ¸ðµç ÆÄÀÏ¿¡ ´ëÇØ¼ "Àбâ", "¾²±â", "½ÇÇà"ÀÇ ¿ÏÀüÇÑ ±ÇÇÑÀ»
°¡Áö¸ç ÀåÄ¡¿¡ ´ëÇØ¼µµ ÀÏüÀÇ ±ÇÇÑ - ¸¶¿îÆ®, ¾ð¸¶¿îÆ®, ÀÌ´õ³Ý Ä«µåÀÇ
ÁÖ¼ÒÇÒ´çµî°ú °°Àº - ºÎ¿© ¹Þ´Â´Ù. À̿ܿ¡µµ ¿î¿µÃ¼Á¦ÀÇ ¿î¿µ°ú °ü·ÃµÈ
(¹°¸®Àû, ½º¿Ò)¸Þ¸ð¸®¿¡ ´ëÇÑ Á¶Á¤, °¢ ÇÁ·Î¼¼½º¿¡ ´ëÇÑ ¿ì¼±±ÇºÎ¿©,
ÇÁ·Î¼¼½º¿¡ ´ëÇÑ ½Ã±×³Î ¹ß»ýµîÀÇ ÀÓ¹«¸¦ ¼öÇàÇÒ ¼öµµ ÀÖ´Ù. ÇѸ¶µð·Î
¸ðµçÀÏÀ» ÇÒ ¼ö Àִ Ư¼öÇÑ À¯Àú¶ó°í º¸¸é µÈ´Ù.
</para>
<para>
ÀÏ´Ü À¯Àú°¡ ½Ã½ºÅÛ¿¡ ·Î±×ÀÎ Çϸé À¯Àú´Â °¢Á¾ ¸í·É¾îµéÀ» ÅëÇØ¼
¿©·¯°¡Áö ÀÛ¾÷À» ¼öÇàÇÏ°Ô µÈ´Ù. À̶§ ÀÌµé ¸í·É¾îÀÇ ¼öÇà¹üÀ§´Â
½ÇÇàµÈ À¯ÀúÀÇ ±ÇÇÑ¿¡ µû¶ó¼ º¯ÇÏ°Ô µÈ´Ù. ÀÌ·¸°Ô µÇ¹Ç·Î½á ÀÚ½ÅÀÇ ±ÇÇÑ
¹Û¿¡ ÀÖ´Â ÀÛ¾÷(´Ù¸¥ À¯ÀúÀÇ ÆÄÀÏ »èÁ¦¿Í °°Àº)À» ¼öÇàÇϰíÀÚ ÇÏ´õ¶óµµ
±ÇÇѹ®Á¦·Î ¿øÇÏ´Â ÀÛ¾÷À» ÇÒ ¼ö ¾ø°Ô µÈ´Ù. ÀÌ·¸°Ô À¯Àúº°·Î ±ÇÇÑÀ»
µÒÀ¸·Î½á ¿©·¯¸íÀÌ µ¿½Ã¿¡ ÀÛ¾÷ÇÏ´Â À¯´Ð½º ½Ã½ºÅÛ¿¡¼ ÀÚ½ÅÀÇ ¿µ¿ªÀ»
ħ¹ü¹ÞÁö ¾Ê°í ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
<tip>
<para>
ÀüÅëÀûÀ¸·Î À¯´Ð½º ½Ã½ºÅÛÀº ½´ÆÛÀ¯Àú¿Í ÀϹÝÀ¯ÀúÀÇ µÎ°³¿µ¿ªÀ¸·Î
±ÇÇÑÀÌ ±¸ºÐµÇ¾î Áø´Ù. ½´ÆÛÀ¯Àú ¿Ü¿¡´Â ¸ðµÎ ÀϹÝÀ¯Àú´Ù.
</para>
</tip>
</para>
<para>
ÀÌ·¸°Ô ÀÚ½ÅÀÇ À¯Àú±ÇÇÑÀ» ÅëÇØ¼ ÀÛ¾÷À» ÇÏ°Ô µÇ¾ú´Âµ¥, ¶§¶§·Î
´Ù¸¥ À¯ÀúÀÇ ±ÇÇÑÀ¸·Î ÀÛ¾÷À» ÇØ¾ß Çϰųª ȤÀº ½´ÆÛÀ¯Àú±ÇÇÑÀÇ ÀÛ¾÷À»
ÇØ¾ßµÉ °æ¿ì°¡ ¹ß»ýÇÑ´Ù. ÀÌ·²°æ¿ì ¿ì¸®´Â <emphasis>su</emphasis>¿Í
°°Àº ÇÁ·Î±×·¥À» ÀÌ¿ëÇØ¼ ½ºÀ§Äª À¯Àú(switching user)ÇÏ°Ô µÈ´Ù.
</para>
<para>
¾ð¶æ su¸¦ ÀÌ¿ëÇØ¼ ½ºÀ§Äª À¯ÀúÇÏ´Â °ÍÀº ´ÜÁö ¿Ã¹Ù¸¥ ÆÐ½º¿öµå¸¦
ÀÔ·ÂÇÏ´Â Á¤µµ·Î ³¡³¯ °ÍÀ¸·Î »ý°¢ µÉ ¼ö ÀÖÁö¸¸ ½ÇÀº ±×¸® °£´ÜÇÑ ¹®Á¦°¡
¾Æ´Ï´Ù. ±âº»ÀûÀ¸·Î ¾ÖÇø®ÄÉÀ̼ÇÀÇ ½ÇÇà±ÇÇÑÀº ½ÇÇà½ÃŲ À¯Àú¿¡ µû¶ó
Á¦ÇÑ µÇ¹Ç·Î ÀϹÝÀ¯Àú°¡ ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇà ½ÃÄ×À» °æ¿ì °áÄÚ ´Ù¸¥
À¯ÀúÀÇ ±ÇÇÑÀ» ȹµæÇÒ ¼ö ¾ø°ÔµÈ´Ù. ´ç¿¬È÷ su¸¦ ½ÇÇà ½Ã۰í
ÆÐ½º¿öµå¸¦ ¿Ã¹Ù¸£°Ô ÀÔ·ÂÇß´Ù°í ÇØ¼ ´Ù¸¥ À¯Àú ±ÇÇÑÀ» ¾òÀ» ¼ö ÀÖ°Ô µÇ´Â
°Ç ¾Æ´Ï´Ù.
</para>
<para>
ÀÌ·± ¹®Á¦¸¦ ÇØ°áÇϱâ À§Çؼ À¯´Ð½º´Â Àá½Ã µ¿¾È "Àӽ÷Î"´Ù¸¥ À¯Àú
±ÇÇÑÀ¸·Î ÇÁ·Î±×·¥À» ½ÇÇà½Ãų ¼ö ÀÖµµ·Ï ½ÇÇàÆÄÀÏÀÇ ±ÇÇÑÀ» Á¶Á¤ÇÒ ¼ö
ÀÖ´Ù. ³»°¡ ºñ·Ï su¸¦ ÀϹÝÀ¯Àú ±ÇÇÑÀ¸·Î ½ÇÇà½ÃÄ×´Ù°í ÇÏ´õ¶óµµ
½´ÆÛÀ¯Àú°¡ su¸¦ ½ÇÇà½ÃŲ°Í°ú °°Àº È¿°ú(effect)¸¦ ÁÖµµ·Ï ¾ÖÇø®ÄÉÀ̼ÇÀÇ
½ÇÇà±ÇÇÑÀ» Á¶Á¤ÇØ ÁÙ ¼ö ÀÖ´Ù´Â ¶æÀÌ´Ù. ÀÌ·¯ÇÑ ±ÇÇÑÀ» Effectiv UID¶ó°í
ÇÑ´Ù. ls¸¦ ÅëÇØ¼ suÀÇ ±ÇÇÑÀ» È®ÀÎÇØ º¸ÀÚ
<screen>
[root@localhost /root]# ls -al /bin/su
-rwsr-xr-x 1 root root 14112 1¿ù 16 2001 /bin/su
</screen>
¼ÒÀ¯ÀÚ ±ÇÇÑ¿¡ 's'°¡ º¸ÀÏ °ÍÀÌ´Ù. ÀÌ´Â ÀϹÝÀ¯Àú°¡ su ÇÁ·Î±×·¥À»
½ÇÇàÇÏ´õ¶óµµ ÇÁ·Î±×·¥ÀÇ ¼ÒÀ¯ÀÚÀÎ rootÀÇ ±ÇÇÑÀ¸·Î ÀÛ¾÷À» ÇÒ ¼ö ÀÖÀ»À»
ÀǹÌÇÑ´Ù. ÀÌ 's'°¡ ¼³Á¤µÇ´Â ºñÆ®¸¦ Set-UIDȤÀº ÁÙ¿©¼ SUID¶ó°í ÇÑ´Ù.
</para>
<para>
±×·³ SUIDÀÇ Å×½ºÆ®¸¦ À§Çؼ °£´ÜÇÑ ÇÁ·Î±×·¥À» Çϳª ¸¸µé¾î º¸µµ·Ï
ÇÏÀÚ.
</para>
<section>
<title>SUID ¿¹Á¦ ÇÁ·Î±×·¥</title>
<para>
¸¸µé°íÀÚ ÇÏ´Â ÇÁ·Î±×·¥Àº °£ÀÌ suÇÁ·Î±×·¥ÀÌ´Ù À̸§Àº jsu·Î
ÇϰڴÙ. ÇÁ·Î±×·¥ÀÌ ÇÏ´Â ÀÏÀº setuid(2)¸¦ ÀÌ¿ëÇØ¼ ½´ÆÛÀ¯Àú ±ÇÇÑÀÇ
ȹµæÀ» ½ÃµµÇϰí execl(3)À» ÀÌ¿ëÇØ¼ ½©À» ½ÇÇà ½ÃŲ´Ù.
ÄÚµå´Â °£´ÜÇϹǷΠ¼³¸íÀº ÁÖ¼®À¸·Î ´ë½Å ÇÏ´Ù·Ï ÇÑ´Ù.
</para>
<para>
<screen>
#include <unistd.h>
int main()
{
if (setuid(0) != 0)
{
perror("setuid error : ");
exit(0);
}
execl("/bin/sh", "sh", NULL);
}
<screen>
À§ ÇÁ·Î±×·¥À» ÄÄÆÄÀÏÇÑ µÚ ¹Ù·Î ½ÇÇàÇÏ¸é ºÐ¸í setuid(2)È£ÃâÀÌ ½ÇÆÐÇß´Ù´Â
¸Þ½ÃÁö¸¦ Ãâ·ÂÇϸç ÇÁ·Î±×·¥ÀÌ Á¾·á µÉ°ÍÀÌ´Ù(ÀϹݰèÁ¤À¸·Î Å×½ºÆ® Çϱâ
¹Ù¶õ´Ù). ÀÏ¹Ý °èÁ¤À¸·Î ´Ù¸¥ °èÁ¤±ÇÇÑÀ» ¾òÀ» ¼ö ¾ø±â ¶§¹®ÀÌ´Ù.
ÀÌ ¹®Á¦¸¦ ÇØ°á Çϱâ À§Çؼ jsuÇÁ·Î±×·¥¿¡ ´ÙÀ½°ú °°ÀÌ SIDºñÆ®¸¦
¼³Á¤ÇÏ¸é µÈ´Ù.
<screen>
[root@localhost test]# chown +s jsu
</screen>
ÀÌÁ¦ ¼º°øÀûÀ¸·Î ´Ù¸¥ À¯Àú·Î º¯°æµÊÀ» È®ÀÎ ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. id¸¦
ÀÌ¿ëÇØ¼ ÀÚ½ÅÀÇ ±ÇÇÑ Á¤º¸¸¦ È®ÀÎÇØº¸µµ·Ï ÇÏÀÚ.
<screen>
[yundream@coco test]$ ./jsu
sh-2.04# id
uid=0(root) gid=500 groups=500
</screen>
uid°¡ 0(½´ÆÛÀ¯Àú)·Î ¼º°øÀûÀ¸·Î ¼¼ÆÃµÇ¾î ÀÖÀ½À» È®ÀÎ ÇÒ ¼ö ÀÖ´Ù.
À̶§ gid¿Í groups°ü·Ã Á¤º¸°¡ Á¦´ë·Î ³ª¿ÀÁö ¾Ê´Âµ¥ ÀÌÀ¯´Â jsuÇÁ·Î±×·¥ÀÌ
¿ÏÀüÇÑ ÇÁ·Î±×·¥ÀÌ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. Á»´õ su¿Í ºñ½ÁÇÏ°Ô ÀÛµ¿Çϵµ·Ï
Çϱâ À§Çؼ´Â gid¿Í ±× ¹Û¿¡ ¸î °¡Áö ´õ ½Å°æ½á¾ß ÇÒ ºÎºÐµéÀÌ Àִµ¥,
¿©±â¿¡¼´Â »ý·«Çϵµ·Ï ÇϰڴÙ.
</para>
</section>
<section>
<title>SUIDÀÇ ¹®Á¦Á¡</title>
<para>
À§ ÇÁ·Î±×·¥Àº Ä¡¸íÀûÀÎ ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù. ±×°ÍÀº SUID°¡ Àû¿ëµÈ
½´ÆÛÀ¯Àú ¼ÒÀ¯ÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀ» ½ÇÇà½Ãų °æ¿ì ¾Æ¹«·± Á¦Àç »çÇ× ¾øÀÌ
½´ÆÛÀ¯ÀúÀÇ ±ÇÇÑÀ» ¾òÀ» ¼ö ÀÖ´Ù´Â Á¡ÀÌ´Ù. ¹°·Ð ÀÌ·¯ÇÑ ¹®Á¦ÀÇ °æ¿ì
ÇØ´ç ±ÇÇÑÀ» ¾ò±â À§Çؼ su¿Í °°ÀÌ ÆÐ½º¿öµå ÀÔ·Â °úÁ¤À» °ÅÄ¡°Ô ÇѴٰųª
½´ÆÛÀ¯Àú·Î ÀÛµ¿ÇÏ´Â Äڵ带 ÃÖ¼ÒÈÇÏ´Â ¹æ¹ýµîÀ» »ç¿ëÇϱâ´Â ÇÏÁö¸¸
SUIDÀÚü°¡ ¸Å¿ì ½Ã½ºÅÛ °ü¸®Àû Ãø¸é¿¡¼ ¸Å¿ì À§ÇèÇÒ ¼ö ÀÖ´Ù.
</para>
<para>
±×·¡¼ ½Ã½ºÅÛ °ü¸®ÀÚ´Â SUID°¡ ÀÖ´Â ÇÁ·Î±×·¥¿¡ ´ëÇØ¼ ¸Å¿ì ¹Î°¨ÇϰÔ
¹ÝÀÀÇÏ¸ç ¸¹Àº °æ¿ì cronµîÀ» ÅëÇØ¼ SUIDÀÇ ÇÁ·Î±×·¥ÀÌ ÀÖ´ÂÁö Áö¼ÓÀûÀ¸·Î
È®ÀÎÇÑ´Ù. ½Ã½ºÅÛÀÌ ´©±º°¡ÀÇ Ä§ÀÔÀ» ¹ÞÀº ÈçÀûÀÌ ÀÖÀ» °æ¿ì SUID°Ë»ç´Â
Çʼö ÀûÀ¸·Î ÀÌ·ç¾îÁø´Ù.
<screen>
[root@localhost /bin]# find ./ -type f -perm +4000
./ping
./mount
./umount
./su
</screen>
À§´Â ÇÊÀÚÀÇ ½Ã½ºÅÛ(Linux Kernel 2.4.x)¿¡¼ /bin µð·ºÅ丮 ¹Ø¿¡
SUID¼³Á¤µÈ ÇÁ·Î±×·¥À» ãÀº °á°úÀÌ´Ù.
</para>
<para>
±×·¯³ª ÀÌ·¯ÇÑ ¹®Á¦Á¡¿¡µµ ºÒ±¸Çϰí su, ping°ú °°ÀÌ ¹Ýµå½Ã ÇÊ¿äÇÑ
°æ¿ìµµ ÀÖÀ¸¹Ç·Î °¡´ÉÇϸé SUID¸¦ »ç¿ëÇÏÁö ¾Êµµ·Ï Çϸé
ÇÊ¿äÇÒ °æ¿ì ÃÖ´ëÇÑ ¾ÈÀüÇÏ°Ô ÄÚµùÇϵµ·Ï ÇØ¾ßÇÑ´Ù.
<tip>
<para>
ping°°Àº °æ¿ì RAW¼ÒÄÏ¿¡ Á¢±ÙÇØ¾ß Çϴµ¥, ÀÌ·² °æ¿ì ½´ÆÛÀ¯Àú
±ÇÇÑÀ» ÇÊ¿ä·Î ÇÑ´Ù. ±×·¯³ª ÀÌ·¸°Ô µÉ°æ¿ì ping¸¦ »ç¿ëÇÒ ¶§ ¸¶´Ù
root·Î ½ºÀ§Äª À¯Àú ÇØ¾ß Çϴµ¥ ÀÌ·± ´Ü¼øÇÑ ÀÛ¾÷À» À§Çؼ´Â
³Ê¹« ¹ø°Å·Î¿î °úÁ¤À» °ÅÃÄ¾ß ÇÑ´Ù. SUID¸¦ ÇØ°áÇÏ¸é °£´ÜÇϰÔ
¹ø°Å·Î¿òÀ» ÇØ°áÇÒ ¼ö ÀÖ´Ù.
</para>
</tip>
¾ÈÀüÇÑ ÄÚµùÀ» À§ÇÑ ÀϹÝÀûÀÎ ¹æ¹ýÀº
setuid()¸¦ ÅëÇØ¼ ½´ÆÛ À¯Àú ±ÇÇÑÀ» ¾ò¾ú´Ù¸é ½´ÆÛÀ¯Àú ±ÇÇÑÀÌ
ÇÊ¿äÇÑ ÃÖ¼ÒÇÑÀÇ ÀÛ¾÷À» ³¡³»°í °ð¹Ù·Î setuid()¸¦ ÀÌ¿ëÇØ¼ ¿ø·¡ÀÇ
À¯Àú±ÇÇÑÀ¸·Î ȸ±ÍÇϵµ·Ï ÄÚµùÇÏ´Â °ÍÀÌ´Ù.
<screen>
int main()
{
...
int myuid;
myuid = getuid(); // ÇöÀç À¯ÀúÀÇ uid¸¦ ÀúÀå
setuid(0); // ½´ÆÛÀ¯Àú ±ÇÇÑÀ» ¾ò´Â´Ù.
... // ÃÖ¼ÒÇÑÀÇ ÇÊ¿äÇÑ ÀÛ¾÷¸¸À» ÇÑ´Ù.
...
setuid(myuid); // ¿ø·¡ À¯Àú±ÇÇÑÀ¸·Î µÇµ¹¾Æ ¿Â´Ù.
}
</screen>
´õ¿í ¾ÈÀüÇÑ ÇÁ·Î±×·¥ÀÇ ÀÛ¼ºÀ» ¿øÇÑ´Ù¸é setuid()¸¦ È£ÃâÇϱâ Àü¿¡
ÇØ´ç À¯Àú¿¡ ´ëÇÑ ÆÐ½º¿öµå¸¦ üũÇÏ´Â Äڵ带 Ãß°¡ÇÏ¸é µÉ °ÍÀÌ´Ù.
</para>
<para>
½Ã°£ÀÌ µÈ´Ù¸é À§ÀÇ ¿¹Á¦¸¦ ÆÐ½º¿öµå üũ°¡ °¡´ÉÇϵµ·Ï º¯°æÇØ
º¸±â ¹Ù¶õ´Ù.
</para>
</section>
</section>
<section>
<title>¿ÜºÎ ¸í·É¾îÀÇ ½ÇÇà</title>
<para>
ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Ù º¸¸é Á¾Á¾ ¿ÜºÎÀÇ ´Ù¸¥ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄѾß
ÇÒ °æ¿ì°¡ ¹ß»ýÇÑ´Ù. °¡Àå ÈçÇÑ ¿¹´Â ÇÁ·Î±×·¥³»¿¡¼ ¸ÞÀÏÀ» Àü¼ÛÇϱâ
À§Çؼ ¿ÜºÎ ÇÁ·Î±×·¥ÀÎ mailÀ» ½ÇÇàÇÏ´Â °æ¿ì°¡ µÉ °ÍÀÌ´Ù. ÀÌ·² °æ¿ì
°¡Àå À¯¿ëÇÏ°Ô »ç¿ëÇÏ´Â ÇÔ¼ö´Â system(3)ÇÔ¼ö ÀÌ´Ù.
<screen>
#include <stdlib.h>
int system (const char *string);
</screen>
</para>
<section>
<title>À§ÇèÇÑ system()ÇÔ¼öÀÇ »ç¿ë</title>
<para>
</para>
</section>
</section>
</article>
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|