Ansible Linux OS 설정 예제

Linux OS 설정 예제 자료임. 실제 사용하는 것 아님

 

클라우드를 이용하는 경우 cloud-init 에서 처리해야 하는 부분이 있고 Ansible 같은 설정관리 프로그램에서 처리할 수 있는 부분이 있음. 보안요구사항에 따라 설정이 보강되어야 함.

OS configuration

OS 설정은 ansible role을 통해서 관리를 하며 아래의 role을 이용함.

각 ansible role의 소스는 별도 관리

baseos.common

baseos.local_facts

baseos.users

baseos.osconfig

baseos.ldap_client

baseos.security

docker.install

 

$ cat base_os_config.yml - name: apply common OS configuration to all nodes hosts: localhost roles: - devops.baseos.common - { role: devops.baseos.local_facts, when: local_facts == "yes", tags: 'local_facts' } - { role: devops.baseos.users, tags: 'users' } - { role: devops.baseos.osconfig, tags: 'osconfig' } - { role: devops.baseos.ldap_client, tags: 'ldap_client' } - { role: devops.baseos.security, tags: 'security' } - { role: devops.docker.install, tags: 'docker.install' }   $ ansible-playbook -i inventory/localhost base_os_config.yml --sudo

CentOS7에서 Ubuntu와 동일할 경우 "동일"이라고 표시

ansible implemention : ansible 에서 관리되는 항목에 포함이 되었을 경우 포함.

 

OS 설정

Ubuntu 16.04

CentOS7

memo

cloud-init/ansible role

OS 설정

Ubuntu 16.04

CentOS7

memo

cloud-init/ansible role

package install

python-minimal

postfix

postfix

ansible 실행을 위해 Ubuntu에서 python-minimal 필요

postfix 서비스는 disable

cloud-init

package update

apt-get -y update

DEBIAN_FRONTEND=noninteractive apt-get -y dist-upgrade

yum update -y

 

cloud-init

sudoers

/etc/sudoers.d/10-example

동일

operation 계정만 NOPASSWD 옵션 이용함

devops.baseos.users

OS limit

/etc/security/limits.d/10-example.conf

/etc/security/limits.d/10-example.conf (동일)

/etc/security/limits.d/20-nproc.conf 삭제

increase nofile, nproc

devops.baseos.osconfig

OS banner

/etc/motd

delete /etc/update-motd.d/00-header

delete  /etc/legal

/etc/issue

 

devops.baseos.osconfig

root password

update

동일

 

devops.baseos.users

user 관리

create these accounts:

example

security

operation

동일

example 은 docker,systemd-journal 그룹에 추가로 속함.

devops.baseos.users

root .bashrc

다음 내용 추가

alias vi='vim'

동일

 

Ubuntu의 경우 vi와 vim이 동일한 프로그램임.

설정하지 않아도 되어서 뺄 예정임.

sshd config

/etc/ssh/sshd_config

/etc/ssh/sshd_config

/etc/cloud/cloud.cfg 설정 변경

/etc/ssh/sshd_config 파일이 OS별로 다른 부분이 있음

CentOS에서는 "HostKey /etc/ssh/ssh_host_dsa_key" 비활성화를 하였음.

devops.baseos.osconfig

sysctl

/etc/sysctl.d/60-example.conf

동일

 

devops.baseos.osconfig

TMOUT 설정

/etc/profile.d/example.sh

동일

 

devops.baseos.osconfig

bash history

/etc/profile.d/command_save.sh

/etc/rsyslog.d/60-example.conf

/etc/logrotate.d/command_save

동일

 

devops.baseos.security

security - 파일 permission

/etc/passwd

/etc/shadow

/etc/rsyslog.conf

/etc/services

/etc/crontab

/etc/ldap/ldap.conf

동일

 

devops.baseos.security

system timezone

Asia/Seoul

동일

 

devops.baseos.osconfig

ntp 설정

ntp 설치

/etc/ntp.conf

enable ntp service

ntp 설치

/etc/ntp.conf

enable ntpd service

disable chronyd

centos: disable chronyd

ubuntu: "enable mode 7" 옵션을 ntp.conf 에 추가

OS에 따라 서비스 이름이 다름

devops.baseos.osconfig

systemd - mount

/etc/systemd/system/example.mount

동일

디스크 마운트하는 부분은 cloud-init에 있는 부분임.

cloud-init

systemd - docker install

install docker-engine with package manager

/etc/systemd/system/docker.service.d/override.conf

install /usr/bin/docker-compose with binary

동일

 

devops.docker.install

systemd - collectd

/etc/systemd/system/collectd.service

/etc/systemd/system/log-forward.service

/etc/systemd/system/telegraf.service

동일

metric 수집, 로그 전송용

devops.docker.install

security - /etc/passwd

불필요한 계정 /etc/passwd 에서 주석 처리

동일

 

cloud-init

security - pwquality 설정

libpwquality-tools , ibpam-pwquality 설치

/etc/security/pwquality.conf.d/10-example.conf

libpwquality 설치

/etc/security/pwquality.conf 

/etc/login.defs

 

devops.baseos.security

security - 패키지 삭제

rsh-server, postfix 삭제

lsof, chkrootkit, rkhunter 설치

auditd 설치

/etc/audit/audit.rules 설정

rsh-server, postfix 삭제

lsof, net-tools, psmisc, rkhunter 설치

auditd 설치

/etc/audit/audit.rules 설정

postfix는 cloud-init에서 서비스 disalbe을 함

devops.baseos.security

ldap config

ldap-auth-client nscd 설치

/etc/ldap/conf 설정

nscd 서비스 시작

nss-pam-ldapd openldap 설치

/etc/nslcd.conf

 

devops.baseos.ldap_client

selinux

-

비활성화함.

/etc/sysconfig/selinux

/etc/selinux/config

 

devops.baseos.security

fix cpu, and interface name

/usr/bin/fix_aws_grub.sh

/etc/systemd/system/fix_aws_grub.service

tuned-adm profile latency-performance

 

devops.baseos.osconfig

CentOS의 경우 cloud-init에서 적용을 함.

logrotate for /example/logs/

/etc/logrotate.d/example-logs

동일

devops.baseos.osconfig