OS는 안정적인 최신 버전의 Debian
or CentOS
를 선택해야 한다
설치를 진행함에 있어 최소한의 서비스로 설치를 진행해야 한다(그래픽 인터페이스 같은 서비스는 설치 X)
평가를 진행하면서
aptitude, apt의 차이점
SELinux, AppArmor의 차이점
SSH 서비스의 포트는 4242
번 포트에서만 사용되어야 한다.
SSH를 통한 root
접근 권한이 없어야 한다.
SSH 연결을 위한 4242번만 포트가 열려 있어야 한다.
가상 머신(서버)가 시작할 때 방화벽이 활성화되어 있어야 한다.
CentOS
를 사용하는 경우 기본 방화벽 대신 UFW을 사용해야 한다.(DNF를 사용해야함)
가상 머신(서버)의 hostname
은 인트라넷ID+42로 설정되어야 한다.
높은 보안 수준의 암호 정책을 구현해야 한다.
엄격한 규칙에 따른 sudo를 설치하고 구성해야 한다.
root
사용자 외 다른 사용자 이름으로 로그인한 사용자가 있어야 한다.(사용자는 user42 및 sudo 그룹에 속해야 한다)
비밀번호는 30일마다 만료 되어야 한다
비밀번호를 수정하기 전 허용되는 최소 일은 2일로 설정한다.
사용자는 암호가 만료되기 7일 전 경고 메시지를 받아야 한다
비밀번호는 10자 이상, 최소 1개이상 대문자, 소문자, 숫자가 포함되어야 하며, 동일 문자 3개 연속 되지 않아야 한다.
암호에는 사용자 이름이 포함되면 안된다.
이전 암호와 7이상 같으면 안된다.(root계정은 이 정책 제외)
평가를 진행하면서 새로운 사용자를 만들고, 그룹에 할당해야 한다.
평가를 진행하면서 루트, 모든 사용자 계정의 비밀번호가 정책에 맞게 변경되는지 확인한다.
sudo 그룹에 아래와 같은 설정을 구성해야 한다.
암호가 틀린 경우 재 입력 기회를 3번으로 제한해야 한다.
오류가 발생한 경우 선택한 사용자 지정 메시지
가 표시되어야 한다.
sudo를 사용하는 작업은 입력과 출력 모두 로그파일로 보관해야 한다
- 저장 경로는는 /var/log/sudo/
폴더이다.
보안상 이유로 tty모드를 활성화 해야 한다.
보안상 이유로 sudo가 사용할 수 있는 경로를 제한해야 한다.
- ex) /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
monitoring.sh 스크립트를 만들어야 한다.(bash에서 개발)
가상 머신(서버) 시작 시 스크립트는 10분마다 모든 터미널에 일부 정보(아래 이미지)를 표시해야 한다.(배너는 선택사항)
스크립트는 아래와 같은 정보를 포함해야 한다.
운영 체제 아키텍처 및 커널 버전
물리적 프로세서의 수
가상 프로세서의 수
서버의 현재 사용 가능한 RAM 및 사용률(백분율)
서버의 현재 사용 가능한 메모리 및 사용률(백분율)
프로세서의 현재 사용률을 백분율로 표시
마지막 재부팅 날짜 및 시간
LVM 활성화 여부
활성 연결 수
서버를 사용하는 사용자 수
서버의 IPv4 주소 및 MAC주소
sudo 프로그램으로 실행된 명령의 수
모니터링 예시
모니터링에 필요한 정보를 볼 수 있는 파일
보너스 과제는 mandatory가 완전히 수행되어야 검사한다.
파티션을 설정하여 아래와 비슷한 구조를 가지게 한다.
lighttpd, MariaDB 및 php 서비스를 사용하여 기능적인 WordPress 웹 사이트를 설정한다.
유용하다고 생각되는 서비스를 선택(NGINX/Apache2 제외) 평가를 진행하며 선택한 서비스를 설명해야 한다.
보너스 파트를 수행하며 필요한 포트는 UFW
에 추가할 수 있다.