LFCS — 리눅스 재단 시스템 관리자 · SELinux 와 firewalld 를 손으로 — 사용자·ACL·sshd·dnf 까지 · 퀴즈
퀴즈: SELinux 와 firewalld 를 손으로
문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
`chcon -t httpd_sys_content_t /srv/web/index.html` 로 컨텍스트를 바꿨다. 나중에 `restorecon -R /srv/web` 을 돌리면?
- chcon 이 붙인 타입이 그대로 유지된다. restorecon 은 빠진 컨텍스트만 채운다
- 정책의 규칙 목록에 /srv/web 규칙이 없으므로 기본 타입으로 되돌아간다
- restorecon 이 chcon 의 변경을 감지해 규칙 목록에 자동으로 등록한다
- httpd_sys_content_t 는 시스템 타입이라 restorecon 이 건드리지 않는다
`firewall-cmd --add-service=http` 만 실행한 뒤 `firewall-cmd --reload` 를 했다. 결과는?
- runtime 에 넣은 http 가 permanent 로 승격되어 양쪽에 남는다
- reload 는 runtime 을 건드리지 않으므로 http 는 그대로 열려 있다
- reload 가 permanent 를 다시 읽으므로 runtime 에만 있던 http 는 사라진다
- reload 가 실패한다. runtime 변경이 있으면 먼저 --runtime-to-permanent 를 해야 한다
`/etc/sudoers.d/ops` 에 문법 오류가 있는 채로 저장했다. 다른 사용자가 `sudo` 를 쓰면?
- 그 조각만 무시되고 나머지 규칙은 정상 동작한다
- root 가 다음 로그인할 때 자동으로 고쳐진다
- sudo 가 syntax error 를 내며 전부 거부할 수 있다. 그래서 visudo -cf 로 먼저 검사한다
- 파일 권한이 0440 이면 문법 오류가 있어도 안전하게 무시된다
`/etc/security/limits.d/90-lfcs.conf` 에 `deploy hard nofile 4096` 을 적었는데 지금 열려 있는 deploy 의 셸에서 `ulimit -Hn` 은 그대로다. 이유는?
- limits 파일은 재부팅해야만 읽힌다
- hard 한도는 root 만 바꿀 수 있어 deploy 셸에서는 보이지 않는다
- nofile 은 limits.conf 가 아니라 sysctl fs.file-max 로만 정한다
- pam_limits 는 세션을 열 때 적용하므로 새로 로그인한 셸에서 봐야 한다
`/srv/web/upload` 를 750 으로 만들고 `setfacl -m u:deploy:rwx` 를 줬더니 `ls -ld` 가 `drwxrwx---+` 로 보인다. 해석은?
- setfacl 이 그룹 권한을 rwx 로 바꿔 버렸으므로 chmod 750 을 다시 해야 한다
- + 는 setuid 표시라 보안 문제이므로 setfacl -b 로 지워야 한다
- ACL 항목이 그룹에도 복제된 것이므로 setfacl -x g:ops 로 정리한다
- ACL 이 붙으면 그룹 자리는 mask 를 보여 준다. 정상이며 getfacl 의 group:: 줄이 실제 그룹 권한이다
RHEL 9 에서 `/etc/ssh/sshd_config` 본문 끝에 `MaxAuthTries 3` 을 적었는데 `sshd -T` 는 다른 값을 보여 준다. 가장 그럴듯한 원인은?
- sshd 는 같은 키워드의 첫 값을 쓰는데, 맨 위의 Include 로 읽힌 드롭인이 먼저 그 값을 정했다
- sshd -T 는 기본값만 보여 주고 설정 파일은 반영하지 않는다
- MaxAuthTries 는 Match 블록 안에서만 유효한 키워드다
- 본문의 값은 systemctl restart sshd 없이도 즉시 반영되므로 다른 원인이다