PAM(Pluggable Authentication Modules) Linux
vi /etc/profile
if[$LOGNAME != "root" ];
then
ulimit -Hv 5000 # ¸Þ¸ð¸® Á¦ÇÑ
ulimit -Hu 3 # ÇÁ·Î¼¼½º Á¦ÇÑ
ulimit -Hf 1024 # ÆÄÀÏ »çÀÌÁî Á¦ÇÑ
root °¡ ¾Æ´Ñ »ç¿ëÀڵ鿡°Ô Á¦ÇÑÇϱâ
PAM À̶õ?
¿¾³¯ ¸®´ª½º°¡ ÁÁÀº ½ÃÀý¿¡´Â su, passwd, login, xlock¿Í °°Àº ÇÁ·Î±×·¥µéÀº »ç¿ëÀÚ ÀÎÁõÀÌ ÇÊ¿äÇÒ °æ¿ì °£´ÜÈ÷ /etc/passwd ÆÄÀÏ¿¡¼ Á¤º¸¸¦ Àоú´Ù. ¸¸¾à¿¡ »ç¿ëÀÚ Æнº¿öµå¸¦ º¯°æÇÒ ÇÊ¿ä°¡ ÀÖÀ» °æ¿ì, °£´ÜÈ÷ /etc/passwd¸¦ ÆíÁýÇß´Ù. ÀÌ·¯ÇÑ °£´ÜÇϳª Åõ¹ÚÇÑ ¹æ¹ýÀº ½Ã½ºÅÛ°ü¸®¿Í ÀÀ¿ëÇÁ·Î±×·¥ °³¹ßÀڵ鿡 ¸¹Àº ¹®Á¦Á¡À» Á¦°øÇß´Ù. MD5¿Í ½¦µµ¿ì Æнº¿öµå°¡ ±²ÀåÈ÷ À¯ÇàÇÔ¿¡ µû¶ó ´Ù¸¥ ¹æ¹ýÀ» ´Ù·ç°íÀÚ ÇÒ ¶§ »ç¿ëÀÚ ÀÎÁõÀ» ÇÊ¿ä·Î ÇÏ´Â °¢°¢ÀÇ ÇÁ·Î±×·¥ ÀûÀýÇÑ Á¤º¸¸¦ ¾ò´Â ¹æ¹ýÀ» ¾Ë¾Æ¾ß Çß´Ù. ¸¸¾à¿¡ ¿©·¯ºÐµéÀÌ »ç¿ëÀÚ ÀÎÁõ ¹æ¹ýÀ» º¯°æÇÏ°íÀÚ ÇÑ´Ù¸é ¸ðµç ÇÁ·Î±×·¥µéÀº »õ·Î ÄÄÆÄÀÏ ÇØ¾ß Çß´Ù. PAMÀº »ç¿ëÀÚÁ¤º¸ÀÇ ÀúÀå¹æ¹ý°ú °ü°è¾øÀÌ ÇÁ·Î±×·¥µéÀÌ Åõ¸íÇÏ°Ô »ç¿ëÀÚ¸¦ ÀÎÁõÇÏ°Ô ÇÔÀ¸·Î½á ÀÌ·¯ÇÑ È¥ÀâÇÔÀ» Á¦°ÅÇß´Ù.
¸®´ª½º-PAM ½Ã½ºÅÛ °ü¸®ÀÚ ¼³¸í¼¿¡ ¼³¸íÇϱ⸦ "¸®´ª½º-PAMÇÁ·ÎÁ§Æ®ÀÇ ¸ñÀûÀº ¾ÈÀüÇÏ°í ÀûÇÕÇÑ ÀÎÁõ¹æ¹ýÀÇ °³¹ß°ú ¼ÒÇÁÆ®¿þ¾î¿¡°Ô ºÎ¿©ÇÑ Æ¯±ÇÀÇ °³¹ßÀ» ºÐ¸®ÇÏ´Â °ÍÀÌ´Ù"¶ó°í µÇ¾î ÀÖ´Ù. ÀÌ°ÍÀº »ç¿ëÀÚ°¡ ÀÎÁõµÇ¾î¾ß ÇÑ´Ù´Â ¿äûÇϱâ À§ÇØ ¾î¶² ÀÀ¿ëÇÁ·Î±×·¥ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ÇÔ¼öÀÇ ¶óÀ̺귯¸®¸¦ Á¦°øÇÔÀ¸·Î½á °¡´ÉÇÏ´Ù. PAMÀ» »ç¿ëÇÏ¸é ¿©·¯ºÐµéÀÇ Æнº¿öµå°¡ /etc/passwd ¿¡ ÀúÀåµÇ¾úµçÁö ¶Ç´Â È«ÄáÀÇ ¼¹ö¿¡ ÀúÀåµÇ¾úµçÁö Áß¿äÇÏÁö ¾Ê´Ù. ÇÁ·Î±×·¥ÀÌ »ç¿ëÀÚ ÀÎÁõÀ» ÇÊ¿ä·Î Çϸé, PAMÀÌ ÀûÀýÇÑ ÀÎÁõ¹æ¹ý¿¡ ´ëÇÑ ÇÔ¼ö¸¦ Æ÷ÇÔÇÏ´Â ¶óÀ̺귯¸®¸¦ Á¦°øÇÑ´Ù. ÀÌ ¶óÀ̺귯¸®´Â µ¿ÀûÀ¸·Î ÇÒ ´çµÇ±â ¶§¹®¿¡ ÀÎÁõ½ºÅ´À» º¯°æÇÏ´Â °ÍÀº °£´ÜÈ÷ ±¸¼ºÆÄÀÏÀ» ÆíÁýÇÏ¸é µÈ´Ù.
PAMÀº °¡Àå Å« ÀåÁ¡Àº À¯µ¿¼ºÀÌ´Ù. PAMÀº »ç¿ëÀÚ¸¦ ÀÎÁõÇÏ´Â »ç¿ëÀÚ¸¦ ÀÎÁõÇÏ´Â ¾î¶² ÇÁ·Î±×·¥ÀÇ ±Ç¸®¸¦ ºÎÁ¤Çϵµ·Ï ±¸¼ºµÉ ¼ö ÀÖ´Ù. ¾î¶² »ç¿ëÀڵ鿡°Ô ÀÎÁõµÇµµ·Ï Çã°¡ÇÒ ¼ö ÀÖ°í, ¾î¶² ÇÁ·Î±×·¥ÀÌ ÀÎÁõÀ» ½ÃµµÇÒ ¶§ °æ°í¸¦ ÁÙ ¼ö ÀÖ°í, ¸ðµç »ç¿ëÀÚµéÀÇ ·Î±×ÀÎ ±ÇÇÑÀ» ¾ø¾Ù ¼öµµ ÀÖ´Ù. PAMÀÇ ¸ðµâ µðÀÚÀÎÀ¸·Î ÀÎÇØ »ç¿ëÀÚ ÀÎÁõ¹æ¹ý¿¡ ´ëÇØ È®½ÇÇÑ ÅëÁ¦¸¦ ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
PAM ±¸¼ºÆÄÀÏÀº /etc/pam.d µð·ºÅ丮¿¡ ÀúÀåµÇ¾î ÀÖ´Ù(¿©·¯ºÐÀÌ /etc/pam.d/ µð·ºÅ丮°¡ ¾ø´Ù¸é °ÆÁ¤ÇÏÁö ¸¶¶ó. ´ÙÀ½ Àý¿¡¼ ´Ù·ê °ÍÀÌ´Ù.) °Å±â·Î °¡¼ »ìÆ캸ÀÚ.
~$ cd /etc/pam.d /etc/pam.d/$ ls chfn chsh login other passwd su xlock /etc/pam.d/$
¾î¶² ½Ã½ºÅÛÀΰ¡¿¡ µû¶ó ´Ù¸£Áö¸¸ ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡´Â ÀÌ µð·ºÅ丮¿¡ ´Ù¼Ò ¸¹°Å³ª ÀûÀº ÆÄÀϵéÀÌ ÀÖÀ» °ÍÀÌ´Ù. ÀÚ¼¼ÇÑ »çÇ×Àº ¾î¶²Áö °£¿¡, ½Ã½ºÅÛÀÇ °¢°¢ÀÇÇÁ·Î±×·¥¿¡ ´ëÇÑ »ç¿ëÀÚµéÀº ÀÎÁõÇÏ´Â ÆÄÀÏÀ» º¸¾ÒÀ» °ÍÀÌ´Ù. ¾Æ¸¶ ÀÌ¹Ì ´«Ä¡ÃªµíÀÌ, °¢°¢ÀÇ ÆÄÀϵéÀº ±× À̸§À» µý ÇÁ·Î±×·¥¿¡ ´ëÇÑ PAM ÀÎÁõ±¸¼ºÀ» Æ÷ÇÔÇÏ°í ÀÖ´Ù(otherÆÄÀÏÀº ¿¹¿Ü´Ù. ÀÌ°ÍÀº ³ªÁß¿¡ Á¶±Ý ´Ù·ê °ÍÀÌ´Ù). passwd ÆÄÀÏ¿¡ ´ëÇÑ PAM ±¸¼ºÀ» º¸ÀÚ(¾ÆÁÖ °£´ÜÇÏ°Ô Çϱâ À§ÇØ ¿ä¾àÀ» Çß´Ù.)
/etc/pam.d/$ cat login # PAM configuration for login auth requisite pam_securetty.so
auth required pam_nologin.so auth required pam_env.so auth required pam_unix.so nulok
account required pam_unix.so session required pam_unix.so session optional
pam_lastlog.so password required pam_unix.so nullok obscure min=4 max=8
PAM ±¸¼ºÆÄÀÏÀº ´ÙÀ½°ú °°Àº ¹®¹ýÀ» °¡Áö°í ÀÖ´Ù:
type control module-path module-arguments
·Î±×ÀÎ ±¸¼ºÆÄÀÏ(À§¸¦ ºÁ¶ó)À» ¿¹·Î Çؼ PAM ±¸¼ºÆÄÀÏ¿¡ ´ëÇÑ ¹®¹ý¿¡ ´ëÇؼ ¾Ë¾Æº¸ÀÚ:
PAM ±¸¼ºÅäÅ«
type
ŸÀÔÅäÅ«Àº PAM¿¡ ÀÌ ¸ðµâ¿¡ ¾î¶² ŸÀÔÀÇ ÀÎÁõÀÌ »ç¿ëµÉ °ÍÀÎÁö¸¦ ¾Ë·ÁÁØ´Ù. °°Àº ŸÀÔÀÇ ¸ðµâÀº "½×ÀÏ" ¼ö ÀÖ°í, »ç¿ëÀÚ¿¡ ÀÎÁõµÇ±â À§ÇÑ ´ÙÁß ¿ä±¸»çÇ×À» ¸¸Á·Çϵµ·Ï ¿äûÇÒ ¼ö ÀÖ´Ù. PAMÀº ³×°³ÀÇ Å¸ÀÔÀ» ÀνÄÇÑ´Ù.
account
°èÁ¤Àº »ç¿ëÀÚ°¡ ÇØ´ç ¼ºñ½º¿¡ Á¢±ÙÀÌ Çã¿ëµÇ¾ú´ÂÁö, Æнº¿öµå°¡ ±â°£ÀÌ ¸¸·á°¡ µÇ¾ú´ÂÁö¸¦ °áÁ¤ÇÑ´Ù.
auth
ÁÖ·Î Æнº¿öµå¸¦ ÅëÇÏÁö¸¸ »ýüÀÎÁõ°ú °°Àº º¸´Ù Á¤±³ÇÑ ¹æ¹ýÀ» ÅëÇؼ »ç¿ëÀÚ°¡ ÀÚ½ÅÀÌ ÁÖÀåÇÏ´Â »ç¿ëÀÚ°¡ ¸Â´ÂÁö °áÁ¤ÇÑ´Ù.
password
Æнº¿öµå´Â »ç¿ëÀÚ°¡ ±×µéÀÇ ÀÎÁõÀ» º¯°æÇϵµ·Ï ¾î¶² ¹æ¹ýÀ» Á¦°øÇÑ´Ù. ´Ù½Ã ÀÌ°ÍÀº ÁÖ·Î Æнº¿öµåÀÌ´Ù.
session
»ç¿ëÀÚ°¡ ÀÎÁõ¹Þ±â Àü¿¡ ¶Ç´Â/±×¸®°í ÈÄ¿¡ µÇ¾î¾ß ÇÒ °ÍÀÌ´Ù. ÀÌ°ÍÀº »ç¿ëÀÚ È¨ µð·ºÅ丮¸¦ ¸¶¿îÆÃ/¾ð¸¶¿ìÆÃÇÏ´Â °Í°ú ·Î±×ÀÎ/·Î±×¾Æ¿ô ±×¸®°í »ç¿ëÀÚ¿¡°Ô Á¦°øÇÏ´Â ¼ºñ½º¸¦ Á¦ÇÑ/Á¦°øÇÏ´Â °Í°ú °°Àº °ÍÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù.
·Î±×ÀÎ ±¸¼º ÆÄÀÏ¿¡´Â °¢°¢ÀÇ Å¸ÀÔÇϳª¿¡ Àû¾îµµ ÇÑ °³ÀÇ ¸ñ·ÏÀ» º¼ ¼ö ÀÖ´Ù. ÀÌ°Í ¶§¹®¿¡ ÇÁ·Î±×·¥ÀÌ »ç¿ëÀڵ鿡 ·Î±×ÀÎÀ» Çã¿ëÇÑ´Ù. ¸ðµç ´Ù¸¥Å¸ÀÔÀÇ ÀÎÁõ¿¡ Á¢±ÙÇÒ ÇÊ¿ä°¡ ÀÖ´Ù´Â °ÍÀ» ÀÌÇØÇÒ ¼ö ÀÖ´Ù.
control
ÅëÁ¦ ÅäÅ«Àº ÀÌ ¸ðµâÀÌ µ¿ÀÛÇÏÁö ¾Ê´Â´Ù¸é PAM¿¡°Ô ¹«¾ùÀ» ÇؾßÇÒ Áö ¾Ë·ÁÁÖ´Â °ÍÀÌ´Ù. PAMÀº ³×°¡ÁöÀÇ ÅëÁ¦ Çü½ÄÀ» ÀνÄÇÑ´Ù.
requisite
ÀÌ ¸ðµâÀ» ÀÌ¿ëÇÏ´Â ÀÎÁõÀÌ ½ÇÆÐÇÒ °æ¿ì, Áï½Ã ÀÎÁõÀ» °ÅºÎÇϵµ·Ï ÇÑ´Ù.
required
ÀÎÁõÀÌ °ÅºÎµÇ±â Àü¿¡ ºñ·Ï PAMÀÌ ÀÌ ¼ºñ½º¿¡ µî·ÏµÈ ´Ù¸¥ ¸ðµç ¸ðµâµéÀ» ¿ä±¸ÇÔ¿¡µµ ºÒ±¸ÇÏ°í ½ÇÆÐÇÒ °æ¿ì ÀÎÁõÀ» °ÅºÎÇϵµ·Ï ÇÑ´Ù.
sufficient
ºñ·Ï ÀÌÀü¿¡ ¿äûµÇ¾îÁø ¸ðµâÀÌ ½ÇÆÐÇÏ´õ¶óµµ ÀÌ ¸ðµâ¿¡ ÀÇÇؼ ÀÎÁõÀÌ ¼º°øÇÒ °æ¿ì, PAMÀº ÀÎÁõÀ» ½ÂÀÎÇÑ´Ù.
optional
ÀÌ ¸ðµâÀÌ ¼º°ø ¶Ç´Â ½ÇÆÐÇÏ´Â Áö´Â ±× ¸ðµâÀÌ ¼ºñ½º¿¡ ´ëÇÑ Çü½Ä¿¡ ´ëÇÑ À¯ÀÏÇÑ ¸ðµâÀÏ °æ¿ì¿¡ Áß¿äÇÏ´Ù.
·Î±×Àο¡ ´ëÇÑ ±¸¼ºÆÄÀÏ¿¡¼ °ÅÀÇ ¸ðµç ÅëÁ¦Å¸ÀÔÀÌ ´Ù¸£´Ù´Â ¾Ë ¼ö ÀÖ´Ù. ´ëºÎºÐÀÇ ¿äûµÇ¾îÁö´Â ¸ðµâµéÀº pam_unix.so(ÁÖ¿ä ÀÎÁõ ¸ðµâ)ÀÌ°í, ´Ü ÇÑ °³ÀÇ requitsite ¸ðµâÀº pam_securitty.so ÀÌ´Ù(»ç¿ëÀÚ°¡ ¾ÈÀüÇÑ Äֿܼ¡ ·Î±×ÀÎÇÑ´Ù´Â °ÍÀ» È®ÀÎÇÏ´Â °ÍÀÌ´Ù). ±×¸®°í À¯ÀÏÇÑ ¼±ÅøðµâÀº pam_lastlogin.so ÀÌ´Ù(»ç¿ëÀÚÀÇ °¡Àå ÃÖ±Ù ·Î±× Á¤º¸¸¦ °¡Áö°í ¿À´Â ¸ðµâ)
¸ðµâ-°æ·Î
¸ðµâ°æ·Î´Â PAM¿¡°Ô ¾î¶² ¸ðµâÀ» »ç¿ëÇÒ °ÍÀÎÁö(¼±ÅÃÀûÀ¸·Î) ±×¸®°í ±×°ÍÀ» ¾îµð¼ ãÀ» Áö¸¦ ¾Ë·ÁÁØ´Ù. ´ëºÎºÐ ±¸¼ºÀº ·Î±×ÀÎ ±¸¼ºÆÄÀÏÀÇ °æ¿ì¿Í ¸¶Âù°¡Áö·Î ¸ðµâÀÇ À̸§¸¸ °¡Áö°í ÀÖ´Ù. ÀÌ¿Í °°Àº °æ¿ì, PAMÀº ±âº» PAM ¸ðµâÀÇ µð·ºÅ丮¿¡¼(º¸Åë /usr/lib/security) ¸ðµâÀ» ã´Â ´Ù. ±×·¯³ª ¿©·¯ºÐÀÇ ¸®´ª½º°¡ ¸®´ª½º ÆÄÀϽýºÅÛÀÇ Ç¥ÁØÀ» µû¸¥´Ù¸é PAM¸ðµâÀº /lib/security¿¡ ÀÖ´Ù.
¸ðµâ-Àμö
¸ðµâ-Àμö´Â ¸ðµâ¿¡°Ô Àü´ÞµÇ´Â ÀμöÀÌ´Ù. °¢°¢ÀÇ ¸ðµâÀº °¢°¢ÀÇ Àμö¸¦ °¡Áö°í ÀÖ´Ù. ¿¹¸¦ µé¾î ·Î±×ÀÎ ±¸¼º¿¡¼ "nulok"°¡ ±×°ÍÀÌ´Ù. ("null ok", pam_unis.so ¸ðµâ·Î Àü´ÞµÇ¾î Áö´Â Àμö·Î¼ °ø¹é(null)Æнº¿öµå¸¦ Çã¿ëÇÑ´Ù´Â °ÍÀÌ´Ù("ok")).
pam.conf ±¸¼º
¿©·¯ºÐÀÇ PAM±¸¼ºÀº /etc/pam.d°¡ ¾Æ´Ï¶ó /etc/pam.conf¿¡ ÀúÀåµÇ¾î ÀÖ´Ù¸é PAM ±¸¼ºÁÙÀº Á¶±Ý ´Ù¸£´Ù. °¢°¢ÀÇ ¼ºñ½ºµéÀÌ °¢ÀÚÀÇ ±¸¼ºÆÄÀÏÀ» °¡Áö°í ÀÖÁö ¾Ê°í, ÇÑÁÙÀÇ ±¸¼º¿¡ ù ¹ø° ÅäÅ«À¸·Î ¼ºñ½º À̸§À» °¡Áö´Â ¸ðµç ±¸¼ºµéÀÌ /etc/pam.conf¿¡ ÀúÀåµÇ¾î ÀÖ´Ù. ¿¹¸¦ µé¾î /etc/pam.d/login¿¡ ´ÙÀ½°ú °°Àº ÁÙÀÌ:
auth required pam_unix.so nulok
/etc/pam.conf¿¡´Â ´ÙÀ½°ú °°Àº ÁÙ·Î ³ªÅ¸³ª ÀÖ´Ù.
login auth required pam_unix.so nulok
ÀÌ·¯ÇÑ »ç¼ÒÇÑ Â÷À̸¦ Á¦¿ÜÇÏ°í´Â PAMÀÇ ³ª¸ÓÁö ¹®¹ýÀº °°ÀÌ Àû¿ëµÈ´Ù.