✅ 1. 시스템 기본 및 패치 관리 항목별 적용 방법
| 번호 | 점검 항목 | 적용 방법 |
| 1 | OS 보안 패치 적용 | apt update && apt upgrade (Ubuntu), yum update 또는 dnf upgrade (RHEL/CentOS) |
| 2 | 커널 최신 업데이트 | Ubuntu: apt install --install-recommends linux-generic, 이후 재부팅 |
| 3 | 패키지 서명 검증 | APT: apt-key list, apt-key adv --keyserver keyserver.ubuntu.com --recv-keys [KEY] |
| 4 | 불필요 패키지 제거 | apt autoremove, yum remove 패키지명 |
| 5 | 자동 보안 업데이트 | Ubuntu: unattended-upgrades, RHEL: dnf-automatic, 설정 후 crontab 등록 |
| 6 | USB, Bluetooth 비활성화 | /etc/modprobe.d/blacklist.conf에 blacklist usb-storage 등 추가 |
| 7 | Grub 비밀번호 설정 | grub-mkpasswd-pbkdf2로 해시 생성 → /etc/grub.d/40_custom에 설정 추가 |
| 8 | BIOS/UEFI 보안 설정 | 서버 제조사 BIOS 진입 후 부팅 순서 제한, 패스워드 설정 등 수동 적용 |
| 9 | Sysctl 보안 파라미터 | /etc/sysctl.conf 또는 /etc/sysctl.d/99-secure.conf에 항목 추가 후 sysctl -p |
| 10 | 불필요 커널 모듈 비활성화 | /etc/modprobe.d/disable-modules.conf에 install usb-storage /bin/true 등 설정 |
| 11 | coredump 비활성화 | /etc/security/limits.conf에 * hard core 0 또는 ulimit -c 0 |
| 12 | 시스템 타임존 표준화 | timedatectl set-timezone Asia/Seoul |
| 13 | NTP 또는 chrony 설정 | apt install chrony, 설정: /etc/chrony/chrony.conf |
| 14 | SELinux 또는 AppArmor 활성화 | SELinux: /etc/selinux/config에서 SELINUX=enforcing 설정, AppArmor: aa-status 확인 |
| 15 | nodev, noexec 마운트 옵션 설정 | /etc/fstab에 옵션 추가: /tmp ext4 defaults,nodev,nosuid,noexec 0 2 등 |
| 16 | /tmp, /var, /home 분리 마운트 | 디스크 파티셔닝 시 또는 LVM을 통해 분리, /etc/fstab 설정 |
| 17 | /var/log 분리 | 로그 증가에 따른 디스크 가득 참 방지, 마찬가지로 /etc/fstab으로 관리 |
| 18 | Swap 암호화 설정 | cryptsetup 사용하여 dm-crypt 기반 swap 생성 |
| 19 | 파일시스템 자동 점검 설정 | tune2fs -c 30 -i 30d /dev/sdaX (fsck 주기 설정) |
| 20 | swap 무작위화(randomization) | echo 1 > /proc/sys/vm/page-cluster 등 설정 확인 |
| 21 | 무결성 점검 도구(AIDE) 설치 | apt install aide, 초기화: aideinit, 정기 실행 등록 |
| 22 | rkhunter 설치 및 실행 | apt install rkhunter, rkhunter --update && rkhunter --check |
| 23 | Lynis 설치 및 감사 | apt install lynis, lynis audit system으로 보안 점검 리포트 실행 |
| 24 | OpenVAS 또는 Greenbone 설치 | 오픈소스 취약점 스캐너, 리소스 소모가 커 테스트 환경에서 먼저 적용 권장 |
| 25 | CIS 벤치마크 검사 도구 설치 | cis-cat, OpenSCAP 등 사용하여 CIS 규격 검사 |
| 26 | 취약점 자동 리포트 시스템 | oscap, lynis, rkhunter 결과를 cron으로 수집하여 메일 발송 설정 |
| 27 | 시스템 시간 손상 탐지 | chronyc tracking 또는 ntpq -p로 확인 |
| 28 | 패키지 저장소 인증 구성 | Ubuntu: /etc/apt/sources.list에서 HTTPS 사용 및 서명키 확인 |
| 29 | APT/YUM/DNF 캐시 보안 | apt clean, yum clean all 주기적 실행 및 디스크 공간 확인 |
| 30 | STIG/CIS 기반 자동화 스크립트 연동 | Ansible CIS Role, OpenSCAP profile 실행 예: oscap xccdf eval --profile ... |
✅ 2. 계정 및 권한 관리 항목별 적용 방법
| 번호 | 점검 항목 | 적용 방법 |
| 31 | 루트 직접 로그인 비활성화 | /etc/ssh/sshd_config에서 PermitRootLogin no 설정 후 systemctl restart sshd |
| 32 | sudo 사용자 최소화 | /etc/sudoers 또는 /etc/sudoers.d/* 에 필요한 사용자만 등록 |
| 33 | su 사용 제한 | /etc/pam.d/su에 auth required pam_wheel.so use_uid, wheel 그룹만 허용 |
| 34 | sudo 로그 기록 설정 | Defaults logfile="/var/log/sudo.log"를 /etc/sudoers에 추가 |
| 35 | 비활성 계정 잠금 | passwd -l 계정명 또는 chage -E0 계정명 사용 |
| 36 | 시스템 계정 비사용 계정 잠금 | UID < 1000인 계정 중 로그인 필요 없는 계정은 /sbin/nologin 또는 nologin으로 쉘 변경 |
| 37 | 패스워드 최소 길이 설정 | /etc/login.defs: PASS_MIN_LEN, /etc/security/pwquality.conf 설정 (예: minlen = 12) |
| 38 | 패스워드 변경 주기 설정 | /etc/login.defs: PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_WARN_AGE |
| 39 | 패스워드 재사용 제한 | /etc/pam.d/common-password (Ubuntu) 또는 /etc/pam.d/system-auth (RHEL)에 remember=5 등 추가 |
| 40 | 로그인 실패 시 계정 잠금 | /etc/pam.d/common-auth 또는 system-auth에 pam_tally2 또는 pam_faillock 설정 |
| 41 | MFA/2FA 활성화 | google-authenticator 또는 libpam-google-authenticator 설치 및 PAM 연동 |
| 42 | SSH Key 기반 로그인 강제 | PasswordAuthentication no 설정, .ssh/authorized_keys에 공개키 등록 |
| 43 | SSH 키 권한 설정 | .ssh 폴더 700, authorized_keys 파일 600으로 설정 |
| 44 | SSH RootLogin 비활성화 | /etc/ssh/sshd_config → PermitRootLogin no, SSH 재시작 |
| 45 | SSH 프로토콜 제한 | Protocol 2 만 사용, 1은 보안 취약 |
| 46 | SSH 포트 변경 | /etc/ssh/sshd_config → Port 2222 등으로 설정 후 방화벽 허용 |
| 47 | AllowUsers / AllowGroups 설정 | /etc/ssh/sshd_config → AllowUsers admin1 admin2, AllowGroups wheel 등 |
| 48 | SSH Idle Timeout 설정 | ClientAliveInterval 300, ClientAliveCountMax 0 설정 |
| 49 | 비밀번호 없는 로그인 방지 | PermitEmptyPasswords no 설정 |
| 50 | 로그인 실패 감지 알림 | faillog 활용, 또는 pam_exec를 사용하여 이메일/Slack 통합 가능 |
| 51 | 로그인 기록 점검 | last, lastlog, faillog, journalctl -u ssh 주기 점검 |
| 52 | 홈 디렉토리 권한 제한 | chmod 700 /home/사용자 또는 umask 기본값 확인 및 조정 |
| 53 | SUID/SGID 파일 점검 | find / -perm /6000 -type f로 검토 후 위험한 바이너리 제거 또는 권한 변경 |
| 54 | world-writable 파일 점검 | find / -type f -perm -0002 또는 -perm -002 등으로 확인 |
| 55 | 권한 상승 취약점 점검 | linpeas.sh, pspy, GTFOBins 등을 이용하여 정기 점검 |
| 56 | setuid 바이너리 최소화 | /bin/su, /usr/bin/passwd 외 제거 권고. chmod -s 파일로 제거 가능 |
| 57 | 그룹 최소화 및 정리 | getent group 결과 확인, 불필요 그룹 삭제 |
| 58 | LDAP/AD 연동 계정 권한 제한 | /etc/nsswitch.conf, /etc/pam.d/* 설정과 그룹 매핑 확인 |
| 59 | 사용자 계정 주기적 감사 | awk -F: '{ print $1 }' /etc/passwd, chage -l, passwd -S 등 주기 점검 |
| 60 | 신규 계정 생성 시 보안 템플릿 적용 | /etc/skel 디렉토리 내 .bashrc, .profile, .ssh/ 등 보안 설정 사전 구성 |
✅ 3. SSH 및 원격 접근 제어 항목별 적용 방법
| 번호 | 점검 항목 | 적용 방법 |
| 61 | SSH 무결성 검증 (서버 호스트 키 검증) | /etc/ssh/ssh_host_* 키 파일 생성 확인 후 ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub로 fingerprint 검토. 클라이언트에서는 ~/.ssh/known_hosts에 fingerprint 등록 |
| 62 | SSH 서버 설정 하드닝 | /etc/ssh/sshd_config 내 다음 항목 적용: Protocol 2, PermitRootLogin no, PasswordAuthentication no, PermitEmptyPasswords no, ClientAliveInterval 300, MaxAuthTries 3 등 |
| 63 | SSH 배너 메시지 설정 | /etc/issue.net에 경고문 작성 → sshd_config에 Banner /etc/issue.net 추가 |
| 64 | Jump host / Bastion 구성 | SSH ProxyCommand 또는 ProxyJump 사용 → ~/.ssh/config에 ProxyJump bastion-host 설정 |
| 65 | VPN 통한 SSH 접근 | VPN 서버(OpenVPN, WireGuard 등) 구성 후, SSH 포트 접근을 VPN 서브넷으로 제한 (iptables 또는 firewalld 사용) |
| 66 | SSH 접근 IP 제한 | sshd_config 설정 후 iptables 또는 firewalld에 특정 IP만 허용: iptables -A INPUT -p tcp --dport 22 -s 203.0.113.0/24 -j ACCEPT |
| 67 | Fail2Ban 또는 sshguard 설정 | apt install fail2ban → /etc/fail2ban/jail.local에 sshd jail 활성화. 기본 5회 실패 시 10분 차단 |
| 68 | SSH 로그인 시도 횟수 제한 | MaxAuthTries 3 설정, PAM 계정 차단 정책(pam_tally2, pam_faillock) 병행 |
| 69 | SSH 로그 중앙 수집 | /etc/rsyslog.d/50-default.conf 수정 → 로그를 ELK, Graylog, syslog-ng로 전송 |
| 70 | TTY 기록(세션 로깅) 설정 | script 명령으로 ~/.bashrc에 script -f /var/log/sessions/$USER-$(date).log 추가 또는 auditd 사용 |
| 71 | SSH Forwarding 비활성화 | sshd_config에 AllowTcpForwarding no, X11Forwarding no 설정 |
| 72 | X11 포워딩 비활성화 | X11Forwarding no, X11UseLocalhost yes 설정 |
| 73 | SSH 로그레벨 조정 | LogLevel VERBOSE 설정 시 인증 시도/성공/실패까지 모두 로깅됨 |
| 74 | sshd_config 변경 시 유효성 검사 | sshd -t 명령으로 설정 파일 문법 체크 후 적용: systemctl restart sshd |
| 75 | SSH 공개키 강제 인증 | PasswordAuthentication no, ChallengeResponseAuthentication no, UsePAM no |
| 76 | SSH Key lifecycle 관리 | 키 파일 생성 시 ssh-keygen -t ed25519 -C "comment" 후 6~12개월마다 교체 |
| 77 | AllowUsers / AllowGroups 적용 | AllowUsers admin1 admin2, AllowGroups sshusers 등으로 접근 계정 제한 |
| 78 | 시간 기반 SSH 접근 제어 | PAM 모듈 사용: /etc/security/time.conf 설정 후 /etc/pam.d/sshd에 account required pam_time.so 추가 |
| 79 | SSH 구성 변경 모니터링 | auditd 또는 inotify-tools로 /etc/ssh/sshd_config 변경 감지 후 Slack 등 알림 |
| 80 | Multi-Factor Authentication (MFA) 적용 | apt install libpam-google-authenticator → 사용자별 설정 후 /etc/pam.d/sshd에 auth required pam_google_authenticator.so 추가 |
✅ 4. 네트워크 보안 항목별 적용 방법
| 번호 | 점검 항목 | 적용 방법 |
| 81 | 기본 방화벽 정책 설정 (Deny all, allow by rule) | ufw default deny incoming, ufw allow 22, ufw enable 또는 firewalld에서 zone drop, rich rules 설정 |
| 82 | iptables 또는 nftables 적용 | iptables -P INPUT DROP, iptables -A INPUT -p tcp --dport 22 -j ACCEPT 또는 nft로 대체 설정 |
| 83 | 포트 스캔 탐지 및 대응 | psad, portsentry, fail2ban 설치 및 설정, 포트 스캔 시 차단 IP 블랙리스트 등록 |
| 84 | TCP Wrappers (hosts.allow/deny) 설정 | /etc/hosts.deny에 ALL: ALL, /etc/hosts.allow에 허용 서비스 및 IP 명시 |
| 85 | 불필요 인터페이스 비활성화 | nmcli dev disconnect 인터페이스명 또는 /etc/network/interfaces에서 제거 |
| 86 | IPv6 비활성화 (필요 시) | /etc/sysctl.conf에 net.ipv6.conf.all.disable_ipv6 = 1, net.ipv6.conf.default.disable_ipv6 = 1 |
| 87 | ICMP 제한 설정 | sysctl.conf: net.ipv4.icmp_echo_ignore_all = 1, net.ipv4.icmp_echo_ignore_broadcasts = 1 등 |
| 88 | TCP SYN Flood 방어 (SYN Cookies) | sysctl.conf: net.ipv4.tcp_syncookies = 1 |
| 89 | Reverse Path Filtering | net.ipv4.conf.all.rp_filter = 1, net.ipv4.conf.default.rp_filter = 1 |
| 90 | IP Spoofing 방지 | sysctl.conf: net.ipv4.conf.all.accept_source_route = 0, accept_redirects = 0 |
| 91 | ARP Spoofing 대응 | arpwatch, arptables, 또는 static ARP entry 설정 |
| 92 | 네트워크 IDS/IPS 구성 | Snort, Suricata 등 설치, 규칙셋 연동 (ET, Emerging Threats 등) |
| 93 | SIEM 연동 | rsyslog 또는 syslog-ng를 통해 ELK, Splunk, Graylog 등과 연동 |
| 94 | TLS 구성 강제 | 웹/FTP/DB 등 서비스 설정에서 TLS 1.2 이상만 허용 (예: nginx ssl_protocols TLSv1.2 TLSv1.3;) |
| 95 | TLS/SSL 취약성 스캔 | sslyze, testssl.sh, openssl s_client 명령어로 설정 점검 |
| 96 | 포트스캐닝 및 트래픽 로그 수집 | tcpdump, nethogs, iftop, vnstat 또는 netstat -tulnp 등으로 모니터링 |
| 97 | VLAN/IP 세그멘테이션 구성 | 네트워크 스위치 수준에서 VLAN 분리, 각 세그먼트에 방화벽 적용 |
| 98 | DNSSEC 활성화 | BIND, Unbound 등에서 dnssec-validation yes; 적용 |
| 99 | DHCP 스누핑 설정 | L2 스위치에서 DHCP Snooping 기능 적용 (서버 단에서는 불가) |
| 100 | DNS 캐시 포이즈닝 방지 | DNS 리졸버에서 recursion off, dnssec 사용, 무작위 쿼리 소스포트 적용 |
| 101 | 포트 기반 접근 제어 (802.1X) | 인증 기반 유선 네트워크 설정, 서버에 적용 시 NAC 연동 필요 |
| 102 | VPN 암호화 구성 | OpenVPN, WireGuard, IPSec 등 설정 후 내부 리소스 접근은 VPN 통해 제한 |
| 103 | HTTP Strict Transport Security(HSTS) 적용 | 웹서버 응답 헤더에 Strict-Transport-Security: max-age=31536000; includeSubDomains 추가 |
| 104 | WAF 또는 Reverse Proxy 구성 | Nginx, Apache Reverse Proxy 구성 + ModSecurity 또는 클라우드 기반 WAF 연동 |
| 105 | public-facing 서비스 DMZ 분리 | DMZ 존에 웹서버, 메일서버 위치시키고 DB 등 내부 자원은 내부망에 분리 |
| 106 | traceroute/ICMP 제한 | iptables -A INPUT -p icmp --icmp-type 8 -j DROP, sysctl net.ipv4.icmp_echo_ignore_all = 1 |
| 107 | net.ipv4.conf.all.log_martians 설정 | 비정상 패킷 로깅 설정: net.ipv4.conf.all.log_martians = 1 |
| 108 | 내부 서버 outbound 제한 | iptables -A OUTPUT -p tcp --dport 80 -d ! internal.network -j REJECT 등 설정 |
| 109 | 암호화되지 않은 서비스 제거 | telnet, ftp, rsh, nfs 등 제거. 필요 시 sftp, scp, rsync + ssh 대체 |
| 110 | 서비스별 포트 스캐닝 대응 | nmap -sV 등으로 오픈 포트 확인 → 방화벽 정책으로 최소한만 허용 |
✅ 5. 응용 프로그램 & 데이터베이스 보안 항목별 적용 방법
🔹 5.1 애플리케이션 서버 및 환경 설정 (10개)
| 번호 | 점검 항목 | 적용 방법 |
| 111 | 서비스 실행 계정 최소 권한 부여 | 웹/DB/Tomcat/Nginx 등을 전용 계정으로 실행하고 root 사용 금지 (ex. user = nginx) |
| 112 | chroot 또는 컨테이너 격리 | chroot /srv/app 또는 Docker 등으로 격리된 환경 구성 |
| 113 | AppArmor 또는 SELinux 정책 적용 | AppArmor: aa-enforce /usr/sbin/nginx, SELinux: semanage fcontext 및 restorecon 설정 |
| 114 | 서비스 실행 포트 제한 | 웹: 80/443, DB: 내부 포트로 제한. iptables 또는 firewalld로 외부 차단 |
| 115 | 서비스 로그 권한 제한 | 로그 파일 권한 640 이하, 소유자 root 또는 서비스 계정 지정 |
| 116 | 서비스 취약점 점검 및 패치 | nuclei, nikto, openVAS, zap, wpscan 등 도구로 점검 후 업데이트 |
| 117 | 환경변수 노출 방지 | .bash_profile, .env 파일에 민감정보(비밀번호, KEY) 노출 금지 |
| 118 | 서비스 바이너리 무결성 검사 | aide, sha256sum, rpm -V 또는 debsums 등을 사용 |
| 119 | 웹 어플리케이션 보안 헤더 설정 | X-Content-Type-Options, X-Frame-Options, Content-Security-Policy 등 설정 |
| 120 | 개발 및 운영 환경 분리 | 운영환경에 DEBUG=true, devtools, test용 DB 등 포함하지 않도록 설정 |
🔹 5.2 데이터베이스 보안 설정 (30개)
| 번호 | 점검 항목 | 적용 방법 |
| 121 | DB 루트 계정 원격 접근 차단 | bind-address = 127.0.0.1 (MySQL), PostgreSQL pg_hba.conf에서 접근 통제 |
| 122 | DB 사용자 최소 권한 원칙 | GRANT SELECT ON db.table TO user; 등 필요한 권한만 부여 |
| 123 | DB 계정 분리 정책 | 관리자/애플리케이션/백업 계정 분리, 각 계정 별도로 생성 |
| 124 | 비밀번호 정책 설정 | MySQL: validate_password, PostgreSQL: password_encryption, 만료 주기 설정 |
| 125 | DB 계정 비활성화 / 잠금 | 사용하지 않는 계정 ALTER USER 'user' ACCOUNT LOCK 또는 삭제 |
| 126 | 계정 접근 로그 감사 | general_log, slow_query_log, PostgreSQL log_connections, log_disconnections 활성화 |
| 127 | DB 로그 주기적 회전 및 보관 | logrotate 설정 또는 내부 설정(expire_logs_days) 적용 |
| 128 | SQL 명령 감사(Audit) 로그 활성화 | MySQL Enterprise Audit, PostgreSQL pgaudit, MariaDB server_audit 플러그인 활용 |
| 129 | SQL Injection 방지 | 애플리케이션 수준에서 Prepared Statement 또는 ORM 사용 |
| 130 | 민감 데이터 암호화 | 개인정보 필드는 AES_ENCRYPT, pgcrypto, 또는 column-level encryption 적용 |
| 131 | DB 연결 SSL 적용 | require_secure_transport=ON(MySQL), ssl = on (PostgreSQL) 및 인증서 적용 |
| 132 | DB 백업 파일 암호화 | 백업 후 gpg, openssl, 7z -p 등으로 암호화 저장 |
| 133 | 백업 접근 권한 제한 | chmod 600 backup.sql, 전용 계정으로 백업 수행, 접근자 감사 로그 설정 |
| 134 | DB 백업 무결성 검사 | sha256sum 또는 md5sum 등으로 백업본 무결성 검증 |
| 135 | 백업 자동화 및 스케줄링 | cron, mysqldump, pg_dump 스크립트 주기 실행 |
| 136 | 복구 테스트 정기 수행 | 백업 파일을 별도 테스트 환경에 복원 테스트 수행 후 검증 |
| 137 | 복제 환경 보안 설정 | MySQL: 복제 계정에 REPLICATION SLAVE만 부여, PostgreSQL: pg_hba.conf IP 제한 |
| 138 | DB 버전 업데이트 | 보안 패치 포함된 최신 릴리즈 적용. 변경 전 마이그레이션 테스트 필요 |
| 139 | 서브쿼리, 프로시저 권한 제한 | 권한 분리 및 실행 계정 제한 (NO CREATE ROUTINE, NO EXECUTE 등) |
| 140 | DB 설정 파일 접근 제한 | /etc/mysql/my.cnf, postgresql.conf, pg_hba.conf → 640 이하 권한 지정 |
| 141 | OS 계정과 DB 계정 연계 제한 | DB 계정은 DB 내부에서만 관리. OS 계정 로그인 없이 DB 접근 불가 |
| 142 | 외부 연결 포트 접근 차단 | iptables 또는 firewalld를 통해 3306/5432 포트는 내부망에서만 허용 |
| 143 | DB 에러 메시지 최소화 | 클라이언트에게 DB 내부 정보 포함한 오류 메시지 노출 금지 |
| 144 | 보안 구성 파일 분리 | config.json, .env 등에 인증정보 저장 시 파일 권한 제한 (600) |
| 145 | 보안 설정 검토 자동화 | MySQLTuner, pgAudit, pgAdmin 진단 도구 활용 |
| 146 | DB connection pool 제한 | 동시 접속 수 제한 설정 (max_connections, work_mem, shared_buffers) |
| 147 | 서비스 중복 로그인 제한 | 애플리케이션에서 동일 계정 다중 로그인 차단 로직 구현 |
| 148 | 보안 가이드라인 문서화 | 운영팀이 준수해야 할 DB 계정 정책, 백업 주기, 접근 권한 등을 명문화 |
| 149 | 로그 tampering 방지 | 로그 파일 append-only, chattr +a /var/log/mysql.log 설정 등 |
| 150 | 감사 로그 외부 전송 | rsyslog, logstash 등을 이용해 감사 로그를 외부 SIEM으로 전송 |
📌 주요 설정 파일 위치 요약
| 소프트웨어명 | 설정 파일 |
| MySQL/MariaDB | /etc/mysql/my.cnf, /etc/my.cnf.d/, /var/log/mysql/ |
| PostgreSQL | /etc/postgresql/*/main/postgresql.conf, pg_hba.conf, /var/log/postgresql/ |
| Nginx | /etc/nginx/nginx.conf, /etc/nginx/sites-enabled/ |
| Apache | /etc/httpd/httpd.conf, /etc/apache2/ |
| Django, Flask 등 | .env, settings.py, config.py 등 환경변수 및 키 포함 파일 |
✅ 6. 로깅, 모니터링 및 감사 항목별 적용 방법
| 번호 | 점검 항목 | 적용 방법 |
| 151 | auditd 설치 및 감사 정책 적용 | apt install auditd 또는 yum install audit → /etc/audit/audit.rules, /etc/audit/rules.d/에 모니터링 항목 설정 후 systemctl enable --now auditd |
| 152 | rsyslog 또는 syslog-ng 구성 | /etc/rsyslog.conf 또는 /etc/syslog-ng/syslog-ng.conf 설정 → /var/log/ 하위 로그 분류 및 로그 회전 설정 |
| 153 | 로그 회전 및 보관 설정 | logrotate 사용 → /etc/logrotate.d/ 하위에 각 서비스별 설정 파일 존재 (예: 로그 주기, 크기, 최대 보관 기간 등) |
| 154 | 로그 파일 무결성 보호 | chmod 600 /var/log/*.log → 중요 로그에 chattr +a 적용 시 append-only 모드로 변경 |
| 155 | 로그 중앙 수집 시스템 연동 | 로그 수집기(ELK, Graylog, Splunk)에 rsyslog, fluentd, filebeat, journalbeat 등 연동 |
| 156 | 루트 권한 상승 시 로깅 설정 | /etc/audit/rules.d/audit.rules에 -w /bin/su -p x -k root_su, -w /usr/bin/sudo 등 추가 |
| 157 | crontab 변경 감시 | audit 또는 inotifywatch /etc/crontab, /var/spool/cron/*으로 변경 탐지 |
| 158 | cronjob 실행 내역 로깅 | /etc/rsyslog.conf에 cron.* /var/log/cron.log 추가, systemctl restart rsyslog |
| 159 | 프로세스 실행 모니터링 | auditd의 execve syscall 또는 auditctl -a always,exit -F arch=b64 -S execve -k process_exec 설정 |
| 160 | 파일 시스템 변경 탐지 (무결성 검사) | AIDE, tripwire 설치 후 초기화 → aide --check 주기 실행, 변경사항 리포트 |
| 161 | rootkit 탐지 도구 활용 | rkhunter --update && rkhunter --check 또는 chkrootkit 사용 |
| 162 | 리소스 사용량 이상 탐지 | top, htop, glances, vmstat, nmon 또는 collectd, netdata, prometheus 등 연동 |
| 163 | 디스크 용량 알림 설정 | df -h 기반 diskcheck.sh 스크립트 + crontab 또는 Prometheus AlertManager 연동 |
| 164 | 로그인 이력 감사 | last, lastb, who, faillog, journalctl -u ssh 로 로그인 성공/실패 내역 확인 |
| 165 | 보안 이벤트 SIEM 전송 | /etc/rsyslog.d/50-default.conf → 원격 syslog 서버(192.168.0.10:514)로 이벤트 전송 설정 |
| 166 | 서비스 헬스체크 설정 | systemctl is-active, monit, nagios, zabbix-agent 등 연동하여 다운/오류 시 알림 |
| 167 | 이상 트래픽 탐지 설정 | nethogs, iftop, tcpdump, ntopng 또는 Suricata 기반 IDS 설치 |
| 168 | sudo, su 로그 알림 자동화 | /var/log/auth.log 또는 journalctl _COMM=sudo 에서 grep 후 Slack, Telegram 등 알림 스크립트 설정 |
| 169 | 로그 tampering 방지 | 로그 디렉토리에 chattr +a 설정 (예: chattr +a /var/log/auth.log) |
| 170 | 감사 로그 장기 보관 정책 | 로그 보관 정책 문서화 + logrotate.conf에서 rotate 12 등 설정 후 NAS, 외부 백업 적용 |
'OS' 카테고리의 다른 글
| Centos - 프로세스 실행날짜 확인 명령어 (0) | 2025.09.09 |
|---|---|
| WSL 내부에서 실행 중인 애플리케이션을 외부로 노출 시키는 방법 (0) | 2023.10.03 |
| OS별 환경변수 추가 명령어 (0) | 2023.09.03 |
| /etc/sysctl.conf 파일이란? (0) | 2023.01.29 |
| BIOS? 펌웨어? 커널은 뭐야? - 용어정리 (0) | 2022.11.12 |