리눅스를 처음에 설치하면 보안에 관련된 설정이 아무것도 되어 있지 않습니다.
이 글에서는 서버를 처음 설치하고 반드시 해야하는 보안 설정에 대해 다뤄보려고 합니다.
설정 내용들 중에는 자신의 서버와 환경이 맞지 않을 수도 있으니, 조심하시기 바랍니다.
보안설정 시나리오는 다음과 같습니다.
1. 원격지에서 root는 로그인을 못하도록 한다.
2. 특정한 사용자에게만 su(switch user)를 통해서 root 권한을 줄것이다.
3. 패스워드의 유효기간은 90일이고 , 패스워드의 최고 길이는 8글자이다.
4. 패스워드는 반드시 하나 이상의 대/소문자, 숫자. 특수기호가 들어가야 한다.
1. root의 원격접속 막기
원격접속을 관리하는 sshd 의 설정파일을 통해서 제어 할 수 있습니다.
/etc/ssh/sshd_config 파일에서
PermitRootLogin을 no 로 바꿔줍니다.
2. 원격접속용 일반 사용자 생성
root가 원격 접속이 불가능한 상태이므로, 원격 접속을 위한 일반 계정을 하나 생성합니다.
shell ]# adduser sysadmin
리눅스는 기본적으로 모든 사용자가 su (switch user)명령을 사용해서 root로 접근이 가능하지만 우리는 특정 그룹(대표그룹 wheel)에 su의 사용권한을 줄것입니다.
그러기 위해서는 먼저 생성한 일반계정의 그룹에 wheel 그룹을 추가합니다.
shell ]# usermod -G wheel sysadmin
그리고 PAM에서 wheel 그룹만 su를 사용할 수 있도록 변경해줍니다.
shell ]# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session optional pam_xauth.so
~
auth required pam_wheel.so use_uid 의 주석을 해제 합니다.
3. 패스워드의 유효기간을 90일로 설정
패스워드의 유효 기간과 최소길이 설정은 /etc/login/defs 파일에서 설정합니다.
shell ]# vi /etc/login.defs
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
PASS_MAX_DAYS 90 # 패스워드의 최대 유효기간
PASS_MIN_DAYS 0 # 패스워드를 바꿀 수 있는 최소한의 날짜.
PASS_MIN_LEN 5 # 패스워드 최소 길이
PASS_WARN_AGE 7 #패스워드 만료일전에 경고를 하는 날짜
4. RHEL 6, CentOS 6 에서의 패스워드 복잡도 설정
패스워드에 대문자, 소문자, 숫자, 특수기호(대소문자, 숫자를 제외한 기타문자)를 반드시 입력하도록 하려면 /etc/pam.d/system-auth 를 수정합니다.
shell ]# vi /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth requried pam_tally2.so per_user
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-1 dcredit=-1 ocredit=-1 lcredit=-1
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
크레디드 설명
retry=N : 패스워드 입력 실패 시 재시고 횟수
difok=N : 기존패스워드와 비교 기본값10 (50%)
minlen=N : 패스워드 최소 길이
dcredit=N : 숫자에 주어지는 크레디트 값
ucredit=N : 영어대문자에 주어지는 크레디트 값
lcredit=N : 영어소문자에 주어지는 크레디트 값
ocredit=N : 숫자,영어대/소문자를 제외한 기타문자
각 항목에서 -1을 주면 반드시 해당하는 문자를 포함 시켜야함.
4. RHEL 7, CentOS 7에서의 패스워드 복잡도 설정
RHEL 7 이상부터는 패스워드 복잡도를 설정할때 /etc/security/pwquality.conf
파일을 수정해서 합니다.
지사자의 설명 및 변수는 RHEL 6과 동일하므로 다음과 같이 합니다.
shell]# vi /etc/security/pwquality.conf
minlen = 8
minclass = 1
maxrepeate = 0
maxclassrepeat = 0
lcredit = -1
ucredit = -1
dcredit = -1
ocredit = -1
출처: http://oktopbang.tistory.com/entry/패스워드-복잡성-적용-방법 [옥탑방람보]
이 글에서는 서버를 처음 설치하고 반드시 해야하는 보안 설정에 대해 다뤄보려고 합니다.
설정 내용들 중에는 자신의 서버와 환경이 맞지 않을 수도 있으니, 조심하시기 바랍니다.
보안설정 시나리오는 다음과 같습니다.
1. 원격지에서 root는 로그인을 못하도록 한다.
2. 특정한 사용자에게만 su(switch user)를 통해서 root 권한을 줄것이다.
3. 패스워드의 유효기간은 90일이고 , 패스워드의 최고 길이는 8글자이다.
4. 패스워드는 반드시 하나 이상의 대/소문자, 숫자. 특수기호가 들어가야 한다.
1. root의 원격접속 막기
원격접속을 관리하는 sshd 의 설정파일을 통해서 제어 할 수 있습니다.
/etc/ssh/sshd_config 파일에서
PermitRootLogin을 no 로 바꿔줍니다.
2. 원격접속용 일반 사용자 생성
root가 원격 접속이 불가능한 상태이므로, 원격 접속을 위한 일반 계정을 하나 생성합니다.
shell ]# adduser sysadmin
리눅스는 기본적으로 모든 사용자가 su (switch user)명령을 사용해서 root로 접근이 가능하지만 우리는 특정 그룹(대표그룹 wheel)에 su의 사용권한을 줄것입니다.
그러기 위해서는 먼저 생성한 일반계정의 그룹에 wheel 그룹을 추가합니다.
shell ]# usermod -G wheel sysadmin
그리고 PAM에서 wheel 그룹만 su를 사용할 수 있도록 변경해줍니다.
shell ]# vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid
auth include system-auth
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session optional pam_xauth.so
~
auth required pam_wheel.so use_uid 의 주석을 해제 합니다.
3. 패스워드의 유효기간을 90일로 설정
패스워드의 유효 기간과 최소길이 설정은 /etc/login/defs 파일에서 설정합니다.
shell ]# vi /etc/login.defs
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
PASS_MAX_DAYS 90 # 패스워드의 최대 유효기간
PASS_MIN_DAYS 0 # 패스워드를 바꿀 수 있는 최소한의 날짜.
PASS_MIN_LEN 5 # 패스워드 최소 길이
PASS_WARN_AGE 7 #패스워드 만료일전에 경고를 하는 날짜
4. RHEL 6, CentOS 6 에서의 패스워드 복잡도 설정
패스워드에 대문자, 소문자, 숫자, 특수기호(대소문자, 숫자를 제외한 기타문자)를 반드시 입력하도록 하려면 /etc/pam.d/system-auth 를 수정합니다.
shell ]# vi /etc/pam.d/system-auth
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth requried pam_tally2.so per_user
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_deny.so
account required pam_unix.so
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 ucredit=-1 dcredit=-1 ocredit=-1 lcredit=-1
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
크레디드 설명
retry=N : 패스워드 입력 실패 시 재시고 횟수
difok=N : 기존패스워드와 비교 기본값10 (50%)
minlen=N : 패스워드 최소 길이
dcredit=N : 숫자에 주어지는 크레디트 값
ucredit=N : 영어대문자에 주어지는 크레디트 값
lcredit=N : 영어소문자에 주어지는 크레디트 값
ocredit=N : 숫자,영어대/소문자를 제외한 기타문자
각 항목에서 -1을 주면 반드시 해당하는 문자를 포함 시켜야함.
4. RHEL 7, CentOS 7에서의 패스워드 복잡도 설정
RHEL 7 이상부터는 패스워드 복잡도를 설정할때 /etc/security/pwquality.conf
파일을 수정해서 합니다.
지사자의 설명 및 변수는 RHEL 6과 동일하므로 다음과 같이 합니다.
shell]# vi /etc/security/pwquality.conf
minlen = 8
minclass = 1
maxrepeate = 0
maxclassrepeat = 0
lcredit = -1
ucredit = -1
dcredit = -1
ocredit = -1
minlen = 8
minclass = 1
maxrepeat = 0
maxclassrepeat = 0
lcredit = 0
ucredit = 0
dcredit = -1
ocredit = -1
출처: http://webinformation.tistory.com/97 [끄적끄적]
출처: http://webinformation.tistory.com/97 [끄적끄적]
retry=N : 패스워드 입력 실패 시 재시도횟수
difok=N : 기존 패스워드와 비교. 기본값10 (50%)
minlen=N : 크레디트를 더한 패스워드최소길이
dcredit=N : 숫자에 주어지는 크레디트값. 기본 1
udredit=N : 영어대문자에 주어지는 크레디트값
lcredit=N : 영어 소문자에 주어지는 크레디트값
ocredit=N : 숫자, 영어대/소문자를 제외한 기타문자
출처: http://oktopbang.tistory.com/entry/패스워드-복잡성-적용-방법 [옥탑방람보]
댓글
댓글 쓰기