Home | Data Center | Contact US | Login

Á¦¸ñ ModSecurity¸¦ È°¿ëÇÑ ¾ÆÆÄÄ¡ À¥¼­¹ö º¸¾È °­È­ °¡À̵å
÷ºÎÆÄÀÏ ModSecurity_guide.pdf ÀÛ¼ºÀÏ 2008-08-20 22:53:00
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)]
  MS-SQL injections °ø°Ý ´ëóÇϱâ
  WebKnight¸¦ È°¿ëÇÑ IIS À¥¼­¹ö º¸¾È °­È­ °¡À̵å





ȸ»ç¼Ò°³ °³ÀÎÁ¤º¸Ãë±Þ¹æħ ÀÌ¿ë¾à°ü À̸ÞÀÏÁÖ¼Ò ¹«´Ü¼öÁý°ÅºÎ CONTACT US IDC ¾àµµ
ȸ»ç¼Ò°³ °³ÀÎÁ¤º¸Ãë±Þ¹æħ ÀÌ¿ë¾à°ü À̸ÞÀÏÁÖ¼Ò ¹«´Ü¼öÁý°ÅºÎ CONTACT US IDC ¾àµµ ȸ»ç¼Ò°³ °³ÀÎÁ¤º¸Ãë±Þ¹æħ ÀÌ¿ë¾à°ü À̸ÞÀÏÁÖ¼Ò ¹«´Ü¼öÁý°ÅºÎ CONTACT US IDC ¾àµµ