shell_script

shell - 패스워드 생성 법칙 적용

sysman 2021. 8. 11. 15:24

패스워드 생성 법칙은 pam_pwquality 라이브러리에 의해 설정 및 관리됨

페도라 - 라이브러리가 기본 탑재

데비안 - libpam-pwquality 패키지 설치

 

필요정보

- 페도라 계열의 리눅스 환경 설정 파일 경로 : /etc/pam.d/system-auth

- 데비안 계열의 리눅스 환경 설정 파일 경로 : /etc/pam.d/common-password

- 패스워드 생성법칙 항목과 의미

   - Retry: 패스워드 입력 실패시 재시도 횟수

   - Minlen: 최소 패스워드 길이

   - Difok: 이전 비밀번호화 유사한 문자 갯수

   - Lcredit :  소문자 최소 요구 개수

   - Ucredit:  대분자 최소 요구 개수

   - Dcredit:  숫자 최소 요구 개수

   - Ocredit:  특수문자최소요구 개수

   - Enforce_for_root: 사용자 패스워드생성 법칙 적용

 

프로세스

1) 운영체제 타입을 확인

2) 페도라 계열의 리눅스면 /etc/pam.d/system-auth 파일에 설정을 적용

3) 데비안 계열의 리눅스라면 우선 /etc/pam.d/common-password 파일이 있는지 확인

4) 파일이 없으면 libpam-pwquality 패키지 설치

5) 파일이 있으면 /etc/pam.d/common-password 에 설정을 적용

 

[team01@test1 10. Security]$ cat '10.1 conf-pwpolicy.sh'
#!/bin/bash

