¡Ø MySQL º¸¾È °ü·Ã ÀÚ·á :
- MySQL¿¡¼ º¸¾ÈÀ§ÇØ load_file() °æ·Î Á¦ÇÑÇϱâ (2010.5)
- MySQL ÀÎÁ§¼Ç °ø°Ý ¹æ¾îÇÏ´Â GreenSQL (2008.11)
Ãâó, ¹ø¿ª : ÇØÄ¿½º·¦, http://www.hackerslab.org/korg/view.fhz?menu=news&no=1583
¿µ¾î : SecurityFocus, http://www.securityfocus.com/infocus/1726
MySQL º¸¾È ½ºÅܹÙÀ̽ºÅÜ °¡À̵å
[Ãâó:½ÃÅ¥¸®Æ¼Æ÷Ä¿½º]MySQLÀº ÀÎÅͳݻ󿡼 °¡Àå ³Î¸® »ç¿ëµÇ´Â µ¥ÀÌÅͺ£À̽º·Î, ÀÚÁÖ PHP¿Í ¿¬µ¿µÇ¾î »ç¿ëµÈ´Ù. MySQLÀº »ç¿ëÇϱâ ÆíÇÏ°í, »ó´ëÀûÀ¸·Î ³ôÀº ¼öÇà °á°ú¸¦ °¡Á®¿Â´Ù´Â ÀÌÁ¡ ¸»°íµµ °£´ÜÇÏ°íµµ ¾ÆÁÖ È¿À²ÀûÀÎ º¸¾È ¸ÞÄ¿´ÏÁòÀ» Á¦°øÇÑ´Ù. ÇÏÁö¸¸ µðÆúÆ®·Î ¼³Ä¡ÇÒ °æ¿ì ·çÆ® Æнº¿öµå°¡ ¾ø´Â µîÀÇ À§Çè¿¡ ³ëÃâµÉ ¼ö ÀÖ°í, ¹öÆÛ ¿À¹öÇÃ·Î¿ì °ø°Ý¿¡ Ãë¾àÇϱ⠶§¹®¿¡ °ø°Ý´çÇϱ⠽¬¿î Ÿ°ÙÀÌ µÇ±âµµ ÇÑ´Ù.
ÀÌ ¹®¼´Â MySQL µ¥ÀÌÅͺ£À̽º¸¦ ·ÎÄà ¹× ¸®¸ðÆ® °ø°ÝÀ¸·ÎºÎÅÍ ¾ÈÀüÇÏ°Ô ÁöÅ°´Â ¹ýÀ» ´Ù·é´Ù.
1.1 ±â´É
ÀÌ ¹®¼´Â ´ÙÀ½°ú °°Àº °¡Á¤ ÇÏ¿¡ ¾²¿©Á³´Ù:
- ¾ÆÆÄÄ¡ À¥ ¼¹ö¿Í PHP ¸ðµâÀÌ ¼³Ä¡µÇ¾î /chroot/httpd µð·ºÅ丮¿¡ À§Ä¡ÇÑ´Ù.
- MySQL µ¥ÀÌÅͺ£À̽º´Â °°Àº È£½ºÆ®¿¡ ¼³Ä¡µÈ PHP ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇؼ¸¸ »ç¿ëµÈ´Ù.
- mysqladmin, mysql, mysqldump °°Àº µðÆúÆ® °ü¸®¿ë ÅøÀº µ¥ÀÌÅͺ£À̽º¸¦ °ü¸®Çϴµ¥ »ç¿ëµÈ´Ù.
- SSH ÇÁ·ÎÅäÄÝÀ» ÅëÇØ ¸®¸ðÆ® µ¥ÀÌÅÍ ¹é¾÷À» ¼öÇàÇÑ´Ù.
1.2 º¸¾È ¿ä±¸»çÇ×
º¸¾ÈÀÇ °µµ¸¦ °¡Àå ³ô°Ô ÇÏ·Á¸é MySQLÀº ´ÙÀ½ÀÇ ¿øÄ¢ ¾Æ·¡ ¼³Ä¡/¼³Á¤µÇ¾î¾ß ÇÑ´Ù:
- MySQL µ¥ÀÌÅͺ£À̽º´Â chroot ȯ°æ¿¡¼ ½ÇÇàÇÑ´Ù.
- MySQL ÇÁ·Î¼¼½º´Â ´Ù¸¥ ½Ã½ºÅÛ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏÁö ¾Ê´Â À¯ÀÏÇÑ UID/GID·Î ½ÇÇàÇÑ´Ù.
- ·ÎÄà ¿¢¼¼½º¸¸ Çã¿ëÇÑ´Ù.
- MySQL ·çÆ® °èÁ¤Àº ÃßÁ¤Çϱ⠾î·Á¿î Æнº¿öµå¸¦ ¼³Á¤ÇÑ´Ù.
- °ü¸®ÀÚ ¾îÄ«¿îÆ®¸íÀ» º¯°æÇÑ´Ù.
- µ¥ÀÌÅͺ£À̽º·ÎÀÇ À͸í Á¢¼Ó(nobody °èÁ¤ »ç¿ë)À» ±ÝÁöÇÑ´Ù.
- °£´ÜÇÑ µ¥ÀÌÅͺ£À̽º¿Í Å×À̺íÀ» ¸ðµÎ »èÁ¦ÇÑ´Ù.
2. MySQL ¼³Ä¡Çϱâ
¼³Ä¡´Â MySQL µ¥ÀÌÅͺ£À̽º¿ë ¿î¿µ ½Ã½ºÅÛ¿¡ ¸ÕÀú »ç¿ëÀÚ ±×·ìÀ» ¸¸µå´Â °ÍÀ¸·Î ½ÃÀÛÇÑ´Ù:
pw groupadd mysql
pw useradd mysql -c "MySQL Server" -d /dev/null -g mysql -s /sbin/nologin
2.1 MySQL ÄÄÆÄÀÏ Çϱâ
/usr/local/mysql µð·ºÅ丮¿¡¼ ÇÑ´Ù.
./configure --prefix=/usr/local/mysql
--with-mysqld-user=mysql
--with-unix-socket-path=/tmp/mysql.sock
--with-mysqld-ldflags=-all-static
make
su
make install
strip /usr/local/mysql/libexec/mysqld
scripts/mysql_install_db
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql
ÀϹÝÀûÀ¸·Î ¼¹ö ¼³Ä¡ ÇÁ·Î¼¼½º´Â MySQL ¸Å´º¾ó¿¡ ¼³¸íµÈ °Í°ú °ÅÀÇ µ¿ÀÏÇÏÁö¸¸ ./configure¿¡ ¸î ÁÙ Ãß°¡ÇØ¾ß ÇÑ´Ù. --with-mysqld-ldflags=-all-static ¸¦ »ç¿ëÇÏ´Â °¡Àå Áß¿äÇÑ ÀÌÀ¯´Â MySQL ¼¹ö¸¦ Á¤ÀûÀ¸·Î ¸µÅ©ÇØ ¼¹ö¸¦ chroot ÇÏ´Â ÇÁ·Î¼¼½º¸¦ °£¼ÒÈ ½ÃÅ°±â À§ÇÔÀÌ´Ù. ³»¿ëÀ» Ãß°¡ÇØ /usr/local/mysql µð·ºÅ丮¿¡ ÇÁ·Î±×·¥À» ¼³Ä¡ÇÏ°í, mysql ¾îÄ«¿îÆ® ±ÇÇÑÀ¸·Î MySQL daemonÀ» ½ÇÇàÇÏ°í, /tmp µð·ºÅ丮¿¡ mysql.sock socketÀ» »ý¼ºÇÏ°Ô ÇÑ´Ù.
2.2 ¼³Á¤ ÆÄÀÏ Ä«ÇÇ
À§ÀÇ Ä¿¸Çµå¸¦ ½ÇÇàÇÑ ÈÄ, µðÆúÆ® ¼³Á¤ ÆÄÀÏÀ» µ¥ÀÌÅͺ£À̽º Å©±â(small, medium, large, huge)¿¡ µû¶ó º¹»çÇÑ´Ù. ¿¹¸¦ µé¾î:
cp support-files/my-medium.cnf /etc/my.cnf
chown root:sys /etc/my.cnf
chmod 644 /etc/my.cnf
2.3 ¼¹ö¸¦ ½ÃÀÛÇÑ´Ù
ÀÌÁ¦ MySQLÀ» ÀüºÎ ¼³Ä¡ÇØ ½ÇÇàÇÒ Áغñ°¡ ¿Ï·á µÇ¾ú´Ù. MySQL ¼¹ö¸¦ ´ÙÀ½ Ä¿¸Çµå·Î ½ÇÇàÇÑ´Ù.
/usr/local/mysql/bin/mysqld_safe &
2.4 Á¢¼Ó Å×½ºÆ®
µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓµÇ¾ú´ÂÁö ´ÙÀ½°ú °°ÀÌ Å×½ºÆ®ÇØ º»´Ù:
/usr/local/mysql/bin/mysql -u root mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.0.13-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+
2 rows in set (0.00 sec)
mysql> quit;
Á¢¼ÓÀÌ ¼º°øÀûÀ¸·Î ÀÌ·ç¾îÁö¸é, µ¥ÀÌÅͺ£À̽º¸¦ ²ö´Ù:
/usr/local/mysql/bin/mysqladmin -u root shutdown
±×·± µÚ ¼ÒÇÁÆ®¿þ¾î º¸¾È ¼³Á¤À» ½ÃÀÛÇϰųª, /usr/local/mysql/var/`hostname`.err ·Î±×ÆÄÀÏ¿¡ ÀúÀåµÈ ³»¿ëÀ» ºÐ¼®ÇØ ¹®Á¦Á¡ÀÇ ¿øÀÎÀ» Á¦°ÅÇÑ´Ù.
3. ¼¹ö chroot Çϱâ
MySQLÀ» ¾ÈÀüÇÏ°Ô Çϱâ À§ÇØ Á¦ÀÏ ¸ÕÀú ÇØ¾ß ÇÒ °ÍÀº chroot ȯ°æÀÌ´Ù.
3.1 ¿î¿µ ½Ã½ºÅÛ
ÀÌ ¹®¼´Â FreeBSD 4.7À» ±âÁØÀ¸·Î ¾²¿©Á³Áö¸¸ À¯´Ð½º ¹× À¯´Ð½º °è¿ ½Ã½ºÅÛ¿¡µµ Àû¿ëµÈ´Ù.
3.2 chroot ȯ°æ ÁغñÇϱâ
´ÙÀ½ µð·ºÅ丮¸¦ »ý¼ºÇÑ´Ù:
mkdir -p /chroot/mysql/dev
mkdir -p /chroot/mysql/etc
mkdir -p /chroot/mysql/tmp
mkdir -p /chroot/mysql/var/tmp
mkdir -p /chroot/mysql/usr/local/mysql/libexec
mkdir -p /chroot/mysql/usr/local/mysql/share/mysql/english
3.3 ¿§¼¼½º ±ÇÇÑ ¼³Á¤
À§¿¡¼ »ý¼ºÇÑ µð·ºÅ丮 ±ÇÇÑÀ» ¾Æ·¡¿Í °°ÀÌ ¼³Á¤ÇÑ´Ù:
chown -R root:sys /chroot/mysql
chmod -R 755 /chroot/mysql
chmod 1777 /chroot/mysql/tmp
3.4 µð·ºÅ丮 ±¸Á¶ »ý¼º
¾Æ·¡ ÆÄÀÏÀ» »õ·Î¿î µð·ºÅ丮 ±¸Á¶¿¡ º¹»çÇÑ´Ù:
cp /usr/local/mysql/libexec/mysqld /chroot/mysql/usr/local/mysql/libexec/
cp /usr/local/mysql/share/mysql/english/errmsg.sys /chroot/mysql/usr/
local/mysql/share/mysql/english/
cp /etc/hosts /chroot/mysql/etc/
cp /etc/host.conf /chroot/mysql/etc/
cp /etc/resolv.conf /chroot/mysql/etc/
cp /etc/group /chroot/mysql/etc/
cp /etc/master.passwd /chroot/mysql/etc/passwords
cp /etc/my.cnf /chroot/mysql/etc/
3.5 Æнº¿öµå¿Í ±×·ì
ÆÄÀÏ:
/chroot/mysql/etc/passwords ¿Í /chroot/mysql/etc/group ¿¡¼ mysql ¾îÄ«¿îÆ®¿Í ±×·ìÀ» Á¦¿ÜÇÑ ¸ðµç ¶óÀÎÀ» »èÁ¦ÇÑ´Ù. ±×·± ´ÙÀ½ ´ÙÀ½°ú °°ÀÌ Æнº¿öµå µ¥ÀÌÅͺ£À̽º¸¦ ±¸ÃàÇÑ´Ù(FreeBSD¿¡¸¸ ÇØ´ç):
cd /chroot/mysql/etc
pwd_mkdb -d /chroot/mysql/etc passwords
rm -rf /chroot/mysql/etc/master.passwd
3.6 ƯÈ÷ °í·ÁÇÒ Á¡
¾ÆÆÄÄ¡ À¥¼¹öÀÇ °æ¿ìó·³ /dev/null À» »ý¼ºÇÏ°Ô ÇÑ´Ù:
ls -al /dev/null
crw-rw-rw- 1 root sys 2, 2 Jun 21 18:31 /dev/null
mknod /chroot/mysql/dev/null c 2 2
chown root:sys /chroot/mysql/dev/null
chmod 666 /chroot/mysql/dev/null
MySQL ¼³Ä¡½Ã »ý¼ºµÈ Å×À̺íÀ» Æ÷ÇÔÇÏ´Â mysql µ¥ÀÌÅͺ£À̽ºµµ º¹»çÇÑ´Ù:
cp -R /usr/local/mysql/var/ /chroot/mysql/usr/local/mysql/var
chown -R mysql:mysql /chroot/mysql/usr/local/mysql/var
3.7 Localization
¿µ¾î°¡ ¾Æ´Ñ ´Ù¸¥ ¾ð¾î¸¦ »ç¿ëÇÏ´Â °æ¿ì, /usr/local/mysql/share/mysql/charsets µð·ºÅ丮¿¡¼ Àû´çÇÑ charsetÀ» º¹»çÇÑ´Ù.
3.8 ¼³Á¤ Å×½ºÆ®Çϱâ
ÀÌÁ¦ chroot ȯ°æ¿¡¼ MySQLÀ» ½ÇÇàÇÒ Áغñ°¡ ¿Ï·á µÇ¾ú´Ù. ¾Æ·¡ Ä¿¸Çµå·Î ¿Ã¹Ù¸£°Ô ½ÇÇàµÇ´ÂÁö Å×½ºÆ®ÇÑ´Ù:
chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &
¿¡·¯°¡ ¹ß»ýÇϸé, ktrace/kdump, strace °°Àº Ä¿¸Çµå¸¦ »ç¿ëÇØ ¹®Á¦Á¡ÀÇ ¿øÀÎÀ» ¾Ë¾Æ³»°í Á¦°ÅÇÑ´Ù.
¾ÆÆÄÄ¡³ª PHPÀÇ °æ¿ì chroot ´ë½Å chrootuid ÇÁ·Î±×·¥À¸·Î mysql ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇß´Ù. chroot¿Í chrootuidÀÇ ÁÖµÈ Â÷ÀÌÁ¡Àº chrpootuid´Â ½ÇÇàµÇ´Â ÇÁ·Î¼¼½ºÀÇ ¼ÒÀ¯ÀÚ¸¦ ¹Ù²Û´Ù´Â µ¥ ÀÖ´Ù. mysqld´Â chroot ȯ°æ¿¡¼ ½ÇÇàµÇÁö¸¸ ÇÁ·Î¼¼½ºÀÇ ¼ÒÀ¯ÀÚ´Â ·çÆ®°¡ ¾Æ´Ï¶ó mysql »ç¿ëÀÚ´Ù. chrootuid´Â ¸¹Àº ¿î¿µ ½Ã½ºÅÛÀÇ °æ¿ì µðÆúÆ®·Î ¼³Ä¡µÇÁö ¾Ê±â ¶§¹®¿¡ ´Ù¿îµµ¸£ ¹Þ¾Æ ¼öÀÛ¾÷À¸·Î ¼³Ä¡ÇØ¾ß ÇÑ´Ù. chrootuid ¼ÒÇÁÆ®¿þ¾î´Â ftp://ftp.porcupine.org/pub/security/chrootuid1.3.tar.gz ¿¡¼ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù.
4. ¼¹ö ¼³Á¤Çϱâ
´ÙÀ½ ÇÒ ÀÏÀº µ¥ÀÌÅͺ£À̽º ¼¹ö¸¦ ¼³Á¤ÇÏ´Â °ÍÀÌ´Ù. MySQLÀ» µðÆúÆ®·Î ¼³Ä¡Çß´Ù¸é, ¸ÞÀÎ ¼³Á¤ÆÄÀÏÀº /etc/my.cnf °ÚÁö¸¸ ¼¹ö¸¦ chroot ȯ°æ¿¡¼ ½ÇÇàÇÑ´Ù¸é /chroot/mysql/etc/my.cnf ¿Í /etc/my.cnf. 2°³ÀÇ ¼³Á¤ÆÄÀÏÀ» »ç¿ëÇÏ°Ô µÈ´Ù. /chroot/mysql/etc/my.cnf ÆÄÀÏÀº MySQL ¼¹ö¿¡ »ç¿ëµÇ°í, /etc/my.cnf ÆÄÀÏÀº MySQL Åø(¿¹¸¦ µé¾î mysqladmin, mysql, mysqldump µî)¿¡ »ç¿ëµÈ´Ù. µÎ ÆÄÀÏ ¸ðµÎ ÀϺΠ¼³Á¤À» °íÃÄÁà¾ß ÇÑ´Ù.
4.1 ¸®¸ðÆ® ¿¢¼¼½º Â÷´Ü
¸ÕÀú MySQLÀÌ µðÆúÆ®·Î ¸®½º´×ÇÏ´Â 3306/tcp Æ÷Æ®¸¦ Â÷´ÜÇØ µ¥ÀÌÅͺ£À̽º°¡ ·ÎÄ÷Π¼³Ä¡µÈ PHP ¾îÇø®ÄÉÀ̼ǿ¡ ÀÇÇؼ¸¸ »ç¿ëµÇ°Ô ÇÑ´Ù. 3306/tcp Æ÷Æ®¸¦ ¸®½º´×ÇÏÁö ¸øÇÏ°Ô ÇÏ¸é ´Ù¸¥ È£½ºÆ®·ÎºÎÅÍ Á÷Á¢ TCP/IP Á¢¼ÓÀ» Çؼ MySQL µ¥ÀÌÅͺ£À̽º¸¦ °ø°ÝÇÒ °¡´É¼ºÀÌ ÁÙ¾îµç´Ù. ±×·¯³ª mysql.sock socket À» ÅëÇÑ ·ÎÄà Ŀ¹Â´ÏÄÉÀ̼ÇÀº ¿©ÀüÈ÷ °¡´ÉÇÏ´Ù. 3306/tcp Æ÷Æ®¸¦ ¸®½º´×ÇÏÁö ¸øÇÏ°Ô ÇÏ·Á¸é /chroot/mysql/etc/my.cnfÀÇ [mysqld] ºÎºÐ¿¡ ´ÙÀ½À» Ãß°¡ÇÑ´Ù:
¸®¸ðÆ®·Î µ¥ÀÌÅÍ ¹é¾÷À» ÇÑ´ÙµçÁö µîÀÇ ÀÌÀ¯·Î µ¥ÀÌÅͺ£À̽º¸¦ ¸®¸ðÆ® ¿¢¼¼½º Çؾ߸¸ ÇÏ´Â °æ¿ì ¾Æ·¡¿Í °°ÀÌ SSH ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÑ´Ù:
backuphost$ ssh mysqlserver /usr/local/mysql/bin/mysqldump -A > backup
4.2 ·ÎÄà º¸¾È °³¼±
´ÙÀ½ ÇØ¾ß ÇÒ °ÍÀº LOAD DATA LOCAL INFILE Ä¿¸Çµå¸¦ »ç¿ëÄ¡ ¸øÇÏ°Ô ÇØ Çã°¡¹ÞÁö ¾Ê°í ·ÎÄà ÆÄÀÏÀ» Àд °ÍÀ» ¸·´Â´Ù. LOAD DATA LOCAL INFILE Ä¿¸Çµå´Â ƯÈ÷ PHP ¾îÇø®ÄÉÀ̼ǿ¡¼ »õ·Î¿î SQL Injection Ãë¾àÁ¡ ¹ß°ß½Ã ¹®Á¦°¡ µÈ´Ù.
/chroot/mysql/etc/my.cnf ÀÇ [mysqld] ³¿¡ ´ÙÀ½À» Ãß°¡ÇÑ´Ù:
set-variable=local-infile=0
Ãß°¡·Î µ¥ÀÌÅͺ£À̽º °ü¸®Åø »ç¿ëÀ» ÆíÇÏ°Ô ÇÏ·Á¸é /etc/my.cnf [client] ºÎºÐ¿¡ ´ÙÀ½À» Ãß°¡ÇÑ´Ù:
socket = /chroot/mysql/tmp/mysql.sock
ÀÌ·¸°Ô ÇÏ¸é ¸Å¹ø ÅøÀ» ½ÇÇàÇÒ ¶§¸¶´Ù mysql, mysqladmin, mysqldump µîµîÀÇ Ä¿¸Çµå¿¡ --socket=/chroot/mysql/tmp/mysql.sock ¿É¼ÇÀ» ÀÔ·ÂÇÏ´Â ¹ø°Å·Î¿òÀ» ´ú ¼ö ÀÖ´Ù.
4.3 °ü¸®ÀÚ Æнº¿öµå º¯°æ
MySQL º¸¾È¿¡ °¡Àå Áß¿äÇÑ °ÍÀº µðÆúÆ® ¼³Ä¡½Ã ¼³Á¤µÇÁö ¾ÊÀº ä ºñ¾îÀÖ´Â µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚ Æнº¿öµå¸¦ º¯°æÇÏ´Â °ÍÀÌ´Ù. Æнº¿öµå¸¦ º¯°æÇÏ·Á¸é ¸ÕÀú MySQLÀ» ½ÇÇàÇÑ´Ù.
chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &
±×·± µÚ ¾Æ·¡¿Í °°ÀÌ °ü¸®ÀÚ Æнº¿öµå¸¦ º¯°æÇÑ´Ù:
/usr/local/mysql/bin/mysql -u root
mysql> SET PASSWORD FOR root@localhost=PASSWORD('»õ·Î¿î Æнº¿öµå');
"mysqladmin password" ó·³ Ä¿¸Çµå ¶óÀο¡¼ Æнº¿öµå¸¦ º¯°æÇÏ´Â ½À°üÀ» µéÀÌ´Â °ÍÀº Áß¿äÇÏ´Ù. ´Ù¸¥ »ç¿ëÀÚµéÀÌ ¼¹ö¿¡¼ ÀÛ¾÷ÇÒ ¶§ "ps aux" Ä¿¸Çµå¸¦ »ç¿ëÇϰųª history ÆÄÀÏ (~/.history, ~/.bash_history etc)À» º¸¸é Æнº¿öµå°¡ ½±°Ô ³ëÃâµÉ ¼ö Àֱ⠶§¹®ÀÌ´Ù.
4.4 µðÆúÆ® »ç¿ëÀÚ/µ¥ÀÌÅͺ£À̽º »èÁ¦Çϱâ
±×·± µÚ ¿¹Á¦ µ¥ÀÌÅͺ£À̽º(Å×½ºÆ®) ¹× ·çÆ® ¾îÄ«¿îÆ®¸¦ Á¦¿ÜÇÑ ¸ðµç ¾îÄ«¿îÆ®¸¦ »èÁ¦ÇÑ´Ù:
mysql> drop database test;
mysql> use mysql;
mysql> delete from db;
mysql> delete from user where not (host="localhost" and user="root");
mysql> flush privileges;
ÀÌ·¸°Ô Çϸé À͸í Á¢¼ÓÀ¸·Î µ¥ÀÌÅͺ£À̽º¸¦ ¼³Á¤ÇÏ´Â °ÍÀ» ¸·À» ¼ö ÀÖ´Ù.
4.5 °ü¸®ÀÚ ¾îÄ«¿îÆ® º¯°æ
µðÆúÆ®·Î ¼³Á¤µÇ´Â °ü¸®ÀÚ ¾îÄ«¿îÆ®(root)¸¦ ¹«Â÷º° ´ëÀÔ °ø°ÝÀ̳ª µñ¼Å³Ê¸® °ø°Ý µîÀ¸·Î ÃßÃøÇØ ³»±â ¾î·Á¿î À̸§À¸·Î º¯°æÇÑ´Ù. º¯°æÇØ µÎ¸é ¼³»ç °ø°ÝÀ» ´çÇÏ´õ¶óµµ °ø°ÝÀÚ´Â Æнº¿öµå»Ó ¾Æ´Ï¶ó ¾îÄ«¿îÆ®µµ ÃßÃøÇØ ³»¾ß Çϱ⠶§¹®¿¡ °ø°ÝÀº ´õ ¾î·Á¿ö Áø´Ù.
mysql> update user set user="mydbadmin" where user="root";
mysql> flush privileges;
4.6 history »èÁ¦
½ÇÇàµÇ´Â ¸ðµç SQL Ä¿¸Çµå°¡ ÀúÀåµÇ´ÂMySQL history ÆÄÀÏ(~/.mysql_history)µµ »èÁ¦ÇØ¾ß ÇÑ´Ù.
(ƯÈ÷ Ç÷¹ÀÎ ÅؽºÆ®·Î ÀúÀåµÇ´Â Æнº¿öµå)
cat /dev/null > ~/.mysql_history
5. PHP ¿Í MySQLÀÇ ¿¬µ¿
PHP´Â /tmp/mysql.sock socket¸¦ »ç¿ëÇØ PHP¿Í ¿¬µ¿Çϱ⠶§¹®¿¡ PHP¸¦ chroot ȯ°æ¿¡ À§Ä¡½ÃÅ°¸é PHP¿Í SQLÀÌ ¼·Î ¿¬µ¿ÇÒ ¼ö ¾ø°Ô µÈ´Ù.
ÀÌ ¹®Á¦Á¡À» ÇØ°áÇÏ·Á¸é ¸Å¹ø MySQLÀ» ½ÇÇàÇÒ ¶§¸¶´Ù PHP chroot ȯ°æ¿¡ ÇÏµå ¸µÅ©¸¦ »ý¼ºÇØ Áà¾ß ÇÑ´Ù.
ln /chroot/mysql/tmp/mysql.sock /chroot/httpd/tmp/
/chroot/mysql/tmp/mysql.sock socket °ú /chroot/httpd/tmp µð·ºÅ丮´Â ¹°¸®ÀûÀ¸·Î °°Àº ÆÄÀÏ ½Ã½ºÅÛ¿¡ À§Ä¡ÇÑ´Ù. ¸¸ÀÏ ±×·¸Áö ¾Ê´Ù¸é ÀÌ ÇÁ·Î±×·¥µéÀº ¼·Î ¿¬µ¿ÇÒ ¼ö ¾øÀ» °ÍÀÌ´Ù. Çϵ帵ũ´Â ÆÄÀÏ ½Ã½ºÅÛ »çÀÌ¿¡¼´Â Àû¿ëµÇÁö ¾Ê´Â´Ù.
6. ¸¶Áö¸· ½ºÅÜ
ƯÁ¤ PHP ¾îÇø®ÄÉÀ̼ÇÀÌ »ç¿ëÇÏ´Â µ¥ÀÌÅͺ£À̽º¿Í ¾îÄ«¿îÆ®¸¦ »ý¼ºÇÑ´Ù. ÀÌ ¾îÄ«¿îÆ®´Â PHP ¾îÇø®ÄÉÀ̼ÇÀÌ »ç¿ëÇÏ´Â µ¥ÀÌÅͺ£À̽º¿¡¸¸ ¿¢¼¼½º°¡ °¡´ÉÇϵµ·Ï ¼³Á¤µÇ°í, mysql µ¥ÀÌÅͺ£À̽º¿¡´Â ¾î¶² ½Ã½ºÅÛÀ̳ª °ü¸®ÀÚ ±ÇÇÑ(FILE, GRANT, ALTER, SHOW DATABASE, RELOAD, SHUTDOWN, PROCESS, SUPER µîµî.)À¸·Îµµ ¿¢¼¼½ºÇÒ ¼ö ÀÖ´Â ±ÇÇÑÀÌ ÁÖ¾îÁ®¼´Â ¾ÈµÈ´Ù.
¸¶Áö¸·À¸·Î ¿î¿µ ½Ã½ºÅÛ ºÎÆýà MySQLÀ» ½ÇÇàÇÏ´Â ½© ½ºÅ©¸³Æ®¸¦ »ý¼ºÇÑ´Ù. ¿¹Á¦ ½ºÅ©¸³Æ®´Â ¾Æ·¡¿Í °°´Ù. http://www.securityfocus.com/unix/images/mysql.sh ¿¡¼ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù:
#!/bin/sh
CHROOT_MYSQL=/chroot/mysql
CHROOT_PHP=/chroot/httpd
SOCKET=/tmp/mysql.sock
MYSQLD=/usr/local/mysql/libexec/mysqld
PIDFILE=/usr/local/mysql/var/`hostname`.pid
CHROOTUID=/usr/local/sbin/chrootuid
echo -n " mysql"
case "$1" in
start)
rm -rf ${CHROOT_PHP}/${SOCKET}
nohup ${CHROOTUID} ${CHROOT_MYSQL} mysql ${MYSQLD} >/dev/null 2>&1 &
sleep 5 && ln ${CHROOT_MYSQL}/${SOCKET} ${CHROOT_PHP}/${SOCKET}
;;
stop)
kill `cat ${CHROOT_MYSQL}/${PIDFILE}`
rm -rf ${CHROOT_MYSQL}/${SOCKET}
;;
*)
echo ""
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0
FreeBSD ½Ã½ºÅÛÀÇ °æ¿ì, À§ÀÇ ½ºÅ©¸³Æ®´Â /usr/local/etc/rc.d µð·ºÅ丮¿¡ mysql.sh ¶ó´Â À̸§À¸·Î ÀúÀåµÇ¾î¾ß ÇÑ´Ù.
6.1 ¿ä¾à
À§ÀÇ ¹æ¹ýµéÀ» Àû¿ë½ÃÅ°¸é MySQL º¸¾ÈÀº °ÈµÉ °ÍÀÌ´Ù. µ¥ÀÌÅͺ£À̽º¸¦ chroot ȯ°æ¿¡¼ ½ÇÇàÇÏ°í, 3306/tcp Æ÷Æ®·Î ¸®½º´×ÇÏÁö ¸øÇϵµ·Ï ÇÏ°í, ÃßÃøÇϱ⠾î·Á¿î Æнº¿öµå¸¦ »ç¿ëÇÏ¸é µðÆúÆ®·Î ¼³Ä¡ÇßÀ» ¶§ ´çÇÒ ¼ö ÀÖ´Â °ø°ÝÀ» ¸éÇÒ ¼ö ÀÖ´Ù. 100% ¾ÈÀüÇÑ ¹æ¹ýÀº ¾ø´Ù. ±×·¯³ª À§ÀÇ ¹æ¹ýµéÀ» Àû¿ë½ÃÅ°¸é ÃÖ¼ÒÇÑ ºÒ·®ÇÑ ¶æÀ» Ç°°í À¥¼¹ö¸¦ ¹æ¹®ÇÏ´Â »ç¿ëÀÚµé·ÎºÎÅÍÀÇ °ø°Ý °¡´É¼ºÀ» Á¦ÇÑÇÒ ¼ö´Â ÀÖÀ» °ÍÀÌ´Ù.
½ÃÅ¥¸®Æ¼Æ÷Ä¿½º