서브젝트 요구사항
최신버전의 데비안과 CentOS 중에 선택한다. 처음이라면 데비안을 추천한다.
aptitude와 apt의 차이점에 대해 알고있어야 하며, SELinux 혹은 AppArmor가 무엇인지 알고 있어야 한다.
동료 평가 중에 새 계정을 생성하여 SSH를 테스트 할 것이기 때문에 작동 원리를 이해하고 있어야 한다.
당신의 방화벽은 가상머신을 실행시킬 때 활성화 되어야 한다. CentOS라면 기본 방화벽 대신 UFW방화벽을 사용해야한다. 이 때 DNF가 필요할 것이다.
평가 도중 새로운 계정을 만들고 그룹에 포함시켜야 한다.
설정파일을 설정한 후에 root 계정을 포함한 가상머신 내 모든 계정의 비밀번호를 변경해야한다.
평가를 하면서 해당 스크립트의 원리에 대해 설명할 수 있어야 한다. 또한 파일을 수정하지 않고 중단시킬 수 있어야 한다. cron을 참고하자.
bonus 파트 요구사항
다음과 같이 파티션을 설정한다.
lighttpd, MariaDB, PHP를 사용해 WordPress 웹사이트를 설정한다.
유용하다고 생각되는 서비스를 선택하여 설정한다. 해당 이유도 설명할 수 있어야 한다. (NGINX, Apache2 제외)
bonus 파트는 mandantory가 PERFECT인 경우에만 평가된다. mandantory가 모두 처리되었고 오작동 없이 작동한다는 것을 의미한다. 필수 요건을 모두 통과하지 않은 경우 보너스 부분은 전혀 평가되지 않는다.
apt vs aptitude
AppArmor란?
취약한 보안을 가진 프로세스가 야기할 수 있는 손상을 막을 수 있도록 작업을 제한하는 보안 모듈
SSH 설정
nano /etc/ssh/sshd_config
ssh 설정 파일 수정
3. born2beroot -> settings -> Network -> Advanced -> Port Fowarding 클릭
4. host IP에 vboxnet ip 입력, guest ip에 가상머신 ip 입력 (hostname -I 명령어로 확인 가능), port 에 4242 입력
5. Attached to: Host-only Adapter로 변경
UFW 방화벽 설치 및 설정
su # root권한으로 접근
apt-get install ufw -y # ufw 설치 -y는 뭐지?
sudo ufw enable # startup 시 방화벽 활성화
# 모든 포트를 차단하고 4242만 허용
sudo ufw default deny
sudo ufw allow 4242
# UFW 상태 확인
sudo ufw status verbose
sudo 설치 및 설정
root 계정으로 전환하여 sudo를 설치해준다
su
apt-get update
apt-get install sudo'
nano /etc/sudoers
# secure_path 끝에 :/snap/bin 추가
# 다음 설정 추가
Defaults authfail_message="Authentication faild."
Defaults badpass_message="The password is incorrect."
Defaults iolog_dir="/var/log/sudo/"
Defaults log_input
Defaults log_output
Defaults requiretty
Defaults passwd_tries=3
# /var/log/sudo 디렉터리 추가
mkdir /var/log/sudo
# sudo 그룹에 유저 추가
usermod -aG sudo hyuncpar
(usermod 명령어 안 될시 export PATH=/usr/sbin:PATH 하여 환경변수에 경로 추가)
Password 정책 설정
nano /etc/login.defs
PASS_MAX_DAYS 30 # 패스워드 만기일 설정
PASS_MIN_DAYS 2 # 패스워드 최소 변경일 설정
PASS_WARN_AGE 7 # 패스워드 경고 안내 기한 설정
sudo apt install libpam-pwquality # 패스워드 강도 확인하는 모듈
nano /etc/pam.d/common-password
pam_pwquality.so retry=3 minlen=10 ucredit=-1 dcredit=-1 maxrepeat=3 reject_username enforce_for_root difok=7
monitoring.sh
free -m | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\n", $3, $2, $3/$2 * 100}'
(free: 사용중인 메모리 정보 출력)
(awk 명령어로 $3 $2 등 해당 인자만 출력)
(df -a -MB: 모든 파일시스템 디스크 사용량 표시)
(awk '{sum+=$3}END{print sum}' 특정 필드의 합 구하기)
(mpstat: CPU 모든 상태 표시)
(who -b: 시스템 부팅 시간 표시)
(lsblk: 파티션 상태 표시)
(ss: 리눅스 내 네트워크 상태 출력)
cron 설정
crontab -e