# 운영체제 타입 확인
ostype=$(cat /etc/*release| grep ID_LIKE | sed "s/ID_LIKE=//;s/\"//g")

# 운영체제가 페도라 계열일 경우
if [[ $ostype == "fedora" ]]; then
  # 설정 여부 체크
  conf_chk=$(cat /etc/pam.d/system-auth | grep 'local_users_only$' | wc -l)
  # 설정이 안되어 있으면 설정 후 설정 내용 확인
  # -i 옵션은 바로 수정, \(retry=3$\)/\1 retry=3에서 ()는 \1에 대한 우선순위
  #/\1은 local_users_only 바로 뒤에 오는 문자열을 붙여쓰라는 뜻
  #쉘스크립트 수행 시 local_users_only로 끝나는 라인 뒤에 retry=3으로 시작하는 문자열들이 오는것 확인 됨
  if [ $conf_chk -eq 1 ]; then
    sed -i 's/\(local_users_only$\)/\1 retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root/g' /etc/pam.d/system-auth
   #password와 requisite사이 스페이스나 공백 오는 문자열을 찾으라는 의미 
   cat /etc/pam.d/system-auth | grep '^password[[:space:]]*requisite'
  fi
# 운영체제가 데비안 계열일 경우
elif [[ $ostype == "debian" ]]; then
  # pam_pwquality.so가 설치되어 있는지 설정파일을 통해 확인
  conf_chk=$(cat /etc/pam.d/common-password | grep 'pam_pwquality.so' | wc -l)
  # 설치가 안되어 있으면 libpam-pwquality 설치
  if [ $conf_chk -eq 0 ]; then
     apt install libpam-pwquality
  fi
  # 설정 여부 체크
  conf_chk=$(cat /etc/pam.d/common-password | grep 'retry=3$' | wc -l)
  # 설정이 안되어 있으면 설정 후 설정 내용 확인
  if [ $conf_chk -eq 1 ]; then
  # retry=3으로 끝나는 라인 찾음, 해당 라인 뒤 minlen=8... enforce_for_root 문자열 옴
     sed -i 's/\(retry=3$\)/\1 minlen=8 maxrepeat=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=3 gecoscheck=1 reject_username enforce_for_root/g' /etc/pam.d/common-password
     echo "==========================================="
     cat /etc/pam.d/common-password | grep '^password[[:space:]]*requisite'
  fi
fi

 

 

[team01@test1 10. Security]$ cat '10.1 conf-pwpolicy.sh'
#!/bin/bash

# 운영체제 타입 확인
ostype=$(cat /etc/*release| grep ID_LIKE | sed "s/ID_LIKE=//;s/\"//g")

# 운영체제가 페도라 계열일 경우
if [[ $ostype == "rhel fedora" ]]; then
  # 설정 여부 체크
  conf_chk=$(cat /etc/pam.d/system-auth | grep 'local_users_only$' | wc -l)
  # 설정이 안되어 있으면 설정 후 설정 내용 확인
  if [ $conf_chk -eq 1 ]; then
    sed -i 's/\(local_users_only$\)/\1 retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root/g' /etc/pam.d/system-auth
    cat /etc/pam.d/system-auth | grep '^password[[:space:]]*requisite'
  fi
# 운영체제가 데비안 계열일 경우
elif [[ $ostype == "debian" ]]; then
  # pam_pwquality.so가 설치되어 있는지 설정파일을 통해 확인
  conf_chk=$(cat /etc/pam.d/common-password | grep 'pam_pwquality.so' | wc -l)
  # 설치가 안되어 있으면 libpam-pwquality 설치
  if [ $conf_chk -eq 0 ]; then
     apt install libpam-pwquality
  fi
  # 설정 여부 체크
  conf_chk=$(cat /etc/pam.d/common-password | grep 'retry=3$' | wc -l)
  # 설정이 안되어 있으면 설정 후 설정 내용 확인
  if [ $conf_chk -eq 1 ]; then
     sed -i 's/\(retry=3$\)/\1 minlen=8 maxrepeat=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=3 gecoscheck=1 reject_username enforce_for_root/g' /etc/pam.d/common-password
     echo "==========================================="
     cat /etc/pam.d/common-password | grep '^password[[:space:]]*requisite'
  fi
fi

 

 

 

[team01@test1 10. Security]$ cat /etc/pam.d/system-auth | grep 'local_users_only$'
password    requisite                                    pam_pwquality.so try_first_pass local_users_only


[team01@test1 10. Security]$ cat /etc/pam.d/system-auth | grep 'local_users_only$' |wc -l
1

[team01@test1 10. Security]$ cat /etc/pam.d/system-auth | grep '^password[[:space:]]*requisite'
password    requisite                                    pam_pwquality.so try_first_pass local_users_only

 

 

결과

 

[centos7]

[team01@test1 10. Security]$ sudo sh conf-pwp.sh
[sudo] password for team01:
Sorry, try again.
[sudo] password for team01:
password    requisite                                    pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root

 

 

[ubuntu18.04]

team01@shellu:~/stest/Easy-Shell-Script/10. Security$ sudo bash conf-pwp.sh
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  cracklib-runtime libcrack2 libpwquality-common libpwquality1 wamerican
The following NEW packages will be installed:
  cracklib-runtime libcrack2 libpam-pwquality libpwquality-common libpwquality1 wamerican
0 upgraded, 6 newly installed, 0 to remove and 61 not upgraded.
Need to get 403 kB of archives.
After this operation, 1,832 kB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://kr.archive.ubuntu.com/ubuntu bionic/main amd64 libcrack2 amd64 2.9.2-5build1 [28.0 kB]
Get:2 http://kr.archive.ubuntu.com/ubuntu bionic/main amd64 cracklib-runtime amd64 2.9.2-5build1 [134 kB]
Get:3 http://kr.archive.ubuntu.com/ubuntu bionic/main amd64 libpwquality-common all 1.4.0-2 [7,368 B]
Get:4 http://kr.archive.ubuntu.com/ubuntu bionic/main amd64 libpwquality1 amd64 1.4.0-2 [12.5 kB]
Get:5 http://kr.archive.ubuntu.com/ubuntu bionic/main amd64 libpam-pwquality amd64 1.4.0-2 [11.2 kB]
Get:6 http://kr.archive.ubuntu.com/ubuntu bionic/main amd64 wamerican all 2017.08.24-1 [210 kB]
Fetched 403 kB in 2s (195 kB/s)
Preconfiguring packages ...
Selecting previously unselected package libcrack2:amd64.
(Reading database ... 67145 files and directories currently installed.)
Preparing to unpack .../0-libcrack2_2.9.2-5build1_amd64.deb ...
Unpacking libcrack2:amd64 (2.9.2-5build1) ...
Selecting previously unselected package cracklib-runtime.
Preparing to unpack .../1-cracklib-runtime_2.9.2-5build1_amd64.deb ...
Unpacking cracklib-runtime (2.9.2-5build1) ...
Selecting previously unselected package libpwquality-common.
Preparing to unpack .../2-libpwquality-common_1.4.0-2_all.deb ...
Unpacking libpwquality-common (1.4.0-2) ...
Selecting previously unselected package libpwquality1:amd64.
Preparing to unpack .../3-libpwquality1_1.4.0-2_amd64.deb ...
Unpacking libpwquality1:amd64 (1.4.0-2) ...
Selecting previously unselected package libpam-pwquality:amd64.
Preparing to unpack .../4-libpam-pwquality_1.4.0-2_amd64.deb ...
Unpacking libpam-pwquality:amd64 (1.4.0-2) ...
Selecting previously unselected package wamerican.
Preparing to unpack .../5-wamerican_2017.08.24-1_all.deb ...
Unpacking wamerican (2017.08.24-1) ...
Setting up libpwquality-common (1.4.0-2) ...
Setting up libcrack2:amd64 (2.9.2-5build1) ...
Setting up wamerican (2017.08.24-1) ...
Setting up cracklib-runtime (2.9.2-5build1) ...
Setting up libpwquality1:amd64 (1.4.0-2) ...
Setting up libpam-pwquality:amd64 (1.4.0-2) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for libc-bin (2.27-3ubuntu1.2) ...
===========================================
password        requisite                       pam_pwquality.so retry=3 minlen=8 maxrepeat=3 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1 difok=3 gecoscheck=1 reject_username enforce_for_root
password        requisite                       pam_deny.so

 

 

 

####################################################################################

패스워드 변경 주기 설정

 

패스워드 변경 주기설정은 chage명령어에 의해 설정

 

필요정보

- 패스워드 변경 주기 설정 명령어 : chage

- 패스워드 변경 주기 설정을 위한 옵션 및 의미

  -d, --lastday LAST_DAY: 마지막으로 패스워드를 변경한 날짜 설정

  -E, --expiredate EXPIRE_DATE: 특정 계정의 패스워드 만료일 설정

  -I, --list: 패스워드 설정 주기 정보 확인

  -m, --mindays MIN_DAYS : 패스워드 변경 최소 설정일

  -M, --maxdays MAX_DAYS: 패스워드 변경 최대 설정일

  -W, --warndays WARN_DAYS: 패스워드 만료 경고일

 

프로세스

1) 패스워드 설정 주기를 설정할 대상 서버 정보를 변수에 저장

2) 패스워드 설정 주기를 설정할 사용자 계정을 변수에 저상

3)for문을 돌려서 프로세스 수행

  - 패스워드 설정 주기가 설정되어 있는지 chage -l 명령어를 이용해 확인

  - 설정되어 있지 않다면, 패스워드 설정 주기를 90일로 설정한다.

  - 설정 정보를 확인

 

스크립트 생성

team01@shellu:~/stest/Easy-Shell-Script/10. Security$ cat '10.2 conf-pwage.sh'
#!/bin/bash

# 대상서버와 계정정보 변수 저장
hosts="host01 host02"
account="root stack user01 user02"

# 대상서버만큼 반복
for host in $hosts; do
  echo "###### $host ######"
  # 계정정보만큼 반복
  for user in $account; do
    # 패스워드 설정 주기 체크
    pw_chk=$(ssh -q root@$host "chage -l $user | grep 99999 | wc -l")
    # 패스워드 설정 주기가 설정되어 있지 않다면
    if [[ $pw_chk -eq 1 ]]; then
      # 패스워드 설정 주기를 90일로 설정
      ssh -q root@$host "chage -d $(date +%Y-%m-%d) -M 90 $user"
      echo "======> $user"
      # 설정 결과 확인
      ssh -q root@$host "chage -l $user"
    fi
  done
done

 

[team01@test1 10. Security]$ cat conf-pwage.sh
#!/bin/bash

# 대상서버와 계정정보 변수 저장
hosts="host02"
account="user01 user02"

# 대상서버만큼 반복
for host in $hosts; do
  echo "###### $host ######"
  # 계정정보만큼 반복
  for user in $account; do
    # 패스워드 설정 주기 체크

#grep으로 99999가 설정되어 있으면 패스워드 설정 주기가 설정되지 않은것 
    pw_chk=$(ssh -q root@$host -p 22 "chage -l $user | grep 99999 | wc -l")
    # 패스워드 설정 주기가 설정되어 있지 않다면
    if [[ $pw_chk -eq 1 ]]; then
      # 패스워드 설정 주기를 90일로 설정(회사 보안 정책에 따라)
      ssh -q root@$host -p 22 "chage -d $(date +%Y-%m-%d) -M 90 $user"
      echo "======> $user"
      # 설정 결과 확인
      ssh -q root@$host -p 22 "chage -l $user"
    fi
  done
done
[team01@test1 10. Security]$

 

 

결과

[team01@test1 10. Security]$ sudo sh conf-pwage.sh
###### host02 ######
root@host02's password:
root@host02's password:
======> user01
root@host02's password:
Last password change                                    : Aug 11, 2021
Password expires                                        : Nov 09, 2021
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 7
root@host02's password:
root@host02's password:
======> user02
root@host02's password:
Last password change                                    : Aug 11, 2021
Password expires                                        : Nov 09, 2021
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 7
[team01@test1 10. Security]$

 

 

 

#######################################################################################

 

디렉토리 및 파일 접근 권한 변경

 

 

sticky bit :  파일 소유자나 그룹 소유자만 해당 파일을 읽고, 쓰고 ,삭제할 수 있는 권한을 주는 것

 

sticky bit가 적용된 파일이나 모든 사용자가 읽고 쓸수 있는 파일 내지는 디렉토리를 찾는 명령어를 알아보고, 검색된 파일이나 디렉토리를 조치하기 위한 프로세스를 만든다.

 

 필요정보

- SUID(set User ID) 설정 파일을 찾기 위한 명령어: find / -perm -04000

- SGID(set Group ID) 설정 파일을 찾기 위한 명령어: find / -perm -02000

- Sticky bit 설정 파일을 찾기 위한 명령어: find / -perm -01000

- world writeable(모든사용자가 접근,수정가능한 것) 파일 또는 디렉토리를 찾기 위한 명령어: find / -xdev -perm 2

 

 

파일 시스템 유형

 - proc : 커널프로세스를 포함한느 실행 중인 프로세스들을 위한 디렉토리, 파일 유형

- Sysfs : 리눅스 커널이 제공한느 가상 파일시스템을 위한 디렉토리 및 파일 유형

- Debugfs : 파일 시스템을 디버깅하기 위한 파일 및 디렉토리 유형

- Cgroup : 컨테이너 기술에 사용되며, 프로세스들이 사용하는 컴퓨팅 자원을 제한하고 격리함

- Tmpfs : 메모리를 디스크처럼 쓸 수 있는 파일 시스템

- Mqueue : 시스템의 메시지 큐를 읽기 위한 파일 시스템

- Xfs : 고성능 64비트 저널링 파일 시스템

 

스크립트 생성

[team01@test1 10. Security]$ cat '10.3 conf-file.sh'
#!/bin/bash

# Sticky bit가 설정된 경로 검색
echo "=== SUID, SGID, Sticky bit Path ==="
#suid권한 및 guid, sticky bit 권한을 가진 파일 또는 디렉토리 검색
# 접근 불가한 permissionㅇ로 인해 에러 메세지 출력 하는데 2>/dev/null로 에러 메세지를 안보여주게함
s_file=$(find / -xdev -perm -04000 -o -perm -02000 -o -perm 01000 2>/dev/null | grep -e 'dump$' -e 'lp*-lpd$' -e 'newgrp$' -e 'restore$' -e 'at$' -e 'traceroute$')
#검색된 파일경로를 xargs로 받아 파라미터로 사용하여 ls -dl 명령어를 실행함으로써 상세 파일목록 조회
find / -xdev -perm -04000 -o -perm -02000 -o -perm 01000 2>/dev/null | grep -e 'dump$' -e 'lp*-lpd$' -e 'newgrp$' -e 'restore$' -e 'at$' -e 'traceroute$' | xargs ls -dl

# World Writable 경로 검색
echo -e "\n=== World Writable Path ==="
#쓰기권한을 가진 디렉토리 검색, -xdev를 사용하여 xfs 파일 시스템유형을 가진 파일, 디렉토리만 검색
#grep -v 'l..'명령어로 l로 시작하는 심볼릭 링크 검색제외, 나머지 결과는awk로 추출
#xargs ls -dl로 다시 상세파일 목록 조회
w_file=$(find / -xdev -perm -2 -ls | grep -v 'l..........' | awk '{print $NF}')
find / -xdev -perm -2 -ls | grep -v 'l..........' | awk '{print $NF}' | xargs ls -dl

echo ""
#파일 변경할 것인지 질문
read -p "Do you want to change file permission(y/n)? " result

if [[ $result == "y" ]]; then

  # Sticky bit 경로 권한 변경
  echo -e "\n=== Chmod SUID, SGID, Sticky bit Path ==="
  for file in $s_file; do
    echo "chmod -s $file"
    chmod -s $file
  done
  # Writable 경로 권한 변경
  echo -e "\n=== Chmod World Writable Path ==="
  for file in $w_file; do
    echo "chmod o-w $file"
    chmod o-w $file
  done

  # Sticky bit 경로 변경결과 조회
  echo -e "\n=== Result of Sticky bit Path ==="
  for file in $s_file; do
    ls -dl $file
  done
  # Writable 경로 변경결과 조회
  echo -e "\n=== Result of World Writable Path ==="
  for file in $w_file; do
    ls -dl $file
  done
# 파일권한 변경을 원하지 않을 경우
elif [[ $result == "n" ]]; then
  exit
# 파일권한 변경여부 질의에 아무것도 입력하지 않았을 경우
elif [[ -z $result ]]; then
  echo "Yon didn't have any choice. Please check these files for security."
  exit
# 파일권한 변경여부 질의에 아무 글자나 입력했을 경우
else
  echo "You can choose only y or n."
  exit
fi

 

 

sticky bit 권한을 가진 파일경로와 world writeable 속성을 가진 파일 경로를 검색한 다음, 파일 퍼미션을 수정하길 원하는지 물어봄

이때 y를 입력하면 sticky bit 파일의 경우ㅠ 파일 권한을 0644fh qusrud, world writeable 경로는 기타 사용자(o)의 쓰기(w)권한을 제거, 해당 파일 권한이 잘 변경 되었는지를 ls-dl명령어로 다시 확인

 

결과

team01@shellu:~/stest/Easy-Shell-Script/10. Security$ bash conf-file.sh
=== SUID, SGID, Sticky bit Path ===
-rwsr-sr-x 1 daemon daemon 51464 Feb 20  2018 /usr/bin/at
-rwsr-xr-x 1 root   root   40344 Mar 22  2019 /usr/bin/newgrp

=== World Writable Path ===
find: ‘/var/tmp/systemd-private-243859dc40594816898f23d58ef42d34-systemd-timesyncd.service-Lu7e2w’: Permission denied
find: ‘/var/tmp/systemd-private-243859dc40594816898f23d58ef42d34-systemd-resolved.service-OY4Bcw’: Permission denied
find: ‘/var/spool/cron/atspool’: Permission denied
find: ‘/var/spool/cron/crontabs’: Permission denied
find: ‘/var/spool/cron/atjobs’: Permission denied
find: ‘/var/spool/rsyslog’: Permission denied
find: ‘/var/lib/update-notifier/package-data-downloads/partial’: Permission denied
find: ‘/var/lib/apt/lists/partial’: Permission denied
find: ‘/var/lib/snapd/cookie’: Permission denied
find: ‘/var/lib/snapd/void’: Permission denied
find: ‘/var/lib/private’: Permission denied
find: ‘/var/lib/polkit-1’: Permission denied
find: ‘/var/cache/apt/archives/partial’: Permission denied
find: ‘/var/cache/ldconfig’: Permission denied
find: ‘/tmp/systemd-private-243859dc40594816898f23d58ef42d34-systemd-timesyncd.service-GMfEWO’: Permission denied
find: ‘/tmp/netplan_sktvblqx’: Permission denied
find: ‘/tmp/systemd-private-243859dc40594816898f23d58ef42d34-systemd-resolved.service-XoKpCw’: Permission denied
find: ‘/tmp/vmware-root_954-2722108059’: Permission denied
find: ‘/etc/ssl/private’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/root’: Permission denied
find: ‘/lost+found’: Permission denied
find: ‘/var/tmp/systemd-private-243859dc40594816898f23d58ef42d34-systemd-timesyncd.service-Lu7e2w’: Permission denied
find: ‘/var/tmp/systemd-private-243859dc40594816898f23d58ef42d34-systemd-resolved.service-OY4Bcw’: Permission denied
find: ‘/var/spool/cron/atspool’: Permission denied
find: ‘/var/spool/cron/crontabs’: Permission denied
find: ‘/var/spool/cron/atjobs’: Permission denied
find: ‘/var/spool/rsyslog’: Permission denied
find: ‘/var/lib/update-notifier/package-data-downloads/partial’: Permission denied
find: ‘/var/lib/apt/lists/partial’: Permission denied
find: ‘/var/lib/snapd/cookie’: Permission denied
find: ‘/var/lib/snapd/void’: Permission denied
find: ‘/var/lib/private’: Permission denied
find: ‘/var/lib/polkit-1’: Permission denied
find: ‘/var/cache/apt/archives/partial’: Permission denied
find: ‘/var/cache/ldconfig’: Permission denied
find: ‘/tmp/systemd-private-243859dc40594816898f23d58ef42d34-systemd-timesyncd.service-GMfEWO’: Permission denied
find: ‘/tmp/netplan_sktvblqx’: Permission denied
find: ‘/tmp/systemd-private-243859dc40594816898f23d58ef42d34-systemd-resolved.service-XoKpCw’: Permission denied
find: ‘/tmp/vmware-root_954-2722108059’: Permission denied
find: ‘/etc/ssl/private’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/root’: Permission denied
find: ‘/lost+found’: Permission denied
drwxrwxrwt 11 root root 4096 Aug 11 07:43 /tmp
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.font-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.ICE-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.Test-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.X11-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.XIM-unix
drwxrwxrwt  2 root root 4096 Aug  6  2020 /var/crash
drwxrwxrwt  4 root root 4096 Aug  7 15:48 /var/tmp

Do you want to change file permission(y/n)? y
#root 권한이 없어서 그렇음.
=== Chmod SUID, SGID, Sticky bit Path ===
chmod -s /usr/bin/at
chmod: changing permissions of '/usr/bin/at': Operation not permitted
chmod -s /usr/bin/newgrp
chmod: changing permissions of '/usr/bin/newgrp': Operation not permitted

=== Chmod World Writable Path ===
chmod o-w /var/tmp
chmod: changing permissions of '/var/tmp': Operation not permitted
chmod o-w /var/crash
chmod: changing permissions of '/var/crash': Operation not permitted
chmod o-w /tmp
chmod: changing permissions of '/tmp': Operation not permitted
chmod o-w /tmp/.font-unix
chmod: changing permissions of '/tmp/.font-unix': Operation not permitted
chmod o-w /tmp/.X11-unix
chmod: changing permissions of '/tmp/.X11-unix': Operation not permitted
chmod o-w /tmp/.Test-unix
chmod: changing permissions of '/tmp/.Test-unix': Operation not permitted
chmod o-w /tmp/.XIM-unix
chmod: changing permissions of '/tmp/.XIM-unix': Operation not permitted
chmod o-w /tmp/.ICE-unix
chmod: changing permissions of '/tmp/.ICE-unix': Operation not permitted

=== Result of Sticky bit Path ===
-rwsr-sr-x 1 daemon daemon 51464 Feb 20  2018 /usr/bin/at
-rwsr-xr-x 1 root root 40344 Mar 22  2019 /usr/bin/newgrp

=== Result of World Writable Path ===
drwxrwxrwt 4 root root 4096 Aug  7 15:48 /var/tmp
drwxrwxrwt 2 root root 4096 Aug  6  2020 /var/crash
drwxrwxrwt 11 root root 4096 Aug 11 07:43 /tmp
drwxrwxrwt 2 root root 4096 Aug  7 15:48 /tmp/.font-unix
drwxrwxrwt 2 root root 4096 Aug  7 15:48 /tmp/.X11-unix
drwxrwxrwt 2 root root 4096 Aug  7 15:48 /tmp/.Test-unix
drwxrwxrwt 2 root root 4096 Aug  7 15:48 /tmp/.XIM-unix
drwxrwxrwt 2 root root 4096 Aug  7 15:48 /tmp/.ICE-unix
team01@shellu:~/stest/Easy-Shell-Script/10. Security$

 

 

------------------------------

drwxrwxrwt 11 root root 4096 Aug 11 07:43 /tmp
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.font-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.ICE-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.Test-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.X11-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.XIM-unix
drwxrwxrwt  2 root root 4096 Aug  6  2020 /var/crash
drwxrwxrwt  4 root root 4096 Aug  7 15:48 /var/tmp

Do you want to change file permission(y/n)? n
team01@shellu:~/stest/Easy-Shell-Script/10. Security$

--------------------------------

 

drwxrwxrwt 11 root root 4096 Aug 11 07:43 /tmp
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.font-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.ICE-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.Test-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.X11-unix
drwxrwxrwt  2 root root 4096 Aug  7 15:48 /tmp/.XIM-unix
drwxrwxrwt  2 root root 4096 Aug  6  2020 /var/crash
drwxrwxrwt  4 root root 4096 Aug  7 15:48 /var/tmp

Do you want to change file permission(y/n)?
Yon didn't have any choice. Please check these files for security.
team01@shellu:~/stest/Easy-Shell-Script/10. Security$

 

-------------------------

Do you want to change file permission(y/n)? d
You can choose only y or n.
team01@shellu:~/stest/Easy-Shell-Script/10. Security$

 

####################################################################################

 

 

 

firewall  port 추가 하기

 

firewall

Centos6에서는 iptables 사용

Centos7에서는 firewalld 사용

데비안계열에서는 ufw 사용

 

 

필요정보

- firewalld에서 서비스 포트 추가 명령어 : firewall-cmd --add-service=[service name]

- firewalld에서 포트 추가 명령어 : firewall-cmd --add-port=[port/protocol]

- ufw에서 서비스포트추가 명령어 : ufw allow [service name | port/protocol]

 

프로세스

1) 운영체제 타입이 페도라 계열인지 데비안 계열인지 확인

2) 운영체제가 페도라 계열이면 시스템에 firewalld가 실행중인지 확인

3) 운영체제가 데비안 계열이면 시스템에 ufw가 실행중인지 확ㅇ딘

4) 사용자로부터 추가할 포트 목록을 입력

5) 운영체제가 페도라 계열이면 firewall-cmd 명령어 이용하여 포트 추가

6) 운영체제가 데비안 계열이면 ufw 명령어 이용하여 포트 추가

 

[root@shell 10. Security]# cat conf-fire.sh
#!/bin/bash

# 운영체제 타입 확인
ostype=$(cat /etc/*release| grep ID_LIKE | sed "s/ID_LIKE=//;s/\"//g")

read -p "Please input ports(ex: http 123/tcp 123/udp) : " ports

if [[ -z $ports ]]; then echo "You didn't input port. Please retry."; exit; fi

# 운영체제가 페도라 계열일 경우
if [[ $ostype == "rhel fedora" ]]; then
  # firewalld 실행상태 체크
  run_chk=$( firewall-cmd --state )
  if [[ $run_chk == "running" ]]; then
    # 입력받은 port 만큼 반복
    for port in $ports; do
       # service port 인지 일반 port인지 체크
       chk_port=$(echo $port | grep '^[a-zA-Z]' | wc -l)
       # service port일 경우(서비스명)
       if [[ chk_port -eq 1 ]]; then
         firewall-cmd --add-service=$port
         firewall-cmd --add-service=$port --permanent
       # 일반 port 일 경우(포트번호)
       else
         firewall-cmd --add-port=$port
         firewall-cmd --add-port=$port --permanent
       fi
    done
    # port 추가 결과 확인
    firewall-cmd --list-all
  fi
# 운영체제가 데비안 계열일 경우
elif [[ $ostype == "debian" ]]; then
  # ufw 실행상태 체크
  run_chk=$( ufw status | grep ": active" | wc -l )
  if [[ $run_chk -eq 1 ]]; then
    # 입력받은 port만큼 반복
    for port in $ports; do
      ufw allow $port
    done
    # port 추가 결과 확인
    ufw status numbered
  fi
fi

 

 

결과

 

 

[root@shell 10. Security]# sh conf-fire.sh
Please input ports(ex: http 123/tcp 123/udp) : http
[root@shell 10. Security]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: dhcpv6-client mountd nfs ntp rpc-bind ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

[root@shell 10. Security]# vi conf-fire.sh
[root@shell 10. Security]#
[root@shell 10. Security]#
[root@shell 10. Security]# vi conf-fire.sh
[root@shell 10. Security]#
[root@shell 10. Security]#
[root@shell 10. Security]# sh conf-fire.sh
Please input ports(ex: http 123/tcp 123/udp) : http
success
success
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens192
  sources:
  services: dhcpv6-client http mountd nfs ntp rpc-bind ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

ubuntu 18.04

root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security# ufw status
Status: active
root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security# bash conf-fire.sh
Please input ports(ex: http 123/tcp 123/udp) : http
Rule added
Rule added (v6)
Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 80/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp (v6)                ALLOW IN    Anywhere (v6)

root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security#

 

 

###################################################################################

 

사설 인증서 생성

 

개발할때 http 보안을 위해 공인 인증서를 발급받아 사용하거나 사설 인증서를 생성하여 사용

공인 인증서는 주로 서비스를 할 때 발급받아 사용, 그외에 내부서비스나 개발용은 사설인증서를 주로 사용

 

 

사설인증서를 생성할 때는 주로 openssl 명령어를 이용하여 인증기관용CA 인증서와 클라이언트용 인증서를 생성

운영체제에 따라 서명용 호스트를 초기화하는 방법과 클라이언트에 인증기관용 인증서를 추가하는 명령어가 약간 차이남

 

필요정보

- RSA 개인키 생성 명령어 : openssl genrsa

- 자체 서명된 Root CA  인증서 생성 명령어 : openssl req

- 자체 CA 인증서와 클라이언트키를 이용하여 클라이언트 인증키 생성 명령어 : openssl ca

- 명령어별 상세 옵션 설명 확인 : man genrsa, man req, man ca

 

프로세스

1) 자체 서명된 Root CA 인증서가 생성될 디렉토리 생성

2) CA 디렉토리에 빈 index.txt와 1000 이 입력된 serial을 생성

3) 인증기관용(CA) 개인 키와 인증서를 생성

4) 클라이언트에 인증기관용 인증서를 추가

5) 추가한 인증서가 믿을 수 있는 인증서라고 설정

6) 서버에서 사용할 SSL/TLS 서버 키를 만든다.

7)서버에서 사용할 인증요청서를 만든다.

8)서버의 인증요청서를 이용하여 CA에서 인증서를 발급

 

스크립트 생성

 

[team01@shell 10. Security]$ cat 10.5\ conf-certificate.sh
#!/bin/bash

# 서명용 호스트 초기화
# redhat은 /etc/pki/CA 디렉토리가 존재, 해당 디렉토리에 index.txt생성,1000 숫자 입력
#마지막에 인증서 생성할 때 index.txt에 발행한 인증서 정보를 저장, serial에 발급된 인증서를 등록하기위함
echo "=========================="
echo " Initializing sining host "
echo "=========================="
touch /etc/pki/CA/index.txt
echo '1000' | tee /etc/pki/CA/serial

# 인증 기관용 인증서 생성
#open genrsa는 rsa 개인키 생성, -out 옵션은 ca.key.pem파일에 저장, 4096은 생성되는 키의 사이즈를 의미 
#(-aes256, -camellia256,--des3과 같은 옵션) 키암호화 방식 을 설정
# openssl req명령어를 이용하여 앞에서 생성한 키를 이용하여 인증 기관용 인증요청서를 생성
echo "=================================="
echo " Creating a certificate authority "
echo "=================================="
echo "---------------------"
echo " Generate rsa ca key "
echo "---------------------"
openssl genrsa -out ca.key.pem 4096
echo "--------------------------"
echo " Generate rsa ca cert key "
echo "--------------------------"
openssl req -key ca.key.pem -new -x509 -days 7300 -extensions v3_ca -out ca.crt.pem

# 클라이언트에 인증기관용 인증서 추가
echo "============================================="
echo " Adding the certificate authority to clients "
echo "============================================="
echo "cp ca.crt.pem /etc/pki/ca-trust/source/anchors/"
cp ca.crt.pem /etc/pki/ca-trust/source/anchors/
echo "update-ca-trust extract"
#자신의 인증서이므로  앞서 생성한 /etc/pki/ca-trust/source/anchors/디렉토리에 복사,
#아래 명령어로 믿을 수 있는 인증서라고 시스템에 인식
update-ca-trust extract

# SSL/TLS 키 생성
#클라이언트에 사용할 ssl/tls를 위한 서버 키를 ca 개인 키를 만들 때처럼 openssl genrsa명령어를 이용하여 서버 개인 키를 만듬
#/etc/pki/tls/openssl.cnf를 인증서 생성 디렉토리에 복사
echo "========================="
echo " Creating an SSL/TLS key "
echo "========================="
openssl genrsa -out server.key.pem 2048

# SSL/TLS 인증서 서명 요청용 키 생성
echo "================================================="
echo " Creating an SSL/TLS certificate signing request "
echo "================================================="
cp /etc/pki/tls/openssl.cnf .
openssl req -config openssl.cnf -key server.key.pem -new -out server.csr.pem

# SSL/TLS 인증서 생성
echo "=================================="
echo " Creating the SSL/TLS certificate "
echo "=================================="
#마지막에 생성한 서버용 인증요청서와 인증기관용 개인 키 및 인증요청서를 가지고 인증서를 발급 
#발급 받은 인증서는 -out옵션을 이용하여 server.crt.pem파일에 저장
openssl ca -config openssl.cnf -extensions v3_req -days 3650 -in server.csr.pem -out server.crt.pem -cert ca.crt.pem -keyfile ca.key.pem
[team01@shell 10. Security]$

 

결과

 

centos7

[root@shell 10. Security]# sh conf-cert.sh
==========================
 Initializing sining host
==========================
1000
==================================
 Creating a certificate authority
==================================
---------------------
 Generate rsa ca key
---------------------
Generating RSA private key, 4096 bit long modulus
.............................................++
..........................................................++
e is 65537 (0x10001)
--------------------------
 Generate rsa ca cert key
--------------------------
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:KR
State or Province Name (full name) []:KANGNAM
Locality Name (eg, city) [Default City]:SEOUL
Organization Name (eg, company) [Default Company Ltd]:REDHAT
Organizational Unit Name (eg, section) []:SERVICE
Common Name (eg, your name or your server's hostname) []:dev.example.com
Email Address []:abc@abc.com
=============================================
 Adding the certificate authority to clients
=============================================
cp ca.crt.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
=========================
 Creating an SSL/TLS key
=========================
Generating RSA private key, 2048 bit long modulus
..........................................................+++
..............+++
e is 65537 (0x10001)
=================================================
 Creating an SSL/TLS certificate signing request
=================================================
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:KR
State or Province Name (full name) []:KANGNAM
Locality Name (eg, city) [Default City]:SEOUL
Organization Name (eg, company) [Default Company Ltd]:REDHAT
Organizational Unit Name (eg, section) []:SERVICE
Common Name (eg, your name or your server's hostname) []:dev.example.com
Email Address []:abc@abc.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:redhat
An optional company name []:REDHAT
==================================
 Creating the SSL/TLS certificate
==================================
Using configuration from openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 4096 (0x1000)
        Validity
            Not Before: Aug 12 05:21:35 2021 GMT
            Not After : Aug 10 05:21:35 2031 GMT
        Subject:
            countryName               = KR
            stateOrProvinceName       = KANGNAM
            organizationName          = REDHAT
            organizationalUnitName    = SERVICE
            commonName                = dev.example.com
            emailAddress              = abc@abc.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment
Certificate is to be certified until Aug 10 05:21:35 2031 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
[root@shell 10. Security]# ls -l
total 68
-rw-rw-r--. 1 team01 team01  1504 Aug  7 16:00 10.1 conf-pwpolicy.sh
-rw-rw-r--. 1 team01 team01   697 Aug  7 16:00 10.2 conf-pwage.sh
-rw-rw-r--. 1 team01 team01  1794 Aug  7 16:00 10.3 conf-file.sh
-rw-rw-r--. 1 team01 team01  1360 Aug  7 16:00 10.4 conf-firewall.sh
-rw-rw-r--. 1 team01 team01  1918 Aug  7 16:00 10.5 conf-certificate-debian.sh
-rw-rw-r--. 1 team01 team01  1836 Aug  7 16:00 10.5 conf-certificate.sh
-rw-r--r--. 1 root   root    2106 Aug 12 14:20 ca.crt.pem
-rw-rw-r--. 1 team01 team01  3243 Aug 12 14:19 ca.key.pem
-rw-rw-r--. 1 team01 team01  1836 Aug 12 14:17 conf-cert.sh
-rw-rw-r--. 1 team01 team01  1365 Aug 11 17:13 conf-fire.sh
-rw-r--r--. 1 root   root   10923 Aug 12 14:20 openssl.cnf
-rw-r--r--. 1 root   root    5510 Aug 12 14:21 server.crt.pem
-rw-r--r--. 1 root   root    1110 Aug 12 14:21 server.csr.pem
-rw-r--r--. 1 root   root    1679 Aug 12 14:20 server.key.pem

 

 

 

데비안 계열

[root@shell certd]# cat conf-cert-debian.sh
#!/bin/bash

# 서명용 호스트 초기화
echo "=========================="
echo " Initializing sining host "
echo "=========================="
#데비안 계열은 별도의 CA디렉토리가 없어 만들어줌, certs,crl, newcerts, private 디렉토리도 생성
#demoCA 디렉토리에 index.txt 파일과 1000 숫자가 입력된 serial 파일 생성
mkdir -p ./demoCA
mkdir -p ./demoCA/certs ./demoCA/crl ./demoCA/newcerts ./demoCA/private
touch ./demoCA/index.txt
echo '1000' | tee ./demoCA/serial

# 인증 기관용 인증서 생성
echo "=================================="
echo " Creating a certificate authority "
echo "=================================="
echo "---------------------"
echo " Generate rsa ca key "
echo "---------------------"
openssl genrsa -out ca.key.pem 4096
echo "--------------------------"
echo " Generate rsa ca cert key "
echo "--------------------------"
openssl req -key ca.key.pem -new -x509 -days 7300 -extensions v3_ca -out ca.crt.pem

# 클라이언트에 인증기관용 인증서 추가
echo "============================================="
echo " Adding the certificate authority to clients "
echo "============================================="
echo "cp ca.crt.pem /usr/local/share/ca-certificates/"
#/usr/local/share/ca-certificates/ 디렉토리에 자체 CA 인증요청서를 복사하고 
# update-ca-certificates 명령어를 이용하여 믿을 수 있는 인증서라고 시스템이 인식할 수 있도록 만듬
cp ca.crt.pem /usr/local/share/ca-certificates/
echo "update-ca-certificates"
update-ca-certificates

# SSL/TLS 키 생성
echo "========================="
echo " Creating an SSL/TLS key "
echo "========================="
openssl genrsa -out server.key.pem 2048

# SSL/TLS 인증서 서명 요청용 키 생성
echo "================================================="
echo " Creating an SSL/TLS certificate signing request "
echo "================================================="
cp /usr/lib/ssl/openssl.cnf .
openssl req -config openssl.cnf -key server.key.pem -new -out server.csr.pem

# SSL/TLS 인증서 생성
echo "=================================="
echo " Creating the SSL/TLS certificate "
echo "=================================="
openssl ca -config openssl.cnf -extensions v3_req -days 3650 -in server.csr.pem -out server.crt.pem -cert ca.crt.pem -keyfile ca.key.pem
[root@shell certd]#

 

1) 증상 :

Can't open ./demoCA/index.txt.attr for reading, No such file or directory
140118315549120:error:02001002:system library:fopen:No such file or directory:../crypto/bio/bss_file.c:72:fopen('./demoCA/index.txt.attr','r')
140118315549120:error:2006D080:BIO routines:BIO_new_file:no such file:../crypto/bio/bss_file.c:79:

 

# vi conf-cert-debian.sh

touch ./demoCA/index.txt.attr //로 수정

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2) 증상

--------------------------
 Generate rsa ca cert key
--------------------------
Can't load /root/.rnd into RNG
140715600634304:error:2406F079:random number generator:RAND_load_file:Cannot open file:../c
You are about to be asked to enter information that will be incorporated

수정

# vi /etc/ssl/openssl.cnf

# defined.
HOME                    = .
#RANDFILE               = $ENV::HOME/.rnd  //여기 주석처리

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 

데비안 수정본

root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security/certd# cat conf-cert-debian.sh
#!/bin/bash

# 서명용 호스트 초기화
echo "=========================="
echo " Initializing sining host "
echo "=========================="
mkdir -p ./demoCA
mkdir -p ./demoCA/certs ./demoCA/crl ./demoCA/newcerts ./demoCA/private
touch ./demoCA/index.txt.attr
echo '1000' | tee ./demoCA/serial

# 인증 기관용 인증서 생성
echo "=================================="
echo " Creating a certificate authority "
echo "=================================="
echo "---------------------"
echo " Generate rsa ca key "
echo "---------------------"
openssl genrsa -out ca.key.pem 4096
echo "--------------------------"
echo " Generate rsa ca cert key "
echo "--------------------------"
openssl req -key ca.key.pem -new -x509 -days 7300 -extensions v3_ca -out ca.crt.pem

# 클라이언트에 인증기관용 인증서 추가
echo "============================================="
echo " Adding the certificate authority to clients "
echo "============================================="
echo "cp ca.crt.pem /usr/local/share/ca-certificates/"
cp ca.crt.pem /usr/local/share/ca-certificates/
echo "update-ca-certificates"
update-ca-certificates

# SSL/TLS 키 생성
echo "========================="
echo " Creating an SSL/TLS key "
echo "========================="
openssl genrsa -out server.key.pem 2048

# SSL/TLS 인증서 서명 요청용 키 생성
echo "================================================="
echo " Creating an SSL/TLS certificate signing request "
echo "================================================="
cp /usr/lib/ssl/openssl.cnf .
openssl req -config openssl.cnf -key server.key.pem -new -out server.csr.pem

# SSL/TLS 인증서 생성
echo "=================================="
echo " Creating the SSL/TLS certificate "
echo "=================================="
openssl ca -config openssl.cnf -extensions v3_req -days 3650 -in server.csr.pem -out server.crt.pem -cert ca.crt.pem -keyfile ca.key.pem

결과

root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security/certd# bash conf-cert-debian.sh
==========================
 Initializing sining host
==========================
1000
==================================
 Creating a certificate authority
==================================
---------------------
 Generate rsa ca key
---------------------
Generating RSA private key, 4096 bit long modulus (2 primes)
................++++
.............................................++++
e is 65537 (0x010001)
--------------------------
 Generate rsa ca cert key
--------------------------
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:KR
State or Province Name (full name) [Some-State]:KANGNAM
Locality Name (eg, city) []:SEOUL
Organization Name (eg, company) [Internet Widgits Pty Ltd]:REDHAT
Organizational Unit Name (eg, section) []:SERVICE
Common Name (e.g. server FQDN or YOUR name) []:dev.example.com
Email Address []:abc@abc.com
=============================================
 Adding the certificate authority to clients
=============================================
cp ca.crt.pem /usr/local/share/ca-certificates/
update-ca-certificates
Updating certificates in /etc/ssl/certs...
0 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
=========================
 Creating an SSL/TLS key
=========================
Generating RSA private key, 2048 bit long modulus (2 primes)
.....................................................+++++
.....+++++
e is 65537 (0x010001)
=================================================
 Creating an SSL/TLS certificate signing request
=================================================
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:KR
State or Province Name (full name) [Some-State]:KANGNAM
Locality Name (eg, city) []:SEOUL
Organization Name (eg, company) [Internet Widgits Pty Ltd]:REDHAT
Organizational Unit Name (eg, section) []:SERVICE
Common Name (e.g. server FQDN or YOUR name) []:dev.example.com
Email Address []:abc@abc.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:redhat
An optional company name []:REDHAT
==================================
 Creating the SSL/TLS certificate
==================================
Using configuration from openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
        Serial Number: 4096 (0x1000)
        Validity
            Not Before: Aug 12 06:08:58 2021 GMT
            Not After : Aug 10 06:08:58 2031 GMT
        Subject:
            countryName               = KR
            stateOrProvinceName       = KANGNAM
            organizationName          = REDHAT
            organizationalUnitName    = SERVICE
            commonName                = dev.example.com
            emailAddress              = abc@abc.com
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature, Non Repudiation, Key Encipherment
Certificate is to be certified until Aug 10 06:08:58 2031 GMT (3650 days)
Sign the certificate? [y/n]:y


1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security/certd#
root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security/certd#
root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security/certd# ls
ca.crt.pem  conf-cert-debian.sh  openssl.cnf     server.csr.pem
ca.key.pem  demoCA               server.crt.pem  server.key.pem
root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security/certd#
root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security/certd#
root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security/certd# ls -l
total 44
-rw-r--r-- 1 root root  2122 Aug 12 06:08 ca.crt.pem
-rw------- 1 root root  3243 Aug 12 06:07 ca.key.pem
-rw-r--r-- 1 root root  1923 Aug 12 06:07 conf-cert-debian.sh
drwxr-xr-x 6 root root  4096 Aug 12 06:09 demoCA
-rw-r--r-- 1 root root 10999 Aug 12 06:08 openssl.cnf
-rw-r--r-- 1 root root  5518 Aug 12 06:09 server.crt.pem
-rw-r--r-- 1 root root  1110 Aug 12 06:08 server.csr.pem
-rw------- 1 root root  1679 Aug 12 06:08 server.key.pem
root@shellu:/home/team01/stest/Easy-Shell-Script/10. Security/certd#

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'shell_script' 카테고리의 다른 글

shell - centos7-minimal 버전 초기 세팅 스크립트  (0) 2021.08.18
shell - public cloud AWS  (0) 2021.08.17
shell - 환경변수 설정  (0) 2021.08.07
shell - system 관련 스크립트  (0) 2021.08.02
shell 기본 sed  (0) 2021.07.30