[목차]
패스워드 복잡성(1.2)
1. 취약점 분석/평가 방법 상세 가이드
2. 취약점 점검 스크립트 제작
계정 잠금 임계값 설정(1.3)
1. 취약점 분석/평가 방법 상세 가이드
2. 취약점 점검 스크립트 제작
[패스워드 복잡성]
1. 취약점 분석/평가 방법 상세 가이드
1.2 패스워드 복잡성 설정 ■ 점검 분류 항목: 계정 관리 ■ 세부 점검 항목: 패스워드 복잡성 설정 ■ 대상: 리눅스 ■ 위험도: 상 ■ 관련 코드: U-02
(1) 취약점 개요 사용자 계정 및 일반 계정 모두 해당 암호를 유추하기 쉽게 설정할 경우 비인가자의 시스템 접근을 허용하게 하는 위험이 존재함 여러 문자를 혼합한 8자리 이상의 암호를 사용하게 하여 패스워드 복잡성을 높이면 비인가자에 의해 발생하는 침입 공격 발생률을 낮출 수 있음.
(2) 판단기준 양호: 영문 숫자 특수문자가 혼합된 8 글자 이상의 패스워드가 설정된 경우 취약: 영문 숫자 특수문자 혼합되지 않은 8 글자 미만의 패스워드가 설정된 경우
(3) 조치방법 계정과 유사하지 않은 8 글자 이상의 영문 숫자 특수문자의 조합으로 암호 설정
(4) 보안 설정 방법 <부적절한 패스워드 유형> 사전에 나오는 단어나 이들의 조합 길이가 너무 짧거나 공백(NULL)인 패스워드 키보드 자판의 일련의 나열 (예) abcd, qwert, etc 사용자 계정 정보에서 유추 가능한 단어들 (예) 지역명 부서명 계정명 사용자 이름의 이니셜
<패스워드 관리 방법> 영문, 숫자, 특수문자를 조합하여 계정명과 상이한 8자 이상의 패스워드 설정 ※ 다음 각 목의 문자 종류 중 2종류 이상을 조합하여 최소 10자리 이상 또는, 3종류 이상을 조합하여 최소 8자리 이상의 길이로 구성 가. 영문 대문자(26개) 나. 영문 소문자(26개) 다. 숫자(10개) 라. 특수문자(32개) 시스템마다 상이한 패스워드 사용 패스워드를 기록해 놓을 경우 변형하여 기록 가급적 자주 패스워드를 변경할 것
(5) 조치시 영향 패스워드 변경 시 Web, Was, DB연동 구간에서 문제가 발생할 수 있으므로 연동 구간에 미칠 수 있는 영향을 고려하여 적용 필요 |
고객에게 취약점을 어떻게 이해시킬것인가? |
패스워드가 복잡하게 구성되지 않으면, 쉽게 로컬/원격에서 패스워드 크랙툴에 의해 공격 당한다. 따라서 복잡한 암호를 사용할 수 있도록 유도한다. 문자(대문자/소문자), 숫자, 특수 문자, 공백 문자를 섞어서 사용하도록 한다. => Brute Force Attack, Directionary Attack
사이트를 참고하여 강력한 암호 클랙 시간 점검
https://howsecureismypassword.net/
관련문서 |
[실습] 관리자 암호 복구 실습
* Debian 계열/RedHat 계열 암호 복구 하는 방법
* GRUB를 사용한 암호 복구(Single User Mode)
CD 부팅하여 암호 복구
[실습] GRUB 암호 설정
* GRUB 메뉴를 통해 암호 복구 방법 --- 방지 --> GRUB password
* CD을 이용한 암호 복구 방법 --- 방지 --> FirmWare password
* 물리적 보안(Physical Security)
[실습] PAM(Pluggable Athentication Module)
* 사용자 암호 정책
위 실습 내용은 이전 글들 참고!
(정리) 보안 정책
1. 패스워드(password) 관리 정책에 대한 경우
- 복잡한 암호를 사용해야 한다.(문자(대문자/소문자), 숫자, 특수문자, 공백문자)
- 암호의 최소 길이는 8글자 이상으로 한다.
- (예) 암호는 2개의 문자와 한개의 숫자 또는 특수문자가 포함되어야 한다.
암호의 길이는 8글자 이상으로 설정한다.
암호는 사용자 아이디가 포함되면 안된다.(동일하면 안된다.)
암호는 사용자 아이디의 Circular Shift 형태이면 안된다.
암호는 순서대로 되어 있으면 안된다.(예: 1234, abcd)
암호는 이전의 암호와 3글자 이상은 틀려야 한다.
- 관리자의 정책
(ㄱ) 암호를 정기적으로 변경하도록 유도
(/etc/login.defs, chage CMD, /etc/security/pwquality.conf)
# vi /etc/login.defs
PASS_MAX_DAYS 90
# chage -M 90 -W 7 user01
# authconfig --passminlen 12 \
--enablereqlower -—enablerequpper —enablereqdigit —enablereqother \
--update (12 –4 = 8글자 이상.)
(ㄴ) 암호를 사용자가 변경할수 없도록 설정(# chmod u-s /usr/bin/passwd)
# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 23K Aug 11 2010 /usr/bin/passwd* (4755)
# chmod u-s /usr/bin/passwd
# ls -l /usr/bin/passwd
# telnet localhost
user01 사용자로 로그인
$ passwd
-> 자신의 암호를 변경할 수 있는가?
$ exit
# passwd user01
-> 관리자가 user01 사용자의 암호 변경이 가능한가?
# chmod 4755 /usr/bin/passwd
# ls -l /usr/bin/passwd
2. 취약점 점검 스크립트 제작
(스크립트 작성시 유의사항)
영문/숫자/특수문자가 포함된 8글자 이상의 암호여야 한다.
나올수 있는 종류와 범위가 넓은 경우에는 스크립트가 결과를 점검하도록 하는것 보다
출력 내용을 컨설턴트에게 보고하여 분석하도록 하고, 고객과 협의하도록 한다.
(스크립트 안에 들어가는 내용)
■ fuction.sh
..... SCRIPTNAME() { basename $0 | awk -F. '{print $1}' //프로그램 이름만 나온다. }
[root@linux200 ~/scripts]# echo /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33 [root@linux200 ~/scripts]# basename /etc/sysconfig/network-scripts/ifcfg-ens33 ifcfg-ens33 [root@linux200 ~/scripts]# [root@linux200 ~/scripts]# basename /etc/sysconfig/network-scripts/ifcfg-ens33 | awk -F- '{print $1}' ifcfg |
위의 내용을 function.sh 파일의 마지막 부분에 추가한다.
■ U-02.sh
#!/bin/bash
. function.sh TMP1=`SCRIPTNAME`.log > $TMP1
BAR CODE [U-02] 패스워드 복잡성 검사 cat << EOF >> $RESULT [양호]: 영문 숫자 특수문자가 혼합된 8 글자 이상의 패스워드가 설정된 경우. [취약]: 영문 숫자 특수문자 혼합되지 않은 8 글자 미만의 패스워드가 설정된 경우. EOF BAR INFO $TMP1 파일을 점검한다.
FILE1=/etc/pam.d/system-auth PAM_MODULE=pam_cracklib.so
echo "다음은 패스워드 정책입니다." >> $TMP1 cat << EOF >> $TMP1 ========================================================================= try_first_pass : 사용자 암호 입력전 인증 모듈(NIS,NIS+,LDAP)에서 사용된 암호를 먼저 사용 retry : 패스워드 입력 실패 시 재시도 회수 지정 minlen : 크레디트를 더한 패스워드 최소 길이 지정 dcredit : 숫자에 주어지는 크레디트 값 지정 lcredit : 영어 소문자에 주어지는 크레디트 값 지정 ocredit : 숫자, 영어 대/소문자를 제외한 기타 문자 지정 minclass : 문자, 숫자, 특수문자 중 다른 클래스 사용 개수 지정 ========================================================================= EOF
LINE1=`cat $FILE1 | egrep -v '(^$|^#)' | grep $PAM_MODULE` LINE2=`echo $LINE1 | cut -d ' ' -f 4-` for VAR in `echo $LINE2` do CHECK1=`echo $VAR | awk -F= '{print $1}'` CHECK2=`echo $VAR | awk -F= '{print $2}'` case $CHECK1 in try_first_pass) echo "try_first_passwd" >> $TMP1 ;; retry) echo "retry : $CHECK2" >> $TMP1 ;; minlen) echo "minlen : $CHECK2" >> $TMP1 ;; ucredit) echo "ucredit : $CHECK2" >> $TMP1 ;; lcredit) echo "lcredit : $CHECK2" >> $TMP1 ;; dcredit) echo "dcredit : $CHECK2" >> $TMP1 ;; ocredit) echo "ocredit : $CHECK2" >> $TMP1 ;; minclass)echo "minclass: $CHECK2" >> $TMP1 ;; *) echo 'Unkown keyword => $CHECK1 : $CHECK2' >> $TMP1;; esac done cat $RESULT echo ; echo |
■ (CentOS 7.X) U-02.sh
#!/bin/bash
. function.sh
TMP1=$(SCRIPTNAME).log
> $TMP1
BAR
CODE [U-02] 패스워드 복잡성 검사
cat << EOF >> $RESULT
[양호]: 영문 숫자 특수문자가 혼합된 8 글자 이상의 패스워드가 설정된 경우.
[취약]: 영문 숫자 특수문자 혼합되지 않은 8 글자 미만의 패스워드가 설정된 경우.
EOF
BAR
INFO $TMP1 파일을 점검한다
echo >> $TMP1
echo "다음은 /etc/security/pwquality.conf 파일을 해석할 때 사용하는 내용입니다"
echo "=============================================================" >> $TMP1
cat /etc/security/pwquality.conf | egrep -v '(^$|^#)' >> $TMP1
cat << EOF >> $TMP1
=============================================================
다음은 /etc/security/pwquality.conf 파일을 해석할 때 사용하는 내용입니다.
minlen : 패스워드 최소 길이입니다.
minclass : 패스워드 class 지정입니다.
lcredit : 패스워드 소문자 포함 지정입니다.
ucredit : 패스워드 대문자 포함 지정입니다.
dcredit : 패스워드 숫자 포함 지정입니다.
ocredit : 패스워드 특수문자 포함 지정입니다.
=============================================================
다음은 /etc/security/pwquality.conf 파일의 내용이 없으면,
1) 기본값을 사용하는 경우입니다. 이 경우, 패스워드 정책에 맞지 않습니다.
따라서, 반드시 정책을 변경할 것을 권장합니다.
2) 정책을 변경하는 경우에는 다음과 같은 명령어를 통해 설정할 수 있습니다.
# authconfig --passminlen=8 --passminclass=3
--enablereqlower --disablerequpper --enablereqdigit
--enablereqother --update
=============================================================
EOF
PWQUALITY_CONF=/etc/security/pwquality.conf.copy
VALUE1=$(FindPatternReturnValue $PWQUALITY_CONF minlen)
if [ $VALUE1 = None ] ; then
WARN '패스워드의 최소 길이 설정이 8 글자 미만으로 되어 있음!'
else
if [ $VALUE1 -ge 12 ] ; then
Ret1=$(IsFindPattern $PWQUALITY_CONF dcredit)
Ret2=$(IsFindPattern $PWQUALITY_CONF ucredit)
Ret3=$(IsFindPattern $PWQUALITY_CONF lcredit)
Ret4=$(IsFindPattern $PWQUALITY_CONF ocredit)
if [ $Ret1 -eq 0 -a $Ret2 -eq 0 -a $Ret3 -eq 0 -a $Ret4 -eq 0 ] ; then
OK "영문 숫자 특수문가자 혼합된 8글자 이상의 패스워드를 사용하고 있습니다."
else
WARN "패스워드가 8글자 이상이지만 dcredit|ucredit|lcredit|ocredit 중 설정이 없는 것이 존재합니다."
fi
else
WARN '패스워드의 최소 길이 설정이 8글자 미만으로 되어 있음'
fi
fi
cat $RESULT
[계정 잠금 임계값 설정]
1. 취약점 분석/평가 방법 상세 가이드
1.3 계정 잠금 임계값 설정 ■ 점검 분류 항목: 계정 관리 ■ 세부 점검 항목: 계정 잠금 임계값 설정 ■ 대상: 리눅스 ■ 위험도: 상 ■ 관련 코드: U-03
(1) 취약점 개요 침입자에 의한 패스워드 *무작위 대입 공격(Brute Force Attack)이나 패스워드 추측 공격(Password Guessing) 발생 시 암호입력 실패 횟수를 적정하게 제한함으로써 자동공격을 차단하고 공격 시간을 지체시켜 패스워드 유출 위험을 줄일 수 있음. 무작위 대입 공격(Brute Force Attack): 컴퓨터로 암호를 해독하기 위해 가능한 모든 키를 하나하나 추론해 보는 시도를 말함.
(2) 판단기준 양호: 계정 잠금 임계값이 5 이하의 값으로 설정되어 있는 경우 취약: 계정 잠금 임계값이 설정되어 있지 않거나, 5 이하의 값으로 설정되지 않은 경우
(3) 조치방법 계정 잠금 임계값을 5 이하로 설정
(4) 보안 설정 방법 # cat /etc/pam.d/system-auth auth required /lib/security/pam_tally.so deny=5 unlock_time=120 no_magic_root account required /lib/security/pam_tally.so no_magic_root reset no_magic_root: root 사용자에게 패스워드 잠금 설정을 적용하지 않음 deny=5 : 5회 입력 실패시 패스워드 잠금 unlock_time : 계정 잠김 후 마지막 계정 실패 시간부터 설정된 시간이 지나면 자동 계정 잠김 해제(단위 : 초) reset : 접속 시도 성공 시 실패한 횟수 초기화
(5) 조치시 영향 Trusted Mode로 전환 시 파일시스템 구조가 변경되어 운영 중인 서비스에 문제가 발생할 수 있으므로 충분한 테스트를 거친 후 Trusted Mode로의 전환이 필요함. |
고객에게 취약점을 어떻게 이해시킬것인가? |
(고객에게 설명)
무작위 대입법이나 패스워드 추측 공격 등
자동화된 툴을 통해 공격하는 방법의 위험을 줄일 수 있다.
xhydra 툴
2. 취약점 진단 스크립트 제작
(스크립트 작성시 참고 사항)
계정 임계값 설정이 5 이하로 되어 있으면서, 일정한 시간이 지나면 다시 풀어줘야 한다.
(스크립트 작성시 판단 근거)
/etc/pam.d/system-auth 파일안에 pam_tally.so 모듈을 사용하고 있어야 하고,
pam_tally.so 모듈의 deny 설정이 5이하로 설정 되어 있는가를 점검한다.
(스크립트 안에 들어갈 내용)
■ (CentOS 5.x) U-03.sh
#!/bin/bash
. function.sh
BAR CODE [U-03] 계정 잠금 임계값 설정 cat << EOF >> $RESULT [양호]: 계정 잠금 임계값이 5 이하의 값으로 설정되어 있는 경우 [취약]: 취약: 계정 잠금 임계값이 설정되어 있지 않거나, 5 이하의 값으로 설정되지 않은 경우 EOF BAR
FILE1=/etc/pam.d/system-auth PAM_MODULE=pam_tally.so LINE1=`cat $FILE1 | egrep -v '(^#|^$)' | grep '^auth' | grep $PAM_MODULE` if [ $? -ne 0 ] ; then WARN 계정 임계값이 설정되어 있지 않습니다. else OK 계정 임계값이 설정되어 있습니다. LINE2=`echo $LINE1 | cut -d ' ' -f 4-` for VAR in `echo $LINE2` do CHECK1=`echo $VAR | awk -F= '{print $1}'` CHECK2=`echo $VAR | awk -F= '{print $2}'` case $CHECK1 in deny) if [ $CHECK2 -lt 5 ] ; then OK 계정임계값이 5이하로 설정되어 있습니다. else WARN 계정임계값이 5초과하여 설정되어 있습니다. fi ;; *) ;; esac done fi cat $RESULT echo; echo |
■ (CentOS 7.X) U-03.sh
PAM Module
* pam_tally.so deny=5 unlock_time=1800
* pam_tally2.so deny=5 unlock_time=1800
* pam_faillock.so deny=5 unlock_time=1800 (7버전부터는 여기)
# cd /lib64/security 들어가 파일 있는지 점검.
# ls *tally*
# ls *faillock*
PAM File
# cd /etc/pam.d 들어가 파일 있는지 점검.
# find . -type f –exec grep –l pam_tally {} \;
# find . -type f –exec grep –l pam_tally2 {} \;
# find . -type f –exec grep –l pam_failock {} \;
* 콘솔로 로그인, su/sudo 전환, passwd CMD
=> /etc/pam.d/system-auth (system-auth-ac로 링크 걸려있다. 이게 원본이니
복사해 사용할땐 이걸 카피한 뒤 수정해 쓰자.)
* X-windows(GNOME, KDE) 로그인, ssh/vsftpd/smtp/pop3/imap 원격 로그인
=> /etc/pam.d/password-auth(패스워드 인증)
파일이 들어있는지 점검하고
양쪽에 모두 등록해야 한다.
PAM File 설정 방법
* /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 required pam_env.so auth required pam_faildelay.so delay=2000000 -> 이 줄 아래에 정의하면 된다. auth required pam_tally2.so deny=5 unlock_time=1800 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so
account required pam_unix.so account required pam_tally2.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account required pam_permit.so ..... (중략) .... |
* /etc/pam.d/password-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 required pam_tally2.so deny=5 unlock_time=1800 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so
account required pam_unix.so account required pam_tally2.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account required pam_permit.so ..... (중략) .... |
* etc/pam.d/system-auth | /etc/pam.d/password-auth
#%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required pam_faillock.so preauth silent audit deny=5 unlock_time=1800 (추가) auth required pam_env.so auth [default-die] pam_faillock.so authfail audit deny=5 unlock_time=1800 (추가) auth required pam_faildelay.so delay=2000000 auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so
account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 1000 quiet account required pam_permit.so account required pam_faillock.so (추가) |
[원하는 부분 뽑아내는 실험]
1. 우선 테스트 파일 하나 생성
2. 이를 바탕으로 테스트 코드를 작성
test.sh
#!/bin/bash
egrep -v '^#|^$' test.txt | while read TYPE CONTROL PAM PAM_ARGS
do
# echo $PAM_ARGS
set $PAM_ARGS
#echo $1 ; shift ;echo $1
while [ $# -ge 1 ]
do
CHOICE=$(echo $* | awk '{print $1}')
if echo $CHOICE | egrep -q 'deny|unlock_time' ; then
#case $CHOICE in
#"echo $CHOICE | grep deny=") echo 'deny' ;;
#'echo $CHOICE | grep unlock_time') echo "Unlock" ;;
#*) echo "NONE" ;;
#esac
PARAMETER=$(echo $CHOICE | awk -F= '{print $1}')
VALUE=$(echo $CHOICE | awk -F= '{print $2}') # 값만 뽑아낸다
# echo "$PARAMETER : $VALUE"
case $PARAMETER in
'deny') echo $VALUE ;;
'unlock_time') echo $VALUE ;;
*) continue ;;
esac
fi
shift
done
done
3. 이걸 함수로 만들어 function.sh 파일에 추가
LOG=check.log
RESULT=result.log
> $LOG
> $RESULT
....중략......
PAM_FindPatternReturnValue() {
PAM_FILE=$1
PAM_MODULE=$2
PAM_FindPattern=$3
LINE=$(egrep -v '^#|^$' $PAM_FILE | grep $PAM_MODULE)
if [ -z "$LINE" ] ; then #내용이 없으면 (zero면) None을 출력
ReturnValue=None
else
PARAMS=$(echo $LINE | cut -d ' ' -f4-)
# echo $PARAMS
set $PARAMS
while [ $# -ge 1 ]
do
CHOICE1=$(echo $* | awk '{print $1}' | awk -F= '{print $1}')
CHOICE2=$(echo $* | awk '{print $1}' | awk -F= '{print $2}')
# echo "$CHOICE1 : $CHOICE2"
case $CHOICE1 in
$PAM_FindPattern) ReturnValue=$CHOICE2 ;;
*) : ;;
esac
shift
done
fi
echo $ReturnValue
}
: << EOF
PAM_FindPatternReturnValue() {
PAM_FILE=$1
egrep -v '^#|^$' $PAM_FILE \
| egrep 'pam_faillock.so | pam_tally2.so' \
| while read TYPE CONTROL PAM PAM_ARGS
do
set $PAM_ARGS
while [ $# -ge 1 ]
do
CHOICE=$(echo $* | awk '{print $1}')
if echo $CHOICE | egrep -q 'deny|unlock_time' ; then
PARAMETER=$(echo $CHOICE | awk -F= '{print $1}')
VALUE=$(echo $CHOICE | awk -F= '{print $2}') # 값만 뽑아낸다
case $PARAMETER in
'deny') echo $VALUE ;;
'unlock_time') echo $VALUE ;;
*) continue ;;
esac
fi
shift
done
done
}
EOF
U-03.sh
#!/bin/bash
. function.sh
BAR CODE [U-03] 계정 잠금 임계값 설정 cat << EOF >> $RESULT [양호]: 계정 잠금 임계값이 5이하의 값으로 설정되어 있는 경우 [취약]: 계정 잠금 임계값이 설정되어 있지 않거나, 5이하의 값으로 설정되지 않은 경우 EOF BAR
FILE1=/root/scripts/system-auth PAM_MODULE=pam_tally2.so LINE1=$(echo $(cat system-auth | egrep -v '(^$|^#)' | grep '^auth' | grep pam_tally2.so) | cut -d' ' -f4-)
if [ -z $LINE1 ]; then WARN 임계값이 설정되어 있지 않습니다. else for i in `echo $LINE1` do KEY1=$(echo $i | awk -F= '{print $1}') VALUE1=$(echo $i | awk -F= '{print $2}') case $KEY1 in deny) if [ $VALUE1 -le 5 ] ; then OK 임계값이 5이하로 설정 되어 있습니다. else WARN 임계값이 6이상으로 설정되어 있습니다. fi ;; *) : ;; esac done fi
cat $RESULT echo ; echo |
(CentOS 7.X)다른 예 - U-03.sh
#!/bin/bash
. function.sh
TMP1=`SCRIPTNAME`.log
> $TMP1
BAR
CODE [U-03] 계정 잠금 임계값 설정
cat << EOF >> $RESULT
[양호]: 계정 잠금 임계값이 5이하의 값으로 설정되어 있는 경우
[취약]: 계정 잠금 임계값이 설정되어 있지 않거나, 5이하의 값으로 설정되지 않은 경우
EOF
BAR
PAM_SYSTEM_AUTH=/etc/pam.d/system-auth
# PAM_PASSWORD_AUTH=/etc/pam.d/password-auth
Ret1=$(PAM_FindPatternReturnValue $PAM_SYSTEM_AUTH pam_tally2.so deny)
Ret2=$(PAM_FindPatternReturnValue $PAM_SYSTEM_AUTH pam_tally2.so unlock_time)
if [ "$Ret1" != None -a "$Ret2" != None ] ; then
if [ $Ret1 -le 5 ] ; then
OK "계정 잠금 임계값이 5 이하의 값으로 설정되어 있는 경우입니다."
else
WARN "계정 잠금 임계값이 설정되어 있지만, 5 이상의 값으로 설정되어 있습니다."
fi
else
WARN "계정 잠금 임계값이 설정되어 있지 않거나, 5 이하의 값으로 설정되지 않은 경우 입니다."
fi
cat $RESULT
echo ; echo
'정보보안공부 > 정보보안전문과정' 카테고리의 다른 글
정보보안 과정 DAY96: (주통)계정 관리 U-06 ~ 09 스크립트 제작 (0) | 2021.01.22 |
---|---|
정보보안 과정 Day95-1 : (주통)계정관리 U-04~05 / 패스워드 파일 보호 / root 이외 UID가 0 금지 점검 스크립트 제작 (0) | 2021.01.21 |
정보보안 과정 Day94-1: 리눅스 루트 암호 초기화 방법(주정통 기반) (0) | 2021.01.20 |
정보보안 과정 Day94: 주통 스크립트 제작 시작 / 1. 계정관리 1.1 (0) | 2021.01.20 |
정보보안 과정 Day93 : 리눅스 서버 보안 시작 (0) | 2021.01.19 |