Ansible Automation III

Dongmin Lee·2024년 2월 5일
0

Ansible

목록 보기
6/7

1. 패스워드 변경 주기 설정하기

1.1 사전 분석

  • 패스워드 변경 주기를 설정할 대상 호스트는 인벤토리를 통해 설정한다.
  • 패스워드 변경 주기를 설정할 사용자 계정 정보와 최대 변경일은 변수를 통해 별도의 파일로 정의한다.
  • 패스워드 변경 주기 설정은 ansible.builtin.user 모듈을 이용한다.

1.2 플레이북 설계

  • 사용자 계정과 최대 변경일을 변수로 설정하기 위해 vars_maxdays.yml 파일을 생성한다.
  • 메인 플레이북 set_chage_password.yml 파일에는 변경 주기를 설정할 테스트가 포함된다.

1.3 플레이북 개발

https://github.com/naleeJang/Easy-Ansible/tree/main/chapter_11.1

2. 패스워드 생성 법칙 적용하기

2.1 사전 분석

  • 패스워드 생성 법칙 적용을 위해서는 pwquality.conf 라는 pam 설정 파일을 이용해야 하며, 리눅스 서버에 libpam-pwquality 패키지가 있어야 한다.
  • 패스워드 변경 주기는 /etc/securiy/pwquality.conf 파일로 설정한다.
  • /etc/securiy/pwquality.conf 파일을 설정하기 전에 원본 파일을 백업받는다.
  • pwquality.conf 파일은 사용자가 커스텀으로 설정하는 파라미터들로 구성되어 있으며, Jinja2 템플릿 방식으로 구현한다.
  • 파라미터들은 별도의 변수 설정 파일에서 정의한 파라미터 값으로 사용하고, 파라미터 정의 여부를 체크하여 pwquality.conf 파일의 내용을 구성한다.

2.2 플레이북 설계

  • 변수 vars_pw_rule.yml 에 정의
    • minlen: 최소 패스워드 길이 설정
    • dcredit: 최소 숫자 개수 설정
    • ucredit: 최소 대문자 개수 설정
    • lcredit: 최소 소문자 개수 설정
    • ocredit: 최소 특수문자 개수 설정
    • root 계정에서도 해당 패스워드 룰을 설정할 수 있는 enforce_for_root
  • Jinja2 템플릿 파일 pwqulity.conf.j2 아래 내용 포함
    • minlen, dcredit, ucredit, lcredit, orcedit, enforce_for_root
    • minclass: 최소 문자클래스 개수
    • maxrepeat: 최대 연속 동일 문자 수
    • maxclassrepeat: 동일 글래스의 최대 연속 문자 수

2.3 플레이북 개발

https://github.com/naleeJang/Easy-Ansible/tree/main/chapter_11.2

3. 디렉터리 및 파일 접근 권한 변경

3.1 사전 분석

  • Sticky bit 파일 검색 명령어: find / -xdev -perm -04000 -o -perm -02000 -o -perm -01000
  • World Writable 파일 검색 명령어: find / -xdev -type f -perm -2
  • ansible.builtin.shell 모듈을 이용하여 Sticky bit 파일과 World Writable 파일을 찾는다.
  • 찾은 파일 목록은 ansible.builtin.file 모듈을 이용하여 파일의 접속 권한을 설정한다.
  • Sticky bit 파일은 u-s, g-s, o-s 로 설정하고, World Writable 파일은 o-w 로 설정한다.

3.2 플레이북 설계

3.3 플레이북 개발

https://github.com/naleeJang/Easy-Ansible/tree/main/chapter_11.3

4. 사설 인증서 생성하기

4.1 사전 분석

  • 사설 인증서에는 자체 서명된 인증 기관용 인증서와 해당 인증서를 이용해 만든 클라이언트 인증 키가 있다.
  • 인증서를 만들 때는 CSR (Certificate Signing Request) 이라는 인증 서명 요청을 한다.
  • CSR을 통해 인증 기관용 인증서클라이언트 인증 키를 생성한다.
  • 앤서블에서 개인 키를 만들때는 community.crypto.openssl_privatekey 모듈을 사용한다.
  • CSR을 만들 때는 community.crypto.openssl_csr_pipe 모듈을 사용한다.
  • CSR을 이용하여 인증서를 생성할 때는 community.crypto.x509_certificate 모듈을 사용한다.

4.2 플레이북 설계

  • tnode1에 사설 인증서를 생성하기 위해 inventory에 rootCA 호스트 그룹을 만들고 그룹 멤버로 tnode1 노드를 추가한다.
  • 인증서 생성에 필요한 값들은 vars_ssltls.yml 파일을 통해 외부 변수로 정의한다.
  • 메인 플레이북인 make_certification.yml 에는 become을 false로 설정하여 root 계정이 아니 ubuntu 계정으로 실행되도록 한다.
  • pre_tasks 키워드를 사용하여 role이 실행되기 전에 먼저 태스크가 실행되도록 하였으며, 인증서 생성을 위한 디렉터리를 생성하는 태스크를 추가한다.
  • 인증서 생성은 rootCA 인증서와 serverKey로 나뉘며, 해당 인증서 생성은 각각 role을 생성하여 처리하도록 설계한다.
  • rootCA role과 serverKey role은 각각 개인 키 생성 → CSR (인증 서명 요청) 생성 → CSR을 이용한 인증서 생성 태스크로 구성된다.
  • serverKey role에서 CSR 인증서를 생성할 때는 이미 사전에 생성된 rootCA로부터 발급받아 생성하는 방식을 사용한다.

4.3 플레이북 개발

https://github.com/naleeJang/Easy-Ansible/tree/main/chapter_11.4

0개의 댓글