์์ํ๊ธฐ
์ ํ์ ๋ณด
Admin ๋ก๊ทธ์ธ ํ์ด์ง๋ ComusThumbz ๊ด๋ฆฌ ํจ๋์ ์์ ํ ํญ๋ชฉ ํฌ์ธํธ์ ๋๋ค. ๊ทธ๊ฒ์ ๋น์จ ์ ํ, brute ํ ๋ณดํธ ๋ฐ ์๋์ ์ธ ์ํธ ํด์ ํฅ์์ ํฌํจํ์ฌ ์ง๋ณด๋ ์์ ํน์ง์ ๊ฐ์ง ์ํธ ๊ทผ๊ฑฐํ ์ ์ฆ์ ์ ๊ณตํฉ๋๋ค. ์ฒซ ํ์ด์ง ๊ด๋ฆฌ์๋ ๋ฐฑ์๋์ ์ก์ธ์ค ํ ๋ ๋ณผ ์ ์์ต๋๋ค.
[์คํฌ๋ฆฐ ์ท: ctlogin-full-page]
์ด ํ์ด์ง๋ก ์ด๋
๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ๋ก๊ทธ์ธ ํ์ด์ง๋ฅผ ์ง์ ์ก์ธ์ค:
- URL ๋ณธ:
https://yourdomain.com/ct/admin/ctlogin.php - ๊ณต๊ธ ๋ฅ๋ ฅ:
https://yourdomain.com/ct/admin/(์ ์น๋์ง ์์ ๊ฒฝ์ฐ ctlogin.php๋ก ์ด๋ํฉ๋๋ค)
์ด๋ฏธ ๋ก๊ทธ์ธํ ๊ฒฝ์ฐ, ์ด ํ์ด์ง์ ์ ์ํ๋ฉด ๋ฉ์ธ ๋์๋ณด๋์ ์๋์ผ๋ก ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
์์คํ ์๊ตฌ ์ฌํญ
์ด ํ์ด์ง๋ ๋ค์๊ณผ ๊ฐ์ ์์คํ ์์กด์ฑ์ ์ ๋๋ก ์๋ํด์ผ ํฉ๋๋ค.
PHP ์๊ตฌ ์ฌํญ
ํ์ PHP ํ์ฅ
ํ์ PHP ๊ธฐ๋ฅ
ํด๋ ๊ถํ
์๋ฒ ์๊ตฌ ์ฌํญ
์ค์น ์๊ตฌ ์ฌํญ
์ด ๋ฌธ์๋ ์ค์น ์คํฌ๋ฆฝํธ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํด์ผ ํฉ๋๋ค.
ํด๋ ํ์
ํ์ด์ง ๋ฐฐ์น
[์คํฌ๋ฆฐ์ท: ctlogin-annotated-layout]
ํ์ด์ง ์์
ํน์ง & ๊ธฐ๋ฅ
๋น๋ฐ๋ฒํธ ์ธ์ฆ
๋ก๊ทธ์ธ ์์คํ ์ ๋ ๊ฐ์ ํ๋ ํด์๋ ์ํธ์ ๋ ๊ฑฐ์ ์ผ๋ฐ ํ ์คํธ ์ํธ๋ฅผ ๋ฐฑ์๋ ํธํ์ฑ์ ์ง์ํฉ๋๋ค.
๊ณต๊ธ ๋ฅ๋ ฅ:
- ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ๋ฐ ์์ ์ ์ถ
- IP๊ฐ ์ ํ๋๋ ๊ฒฝ์ฐ ์์คํ ์ฒดํฌ (blocked)
- ์ฐจ๋จ๋์ง ์์ ๊ฒฝ์ฐ, retrieves admin ๋น๋ฐ๋ฒํธ
tblSettings - ๋น๋ฐ๋ฒํธ๊ฐ ํด์ ๋๋ ์ผ๋ฐ ํ ์คํธ์ธ์ง ํ์ธ:
- - - ๋ง์น: ์ ํ์ ๋ณด passwordverify() ์์ ํ ๋น๊ต๋ฅผ ์ํด - ์ผ๋ฐ ํ
์คํธ: ์ง์ ๋ฌธ์์ด ๋น๊ต (legacy mode)
- ์ฑ๊ณต์:
- ์ธ์ฆ์์ํ ์ธ์ ๋ณ์ ์ค์ - ๋ฐฑ์ ํธํ์ฑ์์ํ ๋ ๊ฑฐ์ ์ฟ ํค ์ค์ - IP ์ฉ ๋ฆฌ์ ์๋ ์ ํ๊ธฐ - ๋ก๊ทธ ์ฑ๊ณต์ ์ธ ๋ก๊ทธ์ธ - Redirects to main.php
- ์คํจ์:
- ๋ ์ดํธ ์ ํ๊ธฐ์์ ๊ธฐ๋ก ์๋ - ๋ก๊ทธ ์คํจ ์๋ - ๋๋จธ์ง ์๋์ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํ์ํฉ๋๋ค - 1 ์ด์ ์ง์ฐ์ ์ถ๊ฐํ์ญ์์ค.
์์คํ ์ ์ผ๋ฐ ํ ์คํธ ์ํธ๋ฅผ ์๋์ผ๋ก ์ ๊ทธ๋ ์ด๋ํ์ฌ ์ฑ๊ณต์ ์ธ ๋ก๊ทธ์ธ์ bcrypt ํด์๋ฅผ ํ๋ณดํฉ๋๋ค. ์ด์ ์ํธ๋ฅผ ์๋์ผ๋ก ์ ๋ฐ์ดํธ ํ ํ์๊ฐ ์์ต๋๋ค.
์๋ ์ ํ / Brute ํ ๋ณดํธ
๋ก๊ทธ์ธ ํ์ด์ง๋ brute force attacks์ ๋ํ ํฌ๊ด์ ์ธ ๋ณดํธ๋ฅผ ํฌํจํฉ๋๋ค.
์๋ ๋ฐฉ๋ฒ:
- ๊ฐ ์คํจํ ๋ก๊ทธ์ธ ์๋๋ IP ์ฃผ์๋ก ๊ธฐ๋ก๋ฉ๋๋ค.
- 5 ํ 15 ๋ถ ์ด๋ด์ ์คํจํ ์๋, IP ์ฐจ๋จ
- ์ฐจ๋จ๋ IP๋ ์นด์ดํธ๋ค์ด ๋ฉ์์ง๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
- ์ฑ๊ณต์ ์ธ ๋ก๊ทธ์ธ์ ํด๋น IP์ ์นด์ดํฐ๋ฅผ ์ฌ์ค์
- ์ค๋๋ ๊ธฐ๋ก์ ์๋์ ์ผ๋ก ์ฒญ์๋ฉ๋๋ค (์๊ตฌ ๋น 1% ํ๋ฅ )
๋จ๊ณ๋ณ ์ฌ์ฉ
์ธ๊ธฐ์๋
- ๋ฐ๋ก๊ฐ๊ธฐ
https://yourdomain.com/ct/admin/ctlogin.php - ๋น๋ฐ๋ฒํธ ์ ๋ ฅ
- ์์ฃผ ๋ฌป๋ ์ง๋ฌธ ์ด๋ฆ * ๊ธฐํ ์ ํ
- ์ฑ๊ณตํ๋ฉด ๋์๋ณด๋์ ๋ฆฌ๋๋ ์ ๋ฉ๋๋ค.
[์คํฌ๋ฆฐ์ท: ctlogin-password-entry]
์ทจ๊ธ ์คํจํ ๋ก๊ทธ์ธ
์๋ชป๋ ์ํธ๋ฅผ ์ ๋ ฅํ๋ฉด:
- ์ค๋ฅ ๋ฉ์์ง๋ ๋๋จธ์ง ์๋๋ฅผ ๋ณด์ฌ์ค๋๋ค.
- 5 ์คํจํ ์๋ ํ์, ๋น์ ์ 15 ๋ถ ๋์ ์ ๊ธ ๊ฒ์ ๋๋ค
- lockout์ ๋ง๋ฃํ๊ฑฐ๋:
[์คํฌ๋ฆฐ์ท: ctlogin-error-message]
Lockout์์ ๋ณต๊ตฌ
๋๋ฌด ๋ง์ ์คํจ ์๋๋ก ์ธํด ์ ๊ฒจ ์๋ค๋ฉด:
(์ฃผ)
- ์ฐจ๋จ์ 15 ๋ถ ํ์ ์๋์ ์ผ๋ก ๋ง๋ฃ๋ฉ๋๋ค
- ์นด์ดํธ๋ค์ด์ ์ค๋ฅ ๋ฉ์์ง์ ํ์๋ฉ๋๋ค.
๋ฌธ์ ํด๊ฒฐ
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๋ก๊ทธ์ธ ์๋ํ์ง ์์
๋ฌธ์ : ๋น๋ฐ๋ฒํธ๊ฐ ์๋ํ์ง ์์ต๋๋ค.
ํด๊ฒฐ์ฑ :
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๋ฐ๋ฒํธ ํ์ธ:
- ํด์๋ผ๋ฉด, ์ผ์์ ์ผ๋ก ์ผ๋ฐ ํ ์คํธ๋ก ์ฌ์ค์
- ์ ํ์ด ์ฐจ๋จ๋๋ ๊ฒฝ์ฐ (tblCMSRateLimits์์ ๋ณด๊ธฐ)
- Verify ์ธ์ ์ ์์ (check php.ini ์ธ์ ์ค์ )
์ธ์ ์์ Persisting
๋ฌธ์ : ๋ก๊ทธ์ธ์ด ์ฑ๊ณตํ์ง๋ง ์ฆ์ ๋ก๊ทธ์ธ๋ฉ๋๋ค.
ํด๊ฒฐ์ฑ :
- PHP ์ธ์ ๊ตฌ์ฑ ํ์ธ:
- ์ธ์ ์ ์ฅ ๊ฒฝ๋ก๋ writable
- ์ฟ ํค ๋๋ฉ์ธ ๋ฌธ์ ํ์ธ (localhost vs ๋๋ฉ์ธ)
- ๋ธ๋ผ์ฐ์ ์ฟ ํค๋ฅผ ์ ๊ฑฐํ๊ณ ๋ค์ ์๋
Lockout ๋ณต๊ตฌ
๋ฌธ์ : ์ ๊ทธ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๊ธฐ์ตํ ์ ์์ต๋๋ค.
ํด๊ฒฐ์ฑ :
๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก
๊ณต๊ธ ๋ฅ๋ ฅ: ํญ์ ๊ด๋ฆฌ์ ๋ก๊ทธ์ธ ํ์ด์ง์ ๋ํ HTTPS๋ฅผ ์ฌ์ฉํ์ฌ ์ํธ ์ฐจ๋จ์ ๋ฐฉ์งํฉ๋๋ค.
- ๊ฐ๋ ฅํ ๋น๋ฐ๋ฒํธ ์ฌ์ฉ
- ์ต์ 12์
- ์๋ถ, ํ๋ถ, ์ซ์, ๊ธฐํธ์ ํผํฉ
- ์ฌ์ ๋จ์ด๋ฅผ ํผํ์ญ์์ค
- ๋น๋ฐ๋ฒํธ
- ์ผ๋ฐ์ ์ผ๋ก ์คํจํ ์๋์ ๋ํ ๋ก๊ทธ๋ฅผ ํ์ธ
- ๊ณต๊ฒฉ์ ๋ํ๋ด๋ ํจํด์ ์๊ณ
- ํ์ํ ๊ฒฝ์ฐ IP whitelisting ๊ตฌํ
- ์ํํธ์จ์ด ์ ๋ฐ์ดํธ
- ๋น๋ฐ๋ฒํธ ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๊ธฐ์ ์ผ๋ก ๊ฐ์ ๋ฉ๋๋ค.
- ์
๋ฐ์ดํธ๋ ๋ณด์ ์์ ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ
- .htaccess๋ฅผ ์ฌ์ฉํ์ฌ ์ถ๊ฐ ์ธ์ฆ ๋ ์ด์ด๋ฅผ ์ถ๊ฐ
- ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๊ด๋ฆฌ์ ์ก์ธ์ค์ ๋ํ IP ํ์ดํธ๋ฆฌ์คํธ ์ฌ์ฉ