๋ค์ ํ๋ฒ ์๋
ํ์ธ์! ์ ๊ฐ์ข ๊ทธ๋ฃน์ ์์
์ด ๋ด์ผ๋ถํฐ ์์๋ฉ๋๋ค.
์ด์ ํํ ๋ฆฌ์ผ์์๋ ์ฌ์ฉ๋ฒ์ ์๋ ค๋๋ ธ์ต๋๋ค. pam_cracklib
์์คํ
์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ ๋ณต์กํ๊ฒ ๋ง๋ค๊ธฐ ์ํด pam_pwquality
๊ต์ฒด cracklib
์ผ๋ก pam
๋น๋ฐ๋ฒํธ ํ์ธ์ ์ํ ๊ธฐ๋ณธ ๋ชจ๋. ๊ธฐ์ค ์น์ pam_pwquality
Ubuntu ๋ฐ CentOS๋ฟ๋ง ์๋๋ผ ๊ธฐํ ์ฌ๋ฌ OS์์๋ ์ง์๋ฉ๋๋ค. ์ด ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์ํธ ๊ฐ๋ ํ์ค์ ์๋ฝํ๋๋ก ํ๋ ์ํธ ์ ์ฑ
์ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์ค๋ซ๋์ ๋น๋ฐ๋ฒํธ์ ๋ํ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉ์๊ฐ ๋๋ฌธ์, ์๋ฌธ์, ์ซ์ ๋๋ ๊ธฐํ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ด์์ต๋๋ค. ๋น๋ฐ๋ฒํธ ๋ณต์ก์ฑ์ ๋ํ ์ด๋ฌํ ๊ธฐ๋ณธ ๊ท์น์ ์ง๋ XNUMX๋ ๋์ ๋๋ฆฌ ํ๋ณด๋์์ต๋๋ค. ์ด๊ฒ์ด ์ข์ ๊ดํ์ธ์ง ์๋์ง์ ๋ํด ๋ง์ ๋ ผ์๊ฐ ์์์ต๋๋ค. ์ด๋ฌํ ๋ณต์กํ ์กฐ๊ฑด์ ์ค์ ํ๋ ๊ฒ์ ๋ฐ๋ํ๋ ์ฃผ๋ ์ฃผ์ฅ์ ์ฌ์ฉ์๊ฐ ์ข ์ด์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ด์ ์์ ํ์ง ์๊ฒ ๋ณด๊ดํ๋ค๋ ๊ฒ์ด์์ต๋๋ค.
์ต๊ทผ ์๋ฌธ์ ์ฌ์ง๊ฐ ์๋ ๋ ๋ค๋ฅธ ์ ์ฑ ์ ์ฌ์ฉ์๊ฐ x์ผ๋ง๋ค ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋๋ก ๊ฐ์ ํ๊ณ ์์ต๋๋ค. ์ด๋ ์์ ์๋ ํด๋กญ๋ค๋ ์ฐ๊ตฌ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค.
์ด๋ฌํ ํ ๋ก ์ฃผ์ ์ ๋ํด ๋ง์ ๊ธฐ์ฌ๊ฐ ์์ฑ๋์์ผ๋ฉฐ ์ด๋ ํ๋์ ๊ด์ ๋๋ ๋ค๋ฅธ ๊ด์ ์ ์ ์ฆํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ด ๊ธฐ์ฌ์์ ๋ ผ์ํ ๋ด์ฉ์ด ์๋๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ๋ณด์ ์ ์ฑ ์ ๊ด๋ฆฌํ๊ธฐ๋ณด๋ค๋ ๋น๋ฐ๋ฒํธ ๋ณต์ก์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
๋น๋ฐ๋ฒํธ ์ ์ฑ ์ค์
์๋์๋ ๋น๋ฐ๋ฒํธ ์ ์ฑ
์ต์
๊ณผ ๊ฐ ์ต์
์ ๋ํ ๊ฐ๋ตํ ์ค๋ช
์ด ๋์ ์์ต๋๋ค. ๊ทธ ์ค ๋ค์๋ ๋ชจ๋์ ๋งค๊ฐ๋ณ์์ ์ ์ฌํฉ๋๋ค. cracklib
. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด ์์คํ
์์ ์ ์ฑ
์ ๋ ์ฝ๊ฒ ํฌํ
ํ ์ ์์ต๋๋ค.
- ๋ํฌํฌ โ ์ด์ ๋น๋ฐ๋ฒํธ์ ์์ด์๋ ์ ๋๋ ์ ๋น๋ฐ๋ฒํธ์ ๋ฌธ์ ์์ ๋๋ค. (๊ธฐ๋ณธ๊ฐ 5)
- Minlen โ ์ต์ ๋น๋ฐ๋ฒํธ ๊ธธ์ด. (๊ธฐ๋ณธ๊ฐ 9)
- ๋ฌด์ ์ฉ โ ๋๋ฌธ์ ์ฌ์ฉ์ ์ํ ์ต๋ ํฌ๋ ๋ง ์(๋งค๊ฐ๋ณ์ > 0์ธ ๊ฒฝ์ฐ) ๋๋ ์ต์ ํ์ ๋๋ฌธ์ ์(๋งค๊ฐ๋ณ์ < 0์ธ ๊ฒฝ์ฐ). ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
- ์ ์ฉ โ ์๋ฌธ์ ์ฌ์ฉ์ ํ์ํ ์ต๋ ํฌ๋ ๋ง ์(๋งค๊ฐ๋ณ์ > 0์ธ ๊ฒฝ์ฐ) ๋๋ ํ์ํ ์ต์ ์๋ฌธ์ ์(๋งค๊ฐ๋ณ์ < 0์ธ ๊ฒฝ์ฐ)์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
- ์ ์ฉ ๊ฑฐ๋ โ ์ซ์ ์ฌ์ฉ์ ํ์ํ ์ต๋ ํฌ๋ ๋ง ์(๋งค๊ฐ๋ณ์ > 0์ธ ๊ฒฝ์ฐ) ๋๋ ํ์ํ ์ต์ ์ซ์ ์(๋งค๊ฐ๋ณ์ < 0์ธ ๊ฒฝ์ฐ)์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
- ๊ทธ๋ ๋ฏฟ๋๋ค โ ๋ค๋ฅธ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ต๋ ํฌ๋ ๋ง ์(๋งค๊ฐ๋ณ์ > 0์ธ ๊ฒฝ์ฐ) ๋๋ ํ์ํ ์ต์ ๊ธฐํ ๊ธฐํธ ์(๋งค๊ฐ๋ณ์ < 0์ธ ๊ฒฝ์ฐ). ๊ธฐ๋ณธ๊ฐ์ 1์ ๋๋ค.
- ์ต์ ํด๋์ค โ ํ์ํ ์์ ์๋ฅผ ์ค์ ํฉ๋๋ค. ํด๋์ค์๋ ์์ ๋งค๊ฐ๋ณ์(๋๋ฌธ์, ์๋ฌธ์, ์ซ์, ๊ธฐํ ๋ฌธ์)๊ฐ ํฌํจ๋ฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค.
- ์ต๋ ๋ฐ๋ณต โ ๋น๋ฐ๋ฒํธ์์ ๋ฌธ์๊ฐ ๋ฐ๋ณต๋ ์ ์๋ ์ต๋ ํ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค.
- ์ต๋ ํด๋์ค ๋ฐ๋ณต โ ํ ํด๋์ค์ ์ต๋ ์ฐ์ ๋ฌธ์ ์์ ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค.
- ์ง์ค์ฒดํฌ โ ๋น๋ฐ๋ฒํธ์ ์ฌ์ฉ์ GECOS ๋ฌธ์์ด์ ๋จ์ด๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. (์ฌ์ฉ์ ์ ๋ณด, ์ฆ ์ค๋ช , ์์น ๋ฑ) ๊ธฐ๋ณธ๊ฐ์ 0(๋๊ธฐ)์ ๋๋ค.
- dictpath โ cracklib ์ฌ์ ์ผ๋ก ๊ฐ๋ด ์๋ค.
- ๋์ ๋ง โ ๋น๋ฐ๋ฒํธ์ ๊ธ์ง๋๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ๋จ์ด(ํ์ฌ๋ช , โ๋น๋ฐ๋ฒํธโ๋ผ๋ ๋จ์ด ๋ฑ).
๋์ถ์ด๋ผ๋ ๊ฐ๋ ์ด ์ด์ํ๊ฒ ๋ค๋ฆฌ๋๋ผ๋ ๊ด์ฐฎ์ต๋๋ค. ์ ์์ ๋๋ค. ์ด์ ๋ํด์๋ ๋ค์ ์น์ ์์ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
๋น๋ฐ๋ฒํธ ์ ์ฑ ๊ตฌ์ฑ
๊ตฌ์ฑ ํ์ผ ํธ์ง์ ์์ํ๊ธฐ ์ ์ ๊ธฐ๋ณธ ๋น๋ฐ๋ฒํธ ์ ์ฑ ์ ๋ฏธ๋ฆฌ ์ ์ด ๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋์ด๋ ๊ท์น์ ์ฌ์ฉํฉ๋๋ค.
- ๋น๋ฐ๋ฒํธ๋ ์ต์ 15์ ์ด์์ด์ด์ผ ํฉ๋๋ค.
- ๋น๋ฐ๋ฒํธ์ ๋์ผํ ๋ฌธ์๊ฐ ๋ ๋ฒ ์ด์ ๋ฐ๋ณต๋์ด์๋ ์ ๋ฉ๋๋ค.
- ๋ฌธ์ ํด๋์ค๋ ๋น๋ฐ๋ฒํธ์์ ์ต๋ XNUMX๋ฒ๊น์ง ๋ฐ๋ณต๋ ์ ์์ต๋๋ค.
- ๋น๋ฐ๋ฒํธ์๋ ๊ฐ ํด๋์ค์ ๋ฌธ์๊ฐ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
- ์ ๋น๋ฐ๋ฒํธ๋ ์ด์ ๋น๋ฐ๋ฒํธ์ ๋น๊ตํ์ฌ 5๊ฐ์ ์๋ก์ด ๋ฌธ์๋ฅผ ํฌํจํด์ผ ํฉ๋๋ค.
- GECOS ํ์ธ์ ํ์ฑํํฉ๋๋ค.
- โpassword, pass, word, putoriusโ๋ผ๋ ๋จ์ด๋ฅผ ๊ธ์งํฉ๋๋ค.
์ด์ ์ ์ฑ
์ ๋ง๋ จํ์ผ๋ฏ๋ก ํ์ผ์ ํธ์งํ ์ ์์ต๋๋ค. /etc/security/pwquality.conf
์ํธ ๋ณต์ก์ฑ ์๊ตฌ ์ฌํญ์ ์ฆ๊ฐ์ํต๋๋ค. ์๋๋ ์ดํด๋ฅผ ๋๊ธฐ ์ํ ์ค๋ช
์ด ํฌํจ๋ ์์ ํ์ผ์
๋๋ค.
# Make sure 5 characters in new password are new compared to old password
difok = 5
# Set the minimum length acceptable for new passwords
minlen = 15
# Require at least 2 digits
dcredit = -2
# Require at least 2 upper case letters
ucredit = -2
# Require at least 2 lower case letters
lcredit = -2
# Require at least 2 special characters (non-alphanumeric)
ocredit = -2
# Require a character from every class (upper, lower, digit, other)
minclass = 4
# Only allow each character to be repeated twice, avoid things like LLL
maxrepeat = 2
# Only allow a class to be repeated 4 times
maxclassrepeat = 4
# Check user information (Real name, etc) to ensure it is not used in password
gecoscheck = 1
# Leave default dictionary path
dictpath =
# Forbid the following words in passwords
badwords = password pass word putorius
์์๋ค์ํผ ํ์ผ์ ์ผ๋ถ ๋งค๊ฐ๋ณ์๋ ์ค๋ณต๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋งค๊ฐ๋ณ์ minclass
ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค์์ ์ด๋ฏธ ๋ ๊ฐ ์ด์์ ๋ฌธ์๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ์ค๋ณต๋ฉ๋๋ค. [u,l,d,o]credit
. ์ฌ์ฉํ ์ ์๋ ๋จ์ด ๋ชฉ๋ก๋ ์ค๋ณต๋ฉ๋๋ค. ๋ชจ๋ ํด๋์ค๋ฅผ 4๋ฒ ๋ฐ๋ณตํ๋ ๊ฒ์ ๊ธ์งํ๊ธฐ ๋๋ฌธ์
๋๋ค(๋ชฉ๋ก์ ๋ชจ๋ ๋จ์ด๋ ์๋ฌธ์๋ก ์์ฑ๋จ). ์ด๋ฌํ ์ต์
์ ๋น๋ฐ๋ฒํธ ์ ์ฑ
์ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์๋ง ํฌํจ๋์์ต๋๋ค.
์ ์ฑ
์ ์์ฑํ ํ์๋ ์ฌ์ฉ์๊ฐ ๋ค์์ ๋ก๊ทธ์ธํ ๋ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋๋ก ๊ฐ์ ํ ์ ์์ต๋๋ค.
์ฌ๋ฌ๋ถ์ด ์์์ฐจ๋ ธ์ ์๋ ์๋ ๋ ๋ค๋ฅธ ์ด์ํ ์ ์ ํ๋๊ฐ [u,l,d,o]credit
์์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ด๋ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์ซ์๊ฐ ๋น๋ฐ๋ฒํธ์ ํด๋น ๋ฌธ์๋ฅผ ์ฌ์ฉํ ๊ณต๋ก๋ฅผ ์ธ์ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ํ๋์ ์์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉด ํน์ ์๋์ด ํ์ํ๋ค๋ ์๋ฏธ์
๋๋ค.
๋์ถ์ด๋ ๋ฌด์์ ๋๊น?
๋๋ ๊ทธ๊ฒ์ ๋์ถ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์๋ํ๋ฉด ๊ทธ๊ฒ์ด ๊ทธ ๋ชฉ์ ์ ๊ฐ๋ฅํ ํ ์ ํํ๊ฒ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋งค๊ฐ๋ณ์ ๊ฐ์ด 0๋ณด๋ค ํฐ ๊ฒฝ์ฐ ๋น๋ฐ๋ฒํธ ๊ธธ์ด์ "x"์ ๋์ผํ "๋ฌธ์ ํฌ๋ ๋ง" ์๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ชจ๋ ๋งค๊ฐ๋ณ์๊ฐ (u,l,d,o)credit
1๋ก ์ค์ ํ๊ณ ํ์ํ ๋น๋ฐ๋ฒํธ ๊ธธ์ด๊ฐ 6์ธ ๊ฒฝ์ฐ ๊ฐ ๋๋ฌธ์, ์๋ฌธ์, ์ซ์ ๋๋ ๊ธฐํ ๋ฌธ์๊ฐ ํ๋์ ํฌ๋ ๋ง์ ์ ๊ณตํ๋ฏ๋ก ๊ธธ์ด ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ค๋ฉด 6์๊ฐ ํ์ํฉ๋๋ค.
๋น์ ์ด ์ค์นํ๋ ๊ฒฝ์ฐ dcredit
2์์๋ ์ด๋ก ์ ์ผ๋ก 9์ ๊ธธ์ด์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํ๊ณ ์ซ์์ ๋ํด 2์ ํฌ๋ ๋ง์ ์ป์ ์ ์์ผ๋ฉฐ ๋น๋ฐ๋ฒํธ ๊ธธ์ด๋ ์ด๋ฏธ 10์ผ ์ ์์ต๋๋ค.
์ด ์๋ฅผ ๋ณด์ธ์. ๋น๋ฐ๋ฒํธ ๊ธธ์ด๋ฅผ 13์ผ๋ก ์ค์ ํ๊ณ dcredit๋ฅผ 2๋ก ์ค์ ํ๊ณ ๋๋จธ์ง๋ ๋ชจ๋ 0์ผ๋ก ์ค์ ํ์ต๋๋ค.
$ pwscore
Thisistwelve
Password quality check failed:
The password is shorter than 13 characters
$ pwscore
Th1sistwelve
18
๋น๋ฐ๋ฒํธ ๊ธธ์ด๊ฐ 13์ ๋ฏธ๋ง์ด์ด์ ์ฒซ ๋ฒ์งธ ํ์ธ์ ์คํจํ์ต๋๋ค. ๋ค์๋ฒ์ ๋ฌธ์ "I"๋ฅผ ์ซ์ "1"๋ก ๋ณ๊ฒฝํ๊ณ ํด๋น ์ซ์์ ๋ํด 13ํฌ๋ ๋ง์ ์ป์์ผ๋ฏ๋ก ๋น๋ฐ๋ฒํธ๋ XNUMX์ด ๋์์ต๋๋ค.
๋น๋ฐ๋ฒํธ ํ ์คํธ
ํจํค์ง libpwquality
๊ธฐ์ฌ์ ์ค๋ช
๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ํ๋ก๊ทธ๋จ๋ ๊ฐ์ด ๋์ค๋ค์ pwscore
, ๋น๋ฐ๋ฒํธ ๋ณต์ก์ฑ์ ํ์ธํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์์์๋ ๋์ถ์ ํ์ธํ๋ ๋ฐ ์ฌ์ฉํ์ต๋๋ค.
๊ณต์ต ์ฌ์
pwscore
์์ ์ฝ์ต๋๋ค
๋น๋ฐ๋ฒํธ ํ์ง ์ ์๋ ๋งค๊ฐ๋ณ์์ ๊ด๋ จ์ด ์์ต๋๋ค. minlen
๊ตฌ์ฑ ํ์ผ์์. ์ผ๋ฐ์ ์ผ๋ก 50์ ๋ฏธ๋ง์ ์ ์๋ โ๋ณดํต ๋น๋ฐ๋ฒํธโ๋ก ๊ฐ์ฃผ๋๋ฉฐ, ๊ทธ ์ด์์ ์ ์๋ โ๊ฐ๋ ฅํ ๋น๋ฐ๋ฒํธโ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ํ์ง ๊ฒ์ฌ(ํนํ ๊ฐ์ ๊ฒ์ฆ)๋ฅผ ํต๊ณผํ ๋ชจ๋ ๋น๋ฐ๋ฒํธ cracklib
) ์ฌ์ ๊ณต๊ฒฉ์ ๊ฒฌ๋์ผ ํ๋ฉฐ, ์ค์ ์ผ๋ก 50์ ์ด์์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. minlen
๊ธฐ๋ณธ์ ์ผ๋ก๋ brute force
๊ณต๊ฒฉ.
๊ฒฐ๋ก
์กฐ์ pwquality
โ ์ฌ์ฉ์ ๋ถํธํจ์ ๋นํด ์ฝ๊ณ ๊ฐํธํ๋ค cracklib
์ง์ ํ์ผ ํธ์ง์ผ๋ก pam
. ์ด ๊ฐ์ด๋์์๋ Red Hat 7, CentOS 7 ๋ฐ Ubuntu ์์คํ
์์ ๋น๋ฐ๋ฒํธ ์ ์ฑ
์ ์ค์ ํ ๋ ํ์ํ ๋ชจ๋ ๋ด์ฉ์ ๋ค๋ฃจ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ ์์ธํ ์ค๋ช
๋๋ ๊ฒฝ์ฐ๊ฐ ๊ฑฐ์์๋ ๋์ถ ๊ฐ๋
์ ๋ํด์๋ ์ด์ผ๊ธฐํ๊ธฐ ๋๋ฌธ์ ์ด์ ์ ์ ํ์ง ์์ ์ฌ๋๋ค์๊ฒ๋์ด ์ฃผ์ ๊ฐ ์ข
์ข
๋ถ๋ถ๋ช
ํ์ต๋๋ค.
์ถ์ฒ :
์ ์ฉํ ๋งํฌ :
์ถ์ฒ : habr.com