Ansible을 이용한 보안취약점 조치
/etc/securetty 파일에 root 유저가 원격 터미널(pts)로 접속할 수 없게 조치한다.
Inventory 설정
# cat hosts
[ALL_HOSTS]
172.16.0.100 managed_ip=172.16.0.100 des="2020-12-03"
[ALL_HOSTS_OK]
대상 호스트는 172.16.0.100이며, 추가는 2020-12-03에 수행한다. 참고적으로 ALL_HOSTS_OK 호스트 그룹은 작업이 완료된 호스트의 history를 위한 그룹이다.
Host Variables 설정
# cat host_vars/172.16.0.100
ansible_ssh_host: 172.16.0.100
ansible_ssh_port: SSH_포트번호
ansible_ssh_user: 사용자 아이디
ansible_ssh_pass: "사용자 패스워드"
ansible_become: yes
ansible_become_method: su
ansible_become_user: root
ansible_become_pass: "!root_패스워드"
ansible_python_interpreter: python2.7
Playbook 설정
---
- name: OS Secure Fix
hosts: ALL_HOSTS
vars:
time: "{{lookup('pipe','date \"+%Y%m%d\"')}}"
tasks:
- name: Disable root remote access - commenting pts
replace: dest=/etc/securetty
regexp="^pts"
replace="#pts"
보안취약점 조치
에 대한 Playbook 분석
- 원격 호스트의 /etc/securetty 파일에 pts 터미널을 주석처리 한다.
- ansible의 replace 모듈을 사용하며, 주석처리가 없는 pts 구문이 검출되면(^pts) 주석처리(#pts) 한다.
playbook 실행
# ansible-playbook -i hosts securetty.yml