ModSecurity¸¦ È°¿ëÇÑ ¾ÆÆÄÄ¡ À¥¼¹ö º¸¾È °È °¡À̵å
1. °³ ¿ä
ModSecurity´Â Apache À¥ ¼¹ö¿¡¼ µ¿ÀÛÇÏ´Â ¿ÀÇ ¼Ò½º À¥ ¹æȺ®À̸ç, ¼Ò½ºÀÇ Àç»ç¿ë ¹× Àç»ý»êµÈ ÇÁ·Î±×·¥ÀÇ °ø°³ Á¶°ÇÀÎ GNU GPLÀ» µû¸£´Â °ø°³ ¹öÀü°ú ModSecurityÀÇ °³¹ß»çÀÎ Breach SecurityÞäÀÇ »ó¾÷¿ë ¹öÀüÀÌ Àִµ¥, º» °¡À̵忡¼´Â °ø°³ ¹öÀüÀ» ÀÌ¿ëÇÑ ¼³Ä¡ ¹× ¿î¿µ ¹æ¹ýÀ» ¾Ë¾Æº»´Ù.
º» ¹®¼´Â 2006³â 3¿ù¿¡ ¹ß°£µÈ ¡ºModSecurity¸¦ ÀÌ¿ëÇÑ ¾ÆÆÄÄ¡ À¥¼¹ö º¸¾È(¡¯06.3.14)¡»¿¡ ±âÃÊ ÇÏ¿© ±×µ¿¾È ¾÷µ¥ÀÌÆ®µÈ ³»¿ë¿¡ ´ëÇØ º¸°ÇÏ°í 2.x ¹öÀüÀÇ ³»¿ëÀ» Ãß°¡ÇÏ¿´´Ù.
ModSecurity´Â O¡¯ReillyÞä¿¡¼ Ãâ°£ÇÑ "Apache Security"¶ó´Â Ã¥À» ¾´ Ivan Ristic°¡ °³¹ßÇÑ Åø·Î½á, ¼³Ä¡ ¹× Â÷´Ü Rule ¼³Á¤ ÀÎÅÍÆäÀ̽º°¡ CLI±â¹ÝÀÌ¾î¼ ´Ù¼Ò ºÒÆíÇÏ´Ù´Â ´ÜÁ¡Àº ÀÖÁö¸¸ ±×¸¸Å À¯¿¬ÇÑ Á¤Ã¥¼³Á¤ÀÌ °¡´ÉÇÏ°í ÀÔ·Â °ª °ËÁõ±â´ÉÀÌ ¶ÇÇÑ ¸Å¿ì ¿ì¼öÇÏ´Ù. Apache À¥¼¹ö´Â Àü¼¼°èÀûÀ¸·Î ³Î¸® »ç¿ëµÇ´Â °ø°³ À¥¼¹öÀ̸ç, ¸¹Àº ¼öÀÇ Áß¼Ò±â¾÷¿¡¼µµ »ç¿ëÇÏ°í ÀÖ´Ù. ±×·¯¹Ç·Î °í°¡ÀÇ »ó¿ë À¥ ¹æȺ® µµÀÔ¿¡ ¾î·Á¿òÀ» °Þ´Â Áß¼Ò±â¾÷¿¡¼´Â ModSecurity¸¦ È°¿ëÇÏ¿© À¥ »çÀÌÆ®¿¡ ´ëÇÑ º¸¾È¼öÁØ °È¿¡ Å« µµ¿òÀ» ¾òÀ» ¼ö ÀÖ´Ù. ÇÏÁö¸¸, ´Ù¼öÀÇ ´ëÇü À¥¼¹ö¸¦ ¿î¿µÇÏ´Â ±â¾÷À̳ª º¹ÀâÇÑ À¥ ȯ°æÀ» ¿î¿ëÇÏ´Â °æ¿ì, °ü¸®ÀÚ ÀÎÅÍÆäÀ̽º ¹× ±â¼úÁö¿ø Ãø¸éÀ» °í·ÁÇÑ´Ù¸é »ó¿ë À¥ ¹æ Ⱥ® µµÀÔÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.
º» °¡À̵忡¼´Â °ø°³¿ë ModSecurity¸¦ ÀÌ¿ëÇÑ ¾ÆÆÄÄ¡ À¥¼¹öÀÇ º¸¾È °È¹æ¾ÈÀ» »ìÆ캸°í, ƯÈ÷ ±¹³»¿¡¼ ȨÆäÀÌÁö º¯Á¶»ç°í¿¡ ÀÌ¿ëµÇ°í ÀÖ´Â PHP Injection °ø°Ý¿¡ ´ëÀÀÇϱâ À§ÇÏ¿© ModSecurity¿¡¼ ¾î¶»°Ô ¼³Á¤ÇØ¾ß ÇÏ´ÂÁö¿¡ ´ëÇØ »ç·Ê¸¦ Áß½ÉÀ¸·Î »ìÆ캸°í, À¥¼¹öÀÇ °¡Àå ÀϹÝÀûÀÎ °ø°ÝÀÎ SQL Injection, XSS µîÀÇ ´ëÇ¥ÀûÀÎ À¥ °ø°Ý¿¡ ´ëÇÑ ¹æ¾î ¹æ¹ýµµ ÇÔ²² ±â¼úÇÏ¿´´Ù.
ModSecurity´Â À¥ °ø°Ý¿¡ ´ëÇÑ Ä§ÀÔŽÁö ¹× ħÀÔ¹æÁö ±â´ÉÀ» Ãß°¡ÇØ ÁÖ´Â ¾ÆÆÄÄ¡ À¥¼¹öÀÇ ÇϳªÀÇ ¸ðµâ·Î µ¿ÀÛÇϸç, À¥ Ŭ¶óÀ̾ðÆ®¿Í ¾ÆÆÄÄ¡ À¥ ¼¹ö »çÀÌ¿¡ ModSecurity°¡ Á¸ÀçÇÏ¿© Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ ¾ÇÀÇÀûÀÎ Á¢¼Ó¿äûÀÌ ¹ß°ßµÇ¸é °ø°ÝÂ÷´Ü, ·Î±ë µî »çÀü¿¡ Á¤ÀÇµÈ ÇàÀ§¸¦ ¼öÇàÇÑ´Ù. ´Ù¸¥ ¾ÆÆÄÄ¡ ¸ðµâ°ú ¸¶Âù°¡Áö·Î ModSecurity¸¦ ¾ÆÆÄÄ¡ÀÇ ÇÑ ºÎºÐÀ¸·Î ¼³Ä¡ÇÒ ¼ö ÀÖÀ¸¸ç, Á¤»óÀûÀ¸·Î ¼³Ä¡µÇ¾úÀ» °æ¿ì ModSecurityÀÇ Ãß°¡ÀûÀΠ󸮷κÎÅÍ ¹ß»ýµÇ´Â ºÎÇÏ´Â °ÅÀÇ ¾ø´Ù°í ÇÒ ¼ö ÀÖ´Ù.
ModSecurityÀÇ ÁÖ¿ä Ư¡Àº ´ÙÀ½°ú °°´Ù.
o ¿äû(request) ÇÊÅ͸µ - Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ À¥ ¿äûÀÌ µé¾î¿Ã ¶§, À¥¼¹ö ¶Ç´Â ´Ù¸¥ ¸ðµâµéÀÌ Ã³¸®Çϱâ Àü¿¡ ModSecurity°¡ ¿äû ³»¿ëÀ» ºÐ¼®ÇÏ¿© ÇÊÅ͸µÇÑ´Ù.
o ¿ìȸ ¹æÁö ±â¼ú - °æ·Î¿Í ÆĶó¹ÌÅ͸¦ ºÐ¼®Çϱâ Àü¿¡ Á¤±ÔȽÃÄÑ ¿ìȸ °ø°ÝÀ» Â÷´ÜÇÑ´Ù. - Áï, ¡°//¡±, ¡°\/¡±, ¡°.¡±, ¡°%00¡± µî ¿ìȸ °ø°Ý¿ë ½ºÆ®¸µÀ» Á¦°ÅÇÏ°í, ÀÎÄÚµùµÈ URLÀ» µðÄÚµùÇÑ´Ù.
o HTTP ÇÁ·ÎÅäÄÝ ÀÌÇØ - ¿£ÁøÀÌ HTTP ÇÁ·ÎÅäÄÝÀ» ÀÌÇØÇϱ⠶§¹®¿¡ Àü¹®ÀûÀÌ°í Á¤¹ÐÇÑ ÇÊÅ͸µÀ» ¼öÇàÇÒ ¼ö ÀÖ´Ù.
o POST ÆäÀ̷εå(payload) ºÐ¼® - GET ¹æ½Ä »Ó¸¸ ¾Æ´Ï¶ó POST ¸Þ¼Òµå¸¦ »ç¿ëÇؼ Àü¼ÛµÇ´Â ÄÁÅÙÃ÷µµ ºÐ¼® °¡´ÉÇÏ´Ù.
o °¨»ç ·Î±ë - POST¸¦ Æ÷ÇÔÇÏ¿© ¸ðµç ¿äûÀÇ ¸ðµç »ó¼¼ÇÑ ºÎºÐµé±îÁö ÃßÈÄ ºÐ¼®À» À§Çؼ ·Î±ëµÉ ¼ö ÀÖ´Ù. - ModSecurity¿¡¼ Â÷´Ü±â´ÉÀ» ºñÈ°¼ºÈ ½ÃŲ ÈÄ, °·ÂÇÑ ·Î±ë ±â´É¸¸À¸·Î ħÀÔŽÁö ½Ã½ºÅÛ ¿ªÇÒÀ» ¼öÇàÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù.
o HTTPS ÇÊÅ͸µ - ¿£ÁøÀº À¥¼¹ö¿¡ ÀÓº£µðµåµÇ¾î Àֱ⠶§¹®¿¡ º¹È£È ÇÑ ÈÄ¿¡ ¿äû µ¥ÀÌÅÍ¿¡ Á¢±ÙÇÏ¿© HTTPS¸¦ ÅëÇÑ °ø°Ýµµ ÇÊÅ͸µÇÒ ¼ö ÀÖ´Ù.
°ø°³ À¥¹æȺ® »ç¿ëÀÚ Ä¿¹Â´ÏƼ • ±â¼ú¹®¼ ¿ÀÅ»ÀÚ Á¤º¸ • ±â¼úÁ¤º¸ ¹× ÃÖÀûÈ µî Á¤º¸°øÀ¯ • ±â¼ú¹®¼ ¹× Â÷´ÜÁ¤Ã¥(·ê) ¹èÆ÷ • »ç¿ëÀڵ鰣ÀÇ ÁúÀÇ ´äº¯ http://www.securenet.or.kr > ¿¸°Áö½Ä > °ø°³ À¥¹æȺ® Ä¿¹Â´ÏƼ |
2. ModSecurity 1.x ¼³Ä¡ ¹× ¿î¿µ
ModSecurity´Â 1.x ¹öÀü°ú 2.x ¹öÀüÀÌ ÀÖ´Ù. ¸ÕÀú ¾Ë¾Æº¼ °ÍÀº ModSecurity 1.x ¹öÀüÀÌ¸ç º» °¡À̵忡¼´Â ¾Æ·¡ÀÇ È¯°æ¿¡¼ ModSecurity¸¦ ¼³Ä¡ÇÏ¿© Å×½ºÆ®ÇÏ¿´´Ù.
o Ä¿³Î : Linux 2.4.20-8-686-smp o À¥¼¹ö : Apache 2.0.59 o ModSecurity ¼Ò½ºÄÚµå µð·ºÅ丮 : /usr/local/modsecurity-apache_1.9.5 o ¾ÆÆÄÄ¡ ¼Ò½º¼³Ä¡ µð·ºÅ丮 : /usr/local/apache2 o ¾ÆÆÄÄ¡ À¥¼¹ö Ȩ µð·ºÅ丮 : /usr/local/apache2/htdocs | Breach Security¿¡¼´Â ModSecurity 1.9.5 ¹öÀüÀ» ¸¶Áö¸·À¸·Î 1.x ¹öÀü¿¡ ´ëÇÑ Áö¿øÀº ´õ ÀÌ»ó ¾ø´Ù´Â ¶æÀ» ȨÆäÀÌÁö¸¦ ÅëÇØ °øÁöÇÏ¿´´Ù.
2.1. ModSecurity 1.x ´Ù¿î·Îµå ¹× ¼³Ä¡
¼³Ä¡¹æ¹ýÀº Linux¿¡¼ÀÇ °úÁ¤À» À§ÁÖ·Î »ìÆ캸°Ú´Ù. Å©°Ô 2°¡Áö ¼³Ä¡¹æ¹ýÀÌ Àִµ¥ ¼Ò½º¸¦ ÅëÇؼ³Ä¡ÇÏ´Â ¹æ¹ý°ú ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ÅëÇØ ¼³Ä¡ÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù. ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ÅëÇÑ ¼³Ä¡´Â À©µµ¿ìÁî ¹öÀüÀÇ ¾ÆÆÄÄ¡¸¦ »ç¿ëÇϰųª ÄÄÆÄÀÏ·¯°¡ ¾øÀ» °æ¿ì¿¡ »ç¿ëÇϸé ÁÁ´Ù. º» °¡À̵忡¼´Â ¼Ò½º¸¦ ÅëÇÑ ¼³Ä¡ ¹æ¹ýÀ» ¾Ë¾Æº¸µµ·Ï ÇÑ´Ù.
¼³Ä¡ÇÏ°íÀÚ ÇÏ´Â ModSecurity 1.9.5 ¹öÀüÀ» ´ÙÀ½ »çÀÌÆ®¿¡¼ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù. http://www.modsecurity.org/download/modsecurity-apache_1.9.5.tar.gz
¶Ç´Â, KrCERT/CC ȨÆäÀÌÁö °ø°³À¥¹æȺ® ÆäÀÌÁö¿¡¼ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù. http://www.krcert.or.kr/firewall2/index3.jsp Á¢¼Ó ÈÄ modsecurity-apache_1.9.5.tar.gz ´Ù¿î
´Ù¿î·Îµå ¹ÞÀº ÈÄ ´ÙÀ½ÀÇ ¸í·ÉÀ¸·Î ¾ÐÃà ¹× ÆÐŰ¡À» ÇØÁ¦ÇÑ´Ù.
# tar xvzf modsecurity-apache-1.9.5.tar.gz # cd modsecurity-apache-1.9.5; ls -al linux-web:/usr/local# cd modsecurity-apache-1.9.2; ls -al ÇÕ°è 88 drwxrwx--- 6 1000 1000 4096 6¿ù 7 2007 . drwxr-xr-x 21 root root 4096 1¿ù 11 00:24 .. -rw-rw---- 1 1000 1000 28867 6¿ù 7 2007 CHANGES -rw-rw---- 1 1000 1000 892 6¿ù 7 2007 INSTALL -rw-rw---- 1 1000 1000 17989 2¿ù 6 2007 LICENSE -rw-rw---- 1 1000 1000 993 5¿ù 26 2007 README drwxrwx--- 2 1000 1000 4096 6¿ù 7 2007 apache1 drwxrwx--- 2 1000 1000 4096 6¿ù 7 2007 apache2 drwxrwx--- 3 1000 1000 4096 6¿ù 7 2007 doc -rw-rw---- 1 1000 1000 1811 2¿ù 6 2007 httpd.conf.example-minimal drwxrwx--- 2 1000 1000 4096 6¿ù 7 2007 util | ¼Ò½º¸¦ ÅëÇÑ ¼³Ä¡ ¹æ¹ý¿¡µµ À¥¼¹ö Ãʱ⼳ġ ½Ã À¥¼¹ö ÀÚü¿¡ ¸ðµâÀ» ¼³Ä¡ÇÏ´Â ¹æ½Ä°ú ¿î¿µµÇ°í ÀÖ´Â À¥¼¹ö¿¡ mod_security.c¸¸À» ÄÄÆÄÀÏÇÏ¿© Æ÷ÇÔ½ÃÅ°´Â µ¿Àû°øÀ¯°´Ã¼(DSO, Dynamic shared object) ¹æ½Ä µî µÎ °¡Áö°¡ ÀÖ´Ù. ÀϹÝÀûÀ¸·Î DSO ¹æ½ÄÀ¸·Î ¼³Ä¡ÇÏ´Â °ÍÀ» ±ÇÀåÇϸç Static ¹æ½ÄÀ¸·Î ¼³Ä¡ÇÒ °æ¿ì ¾ÆÆÄÄ¡¸¦ À缳ġ ÇØ¾ß Çϱ⠶§¹®¿¡ ±ÇÀåÇÏ´Â ¹æ¹ýÀº ¾Æ´Ï´Ù.
¢¹ DSO ¹æ½Ä ¼³Ä¡
DSO ¹æ½ÄÀº ¾ÆÆÄÄ¡ À¥¼¹öÀÇ À缳ġ °úÁ¤ ¾øÀÌ ±âÁ¸¿¡ ¿î¿µµÇ°í ÀÖ´Â ¾ÆÆÄÄ¡ À¥¼¹ö¿¡ ¸ðµâÀ» µ¿ÀûÀ¸·Î Ãß°¡ÇÏ´Â ¹æ½ÄÀ̹ǷΠ±âÁ¸¿¡ ¾ÆÆÄÄ¡ À¥¼¹ö¸¦ ÀÌ¹Ì ¿î¿µ ÁßÀÌ¸é¼ DSO ¼³Ä¡¹æ½ÄÀ» Áö¿øÇÏ´Â ±â°üÀÇ °æ¿ì ÀÌ ¹æ¹ýÀ» ÅÃÇÏ±æ ±ÇÀåÇÑ´Ù. ±×¸®°í ¼³Ä¡Çϱ⿡ ¾Õ¼ À¯³äÇØ¾ß ÇÒ »çÇ×ÀÌ Àִµ¥, ÇÊ¿äÇÑ °æ¿ì ÀçÂ÷ °ÅµìÇÏ°ÚÁö¸¸, ModSecurityÀÇ ¼³Ä¡´Â ApacheÀÇ ¹öÀü¿¡ ÀÇÁ¸ÀûÀÌ´Ù. Apache 1.xÀÇ °æ¿ì ModSecurity 1.x¹öÀü¸¸ ¼³Ä¡°¡ °¡´ÉÇϸç Apache 2.xÀÇ °æ¿ì ModSecurity 1.x ¿Í 2.x ¸ðµÎ¸¦ ¼³Ä¡ÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ModSecurity 2.x´Â Apache2¿¡¸¸ ¼³Ä¡°¡ °¡´ÉÇÏ´Ù.
¨ç apxs¸¦ ÀÌ¿ëÇÏ¿© ModSecurity ¸ðµâÀ» ÄÄÆÄÀÏÇÏ°í, ¼³Ä¡ÇÏ°í, ¼³Á¤À» ÀÚµ¿À¸·Î º¯°æÇÑ´Ù.
# /usr/local/apache2/bin/apxs -cia /usr/local/modsecurity-apache_1.9.5/apache2/mod_security.c
À§ÀÇ ¸í·ÉÀº mod_security.c¸¦ ÄÄÆÄÀÏ ÇÏ°í(-c ¿É¼Ç), °øÀ¯°´Ã¼¸¦ À¥¼¹ö modules µð·ºÅ丮¿¡ ¼³Ä¡ÇÏ°í(-i ¿É¼Ç), ¾ÆÆÄÄ¡ httpd.conf ¼³Á¤ÆÄÀÏ¿¡ ÀûÀýÇÑ LoadModule ÁÙÀ» Ãß°¡(-a ¿É¼Ç)ÇÑ´Ù. Âü°í·Î apxs´Â ¾ÆÆÄÄ¡ À¥¼¹öÀÇ È®Àå¸ðµâÀ» ÄÄÆÄÀÏÇÏ°í ¼³Ä¡ÇÏ´Â µµ±¸·Î½á, ¿©·¯ ¼Ò½º¿Í ¿ÀºêÁ§Æ®ÆÄÀÏÀ» LoadModule Áö½Ã¾î·Î ½ÇÇà ÁßÀÎ ¾ÆÆÄÄ¡ ¼¹ö·Î ÀÐ¾î µéÀÏ ¼ö ÀÖ´Â µ¿Àû°øÀ¯°´Ã¼ (DSO)¸¦ ¸¸µç´Ù. À§ÀÇ °á°ú·Î modules µð·ºÅ丮¿¡ mod_security.so°¡ »ý¼ºµÇ°í httpd.conf ÆÄÀÏ¿¡ ¡°LoadModule security_module modules/mod_security.so¡± ÇàÀÌ Ãß°¡µÈ´Ù.
¨è ¼³Ä¡°¡ ¿Ï·áµÇ¸é ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö°¡ Ãâ·ÂÀÌ µÉ °ÍÀÌ´Ù.
Libraries have been installed in: /usr/local/apache2/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- chmod 755 /usr/local/apache2/modules/mod_security.so [activating module `security' in /usr/local/apache2/conf/httpd.conf] | ¨é ¾ÆÆÄÄ¡ À¥¼¹ö¸¦ À籸µ¿ÇÑ´Ù. # /usr/local/apache2/bin/apachectl stop # /usr/local/apache2/bin/apachectl start
¿©±â±îÁö ModSecurityÀÇ DSO¹æ½ÄÀ» ÀÌ¿ëÇÑ ¸ðµâ ¼³Ä¡°¡ ³¡³µ´Ù. ½ÇÁ¦ ¼³Ä¡¹æ¹ýÀÌ ¸Å¿ì °£´ÜÇÏ°í ºü¸¥ ¹æ¹ýÀÌ´Ù.
¢¹ ¼Ò½º ÄÄÆÄÀÏÀ» ÅëÇÑ ¼³Ä¡
DSO ¹æ½ÄÀÌ ¾Æ´Ñ Á¤ÀûÀ¸·Î ¼Ò½º ÄÄÆÄÀÏ µÉ °æ¿ì¿¡´Â ModSecurity ¸ðµâÀÌ À¥¼¹öÀÇ body¿¡ Æ÷ ÇÔµÇ°Ô µÈ´Ù. ÀÌ ¹æ¹ýÀº DSO ¹æ½Ä¿¡ ºñÇØ ´Ù¼Ò ½ÇÇà ¼Óµµ°¡ ºü¸£Áö¸¸, ¾ÆÆÄÄ¡ À¥¼¹ö¸¦ Àç ÄÄÆÄÀÏ ÇØ¾ß ÇÏ´Â ¹ø°Å·Î¿òÀÌ ÀÖ´Ù. ¶ÇÇÑ, ¾ÆÆÄÄ¡ ¹öÀü¿¡ µû¶ó ¼³Ä¡¸¦ À§ÇÑ »çÀü ¼³Á¤À» ´Þ¸® ÇØ ÁÖ¾î¾ß ÇÑ´Ù.
<¾ÆÆÄÄ¡ 1.xÀÇ °æ¿ì> # cd # cp /apache1/mod_security.c ./src/modules/extra # ./configure --activate-module=src/modules/extra/mod_security -–enable-module=security
<¾ÆÆÄÄ¡ 2.xÀÇ °æ¿ì> # cd # cp /apache2/mod_security.c ./modules/proxy # ./configure -enable-security --with-module=proxy:mod_security.c
¾ÆÆÄÄ¡ 1.x ¶Ç´Â ¾ÆÆÄÄ¡ 2.x¿¡¼ À§ÀÇ °úÁ¤À» °ÅÄ£ ÈÄ¿¡, ÀϹÝÀûÀÎ ¾ÆÆÄÄ¡ ÄÄÆÄÀÏ°ú ¼³Ä¡ °úÁ¤À» °ÅÄ¡¸é µÈ´Ù.
# make && make install # /usr/local/apache2/bin/apachectl start
DSO ¹æ½Ä°ú´Â ´Þ¸® ¼Ò½º ÄÄÆÄÀÏÀ» ÅëÇÑ ¼³Ä¡ ½Ã¿¡´Â httpd.conf ÆÄÀÏ¿¡ ¾Æ¹«·± ³»¿ëÀÌ Ãß°¡µÇÁö ¾Ê ´Â´Ù. DSO ¹æ½Ä°ú ¸¶Âù°¡Áö·Î ModSecurity¸¦ È°¼ºÈ½ÃÅ°±â À§Çؼ´Â, ´ÙÀ½ ÀåÀÇ ModSecurity È°¼ºÈ ¹× Rule Á¤ÀǸ¦ À§ÇÑ È¯°æ¼³Á¤ÀÌ ÇÊ¿äÇÏ´Ù.
2.2. ModSecurity 1.x È°¼ºÈ ¹× Rule ¼³Á¤
ModSecurity¸¦ ¼³Ä¡ÇÏ¿´´Ù°í Çؼ ¹Ù·Î À¥ ¹æȺ® ±â´ÉÀÌ Àû¿ëµÇ´Â °ÍÀº ¾Æ´Ï´Ù. À̸¦ Àû¿ë½ÃÅ°±â À§Çؼ´Â ¾ÆÆÄÄ¡ À¥¼¹ö ȯ°æ¼³Á¤ ÆÄÀÏ(httpd.conf)ÀÇ ÅÂ±× ¾È¿¡ ¼³Á¤ Áö½ÃÀÚ(directive)¸¦ Á¤ÀÇÇØ ÁÖ¾î¾ß ÇÑ´Ù.
# mod_security configuration directives # ÀÌÇÏ »ý·«...
| ¶Ç´Â ModSecurity¸¦ À§ÇÑ º°µµÀÇ È¯°æ¼³Á¤ ÆÄÀÏÀ» ¸¸µé°í À̸¦ httpd.conf¿¡ Æ÷ÇÔ½Ãų ¼ö ÀÖ´Ù. ¸¸¾à "/conf/mod_security.conf" ¶ó´Â À̸§À¸·Î ModSecurity À¥¹æȺ®À» À§ÇÑ È¯°æ¼³Á¤ ÆÄÀÏÀ» º°µµ·Î ¸¸µé¾úÀ» °æ¿ì httpd.conf ÆÄÀÏ¿¡ ´ÙÀ½°ú °°ÀÌ ÀÌ ÆÄÀÏÀ» Æ÷ÇÔ½ÃÄÑ ÁÙ ¼ö ÀÖ´Ù.
Include conf/mod_security.conf
ModSecurity¸¦ À§ÇÑ RuleÀÌ ´Ù¾çÇÏ°í, ³»․¿ÜºÎ À¥ ȯ°æ¿¡ µû¶ó Rule º¯°æ ¹× ¾÷µ¥ÀÌÆ®°¡ Áö¼ÓÀûÀ¸·Î ÇÊ¿äÇϱ⠶§¹®¿¡ º°µµÀÇ ÆÄÀÏÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ Á» ´õ Æí¸®ÇÒ °ÍÀÌ´Ù.
ModSecurity´Â ´Ù¾çÇÑ ±â´ÉÀÇ ¼³Á¤À» À§Çؼ »ó´çÈ÷ ¸¹Àº Áö½ÃÀÚµéÀÌ Á¸ÀçÇϴµ¥, À̸¦ ÀÏÀÏÀÌ Á÷Á¢ ÀÛ¼ºÇÏ¿© Àû¿ëÇϱâ´Â ½±Áö ¾ÊÀ» °ÍÀÌ´Ù. µû¶ó¼ ¾Æ·¡ ModSecurity ȨÆäÀÌÁö¿¡¼ Á¦°øÇÏ´Â Rule templateÀ» ÀÚ½ÅÀÇ À¥ ȯ°æ¿¡ ¸Â°Ô ¼öÁ¤ÇÏ´Â °ÍÀÌ ¿ëÀÌÇÒ °ÍÀÌ´Ù.
http://www.modsecurity.org/download/
À§ ÆäÀÌÁö¿¡¼ "Download ModSecurity and Core Rules from Breach Security Network"¸¦ Ŭ¸¯ÇÏ¿© µé¾î°¡¸é ·Î±×ÀΠȸéÀÌ ³ª¿Â´Ù. »ç¿ëÀÚ °èÁ¤ÀÌ ¾øÀ» °æ¿ì °£´ÜÇÑ µî·ÏÀýÂ÷ ÈÄ ·Î±×ÀÎ Çϸé Core Rule »Ó¸¸ ¾Æ´Ï¶ó ModSecurityÀÇ ¹öÀüº° ¼Ò½º±îÁö ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù.
Core Rule¿¡´Â ±âº» ¼³Á¤ ¹× °¢ À¯Çüº° ±¸Ã¼ÀûÀÎ Rule templateÀÌ ÀÖÀ¸¹Ç·Î À̵éÀ» Âü°íÇØ º¸ÀÚ. ¶Ç´Â, KrCERT ȨÆäÀÌÁö¿¡¼µµ Sample RuleÀ» ´Ù¿î¹ÞÀ» ¼ö ÀÖ´Ù.
http://www.krcert.or.kr/firewall2/index3.jsp ÆäÀÌÁö ÇÏ´ÜÀÇ ¾÷ü ¹× ¹öÀüº° Sample Rule ´Ù¿î ¿©±â¿¡¼´Â ÅÂ±× ¾È¿¡ µé¾î°¥ Áö½ÃÀÚµé Áß ±âº»ÀûÀÎ Áö½ÃÀÚµéÀ» ¾Ë¾Æº¸µµ·Ï ÇÑ´Ù. »ó ´çÈ÷ ´Ù¾çÇÑ Áö½ÃÀÚ°¡ ÀÖÀ¸¹Ç·Î ÀÚ¼¼ÇÑ °ÍÀº ¾Æ·¡¸¦ Âü°íÇØ º¸±â ¹Ù¶õ´Ù. http://www.krcert.or.kr/firewall2/index2.jsp ¿¡ modsecurity1.9.4-manual.pdf ´Ù¿î
2.2.1 ±âº» ȯ°æ¼³Á¤
SecFilterEngine On ModSecurity ±â´ÉÀ» È°¼ºÈ(enable) ½ÃŲ´Ù. o On : ModSecurity ±â´É È°¼ºÈ o Off : ModSecurity ±â´É ºñÈ°¼ºÈ
SecFilterScanPOST On POST ¸Þ¼ÒµåÀÇ payload¸¦ Á¡°ËÇÑ´Ù. ModSecurity´Â ´ÙÀ½°ú °°Àº 2°¡Áö ŸÀÔÀ¸·Î ÀÎÄÚµùµÈ Request body¸¦ Áö¿øÇÑ´Ù. o application/x-www-form-urlencoded (Form µ¥ÀÌÅÍ Àü¼Û ½Ã »ç¿ë) o multipart/form-data (ÆÄÀÏ Àü¼Û½Ã »ç¿ë) ´Ù¸¥ ÀÎÄÚµù ŸÀÔÀº ´ëºÎºÐÀÇ À¥ ¾îÇø®ÄÉÀ̼ǿ¡¼ »ç¿ëµÇÁö´Â ¾Ê´Â´Ù.
SetEnvIfNoCase Content-Type \ "^multipart/form-data;" "MODSEC_NOPOSTBUFFERING=Do not buffer file uploads" °¢ ¿äûº°·Î POST payload Á¡°ËÀ» ºñ È°¼ºÈÇÒ ¼ö ÀÖ´Ù. ȯ°æº¯¼ö MODSEC_NOPOSTBUFFERING ÀÌ Á¤ÀǵǾî ÀÖÀ¸¸é POST payload ¹öÆÛ¸µÀ» ÇÏÁö ¾Ê´Â´Ù.
SecFilterDefaultAction "deny,log,status:404" ·êÀÌ ¿äû¿¡ ÀÏÄ¡Çϸé Çϳª ¶Ç´Â ±× ÀÌ»óÀÇ ÇàÀ§(action)°¡ ¹ß»ýµÈ´Ù. °¢°¢ÀÇ ÇÊÅͺ°·Î ÇàÀ§¸¦ Á¤ÀÇÇÒ ¼ö ÀÖÁö¸¸ ¸ðµç ÇÊÅ͵éÀ» À§ÇÑ ±âº» ÇàÀ§ ÁýÇÕÀ» Á¤ÀÇÇϸé Æí¸®ÇÏ´Ù. ¸ðµç ÇÊÅÍ¿¡ Àû¿ëµÉ ¼ö ÀÖ´Â µðÆúÆ® ÇàÀ§´Â SecFilterDefaultAction Áö½ÃÀÚ·Î Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. ÀÌ ¼³Á¤Àº °¢ ·ê¿¡ ÀÏÄ¡ÇÒ °æ¿ì Á¢¼Ó¿äûÀ» Â÷´ÜÇÏ°í, ·Î±×¸¦ ³²±â±ä ÈÄ HTTP »óÅÂÄÚµå 404¸¦ º¸³»´Â ¿¹ÀÌ´Ù. ÀϹÝÀûÀ¸·Î SecFilter·Î Á¤ÀÇÇÑ ¿É¼Ç¿¡ Àû¿ëÀÌ µÇ¸ç ´Ù¸¥ Áö½ÃÀÚ¿Í ¿É¼ÇÀ» ºÎ°¡ÇÏ¿© Â¥¿©Áø RuleÀº SecFilterSignatureAction À¸·Î ÇàÀ§¸¦ Á¤ÀÇÇÑ´Ù.
¾Õ¼ SecFilterDefaultAction Áö½ÃÀÚ·Î ÇÊÅ͸µ ±ÔÄ¢¿¡ ÀÏÄ¡ÇÒ °æ¿ì ±âº»ÀûÀ¸·Î ¾î¶² ÇàÀ§(Action)¸¦ ÇÏ°Ô ÇÒ °ÍÀÎÁö¿¡ ´ëÇØ °£´ÜÈ÷ ¾Ë¾Æº¸¾Ò´Ù. ±×·¯¸é ÇÊÅ͸µ ±ÔÄ¢¿¡ ÀÏÄ¡ÇÒ °æ¿ì ÀϾ ¼ö ÀÖ´Â ÇàÀ§ÀÇ Á¾·ù¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. ¸ÕÀú, ÇàÀ§´Â ´ÙÀ½°ú °°Àº 3°¡Áö Á¾·ù·Î ³ª´ ¼ö ÀÖ´Ù.
±¸ ºÐ |
¼³ ¸í |
Primary action |
¿äûÀ» °è¼Ó ÁøÇàÇÒ °ÍÀÎÁö Â÷´Ü ÇÒ °ÍÀÎÁö¸¦ °áÁ¤ÇÏ´Â °ÍÀ¸·Î, deny, pass, redirect Áß Çϳª¸¦ ¼±ÅÃÇÑ´Ù. |
Secondary actions |
Primary action¿¡ ÀÇÇÑ °áÁ¤°ú´Â µ¶¸³ÀûÀ¸·Î ¼öÇàµÇ´Â °ÍÀ¸·Î exec¿Í °°Àº ¸î °³ÀÇ secondary actionµéÀÌ ÀÖ´Ù. |
Flow actions |
ÇÊÅÍ ·êÀÇ È帧À» º¯°æÇÒ ¼ö ÀÖ´Â °ÍÀ¸·Î ´Ù¸¥ ·ê·Î Á¡ÇÁÇÏ°Ô Çϰųª ¸î °³ÀÇ ·êÀ» °Ç³Ê ¶ç°Ô ÇÒ ¼ö ÀÖ´Ù. Flow action¿¡´Â chain°ú skipnext°¡ ÀÖ´Ù. | ¾Õ¼ SecFilterDefaultAction Áö½ÃÀÚ¿¡ ÀÇÇÑ ±âº» Àû¿ë actionÀÇ ¿¹¿¡¼´Â ÄÞ¸¶(,)·Î ±¸ºÐµÈ 3°³ÀÇ actionÀ» Á¤ÀÇÇÏ°í ÀÖ´Ù. ÃëÇÒ ¼ö ÀÖ´Â ´ëÇ¥ÀûÀÎ ÇàÀ§´Â ´ÙÀ½ Ç¥¿Í °°´Ù.
Çà À§ |
¼³ ¸í |
pass |
ÇÊÅÍ¿¡ ÀÏÄ¡ÇÒ °æ¿ì ¿äûÀ» ±×³É Çã¿ëÇÑ´Ù. ÀÌ actionÀº ¾Æ¹«·± ÇàÀ§¸¦ ÇÏÁö ¾Ê°í ±×³É ·Î±×¸¸ ³²°Ü ħÀÔÀ» ¸ð´ÏÅ͸µÇϰųª Ãʱâ ȯ°æ¼³Á¤ ½Ã À¯¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹) SecFilter KEYWORD "log,pass" |
allow |
pass¿¡ ºñÇØ Á» ´õ °·ÂÇÑ ÇàÀ§·Î ÀÌ actionÀÌ ¼öÇà µÈ ÈÄ ´Ù¸¥ ÇÊÅÍ´Â Àû¿ë½Ã Å°Áö ¾Ê°í °ð¹Ù·Î ¿äûÀ» Çã¿ëÇÏ°Ô µÈ´Ù. ¿¹) SecFilterSelective REMOTE_ADDR "^192\.168\.2\.99$" allow À§ÀÇ ¿¹´Â °ü¸®ÀÚ ÄÄÇ»ÅÍ(192.168.2.99)¿¡¼ÀÇ Á¢¼ÓÀº Ç×»ó Çã¿ëÇϵµ·Ï ÇÏ°í ÀÖ´Ù. |
deny |
¿äû 󸮸¦ Â÷´ÜÇÑ´Ù. »óÅ action(status)ÀÌ ¸í½ÃÀûÀ¸·Î ÇÔ²² »ç¿ëµÇÁö ¾ÊÀ¸¸é ModSecurity´Â ¡°HTTP 500 error code"¸¦ ¹ÝȯÇÑ´Ù. |
status |
¿äûÀÌ °ÅºÎµÇ¾úÀ» °æ¿ì HTTP »óŸ¦ Á¦°øÇÑ´Ù. ¿¹) SecFilter KEYWORD "deny,status:404" |
redirect |
ÇÊÅÍ°¡ ÀÏÄ¡ÇÏ¸é »ç¿ëÀÚ¸¦ ÁÖ¾îÁø URL·Î À̵¿ ½ÃŲ´Ù. ¿¹) SecFilter KEYWORD "redirect:http://www.krcert.or.kr/warn.html" |
redirect |
ÇÊÅÍ°¡ ÀÏÄ¡ÇÏ¸é »ç¿ëÀÚ¸¦ ÁÖ¾îÁø URL·Î À̵¿ ½ÃŲ´Ù. ¿¹) SecFilter KEYWORD "redirect:http://www.krcert.or.kr/warn.html" |
proxy |
ÇÊÅÍ°¡ ÀÏÄ¡ÇÏ¸é ¿äûÀ» ³»ºÎ ¸®¹ö½º ÇÁ·Ï½Ã·Î ´Ù½Ã ¾´´Ù. ¿¹) SecFilter KEYWORD ¡°proxy:http://www.example.com" ¡Ø ÀÌ µ¿ÀÛÀº mod_proxy°¡ ¹Ýµå½Ã ¼³Ä¡µÇ ÀÖ¾î¾ß ÇÑ´Ù. |
exec |
ÇÊÅÍ°¡ ÀÏÄ¡Çϸé ƯÁ¤ ¹ÙÀ̳ʸ®¸¦ ½ÇÇà½ÃŲ´Ù. ½ÇÇà µÉ ÆÄÀÏÀº Àüü °æ·Î¸¦ ÁöÁ¤ ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¿¹) SecFilter KEYWORD "exec:/home/ivanr/report-attack.pl" |
log |
¾ÆÆÄÄ¡ ¿¡·¯ ·Î±×(error_log)¿¡ ±â·ÏÇÑ´Ù |
nolog |
ÇÊÅÍ°¡ ÀÏÄ¡Çصµ ±â·ÏÇÏÁö ¾ÊÀ¸¸ç, ¡°audit logging"µµ ÀϾÁö ¾Êµµ·Ï ÇÑ´Ù. |
skipnext |
ÇÊÅÍ°¡ ÀÏÄ¡Çϸé Çϳª ÀÌ»óÀÇ ·êÀ» °Ç³Ê¶Û ¼ö ÀÖ´Ù. ¿¹) SecFilterSelective ARG_p value1 skipnext:2 SecFilterSelective ARG_p value2 SecFilterSelective ARG_p value3 (ÀÌÈĺÎÅÍ ·êÀÌ Àû¿ëµÈ´Ù.) |
chain |
µÎ°³ÀÇ ·êÀ» ¿¬°ü Áö¾î Çã¿ëÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹) SecFilterSelective ARG_username admin chain SecFilterSelective REMOTE_ADDR "!^YOUR_IP_ADDRESS_HERE$" |
pause |
¿äû¿¡ ´ëÇÑ ÀÀ´äÀ» Çϱâ Àü¿¡ Á¤ÀÇµÈ ¼ö milliseconds µ¿¾È ÁßÁö½ÃŲ´Ù. ÀÌ´Â À¥ ½ºÄ³³Ê¸¦ ´À¸®°Ô Çϰųª ¿ÏÀüÈ÷ ±³¶õ½ÃÅ´À¸·Î½á ½ºÄµ °ø°ÝÀ» ¾ïÁ¦½Ãų ¼öµµ ÀÖ´Ù. ¾î¶² ½ºÄ³³Ê´Â ÁßÁö ½Ã°£ÀÌ ³Ê¹« ±æ¸é ½ºÄ³´×À» Æ÷±âÇÑ´Ù. |
auditlog |
Æ®·£Á§¼Ç Á¤º¸¸¦ audit log(SecAuditLog Áö½ÃÀÚ¿¡ ÀÇÇØ ÆÄÀϸí ÁöÁ¤)¿¡ ±â·ÏÇÑ´Ù |
noauditlog |
Æ®·£Á§¼Ç Á¤º¸¸¦ audit log¿¡ ±â·ÏÇÏÁö ¾Ê´Â´Ù. |
logparts |
·ê¿¡ µû¶ó ·Î±ë µÇ´Â Á¤º¸¸¦ Ãß°¡, »èÁ¦ ȤÀº ´Ù¸¥ °ÍÀ¸·Î ¹Ù²Ü ¼ö ÀÖ´Ù. ¿¹) SecFilter 111 pass, logparts:ABCDEFZ SecFilter 222 pass, logparts:+C SecFilter 333 pass, logparts:-F | SecFilterSignatureAction "deny, log, status:403" ·ê ¼³Á¤À» À¯ÁöÇϱ⠽±°Ô ¸¸µé¾î ÁÖ´Â ÀÌ Áö½ÃÀÚ´Â 1.9RC1 ¹öÀüºÎÅÍ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ Áö½ÃÀÚ´Â ´Üµ¶ ¼³Á¤ ³»¿¡¼ ¸î ¹øÀÌ°í ¾²ÀÏ ¼ö ÀÖ°í, ¾²ÀÎ À§Ä¡ÀÇ ´ÙÀ½¿¡ ³ª¿À´Â ·ê¿¡ ¹Ù·Î Àû¿ëÀÌ µÈ´Ù. °¢ ·ê¸¶´ÙÀÇ µ¿ÀÛÀ» ¼³Á¤ÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â ±â´ÉÀ» ÇÑ´Ù. ±âº»°ªÀº ¡°deny,log,status:403"À¸·ÎSecFilterSelective µîÀÇ ¿É¼ÇÀ» »ç¿ëÇÒ ½Ã SecFilterSiganatureAction °ªÀ» ¼³Á¤ÇØÁÖÁö ¾ÊÀ¸¸é ±âº» °ªÀ¸·Î µ¿ÀÛÇÏ°Ô µÈ´Ù. ±âº»ÀûÀÎ ¼³Á¤ ¹æ¹ýÀº SecFilterDefaultAction °ú µ¿ÀÏÇÏ´Ù
SecFilterCheckURLEncoding On Ư¼ö¹®ÀÚµéÀº URL¿¡ Àü¼ÛµÇ±â Àü¿¡ ÀÎÄÚµùµÉ ÇÊ¿ä°¡ ÀÖ´Ù. %XY(XY´Â 16Áø¼ö) ÇüÅÂÀÇ ¹®ÀÚµéÀº ÀÏ¹Ý ÅؽºÆ® ¹®ÀÚ·Î º¯È¯µÈ´Ù.
2.2.2 »ç¿ëÀÚ Rule Á¤ÀÇ
ÇÊÅ͸µ ¿£ÁøÀÌ È°¼ºÈµÇ¸é À¯ÀԵǴ ¸ðµç ¿äûÀÌ À¥¼¹ö¿¡ ÀÇÇØ Ã³¸®µÇ¾îÁö±â Àü¿¡ °¡·Îä¾îÁö°í ºÐ¼®µÈ´Ù. ¾Õ¼ ȯ°æ¼³Á¤ Áö½ÃÀڵ鿡 ÀÇÇØ À¥ ¿äû ÇüÅ°¡ À¯È¿ÇÑÁö µîÀÌ Á¡°ËµÈ ÈÄ, µÎ ¹ø° ´Ü°è·Î À¥ ¿äûÀº ÀÏ·ÃÀÇ »ç¿ëÀÚ Á¤ÀÇ ÇÊÅ͸¦ °ÅÄ¡°Ô µÈ´Ù. »ç¿ëÀÚ¿¡ ÀÇÇØ Á¤ÀÇµÉ ¼ö ÀÖ´Â ´ëÇ¥ÀûÀÎ ÇÊÅ͵éÀº ´ÙÀ½°ú °°´Ù.
SecFilter KEYWORD [ACTIONS] °¡Àå ´Ü¼øÇÑ ÇüÅÂÀÇ ÇÊÅ͸µÀ¸·Î ƯÁ¤ Å°¿öµå¿¡ ÀÇÇÑ ÇÊÅ͸¦ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù. SecFilter Áö½ÃÀÚ´Â À¥¿äûÀÇ Ã¹ ¹ø° ¶óÀο¡¼ ƯÁ¤ Å°¿öµå°¡ ÀÏÄ¡ÇÏ´ÂÁö Á¡°ËÇÏ°í, ¡°SecFilterScanPOST On¡° ¼³Á¤ÀÌ µÇ¾î ÀÖÀ» °æ¿ì¿¡´Â body±îÁö Á¡°ËÇÑ´Ù. ÀÌ ¶§ Å°¿öµå´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê´Â´Ù.
¸¸ÀÏ ¡°SecFilter /bin/sh¡±¿Í °°ÀÌ µð·ºÅ丮¸¦ Æ÷ÇÔÇÑ Å°¿öµå ÇÊÅ͸µÀ» ¼³Á¤ÇØ ³õ¾ÒÀ» °æ¿ì °ø°ÝÀڴ¡°/bin/./sh¡±¿Í °°ÀÌ ÇÊÅ͸¦ ¿ìȸÇÏ¿© °ø°ÝÇÒ ¼ö ÀÖ´Ù. µû¶ó¼, ModSecurity¿¡¼´Â ´ÙÀ½°ú °°ÀÌ °ø°ÝÀÚ°¡ ¿ìȸÇÒ ¼ö Àִ ƯÁ¤ ¹®ÀÚ¿À» ÀÚµ¿À¸·Î º¯È¯ÇÏ¿© Å°¿öµå ÇÊÅ͸µÀ» ¿ìȸÇÒ ¼ö ¾øµµ·Ï ÇÏ°í ÀÖ´Ù.
º¯È¯ Àü |
º¯È¯ ÈÄ |
ºñ°í |
\ |
/ |
À©µµ¿ì ½Ã½ºÅÛ¿¡¼ Àû¿ë |
/./ |
/ |
|
// |
/ |
|
URL ÀÎÄÚµùµÈ ¹®ÀÚ¿ |
URL µðÄÚµùµÈ ¹®ÀÚ¿ |
| Å°¿öµå´Â ´Ü¼øÇÑ text°¡ ¾Æ´Ñ Á¤±Ô Ç¥Çö½ÄÀ¸·Î ´Ù¾çÇÑ ÇÊÅÍ ±ÔÄ¢À» ¸¸µé¾î Àû¿ë½Ãų ¼ö ÀÖ´Ù. Å°¿öµå¿¡¼ ¡°!¡± ¹®ÀÚ¸¦ ¸Ç ¾Õ¿¡ ³Ö¾î¼ Ç¥Çö½ÄÀ» ¹Ý´ë·Î Àû¿ëÇÒ ¼öµµ ÀÖ´Ù. °¡·É, ¡°SecFilter !php¡± °°ÀÌ ÇÏ¿© ¡°php" ¹®ÀÚ¸¦ Æ÷ÇÔÇÏÁö ¾Ê´Â ¸ðµç ¿äûÀº °ÅÀýÇÒ ¼öµµ ÀÖ´Ù.
SecFilterSelective LOCATION KEYWORD [ACTIONS] ¾Õ¼ SecFilter Áö½ÃÀÚ¸¦ ÀÌ¿ëÇÑ ÇÊÅ͸µÀº Àû¿ëÀÌ ³Ê¹« ±¤¹üÀ§ÇÑ ´ÜÁ¡ÀÌ ÀÖ´Ù. ÀÌ·¯ÇÑ ´ÜÁ¡À» º¸¿ÏÇÏ¿© ½ÇÁ¦ À¯¿ëÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ´Â Áö½ÃÀÚ°¡ SecFilterSelectiveÀÌ´Ù. ÀÌ Áö½ÃÀÚ´Â SecFilter Áö½ÃÀÚ¿¡¼ LOCATION ºÎºÐÀÌ Ãß°¡ µÇ¾ú´Âµ¥ ÇØ´ç Å°¿öµå¸¦ ¾î´À À§Ä¡¿¡¼ ãÀ» °ÍÀÎÁö ÁöÁ¤Çؼ º¸´Ù Á¤È®ÇÑ ÇÊÅ͸µÀ» ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. LOCATION º¯¼ö´Â ´ÙÀ½°ú °°ÀÌ ÆÄÀÌÇÁ(|)·Î ±¸ºÐµÈ ÀÏ·ÃÀÇ À§Ä¡ È®ÀÎÀÚ·Î ±¸¼ºµÈ´Ù.
SecFilterSelective "REMOTE_ADDR|REMOTE_HOST" KEYWORD
À§ÀÇ ¿¹´Â Ŭ¶óÀ̾ðÆ®ÀÇ IP ÁÖ¼Ò¿Í È£½ºÆ® À̸§¿¡¸¸ Å°¿öµå°¡ Àû¿ëµÈ´Ù. À§Ä¡ È®ÀÎÀÚ¿¡ µé¾î°¥ ¼ö ÀÖ´Â °ÍÀº ´ÙÀ½°ú °°´Ù.
REMOTE_ADDR REMOTE_HOST REMOTE_USER REMOTE_IDENT REQUEST_METHOD SCRIPT_FILENAME PATH_INFO QUERY_STRING AUTH_TYPE DOCUMENT_ROOT SERVER_ADMIN SERVER_NAME SERVER_ADDR SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE TIME_YEAR TIME_MON TIME_DAY TIME_HOUR TIME_MIN TIME_SEC TIME_WDAY TIME API_VERSION THE_REQUEST REQUEST_URI REQUEST_FILENAME REQUEST_BASENAME IS_SUBREQ
ÀÌ ¿Ü¿¡µµ º¸´Ù Àü¹®ÀûÀÌ°í ºÎ°¡ÀûÀÎ À§Ä¡ È®ÀÎÀڵ鵵 Á¸ÀçÇϴµ¥ ÀÌ´Â ModSecurityÀÇ ¸Å´º¾óÀ» ÂüÁ¶ Çϱ⠹ٶõ´Ù.
SecFilterScanOutput On ¾ÆÆÄÄ¡ 2¿¡¼ ModSecurity´Â Ãâ·Â ÇÊÅ͸¦ Áö¿øÇÑ´Ù. ±âº» ¼³Á¤ »ó, ÀÌ ±â´ÉÀº ºñ È°¼ºÈµÇ¾î ÀÖÀ¸¹Ç·Î À§¿Í °°ÀÌ È°¼ºÈ½ÃÄÑ ÁÖ¾î¾ß ÇÑ´Ù. ±âÁ¸ÀÇ ÀÔ·Â ÇÊÅÍ´Â À¥ ¿äûÀÌ ¾ÆÆÄÄ¡¿¡ ÀÇÇØ Ã³¸®µÇ±â ÀÌÀü¿¡ ½ÇÇàµÇÁö¸¸ Ãâ·Â ÇÊÅÍ´Â ¾ÆÆÄÄ¡¿¡ ÀÇÇØ À¥ ¿äûÀÌ Ã³¸® ¿Ï·áµÈ ÀÌÈÄ¿¡ ½ÇÇàµÈ´Ù.
À§¿Í °°ÀÌ Ãâ·Â ÇÊÅ͸¦ ¼³Á¤ÇÑ ÈÄ¿¡ ¡°OUTPUT" ÆĶó¸ÞÅ͸¦ »ç¿ëÇÏ¿© ƯÁ¤ Å°¿öµå¸¦ °¡Áø Ãâ·Â¿¡´ëÇØ ÇÊÅ͸µÀ» ÇÒ ¼ö ÀÖ´Ù.
SecFilterSelective OUTPUT "Fatal error:" deny,status:500 ErrorDocument 500 /php-fatal-error.html
ÀÌ¿Í °°ÀÌ °ø°ÝÀÚ°¡ °ø°Ý Á¤º¸·Î ÀÌ¿ëµÉ ¼ö ÀÖ´Â Á¤º¸³ª ƯÁ¤ ¸í·É¾î ½ÇÇà °á°ú µî CriticalÇÑ °á°ú°¡ ½ÇÇàµÇ¾î °ø°ÝÀÚ¿¡°Ô °á°ú°¡ Àü´ÞµÇ´Â °ÍÀ» Â÷´ÜÇÒ ¼ö ÀÖ´Ù.
Ãâ·Â ÇÊÅÍ´Â ÀÏ¹Ý Æò¹® text¿Í HTML Ãâ·Â¿¡ ´ëÇؼ¸¸ À¯¿ëÇϸç, À̹ÌÁö¿Í °°Àº ¹ÙÀ̳ʸ® ÄÁÅÙÃ÷¿¡ ´ëÇØ Á¤±Ô½ÄÀ» Àû¿ëÇÑ´Ù¸é ¼¹ö°¡ ´À·ÁÁú ¼ö ÀÖ´Ù. µðÆúÆ®·Î ModSecurity´Â ÄÁÅÙÃ÷ ŸÀÔÀ» °¡Áö°í ÀÖÁö ¾Ê°Å³ª ¡°text/plan" ¶Ç´Â ¡±text/html"À» ÄÁÅÙÃ÷ ŸÀÔÀ¸·Î °¡Áø Ãâ·Â¿¡ ´ëÇؼ¸¸ ½ºÄµÇÑ´Ù. ½ºÄµ ÇÏ°íÀÚ ÇÏ´Â ÄÁÅÙÃ÷ ŸÀÔÀ» ¹Ù²Ù°íÀÚ ÇÒ °æ¿ì¿¡´Â ¡°SecFilterOutputMimeTypes¡± Áö½ÃÀÚ¸¦ ÀÌ¿ëÇÑ´Ù.
SecFilterOutputMimeTypes "(null) text/html text/plain"
À§ÀÇ ¼³Á¤Àº ModSecurity°¡ Æò¹® text ÆÄÀÏ, HTML ÆÄÀÏ ±×¸®°í MIME ŸÀÔÀÌ Á¤ÀǵÇÁö ¾ÊÀº ÆÄÀϵ鿡 ´ëÇØ Ãâ·Â ÇÊÅ͸¦ Àû¿ëÇÏ°Ô ÇÑ´Ù.
Ãâ·Â ÇÊÅÍ´Â À¯¿ëÇÑ ±â´ÉÀ̶ó°í ÇÒ ¼ö ÀÖÁö¸¸ ¿Ïº®ÇÏÁö´Â ¸øÇÏ´Ù. °ø°ÝÀÚ°¡ ¸ð´ÏÅ͸µÇÏ°í ÀÖÁö ¾Ê´Â ÄÁÅÙÃ÷ ŸÀÔÀ¸·Î ¹Ù²Ù°Å³ª Ãâ·ÂÀ» ÀÎÄÚµùÇÏ´Â ¹æ¹ýÀ¸·Î ÇÊÅ͸¦ ¿ìȸÇÒ °¡´É¼ºÀÌ Á¸ÀçÇÑ´Ù.
2.2.3. ±âŸ Áö½ÃÀÚ
SecUploadDir /tmp ModSecurity´Â POST ¿äû°ú multipart/form-data ÀÎÄÚµùÀ» ÅëÇϰųª PUT ¿äûÀ» ÅëÇÑ ÆÄÀϾ÷·Îµå¸¦ °¡·Îä¾î Á¡°ËÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ ÀÖ´Ù. ModSecurity´Â Ç×»ó Àӽà µð·ºÅ丮¿¡ ÆÄÀϵéÀ» ¾÷·ÎµåÇÏ°Ô Çϴµ¥, À̶§ SecUploadDir Áö½ÃÀÚ¸¦ »ç¿ëÇÏ¿© Àӽà µð·ºÅ丮¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù.
SecServerSignature "Microsoft-IIS/5.0" À¥¼¹ö´Â ±âº»ÀûÀ¸·Î HTTP ÀÀ´ä¿¡ ¼¹öÀÇ Á¤º¸¸¦ ½Ç¾î¼ º¸³½´Ù. ÀÌ Á¤º¸´Â °ø°ÝÀÚµéÀÌ °ø°ÝÇϱâ À§ÇÑ ±âº» Á¤º¸°¡ µÉ ¼ö ÀÖ´Ù. µû¶ó¼, ÀÌ Á¤º¸¸¦ SecServerSignature Áö½ÃÀÚ¸¦ ÀÌ¿ëÇÏ¿© ¹Ù²ÞÀ¸·Î½á °ø°ÝÀÚ¸¦ È¥¶õ½º·´°Ô ÇÒ ¼ö ÀÖ´Ù.
SecFilterDebugLog logs/modsec_debug_log SecFilterDebugLog Áö½ÃÀÚ´Â µð¹ö±ë °á°ú¸¦ ¾îµð¿¡ ±â·ÏÇÒ °ÍÀÎÁö¸¦ Á¤ÀÇÇÑ´Ù. À§Ä¡¸¦ ÁöÁ¤ÇØ ÁÖ´Â ÆĶó¸ÞÅÍ°¡ ½½·¡½¬(/)·Î ½ÃÀÛÇÏÁö ¾ÊÀ¸¸é ¾ÆÆÄÄ¡ Ȩ µð·ºÅ丮·ÎºÎÅÍÀÇ »ó´ë°æ·Î¸¦ ÀǹÌÇÑ´Ù.
SecFilterDebugLevel 1 SecFilterDebugLevel Áö½ÃÀÚ¸¦ »ç¿ëÇÏ¿© µð¹ö±ë ¼öÁØÀ» ¾ó¸¶³ª »ó¼¼ÇÏ°Ô ¼öÇàÇÒ °ÍÀÎÁö¸¦ °áÁ¤ ÇÒ ¼ö ÀÖ´Ù. °úµµÇÑ µð¹ö±ë ¼öÁØÀº ºÒÇÊ¿äÇÑ ·Î±×¸¦ »ý»êÇÒ ¼ö ÀÖÀ¸¹Ç·Î ¹®Á¦ ¹ß»ý ½Ã³ª ¼ºñ½º ºÐ¼®ÀÌ ÇÊ¿äÇÑ °æ¿ì µî¿¡ »ó¼¼ µð¹ö±ëÀ» ÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.
·¹º§ |
¼³¸í |
0 |
¾øÀ½ |
1 |
Áß¿ä À̺¥Æ®(error_log¿¡ ±â·ÏµÊ) |
2 |
°£·«ÇÑ Á¤º¸ ¸Þ½ÃÁö |
3 |
»ó¼¼ÇÑ Á¤º¸ ¸Þ½ÃÁö | SecAuditEngine On SecAuditLog logs/audit_log Ç¥ÁØ ¾ÆÆÄÄ¡ ·Î±ëÀº ƯÁ¤ »ç¿ëÀÚ³ª °ø°ÝÀÚ¸¦ ÃßÀûÇϱâ À§Çؼ ºÎÁ·ÇÑ ¸éÀÌ ÀÖ´Ù. ModSecurity ´Â SecAuditEngine Áö½ÃÀÚ¸¦ ÅëÇØ ¾ÆÆÄÄ¡ÀÇ ±âº» ·Î±× ÆÄÀÏ(access_log, error_log) º¸´Ù Á» ´õ »ó¼¼ÇÑ °ø°Ý °ü·Ã Á¤º¸¸¦ Á¦°øÇØ ÁÙ ¼ö ÀÖ´Ù. SecAuditEngineÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Â ÆĶó¸ÞÅÍ´Â ´ÙÀ½°ú °°´Ù. o On : ¸ðµç ¿äû¿¡ ´ëÇØ ·Î±×¸¦ ³²±è o Off : ¾î¶°ÇÑ ¿äû¿¡ ´ëÇؼµµ ·Î±×¸¦ ³²±âÁö ¾ÊÀ½ o RelevantOnly : ÇÊÅÍ¿¡ ÀÏÄ¡ÇÏ´Â ¿äû¿¡ ´ëÇؼ¸¸ ·Î±×¸¦ ³²±è
3. ModSecurity 2.x ¼³Ä¡ ¹× ¿î¿µ ¿ì¸®´Â ¾Õ¼ ModSecurity 1.x ¹öÀüÀÇ ¼³Ä¡ ¹× ¿î¿µ¹æ¹ýÀ» °£·«È÷ »ìÆ캸¾Ò´Ù. À̹ø Àý¿¡¼´Â ModSecurity 2.x ¹öÀüÀÇ ¼³Ä¡ ¹× ¿î¿µ ¹æ¾È¿¡ ´ëÇØ ¾Ë¾Æº»´Ù.
o Ä¿³Î : Linux 2.4.20-8-686-smp o À¥¼¹ö : Apache 2.0.59 o ModSecurity ¼Ò½ºÄÚµå µð·ºÅ丮 : /usr/local/modsecurity-apache_2.1.4 o ¾ÆÆÄÄ¡ ¼Ò½º¼³Ä¡ µð·ºÅ丮 : /usr/local/apache2 o ¾ÆÆÄÄ¡ À¥¼¹ö Ȩ µð·ºÅ丮 : /usr/local/apache2/htdocs
ModSecurity°¡ '08. 2. 20 ºÎ·Î 2.5°¡ ¸±¸®Áî µÇ¸é¼ ÀÌ °¡À̵尡 ÃÖÃÊ °³Á¤´ç½Ã(1¿ù) ¾ÈÁ¤È ¹öÀüÀÎ 2.1.4 ¹öÀü¿¡ ºñÇØ ¸¹Àº ¹ßÀüÀÌ ÀÌ·ç¾îÁ³´Ù. ÀÌ¿¡ µû¶ó ModSecurityÀÇ ¾ÈÁ¤È ¹öÀüÀº 2008³â 6¿ù ±âÁØÀ¸·Î 2.1.7(¡®08.4.3 Realesed), 2.5.5('08.6.6)À̸ç 1.x ¹öÀüÀº 1.9.5°¡ ¸¶Áö¸· ¾ÈÁ¤È ¹öÀüÀÌ´Ù. º» °¡À̵忡¼´Â 2.5.x ¹öÀü¿¡ ´ëÇÑ ³»¿ëÀº Æ÷ÇԵǾî ÀÖÁö ¾Ê´Ù. ModSecurity ¼³Ä¡¿¡ ¾Õ¼ 1.x ¹öÀü°ú 2.x ¹öÀüÀÇ Â÷ÀÌÁ¡À» °£´ÜÈ÷ ¾Ë¾Æº¸ÀÚ.
¡Ø ModSecurity 2.5.x ¹öÀü¿¡ ´ëÇÑ »çÇ×Àº º°µµ °¡À̵å Á¦ÀÛ ¿¹Á¤
ModSecurity 2.x ºÎÅÍ´Â Apache 1.x¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù. ±×·¸±â ¶§¹®¿¡ ¼³Ä¡ Àü ½Ã½ºÅÛÀÇ Apache ¹öÀüÀ» È®ÀÎ ÈÄ ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ±×¸®°í °¢ ¹öÀüÀÇ ·êÀÌ È£È¯µÇÁö ¾Ê±â ¶§¹®¿¡ °³º°ÀûÀ¸·Î ·êÀÌ »ý¼ºµÈ´Ù.
3.1 ModSecurity 2.x ´Ù¿î·Îµå ¹× ¼³Ä¡
ModSecurity 2.x ºÎÅÍ´Â Apache 1.xÀ» Áö¿øÇÏÁö ¾ÊÀ» »Ó ¾Æ´Ï¶ó ¼³Ä¡½Ã apxs¸¦ Áö¿øÇÏÁö ¾Ê±â ¶§¹®¿¡ ÀÚü MakefileÀ» ÀÌ¿ëÇÑ ¼³Ä¡¸¸ °¡´ÉÇÏ´Ù. ¼³Ä¡Çϱ⠾ռ ÀÚ½ÅÀÇ ApacheÀÇ ¹öÀüÀ» ²À È®ÀÎÇÏ°í Apache2°¡ ¾Æ´Ï¶ó¸é ÃֽŠApache¸¦ ¸ÕÀú ´Ù¿î·Îµå ÈÄ¿¡ ¼³Ä¡ÇØ¾ß ÇÑ´Ù.
Apache´Â ¾Æ·¡ ¸µÅ©¿¡¼ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù. http://www.apache.org
ÀÌ ÈÄ, ModSecurity 2.1.4 ¹öÀüÀ» ¾Æ·¡ ¸µÅ©¿¡¼ ´Ù¿î·Îµå ¹Þ´Â´Ù.
- ModSecurity °ø½Ä ȨÆäÀÌÁö http://www.modsecurity.org/download/modsecurity-apache_2.1.4.tar.gz ¶Ç´Â, - KrCERT/CC °ø°³À¥¹æȺ® ÆäÀÌÁö http://www.krcert.or.kr/firewall2/index3.jsp Á¢¼Ó ÈÄ modsecurity-apache_2.1.4.tar.gz ´Ù¿î
ModSecurity 2.x ¹öÀüÀ» ¼³Ä¡ÇÏ¸é¼ ¾Æ·¡ »çÇ×À» È®ÀÎÇÑ µÚ ´ÙÀ½ °úÁ¤À» ÁøÇàÇϵµ·Ï ÇÏÀÚ.
|
¼¼ ºÎ »ç Ç× |
PCRE |
ModSecurity 2.x°¡ Á¤»ó ÀÛµ¿À» À§ÇØ Çʼö ¼³Ä¡µÇ ÀÖ¾î¾ß ÇÔ. => http://www.pcre.org ´Ù¿î·Îµå |
libxml2 |
ModSecurity 2.x°¡ Á¤»ó ÀÛµ¿À» À§ÇØ Çʼö ¼³Ä¡µÇ ÀÖ¾î¾ß ÇÔ. => http://www.xmlsoft.org ´Ù¿î·Îµå |
unique_id |
ModSecurity 2.x°¡ ÇÊÅ͸µ ±â´ÉÀ» ¼öÇàÇϱâ À§ÇØ Çʼö Enable µÇÀÖ¾î¾ß ÇÔ. => ./configure --enable-unique-id --enable-so Apache ÄÄÆÄÀϽà enableÇØ¾ß Çϸç, RPM ¼³Ä¡ ¹öÀüÀº ¸ðµâ ·Îµå È®ÀÎ | À§ ¾ð±ÞÇÑ ¼¼°¡Áö »çÇ×À» üũÇÑ µÚ ModSecurityÀÇ ¼³Ä¡¸¦ ÁøÇàÇÏ´Â °ÍÀÌ ¼ö¿ùÇÏ´Ù. ´Ù¿î·Îµå ¹ÞÀº ÆÄÀÏÀ» ¾ÐÃà ÇØÁ¦ ÇÏ¸é ´ÙÀ½°ú °°Àº ÆÄÀÏ°ú Æú´õ°¡ »ý¼ºµÈ´Ù.
# tar xzvf modsecurity-apache_2.1.4.tar.gz # cd modsecurity-apache_2.1.4; ls -al ÇÕ°è 52 drwxrwx--- 5 1000 1000 4096 11¿ù 28 06:05 . drwxr-xr-x 22 root root 4096 1¿ù 16 16:08 .. -rw-rw---- 1 1000 1000 7146 11¿ù 28 03:37 CHANGES -rw-rw---- 1 1000 1000 15128 7¿ù 3 2007 LICENSE -rw-rw---- 1 1000 1000 422 7¿ù 27 21:45 README.TXT drwxrwx--- 3 1000 1000 4096 11¿ù 28 06:05 apache2 drwxrwx--- 3 1000 1000 4096 11¿ù 28 06:06 doc -rw-rw---- 1 1000 1000 1880 9¿ù 8 01:24 modsecurity.conf-minimal drwxrwx--- 3 1000 1000 4096 11¿ù 28 06:05 rules [root@www modsecurity-apache_2.1.4]# | ModSecurity 2.x´Â MakefileÀ» ÀÌ¿ëÇÑ ¼³Ä¡¹æ¹ý¸¸ Á¸ÀçÇϱ⠶§¹®¿¡ Apache°¡ ¼³Ä¡µÈ Á¾·ù¿¡ µû¶ó ±¸ºÐÇÏ¿© ¼³¸íÇÑ´Ù.
¢¹ RPMÀ¸·Î ¼³Ä¡µÈ Apache Apache°¡ RPM ÆÐÅ°Áö·Î ¼³Ä¡µÇ¾î ÀÖ´Ù¸é ·¹µåÇÞ °è¿ÀÇ °æ¿ì httpd-devel, µ¥ºñ¾È °è¿¿¡¼´Â apache2-prefork-dev³ª apache2-threaded-dev ÆÐÅ°Áö°¡ ¼³Ä¡µÇ ÀÖ¾î¾ß ÇÑ´Ù.
¨ç ÃÖÃÊ ¾ÐÃàÀ» ÇØÁ¦ÇÑ Æú´õ¿¡¼ apache2 Æú´õ·Î À̵¿Çϸé Makefile ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù. ÀÌ ÆÄÀÏÀ» ¿¾î ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù.
35¹ø° ¶óÀÎÀÇ top_dir °ª ¼öÁ¤ top_dir = /apps/apache22 ¡æ top_dir = /etc/httpd
top_dir = /usr/share/apache22 // µ¥ºñ¾È °è¿ top_dir = /var/apache2 // ¼Ö¶ó¸®½º °è¿
45¹ø° ¶óÀÎÀÇ libxml2 ¿É¼Ç È®ÀÎ, ±âº»ÀûÀ¸·Î ¾Æ·¡ °æ·Î¿¡ ¼³Ä¡µÇ±â ¶§¹®¿¡ ƯÀÌÇÑ °æ¿ì°¡ ¾Æ´Ï¶ó¸é ¼öÁ¤ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. INCLUDES = -I /usr/include/libxml2
¨è ÄÄÆÄÀÏÇÏ¿© ¼³Ä¡ÇÑ´Ù. # make && make install
¨é ¼³Ä¡°¡ ¿Ï·áµÇ¸é /usr/lib/httpd/modules/mod_security2.so ÆÄÀÏÀÌ »ý¼ºµÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù. È®ÀÎ µÇ¾ú´Ù¸é httpd.conf ¸¦ ¿¾î ¾Æ·¡ ¹®ÀåÀ» Ãß°¡ÇØÁØ´Ù. LoadFile /usr/lib/libxml2.so //mod_security º¸´Ù ¸ÕÀú LoadµÇ¾î¾ß ÇÑ´Ù. LoadModule security2_module modules/mod_security2.so LoadModule unique_id_module modules/mod_unique_id.so // RPM¼³Ä¡À̹ǷΠÃß°¡
¨ê ¾ÆÆÄÄ¡ À¥¼¹ö¸¦ À籸µ¿ÇÑ´Ù. # /etc/init.d/httpd restart
¢¹ DSO ¹æ½ÄÀ¸·Î ¼³Ä¡µÈ Apache
¨ç DSO ¹æ½ÄÀ¸·Î ¼³Ä¡µÈ Apache ¿ª½Ã Makefile¿¡¼ ¾Æ·¡ »çÇ×À» ¼öÁ¤ÇØÁà¾ß ÇÑ´Ù. 35¹ø° ¶óÀÎÀÇ top_dir °ª ¼öÁ¤ top_dir = /apps/apache22 ¡æ top_dir = /usr/local/apache2 45¹ø° ¶óÀÎÀÇ libxml2 ¿É¼Ç È®ÀÎ, Default·Î ¾Æ·¡ °æ·Î ¼³Ä¡ INCLUDES = -I /usr/include/libxml2
¨è ÄÄÆÄÀÏÇÏ¿© ¼³Ä¡ÇÑ´Ù. # make && make install
¨é ¼³Ä¡°¡ ¿Ï·áµÇ¸é /usr/local/apache2/modules/mod_security2.so ÆÄÀÏÀÌ »ý¼ºµÇ¾ú´ÂÁö È®ÀÎ ÇÑÈÄ httpd.conf¿¡ ¾Æ·¡ ¹®ÀåÀ» Ãß°¡ÇØÁØ´Ù. LoadFile /usr/lib/libxml2.so // mod_security º¸´Ù ¸ÕÀú LoadµÇ¾î¾ß ÇÑ´Ù. LoadModule security2_module modules/mod_security2.so
ÀçÂ÷ °Á¶ÇÏÁö¸¸ ¼Ò½º ÄÄÆÄÀÏµÈ ApacheÀÇ °æ¿ì´Â unique_id ¸ðµâÀÌ EnableµÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.
¨ê ¾ÆÆÄÄ¡ À¥¼¹ö¸¦ Àç ±¸µ¿ÇÑ´Ù. # /usr/local/apache2/bin/apachectl stop # /usr/local/apache2/bin/apachectl start
3.2 ModSecurity 2.x È°¼ºÈ ¹× Rule ¼³Á¤
ModSecurity 2.x¸¦ ¼³Ä¡ÇÏ¿´À¸´Ï 1.x¹öÀü°ú ¸¶Âù°¡Áö·Î À¥ ¹æȺ® ±â´É Àû¿ëÀ» À§ÇØ httpd.conf ÆÄÀÏ ³»¿¡ ¼³Á¤ Áö½ÃÀÚ¸¦ Á¤ÀÇÇØ ÁÖÀÚ. 2.x¹öÀüÀÇ ´ëºÎºÐÀÇ Áö½ÃÀÚ´Â Virtual Host, Location, Location Match, Directory µîÀÇ Apache Áö½ÃÀÚ ³»¿¡¼µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ±× ¿Ü¿¡ ¸ÞÀÎÆÄÀÏÀÇ ±¸¼º Áß¿¡¼´Â ¿ÀÁ÷ Çѹø¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍµéÀÌ Àִµ¥, Áö±ÝºÎÅÍ ÀÚ¼¼È÷ ¾Ë¾Æº¸°Ú´Ù.
¸¶Âù°¡Áö·Î °ü¸®ÀÇ ÆíÀÇ»ó º°µµÀÇ ·ê ÆÄÀÏÀ» »ý¼ºÇÏ¿© httpd.conf¿¡ Include½ÃÅ°ÀÚ.
Include conf/mod_security2.conf
ModSecurity 2.xÀÇ ·êÀº 1.x¹öÀü°ú ȣȯÀÌ µÇÁö ¾Ê±â ¶§¹®¿¡ º°µµ·Î ±¸ºÐÇØÁà¾ß ÇÑ´Ù. ¿©·¯ ºÎ°¡±â´É°ú ¿É¼Ç µéÀÌ Ãß°¡ µÇ¾úÀ¸´Ï ÀÌÁ¦ ±× ¾÷µ¥ÀÌÆ® µÈ ±â´ÉÀ» ¾Ë¾Æº¸ÀÚ.
ModSecurity 2.x´Â °ø½Ä ȨÆäÀÌÁö¿¡¼ Core-RuleÀ» Á¦ÀÛÇÏ¿© ¹èÆ÷ÇÏ°í ÀÖ´Ù. 2.x¿¡¼´Â ´Ù¾çÇÑ ±â´ÉÀÌ Ãß°¡ µÇ¾ú±â ¶§¹®¿¡ ÀÌ·¯ÇÑ Core-RuleÀ» ÅëÇØ ¹Ì¸® ·êÀÇ »ç¿ë¹ýÀ» ¼÷ÁöÇØ µÎ¾î¾ß ÇÑ´Ù. ¶ÇÇÑ ¾ÐÃàÇØÁ¦ÇÏ¿© »ý¼ºµÈ rules Æú´õ ³»¿¡ Core-RuleÀ» ±âº» Æ÷ÇԵǾî ÀÖÀ¸´Ï º°µµ·Î ´Ù¿î ¹ÞÀ» ÇÊ¿ä°¡ ¾ø´Ù.
ÀÌ ¿Ü¿¡ KrCERT ȨÆäÀÌÁö¿¡¼µµ Sample RuleÀ» ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù. http://www.krcert.or.kr/firewall2/index3.jsp ÇÏ´Ü¿¡ ¾÷ü ¹× ¹öÀüº° Sample Rule ´Ù¿î
ÀÌÁ¦ ½ÇÁ¦·Î ÅÂ±× ¾È¿¡ µé¾î°¥ Áö½ÃÀÚµé Áß ±âº»ÀûÀÎ Áö½ÃÀÚµéÀ» ¾Ë¾Æº¸µµ·Ï ÇÑ´Ù. »ó´çÈ÷ ´Ù¾çÇÑ Áö½ÃÀÚ°¡ ÀÖÀ¸¹Ç·Î ÀÚ¼¼ÇÑ °ÍÀº ¾Æ·¡¸¦ Âü°íÇØ º¸±â ¹Ù¶õ´Ù. http://www.krcert.or.kr/firewall2/index2.jsp ¿¡ modsecurity2.1.4-manual.pdf ´Ù¿î
3.2.1 ±âº» ȯ°æ¼³Á¤ ¹× ·Î±ë °ü·Ã Áö½ÃÀÚ
SecRuleEngine On | Off | DetectionOnly ModSecurity ±â´ÉÀ» È°¼ºÈ(enable) ½ÃŲ´Ù. o On : ModSecurity ±â´É È°¼ºÈ o Off : ModSecurity ±â´É ºñÈ°¼ºÈ o DetectionOnly : È°¼ºÈ´Â ÇÏÁö¸¸ Â÷´ÜÇÏÁö ¾Ê°í ŽÁö¸¸ ÇÑ´Ù.
SecAuditEngine On | Off | RelevantOnly °¨»ç ·Î±ë¿¡ ´ëÇÑ ¼³Á¤À» ±¸¼ºÇÑ´Ù. o On : ¸ðµç Æ®·£Á§¼Ç ·Î±ë o Off : ¸ðµç Æ®·£Á§¼Ç ·Î±ëÇÏÁö ¾ÊÀ½ o RelevantOnly : Error ¶Ç´Â, Warning ÀÇ Æ®·£Á§¼Ç, ±×¸®°í SecAuditLogRelevantStatus¿¡ Á¤ÀÇµÈ »óÅÂÄÚµå¿Í ÀÏÄ¡ÇÏ´Â Æ®·£Á§¼Ç¸¸ ·Î±ë
SecAuditLog logs/modsec_audit.log °¨»ç ·Î±× ÆÄÀÏÀÇ °æ·Î¸¦ Á¤ÀÇÇÑ´Ù. ¿¹) SecAuditLog /usr/local/apache2/logs/modsec_audit.log ÀÌ ÆÄÀÏÀº Root·Î Á¢±ÙÇßÀ» ¶§¸¸ È®ÀÎÇÒ ¼ö ÀÖ¾î¾ß Çϸç Root°¡ ¾Æ´Ñ »ç¿ëÀÚÀÇ Á¢±ÙÀº ºÒ°¡ÇØ¾ß ÇÑ´Ù. ÀÌ ·Î±× ÆÄÀÏ¿¡´Â Serial ¹æ½ÄÀÇ ·Î±ë ÇüÅ¿¡ »ç¿ëµÈ´Ù. ¸¸¾à Concurrent ¹æ½ÄÀÇ ·Î±ë ÇüŶó¸é ÀÌ ÆÄÀÏÀº ·Î±×ÀÇ Index·Î ¾²¿© Áö°Ô µÇ¸ç ¸ðµç °¨»ç·Î±×¿¡ ´ëÇÑ ÆÄÀÏÀÌ »ý¼ºµÇ¸é¼ ±× ±â·ÏÀ» Æ÷ÇÔÇÏ°Ô µÈ´Ù. ¸¸¾à Concurrent ·Î±ë¹æ½ÄÀ» »ç¿ëÇÏ°í °¨»ç ·Î±×¸¦ ¿ø°Ý ÄַܼΠº¸³»·Á¸é modsec-auditlog-collector.pl ½ºÅ©¸³Æ®¸¦ ¾Æ·¡¿Í °°ÀÌ »ç¿ëÇÏ¸é µÈ´Ù. ¿¹) SecAuditLog \ "|/path/modsec-auditlog-collector.pl /path/SecAuditLogDataDir /path/SecAuditLog"
SecAuditLogParts ·Î±× ÆÄÀÏ¿¡ ±â·ÏÇÒ Ç׸ñÀ» Á¤ÀÇÇÑ´Ù. ¿¹) SecAuditLogParts ABCFHZ
Parts |
¼¼ ºÎ ³» ¿ë |
A |
audit log header (Çʼö) |
B |
request header |
C |
request body (request body°¡ Á¸ÀçÇÏ°í modsecurity°¡ request body¸¦ °Ë»çÇÏ µµ·Ï ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì¿¡¸¸) |
D |
º¸·ùÁß, response headerÀÇ Áß°³ (ÇöÀç Áö¿ø ¾È µÊ) |
E |
response body Áß°£ ´Ü°è(ÇöÀç modsecurity°¡ response body¸¦ °Ë»çÇÏ¸ç °¨»ç ·Î±ë ¿£ÁøÀÌ À̸¦ ÀúÀåÇÏ°Ô²û ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì¿¡¸¸) |
F |
ÃÖÁ¾ response header(¸¶Áö¸· ÄÁÅÙÃ÷ Àü´Þ °úÁ¤¿¡¼ ¾ÆÆÄÄ¡¿¡ ÀÇÇØ ¸Å¹ø Ãß°¡ µÇ´Â ³¯Â¥¿Í ¼¹ö Çì´õ¸¦ Á¦¿ÜÇÑ) |
G |
½ÇÁ¦ response body(ÇöÀç Áö¿ø ¾ÈµÊ |
H |
°¨»ç ·Î±× Æ®·¹ÀÏ·¯ |
I |
ÀÌ ¿É¼ÇÀº C¸¦ ´ëüÇÏ´Â ¿É¼ÇÀÌ´Ù. multipart/form-data ÀÎÄÚµùÀÌ »ç¿ëµÇ¾úÀ» ¶§¸¦ Á¦¿ÜÇÑ ¸ðµç °æ¿ì¿£ C¿Í °°Àº µ¥ÀÌÅ͸¦ ±â·ÏÇÑ´Ù. |
J |
º¸·ùÁß, ÀÌ ¿É¼ÇÀº multipart/form-data ÀÎÄÚµùÀ» »ç¿ëÇÏ´Â ÆÄÀÏ ¾÷·Îµå¿¡ ´ëÇÑ Á¤º¸¸¦ Æ÷ÇÔÇÒ ¶§ È¿°ú°¡ ÀÖ´Ù. |
Z |
·Î±×ÀÇ ³¡À» ÀǹÌÇÑ´Ù. (Çʼö) | SecAuditLogRelevantStatus REGEX °¨»ç·Î±ëÀÇ ¸ñÀû°ú °ü·ÃµÈ response »óÅÂÄÚµåÀÇ °ªÀ» ¼³Á¤ÇÑ´Ù. o ¸Å°³º¯¼ö¿¡´Â Á¤±ÔÇ¥Çö½ÄÀÌ µé¾î°£´Ù. ¿¹) SecAuditLogRelevantStatus ^[45]
SecAuditLogType Serial | Concurrent °¨»ç·Î±ë ±¸Á¶ÀÇ Å¸ÀÔÀ» ¼³Á¤ÇÑ´Ù. o Serial - ¸ðµç ·Î±×´Â ¸ÞÀÎ ·Î±×ÆÄÀÏ¿¡ ÀúÀåµÈ´Ù. ÀϽÃÀûÀ¸·Î Æí¸®ÇÒ ¼ø ÀÖÁö¸¸ ÇϳªÀÇ ÆÄÀÏ¿¡¸¸ ±â·ÏµÇ±â ¶§¹®¿¡ ´À·ÁÁú ¼ö ÀÖ´Ù. o Concurrent - ·Î±×°¡ °¢ Æ®·£Àè¼Ç º°·Î ³ª´©¾î ÀúÀåµÈ´Ù. ÀÌ ¹æ½ÄÀº ·Î±×ÆÄÀÏÀ» ¿ø°Ý ModSecurity Console host·Î º¸³¾ ¶§ »ç¿ëÇÏ´Â ¹æ½ÄÀÌ´Ù.
SecDefaultAction "log, auditlog, deny, status:403, phase:2, t:lowercase" ·êÀÌ ¸ÅĪµÇ¸é ±âº»ÀûÀ¸·Î ÃëÇÒ ÇൿÀ» Á¤ÀÇÇÑ´Ù. 1.9.x ¹öÀüÀÇ SecFilterDefaultActionÀ» ¶°¿Ã¸®¸é ÀÌÇØ°¡ ½¬¿îµ¥ 2.1.x ¹öÀü¿¡¼´Â ¿É¼ÇµéÀÌ ´õ¿í ´Ù¾çÇØÁ³´Ù. ·êÀÌ Æ¯Á¤ ¾×¼Çµé¿¡ ´ëÇÑ °³º° ·êÀ» Àû¿ëÇϰųª ´Ù¸¥ SecDefaultActionÀÌ Á¤ÀǵǾîÀÖÁö ¾Ê´Ù¸é ÃÖÃÊ ÁöÁ¤µÈ SecDefaultActionÀÇ ¼³Á¤À» µû¸¥´Ù. À§ÀÇ ¿¹´Â ·êÀÌ ¸ÅĪ µÇ¾úÀ» ¶§ Â÷´ÜÇÏ¸ç ·Î±×¸¦ ³²±â°í, 403 »óÅÂÄÚµå ÆäÀÌÁö¸¦ º¸¿©ÁÖ¸ç ÇÊÅ͸µ ´Ü°è´Â ¡°2¡±ÀÌ´Ù. ±âº»ÀûÀ¸·Î ´ë¹®ÀÚ´Â ¸ðµÎ ¼Ò¹®ÀÚ·Î ¹Ù²î¾î ÇÊÅ͸µ µÈ´Ù.
SecDefaultAction Áö½ÃÀÚÀÇ Ãß°¡ÀûÀÎ Action¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ. ¸ÕÀú, ´ÙÀ½°ú °°Àº 5°¡Áö Á¾·ù·Î ºÐ·ù ÇÒ ¼ö ÀÖ´Ù.
±¸ ºÐ |
¼³ ¸í |
Disruptive actions |
ModSecurity°¡ µ¥ÀÌÅ͸¦ Áß°£¿¡¼ °¡·Îç ¶§ ÀϾ´Â ÇàÀ§ÀÌ´Ù. ÇϳªÀÇ Ã¼ Àο¡ ù ¹ø° ·ê¿¡¸¸ ³ªÅ¸³¾ ¼ö ÀÖ´Ù. allow, deny, drop µîÀÌ ÀÖ´Ù. |
Non-Disruptive actions |
¾îµð¿¡³ª ³ªÅ¸³¾ ¼ö ÀÖ´Ù. capture, ctl, exec, initcol µîÀÌ ÀÖ´Ù |
Flow actions |
ÇϳªÀÇ Ã¼Àο¡ ù ¹ø° ·ê¿¡¸¸ ³ªÅ¸³¾ ¼ö ÀÖ´Ù. chain ÀÌ ÀÖ´Ù. |
Meta-data actions |
ÇϳªÀÇ Ã¼Àο¡ ù ¹ø° ·ê¿¡¸¸ ³ªÅ¸³¾ ¼ö ÀÖ´Ù. id, rev, severity, msg°¡ ÀÖ´Ù. |
Data actions |
Àü¸éÀûÀ¸·Î ¼öµ¿ÀûÀÌ°í ´Ù¸¥ ÇàÀ§¿¡¼ »ç¿ëµÈ µ¥ÀÌÅ͸¦ ¿î¹ÝÇÏ´Â ¿ªÇÒ»ÓÀÌ´Ù. | ¾Õ¼ SecDefaultAction Áö½ÃÀÚ¿¡ ÀÇÇÑ ±âº» Àû¿ë actionÀÇ ¿¹¿¡¼´Â ÄÞ¸¶(,)·Î ±¸ºÐµÈ 6°³ÀÇ actionÀ» Á¤ÀÇÇÏ°í ÀÖ´Ù. ÃëÇÒ ¼ö ÀÖ´Â ´ëÇ¥ÀûÀÎ ÇàÀ§´Â ´ÙÀ½ Ç¥¿Í °°´Ù.
Çà À§ |
¼³ ¸í |
allow |
·ê¿¡ ¸ÅĪµÇ¸é 󸮸¦ ¸ØÃß°í Æ®·£Á§¼ÇÀ» Çã°¡ÇÑ´Ù. ¿¹) SecRule REMOTE_ADDR "^192\.168\.1\.100$" "nolog, phase:1, allow" ¡Ø allow ¾×¼ÇÀº ¿ÀÁ÷ ÇöÀç 󸮴ܰ迡¼¸¸ Àû¿ëµÈ´Ù. |
auditlog |
°¨»ç·Î±×¿¡ Æ®·£Á§¼ÇÀ» ±â·ÏÇÑ´Ù. ¿¹) SecRule REMOTE_ADDR "^192\.168\.1\.100$" "auditlog, phase:1, allow" |
capture |
Á¤±ÔÇ¥Çö½Ä°ú ÇÔ²² »ç¿ëµÇ¾úÀ» ¶§ capture ¾×¼ÇÀº Á¤±ÔÇ¥Çö½ÄÀÇ »çº»À» ¸¸µé°í Æ®·£Àè¼ÇÀÇ °¡º¯ÀûÀÎ ÄÝ·º¼Ç¿¡ ¸ðÀº´Ù. ÃÖ´ë 10°³°¡ ¼öÁýµÇ¸é °¢°¢ 0~9±îÁö ÇÑ ÀÚ¸® ¼ýÀÚÀÇ À̸§ÀÌ ¸Å°Ü Áø´Ù. ¿¹) SecRule REQUEST_BODY "^username=(\w{25,})" "phase:2,capture,t:none,chain" SecRule TX:1 "(?:(?:a(dmin|nonymous)))" |
chain |
µÎ°³ÀÇ ·êÀ» ¿¬°üÁö¾î Çã¿ëÇÏ°í ½ÍÀ» ¶§ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿¹) SecRule REQUEST_METHOD ^POST$ "chain" SecRule REQUEST_HEADER:Content-Length ^$ |
ctl |
ctl ¾×¼ÇÀº Æ®·£Àè¼ÇÀ» ÃÖ½ÅÈÇϱâ À§ÇÑ ¼³Á¤ ¿É¼ÇÀÌ´Ù. ¿¹) SecRule REQUEST_CONTENT_TYPE ^text/xml "nolog,pass,ctl:auditEngine=ON" ´ÙÀ½°ú °°Àº ¿É¼ÇµéÀÌ µé¾î°¥ ¼ö ÀÖ´Ù. auditEngine requestBodyProcessor auditLogParts responseBodyAccess debugLogLevel responseBodyLimit requestBodyAccess ruleEngine requestBodyLimit
|
deny |
·êÀÌ ÀÏÄ¡ÇÒ °æ¿ì ¿äû 󸮸¦ Â÷´ÜÇÑ´Ù. status actionÀÌ ¸í½ÃµÇ¾î ÀÖÁö ¾ÊÀ¸¸é ModSecurity´Â ¡°HTTP 403 error code"¸¦ ¹ÝȯÇÑ´Ù. ¿¹) SecRule REQUEST_HEADERS:User-Agent \ "nikto¡° ¡±log,deny,msg:'Nikto Scanners Identified'" |
drop |
FIN ÆÐŶÀ» º¸³» TCP ¿¬°áÀ» ²÷¾î¼ ¿¬°áÀ» Á¾·á½ÃŲ´Ù. |
exec |
ÇÊÅÍ°¡ ÀÏÄ¡Çϸé ÆĶó¹ÌÅ͸¦ Áö¿øÇÏ´Â ¿ÜºÎ ½ºÅ©¸³Æ®/¹ÙÀ̳ʸ®¸¦ ½ÇÇà½ÃŲ´Ù. ¿¹) SecRule REQUEST_URI "^/cgi-bin/script\.pl" \ "log, exec:/usr/local/apache/bin/test.sh, phase:1" |
id |
·êÀ̳ª üÀο¡ unique ID¸¦ ÇÒ´çÇÑ´Ù. ¿¹) SecRule &REQUEST_HEADER:Host "@eq 0" \ "log, id:60008, severity:2, msg:'Request Missing a Host Header'" |
log |
ÇÊÅÍ°¡ ÀÏÄ¡ÇÏ¿´À» ¶§ ·Î±×¸¦ ³²±ä´Ù. ¡Ø ÀÌ µ¿ÀÛÀº ApacheÀÇ error log¿Í ModSecurityÀÇ audit log¸¦ ºñ±³ÇÑ´Ù. |
msg |
·êÀ̳ª üÀο¡ »ç¿ëÀÚ ¸Þ½ÃÁö¸¦ ÁöÁ¤ÇÑ´Ù. |
noauditlog |
ÇÊÅÍ°¡ ÀÏÄ¡ÇÏ¿´À» ¶§ ÇØ´ç Æ®·£Á§¼ÇÀ» audit log¿¡ ±â·ÏÇÏ´Â ±âÁØÀ¸·Î ÇÏÁö ¾Ê´Â´Ù. ¿¹) SecRule REQUEST_HEADER:User-Agent "Test" "allow, noauditlog" ¡Ø ¸¸¾à SecAuditEngineÀÌ OnÀ¸·Î ¼³Á¤µÇ¾î ÀÖÀ¸¸é ¸ðµç Æ®·£Á§¼ÇÀº ·Î±ëµÈ´Ù. ¸¸¾à RelevantOnly·Î ¼³Á¤µÇ¾î ÀÖÀ¸¸é, noauditlog ·Î Á¦¾îÇÒ ¼ö ÀÖ´Ù. noauditlog°¡ ¼³Á¤µÇ°í audit event°¡ ¹ß»ýÇÑ´Ù¸é Æ®·£Á§¼ÇÀ» ·Î±ëÇÒ ¼ö ÀÖ´Ù. È®½ÇÇÏ°Ô audit loggingÀ» ºñÈ°¼ºÈ ÇÏ·Á¸é "ctl:auditEngine=Off"¸¦ ¾²¸é µÈ´Ù. |
nolog |
¿¡·¯¿Í °¨»ç·Î±×¿¡¼ ³ªÅ¸³ª´Â ÀÏÄ¡ Çö»óÀ» ¹æÁöÇÑ´Ù. ¿¹) SecRule REQUEST_HEADERS:User-Agent "Test" "allow, nolog" |
pass |
ÇÊÅÍ¿¡ ÀÏÄ¡Çصµ ¿äûÀ» ±×³É Çã¿ëÇÏ°í ´ÙÀ½´Ü°è·Î ÁøÇàÇÑ´Ù. ¿¹) SecRule REQUEST_HEADERS:User-Agent "Test" "log,pass" |
pause |
¿äû¿¡ ´ëÇÑ ÀÀ´äÀ» Çϱâ Àü¿¡ Á¤ÀÇµÈ ¼ö milliseconds µ¿¾È ÁßÁö½ÃŲ´Ù. ¿¹) SecRule REQUEST_HEADERS:User-Agent "Test" "log,deny,pause:5000" ¡Ø Brute Force scannerÀÇ ¼Óµµ¸¦ ¶³¾îÆ®¸®°Å³ª º¸È£ÇÒ ¼ö ÀÖ´Ù. DoS À¯ÇüÀÇ °ø°Ý¾Æ·¡¿¡ ÀÖÀ» ¶§´Â pause°¡ ¿Ï·áÇÒ ¶§±îÁö child process°¡ ¹«·ÂȵǴ °æ¿ì°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. |
phase |
·êÀ̳ª üÀÎÀÌ ¼ÓÇÏ°Ô µÇ´Â 1~5 ±îÁöÀÇ Ã³¸® ´Ü°è ¿¹) SecDefaultAction "log,deny,phase:1,t:removeNulls,t:lowercase" SecRule REQUEST_HEADERS:User-Agent "Test" "log,deny,status:403" ¡Ø À߸øµÈ phase¸¦ ÁöÁ¤ÇÏÁö ¾Ê°Ô À¯ÀÇÇØ¾ß ÇÑ´Ù. ´ë»ó º¯¼ö°¡ ¹«ÀÇ¹Ì ÇÒ ¼ö ÀÖ´Ù. º¯¼ö³ª Á¤±Ô½ÄÀÌ false negative¸¦ ÀÏÀ¸Å²´Ù¸é ¿Ã¹Ù¸¥ ÀÛµ¿ÀÌ´Ù. ±×·¯³ª ¾Ç¼º µ¥ÀÌÅ͸¦ ó¸®ÇÏÁö ¸øÇÏ´Â °ÍÀº À߸øµÈ phase¸¦ ÁöÁ¤Ç߱⠶§¹®ÀÌ´Ù. |
proxy |
ÇÊÅÍ°¡ ÀÏÄ¡Çϸé Æ®·£Á§¼ÇÀ» °¡·Îä¾î ÇÁ·Ï½Ã°¡ ±¸µ¿ÁßÀÎ ´Ù¸¥ À¥¼¹ö·Î ¿äûÀ» Æ÷¿öµùÇÑ´Ù. ¿¹) SecRule REQUEST_HEADERS:User-Agent "Test" \ "log, proxy:http://www.honeypothost.com" ¡Ø ÀÌ µ¿ÀÛÀº mod_proxy°¡ ¹Ýµå½Ã ¼³Ä¡µÇ ÀÖ¾î¾ß ÇÑ´Ù. |
redirect |
ÇÊÅÍ°¡ ÀÏÄ¡ÇÏ¸é »ç¿ëÀÚ¸¦ ÁÖ¾îÁø URL·Î ¸®´ÙÀÌ·ºÆ® ½ÃŲ´Ù. ¿¹) SecRule REQUEST_HEADERS:User-Agent "Test" \ "redirect:http://www.krcert.or.kr/failed.html" ¡Ø ¸¸¾à status ¾×¼ÇÀÌ ÇöÀç »ç¿ëÇÏ°í Àְųª °¡´ÉÇÑ °ªÀÌ 301,302,303,307 À̶ó¸é ±×°ÍÀº redirection¿¡ »ç¿ëµÉ °ÍÀÌ´Ù. ±×·¸Áö ¾Ê´Ù¸é 302 »óÅ Äڵ带 »ç¿ëÇÑ´Ù. |
skip |
ÇÊÅÍ°¡ ÀÏÄ¡Çϸé Çϳª ÀÌ»óÀÇ ·êÀ̳ª üÀÎÀ» °Ç³Ê¶Û ¼ö ÀÖ´Ù. ¿¹) SecRule REQUEST_URI "^/$" "chain,skip:2" SecRule REMOTE_ADDR "^127\.0\.0\1$" "log,deny,status:400" SecRule &REQUEST_HEADERS:Accept "@eq 0" \ "log,deny,log,status:400,msg:'Request Missing an Accpet Header'" |
status |
deny ³ª redirect ¾×¼Ç¿¡¼ »ç¿ëµÉ »óÅÂÄÚµå °ªÀ» ÁöÁ¤ÇÑ´Ù. ¿¹) SecDefaultAction "log,deny,status:403,phase:1" |
t |
ÀÌ ¾×¼ÇÀº ·ê¿¡ ÁöÁ¤µÈ ¿¬»êÀÚ°¡ ½ÇÇàµÇ±â Àü º¯¼ö¿¡ ÁöÁ¤µÈ º¯Çü ÇÔ¼ö¿¡ »ç¿ëµÉ ¼ö ÀÖ´Ù. ¿¹) SecDefaultAction "log,deny,phase:1,t:removeNulls,t:lowercase" SecRule REQUEST_COOKIES:SESSIONID "47414e81....." \ "log, deny,status:403,t:md5" ÀÌ ¿Ü¿¡µµ Ãß°¡µÈ ´õ ´Ù¾çÇÑ ±â´É ¹× ¿É¼ÇµéÀÌ ÀÖÀ¸³ª | ÀÌ ¿Ü¿¡µµ Ãß°¡µÈ ´õ ´Ù¾çÇÑ ±â´É ¹× ¿É¼ÇµéÀÌ ÀÖÀ¸³ª ¿©±â¼ ´Ù·ç±â¿¡´Â ±× ¾çÀÌ ¹æ´ëÇÏ´Ù º¸´Ï °£·«ÇÑ ¼³¸íÀ¸·Î ¸¶Ä£´Ù. ModSecurity 1.x¿¡¼ Áö¿øµÇ´Â ±â´ÉµéÀº °ÅÀÇ ±×´ë·Î µû¸£°í ÀÖÁö¸¸ ±× ¾²ÀÓÀÌ Á¶±Ý º¯Ç߰ųª ´õ °ÈµÈ Â÷ÀÌ°¡ ÀÖ´Ù.
SecRequestBodyAccess On | Off Request °ª¿¡¼ Body ºÎºÐ¿¡ ´ëÇÑ Ã³¸®¸¦ ¾î¶»°Ô ÇÒ °ÍÀÎÁö ±¸¼ºÇÑ´Ù. o On : RequestBody Á¢±ÙÀ» ½ÃµµÇÑ´Ù. o Off : RequestBody Á¢±Ù½Ãµµ¸¦ ÇÏÁö ¾Ê´Â´Ù. ÀÌ Áö½ÃÀÚ´Â Request °ª¿¡¼ÀÇ POST_PAYLOAD¸¦ °Ë»çÇÒ ¶§ ÇÊ¿äÇÏ´Ù. POST°ªÀ» ÇÊÅ͸µÇϱâ À§Çؼ´Â phase:2¿Í REQUESET_BODY º¯¼ö/·ÎÄÉÀ̼Ç, 3°¡Áö°¡ ¸ðµÎ ±¸¼ºµÇ¾î¾ß¸¸ 󸮰¡ °¡´ÉÇÏ´Ù.
SecRequestBodyLimit ModSecurity°¡ Request Body Å©±â·Î ÇÒ´çÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸® ÃÖ´ë Å©±â¸¦ ¼³Á¤ÇÑ´Ù. o SecRequestBodyLimit 134217728 131072KB (134217728 byte)°¡ ±âº»°ªÀÌ´Ù.
SecReponseBodyAccess On | Off Response °ª¿¡¼ Body ºÎºÐ¿¡ ´ëÇÑ Ã³¸®¸¦ ¾î¶»°Ô ÇÒ °ÍÀÎÁö ±¸¼ºÇÑ´Ù. o On : ResponseBody Á¢±ÙÀ» ½ÃµµÇÑ´Ù. (±×·¯³ª MIME ŸÀÔ°ú ÀÏÄ¡Çؾ߸¸ ÇÑ´Ù.) o Off : ResponseBody Á¢±Ù½Ãµµ¸¦ ÇÏÁö ¾Ê´Â´Ù. ÀÌ Áö½ÃÀÚ´Â html ÀÀ´äÀ» Á¶»çÇϱâ À§ÇØ ÇÊ¿äÇÏ´Ù. "phase:4"ÀÇ Ã³¸® ´Ü°è¿Í RESPONSE_BODY º¯¼ö/·ÎÄÉÀ̼Ç, 3°¡Áö°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é, response body¸¦ °Ë»çÇÒ ¼ö ¾ø´Ù.
SecResponseBodyLimit 524228 ModSecurity°¡ Response Body Å©±â·Î ÇÒ´çÇÒ ¼ö ÀÖ´Â ¸Þ¸ð¸® ÃÖ´ë Å©±â¸¦ ¼³Á¤ÇÑ´Ù. o SecRequestBodyLimit 524228 ÀÌ °ªÀ» ³Ñ¾î°¡¸é ¼¹ö´Â 500 ³»ºÎ ¼¹ö ¿À·ù ¸Þ½ÃÁö¸¸ Ç¥½ÃÇÒ °ÍÀÌ´Ù.
SecReponseBodyMimeType mime/type Response °ª¿¡¼ Body °ªÀ» ¹öÆÛ¸µÇÒ MIME ŸÀÔÀ» ¼³Á¤ÇÑ´Ù. o SecResponseBodyMimeType text/plain text/html // ±âº»°ª Mime ŸÀÔÀº º¹¼ö·Î Ãß°¡ÇÒ ¼ö ÀÖ´Ù.
SecReponseBodyMimeTypesClear ResponseBodyÀÇ ¹öÆÛ¸µÀ» À§ÇØ Mime ŸÀÔÀÇ ¸ñ·ÏÀ» Áö¿ì¸ç, óÀ½¿¡ À§Ä¡½ÃŲ´Ù. o SecResponseBodyMimeType
3.2.2 »ç¿ëÀÚ Rule Á¤ÀÇ
SecRule REQUEST_URI "attack" SecRuleÀº ModSecurityÀÇ ÇÙ½É Áö½ÃÀÚÀÌ´Ù. µ¥ÀÌÅÍ ºÐ¼®°ú ¾×¼Ç ½ÇÇàÀÇ ±âº»ÀÌ µÈ´Ù. o SecRule REQUEST_URI "attack" SecRuleÀº ´ÙÀ½ ¼¼°¡Áö·Î ±¸¼ºµÇ¾î ÀÖ´Ù. o SecRule VARIABLES OPERATOR [ACTIONS] - Operator´Â ¾î¶»°Ô °Ë»çÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤Çϸç, - Actions´Â operatorÀ» ÅëÇØ º¯¼ö°¡ ½ÇÇàµÇ¾î ÀÏÄ¡ÇÏ¿´À» ¶§ ¾î¶² ÇൿÀ» ÃëÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤
¨ç º¯¼ö(Variables) ´ÙÀ½ ¿¹Á¦´Â ¡®dirty'¸¦ Æ÷ÇÔÇÑ Æ®·£Á§¼ÇÀ» °ÅºÎÇÑ´Ù. ex) SecRule REQUEST_URI dirty Áߺ¹ÇÏ¿© »ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ex) SecRule REQUEST_URI|QUERY_STRING dirty
¨è ¿¬»êÀÚ(Operator) ¿¬»êÀÚ¿¡´Â Á¤±Ô½ÄÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ù¹®ÀÚ´Â @ ·Î ½ÃÀÛÇÏ¿©¾ß Çϸç Á¤±Ô½ÄÀ» ÀÌ¿ëÇØ Æ¯º°ÇÑ ÆÐÅÏÀ¸·Î ´ë»óÀ» °Ë»çÇÒ ¼ö ÀÖ´Ù. ex) SecRule REQUEST_URI "@rx dirty" ºÎÁ¤À» Ç¥ÇöÇÒ¶© ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ex) SecRule REQUEST_URI "!@rx ^0$"
¨é ÇàÀ§(Actions) ÇàÀ§´Â default action¿¡¼ ÁöÁ¤µÇ±â ¶§¹®¿¡ »ý·«ÇÒ ¼ö ÀÖ´Ù. ¸¸¾à »ý·«ÇÏÁö ¾Ê°í Ãß°¡·Î ÁöÁ¤µÈ ´Ù¸é default action°ú º´ÇյǾî actionÀÌ ÀÛ¿ëµÇ°Ô µÈ´Ù. ¾×¼ÇÀº À§¿¡¼ ¼³¸íÇÏ¿´´Ù.
SecRuleInheritance On | Off »óÀ§ ¹®¸ÆÀ¸·ÎºÎÅÍ ·êÀ» »ó¼Ó¹ÞÀ»Áö ¾È ¹ÞÀ»Áö ¼³Á¤Çϱâ À§ÇÑ Áö½ÃÀÚÀÌ´Ù. o SecRuleInheritance On °¢ °¡»óÈ£½ºÆ®¸¶´Ù º°µµ·Î ·êÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
... ServerName app1.com SecRuleInheritance Off SecDefaultAction log,deny,phase1,redirect:http://www.test2.com ...
... ServerName app2.com SecRuleInheritance On SecRule ARGS "attack" ...
SecRuleRemoveById »óÀ§ ¹®¸Æ°ú ·êÀÌ ÀÏÄ¡Çϸé ÀÏÄ¡ÇÑ ·êÀ» Á¦°ÅÇÑ´Ù. o SecRuleRemoveById 1 2 "9000-9010" ´ÙÁß ÆĶó¹ÌÅ͸¦ Áö¿øÇÏ¸ç ½Öµû¿ÈÇ¥¸¦ ÅëÇÑ ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ÆĶó¹ÌÅÍ´Â RULE ID³ª Çϳª ÀÇ ¹üÀ§°¡ µÉ ¼öµµ ÀÖ´Ù.
SecRuleRemoveByMsg »óÀ§ ¹®¸Æ°ú ·êÀÌ ÀÏÄ¡Çϸé ÀÏÄ¡ÇÑ ·êÀ» Á¦°ÅÇÑ´Ù. o SecRuleRemoveByMsg "FAIL" À§ Áö½ÃÀÚ´Â RULE ID·Î ·êÀ» Á¦°ÅÇÏÁö¸¸ ÀÌ Áö½ÃÀÚ´Â actionÀÇ msg°¡ ÁöÁ¤ÇÑ Á¤±Ô½Ä¿¡ µû¶ó ·êÀ» Á¦°ÅÇÑ´Ù.
SecServerSignature "Netscape-Enterprise/6.0" ÀÀ´ä Çì´õÀÇ "Server:" ÅäÅ«À» ¹Ù²ã Ç¥½ÃÇÑ´Ù. o SecServerSignature "Microsoft-IIS/5.0" ÀÌ Áö½ÃÀÚ¸¦ »ç¿ëÇÏ·Á¸é ApacheÀÇ ¼³Á¤ÆÄÀÏ¿¡¼ ServerTokens °ªÀÌ ¡°Full"·Î ¼³Á¤µÇÀÖ¾î¾ß ÇÑ´Ù.
SecDebugLog /path/to/modsec-debug.log ModSecurityÀÇ µð¹ö±× ·Î±×ÀÇ °æ·Î¸¦ ¼³Á¤ÇÑ´Ù. o SecDebugLog /usr/local/apache2/logs/modsec-debug.log
SecDebugLogLevel |0|1|2|3|4|5|6|7|8|9 µð¹ö±× ·Î±×ÀÇ »ó¼¼ ¼öÁØÀ» °áÁ¤ÇÑ´Ù. o SecDebugLogLevel 4 level 1~3Àº Ç×»ó ApacheÀÇ ¿¡·¯·Î±×·Î º¸³½´Ù. level 5°¡ µð¹ö±ë¿¡ °¡Àå À¯¿ëÇÏ¸ç ±× ÀÌ»óÀº ¼¹ö ÀÇ ¼º´ÉÀ» ÀúÇϽÃÅ°±â ¶§¹®¿¡ ±ÇÀåÇÏÁö ¾Ê´Â´Ù.
0 ·Î±ëÇÏÁö ¾Ê´Â´Ù. 1 ¿¡·¯¸¸(¿äû°ª) ·Î±ë 2 °æ°í ¼öÁØ 3 °øÁö ¼öÁØ 4 Æ®·£Á§¼ÇÀÇ Ã³¸®°úÁ¤ »ó¼¼ 5 4¿Í µ¿ÀÏÇϳª °¢ ó¸®ÀÇ ºÎºÐº° Á¤º¸°¡ Æ÷ÇÔ 9 ¸ðµÎ ·Î±ë, µð¹ö±ë Á¤º¸¸¦ »ó¼¼È÷ Æ÷ÇÔ
SecDataDir /path/to/dir ¿µ±¸Àû µ¥ÀÌÅ͸¦ ÀúÀåÇÒ °æ·Î¸¦ ÁöÁ¤ÇÑ´Ù.(IPÁÖ¼Ò, Session °ª µî) o SecDataDir /usr/local/apache2/logs/data ÀÌ Áö½ÃÀÚ´Â initcol, setsid, setuid °¡ »ç¿ëµÉ ¶§ ÇÊ¿äÇÏ´Ù. ¹Ýµå½Ã À¥¼¹ö »ç¿ëÀÚ¿¡ ÀÇÇØ ¾²±â°¡ °¡´ÉÇØ¾ß ÇÑ´Ù.
SecTmpDir /path/to/dir Àӽà ÆÄÀÏÀÌ »ý¼ºµÉ µð·ºÅ丮¸¦ ¼³Á¤ÇÑ´Ù. o SecTmpDir /tmp Apache »ç¿ëÀÚ ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ¾²±â°¡ °¡´ÉÇØ¾ß ÇÑ´Ù. ÀÌ µð·ºÅ丮´Â °Ë»ç°¡ ÁøÇàµÇ´Â µ¿¾È ¾ÆÆÄÄ¡°¡ ¸Þ¸ð¸®°¡ ºÎÁ·ÇÒ ¶§ µð½ºÅ©¸¦ ½º¿ÒÇϱâ À§ÇÑ ¿µ¿ªÀÌ´Ù. (¸Þ¸ð¸® Å©±â´Â SecRequestBodyInMemoryLimit Áö½ÃÀÚ¿¡ ÀÇÇØ ¼³Á¤µÈ Å©±âÀÌ´Ù.)
SecUploadDir /path/to/dir °¡·Îæ ÆÄÀÏÀ» ÀúÀåÇϱâ À§ÇÑ µð·ºÅ丮¸¦ ¼³Á¤ÇÑ´Ù. o SecUploadDir /tmp SecTmpDir Áö½ÃÀÚ¿¡ ÀÇÇØ ÁöÁ¤µÈ µð·ºÅ丮¿Í °°Àº ÆÄÀϽýºÅÛ¿¡ À§Ä¡ÇØ¾ß ÇÑ´Ù. ÀÌ Áö½ÃÀÚ´Â SecUploadKeepFiles ¿Í ÇÔ²² ¾²ÀδÙ.
3.3 Æ®·¡ÇÈ °¨»ç ¿¹¿Ü IP ¼³Á¤
¿ÜºÎ¿¡¼ Ãë¾àÁ¡ Á¡°ËÀ̳ª ¸ðÀÇ ÇØÅ· µîÀ» ¼öÇà ÇÒ ¶§¿¡´Â Á¡°Ë Æ®·¡ÇÈ°ú °ø°ÝÆ®·¡ÇÈÀÌ °ÅÀÇ À¯»çÇϱ⠶§¹®¿¡ °ø°ÝÀ¸·Î ŽÁöµÇ¾î Â÷´ÜµÈ´Ù. ±×·¯¹Ç·Î ÀÌ·¯ÇÑ Áø´ÜÀÛ¾÷À» ÁøÇàÇϱ⿡ ¾Õ¼, °¨»ç ¿¹¿Ü IP·Î ¼³Á¤Çϸé ÁöÁ¤µÈ IP¿¡ ´ëÇؼ´Â Â÷´ÜÁ¶Ä¡ÇÏÁö ¾Ê±â ¶§¹®¿¡ Àü»óÀûÀÎ Á¡°ËÀÌ °¡´ÉÇÏ´Ù. ´ÙÀ½Àº º» ¼³Á¤¹æ¹ýÀ» ¼³¸íÇϱâ À§ÇÑ ¿¹½Ã IP ¸ñ·ÏÀÌ¸ç ¾Æ·¡ÀÇ IPµé¿¡ ´ëÇØ °¨»ç ¿¹¿Ü IP·Î ¼³Á¤ÇÏ´Â ¹æ¹ýÀ» ¾Ë¾Æº»´Ù.
¨ç 221.149.161.5 ¨è 211.252.151.24 ¨é 211.252.151.44
ÀÌ IP ¸ñ·ÏÀ» ModSecurity ¼³Á¤ ÆÄÀÏ¿¡¼ ¹öÀüº°·Î ¾Æ·¡¿Í °°ÀÌ ÀÔ·ÂÇØÁÖ¸é µÈ´Ù.
o ModSecurity 1.9.x ¹öÀü
Çü ½Ä |
SecFilerSelective REMOTE_ADDR "Çã¿ëÇÒ IP" allow |
»ç ¿ë |
SecFilerSelective REMOTE_ADDR "221\.149\.161\.5" allow SecFilerSelective REMOTE_ADDR "211\.252\.151\.24" allow SecFilerSelective REMOTE_ADDR "211\.252\.151\.44" allow | o ModSecurity 2.x ¹öÀü
Çü ½Ä |
SecRule REMOTE_ADDR "Çã¿ëÇÒ IP" allow,ctl:ruleEngine=off |
»ç ¿ë |
SecRule REMOTE_ADDR "221\.149\.161\.5" allow,ctl:ruleEngine=off SecRule REMOTE_ADDR "211\.252\.151\.24" allow,ctl:ruleEngine=off SecRule REMOTE_ADDR "211\.252\.151\.44" allow,ctl:ruleEngine=off |
À§ ¼³Á¤Àº ¿¹¿Ü󸮸¦ ÇØÁÖÁö¸¸ ±×¿¡ ´ëÇÑ ·Î±×´Â µ¿ÀÏÇÏ°Ô ±â·ÏµÈ´Ù. Ãë¾àÁ¡ Á¡°Ë ¼ºñ½º¸¦ ÅëÇØ ´Ù·®ÀÇ ·Î±× ¹ß»ý½Ã¿¡´Â Action Áö½ÃÀÚ¿¡ nolog¸¦ Ãß°¡ÇØÁÖ¸é ·Î±×°¡ ±â·ÏµÇÁö ¾Ê´Â´Ù.
4. ModSecurity¸¦ ÀÌ¿ëÇÑ ¸ðÀÇ °ø°Ý Â÷´Ü
ModSecurity ¼³Ä¡¸¦ ¿Ï·áÇÑ µÚ ·ê ¼³Á¤±îÁö ³¡³µ´Ù¸é Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇØ º¸ÀÚ. ´ÙÀ½ ȸéÀº °¡»ó ¼¹ö¿¡ ¿î¿µ ÁßÀÎ ¹è´Þ ¼ºñ½º ȨÆäÀÌÁö ȸéÀÌ´Ù.
PHPȯ°æ¿¡¼ Á¦·Îº¸µå¸¦ ¼³Ä¡ÇÏ¿© ¿î¿µ ÁßÀÎ ÀÌ »çÀÌÆ®´Â Á¦·Îº¸µå PHP Injection Ãë¾àÁ¡¿¡ ³ëÃâµÇ¾î ÀÖ´Â »óÅ¿´´Ù. ¾Æ·¡ ȸéÀº ÀÓÀÇÀÇ ¼¹ö¿¡¼ °ø°Ý ½ºÆ®¸µÀ» Æ÷ÇÔÇÑ ÆÄÀÏÀ» Injection ½ÃµµÇÏ¿© ´ë»ó ¼¹öÀÇ passwd ÆÄÀÏÀ» Ãâ·Â½ÃŲ ȸéÀÌ´Ù.
ÀÌ ÈÄ ModSecurity ¸¦ ¼³Ä¡ÇÏ¿© µ¿ÀÏÇÑ °ø°Ý Å×½ºÆ®¸¦ ½ÃµµÇß´õ´Ï ¾Æ·¡¿Í °°Àº 406 ¿¡·¯¸¦ ȸ鿡 ¶ç¿ì¸é¼ Á¤»óÀûÀ¸·Î Â÷´ÜÀÌ µÇ¾ú´Ù.
±×¸®°í ¾Æ·¡´Â Â÷´ÜµÈ ÈÄ ModSecurity¿¡ ÀÇÇØ »ý¼ºµÈ ·Î±× ³»¿ëÀÌ´Ù. ³×¸ð¹Ú½º¸¦ »ìÆ캸¸é ÀÔ·ÂµÈ °ª°ú ¸ÅÄ¡µÈ rule, Â÷´Ü ¸Þ½ÃÁö¸¦ º¼ ¼ö ÀÖ´Ù.
ÀÌ¿Í °°ÀÌ ModSecurity´Â PHP Injection ÀÌ¿Ü¿¡µµ SQL Injection, XSS, Directory Traversal °ø°Ý µî ´Ù¾çÇÑ À¥ ÇØÅ· °ø°ÝÀ¸·ÎºÎÅÍ ¼¹ö¸¦ ¾ÈÀüÇÏ°Ô º¸È£ÇÒ ¼ö ÀÖ´Ù.
°ø°³ À¥¹æȺ®ÀÎ ModSecurityÀÇ Æ¯¼º»ó À̹ø °¡À̵忡¼ ¾È³»ÇÑ ±â´É ¿Ü¿¡µµ ´Ù¾çÇÑ Ä¿¹ÂƼ ¶Ç´Â Æ÷·³ µî¿¡¼ ¾Ë·ÁÁø ±â´É ¹× Ãß°¡ ȣȯµÇ´Â ȯ°æ¿¡¼ÀÇ »ç¿ë¹ý µîÀÌ ¸¹ÀÌ Àֱ⠶§¹®¿¡ KISA¿¡¼µµ ÀÌ·¯ÇÑ ±â´É µéÀ» Á¦°øÇÒ ¼ö ÀÖµµ·Ï ¸¹Àº ³ë·ÂÀ» ±â¿ïÀÏ ¿¹Á¤ÀÌ´Ù. ¶ÇÇÑ, ModSecurityÀÇ °ø½Ä ȨÆäÀÌÁö¿¡¼µµ Áö¼ÓÀûÀÎ Core Rule ¾÷µ¥ÀÌÆ®¿Í ¹öÀü¾÷ÀÌ ÀÌ·ïÁö°í ÀÖ´Ù.
À¥ º¸¾ÈÀÇ ±âº»Àº Secure Coding°ú ¼¹ö °ü¸®ÀÚÀÇ º¸¾È ¸¶Àε忡¼ºÎÅÍ ºñ·ÔµÈ´Ù. ¾Æ¹«¸® À¥ ¹æȺ®À̳ª ¼Ö·ç¼ÇµéÀÇ ±â´ÉÀÌ ÁÁ´Ù ÇÏ´õ¶óµµ ±Ã±ØÀûÀ¸·Î À§ µÎ °¡Áö »çÇ×À» °£°úÇÑ´Ù¸é À¥»çÀÌ Æ®ÀÇ º¸¾È¼öÁØ Çâ»ó¿¡ ´õ¿í ´õ ¸Ö¾îÁö°Ô µÉ °ÍÀÌ´Ù. ÀÌ ¿Ü¿¡µµ KISA¿¡¼ ¹ß°£µÈ ȨÆäÀÌÁö º¸¾È°¡À̵峪 ÅÛÇø´À» Âü°íÇÏ¸é¼ ¾ÈÀüÇÑ À¥¼¹ö ¿î¿µ¿¡ µµ¿òÀÌ µÇ±æ ±â´ëÇÑ´Ù.
[ÀÚ·á: Çѱ¹Á¤º¸º¸È£ÁøÈï¿ø(KISA)]
|
|