Operation Security - Joungkyun/JSBoard GitHub Wiki
##1. Upload Directory μ ν
λ³΄ν΅ CGI λ°©μμ ν΅ν upload μ κ΄λ ¨νμ¬ λ³΄μλ¬Έμ κ° λ§μ΄ λ°μμ νκ³ μλ€. νμ§λ§ λ¨μν CGI μ μ½λλ§ μμ‘΄νμ¬ λ³΄μλ¬Έμ λ₯Ό λ°©μ§ νλ€λ κ²μ 무리λΌκ³ μκ°μ΄ λμ΄ apacheμ μ€μ file μμ μμ²μ μΌλ‘ μ λ‘λ file μ λν΄μ μ€νμ΄ λμ§ μλλ‘ νλ μ€μ μ μ μ© μμΌ λ³΄μλ€. νμ¬ νμμ κ°μΈ μλ²μ kldp serverμμ μ μ©μ΄ λμ΄ μμΌλ©° νΉν νΈμ€ν μλ²μ κ°μ΄ μ¬λ¬ κ³μ λ€μ΄ μ¬μ©μ νλ κ²½μ°μ JSBoard λ₯Ό μ¬μ©ν μλ μκΈ° λλ¬Έμ μ΄ μ ν μ ν΄ λλ κ²μ κΆμ₯νλ€.
μ€μ μ λ€μκ³Ό κ°μ΄ ν μ μλ€.
<DirectoryMatch "^/.*/jsboard/data">
AddType application/x-httpd-php3-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins
AddType application/x-httpd-php-source .phps .php .ph .php3 .cgi .sh .pl .html .htm .shtml .vbs .ins
ErrorDocument 403 http://domain.com/ErrorMSG/error_msg.php?l=ko&c=403
<Files ~ ".*\.ph$">
Order allow,deny
Deny from all
</Files>
</DirectoryMatch>
μ΄ μ€μ μ μλ―Έλ jsboard/dataλΌλ λλ ν 리 μλμ μλ μ΄λ ν κ²½λ‘μ dataλΌλ μ΄λ¦μ λλ ν 리μμ .phps .php .ph .php3 .cgi .vbs .ins .sh .pl .htm .html .shtml μ νμ₯μλ₯Ό κ°μ§κ³ μμΌλ©΄ source λ₯Ό μΆλ ₯νλΌλ μλ―Έμ΄λ©° μ£Όμ ν κ²μ μ¬κΈ°μ ν¨μ€μλ κ°μ κ²μ΄ λ€μ΄κ° μλ source λ₯Ό μ¬λ € λμΌλ©΄ μλλ€λ κ²μ μ£Όμν΄μΌ νλ€. μμ κ²½λ‘λ κ²μν λλ ν 리 μ΄λ¦μ μ΄λ»κ² νλλμ λ°λΌ μμ μ ν΄ μ€μΌ νλ€.
λν data λΌλ μ΄λ¦μ λλ ν 리 μλλ‘ .phλ‘ μ§μ μ κ·Όν κ²½μ°μλ http://domain.com/ErrorMSG/error_msg.php?l=ko&c=403 νμ΄μ§λ₯Ό μΆλ ₯ νλΌλ μλ―Έμ΄λ€.
μ΄ μ€μ μ root μ κΆνλ§ κ°μ§κ³ μμΌλ©΄ λꡬλ λ€ μ€μ μ ν΄ μ£Όλ κ²μ΄ μ’μΌλ©° λ§μ½ κ³μ μ μ λ€μ΄λΌκ³ ν΄λ μλ² κ΄λ¦¬μμκ² μ΄ μ€μ μ ν΄ λ¬λΌκ³ νλ κ²μ΄ μ’λ€. μ΄ μ€μ μ μν΄μ μ’μκ²μ΄ νλλ μμν λ μλ§ λ€ ν΄μ€ κ²μ΄λ€.
##2. DB μνΈ κ΄λ¦¬
κ³μ μ μ λ€μ κ²½μ°μλ db μ password λ₯Ό κ°μ§κ³ μλ fileμ 보νΈνκΈ° μν κ²μ μ€λͺ νλ€. μ¦ λ€λ₯Έ μ μ κ° db μ ν¨μ€μλλ₯Ό λ³Όμ μλλ‘ νκΈ° μν κ²μΌλ‘ μ΄ λΆλΆμ root(μλ² κ΄λ¦¬μ) κ° ν΄ μ£Όμ΄μΌ ν λΆλΆμ΄λ€. λ§μ½ μ΄κ²μ΄ λΆκ°λ₯ νλ€λ©΄ μ΄ νμΌλ€μ κΆνμ 606 μΌλ‘ κ·Έλ₯ λλ©΄ λλ€. μ¦,
- jsbaord/config/global.php,
- jsboard/config/spma_list.php,
μ λν group μμ κΆμ nobody λ‘ μ§μ ν΄ λ¬λΌκ³ ν΄μΌ νλ€ (Debian μ¬μ©μ λΌλ©΄ www-data λ‘ ν΄μΌ ν κ²μ΄κ³ , Redhat/CentOS/Fedora μ κ²½μ°μλ apache μ΄λ€. λ€λ₯Έ OSλ λͺ¨λ₯΄κ² λ€. httpd.conf μ Group μ§μμμ μ€μ λμ΄ μλ κ°μ νμΈμ ν΄μ ν΄ λ¬λΌκ³ νλ€) μ¦
[root@host jsboard]$ chgrp nobody config/global.php (rootκ° μ€νν΄μΌ νλ λͺ
λ Ή)
[root@host jsabord]$ chgrp nobody config/spam_list.txt (rootκ° μ€νν΄μΌ νλ λͺ
λ Ή)
λͺ λ Ήμ μ€νν΄ λ¬λΌκ³ ν΄μΌ νλ€. μ΄λ₯Ό μννλ©΄ μλμ κ°μ΄ μμ κΆμ κ°μ§κ² λλ€. μ΄κ²μ account λ₯Ό μ€νν νμ νν μΌλ€μ΄λ€. (Debianμ κ²½μ°μλ nobodyκ° μλλΌ www-dataκ° λμ΄μΌ νλ€. Redhat/CentOS/Fedora μ κ²½μ°μλ apache μΌ μλ μλ€.)
-rw-rw---- accountname nobody config/global.php
-rw-rw---- accountname nobody config/spam_list.txt
λ§μ½ root κ° μ΄λ₯Ό μνμ§ μκ±°λ λλ λΆμ±μ€ν root λΌλ©΄ λ€μκ³Ό κ°μ΄
[root@host jsabord]$ chmod 606 config/global.php
[root@host jsboard]$ chmod 606 config/spam_list.txt
μ μ€ννκ³ , νΌλ―Έμ μ λ€μκ³Ό κ°μ΄ λλ€.
-rw----rw- accountname accountname config/global.php
-rw----rw- accountname accountname config/spam_list.txt
νμ§λ§ μ΄λ κ² νμ κ²½μ° μ΄μμ κ°λ₯νλ 보μμ μ’μ§λ μλ€. κ·Έλ¦¬κ³ μ£Όμ ν κ²μ account user μ κΆνμΌλ‘ μ€μΉ μμλ 보μμ λ¬Έμ μ±μ΄ λλλ μ μμΌλ home directoryμ κΆνμ κΌ 711λ‘ ν΄μΌνλ€.