최소 설치 및 필수 패키지 구성
시스템은 필요한 기능만 선택적으로 설치합니다. 개발 도구, 네트워크 기본 유틸리티, 핵심 애플리케이션 패키지만 포함하여 불필요한 요소는 제거합니다.
SSH 접속 보안 강화
/etc/ssh/sshd_config 파일을 수정하여 SSH 보안을 강화합니다:
- 기본 포트(22)를 고위 포트(예: 22221)로 변경하여 스캐닝 공격 회피
- DNS 역방향 조회 비활성화(
UseDNS no)로 접속 속도 향상 - GSSAPI 인증 비활성화(
GSSAPIAuthentication no)로 접속 지연 감소 - root 원격 로그인 금지(
PermitRootLogin no) - 비밀번호 인증 대신 공개키 인증 사용 —
ssh-keygen으로 키 생성 후ssh-copy-id또는 수동으로~/.ssh/authorized_keys에 등록 PasswordAuthentication no설정 후systemctl restart sshd
SELinux 및 방화벽 설정
SELinux는 대부분의 프로덕션 환경에서 비활성화됩니다:
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
setenforce 0
firewalld 서비스 중지 및 비활성화:
systemctl stop firewalld
systemctl disable firewalld
iptables를 사용할 경우, 기본 정책을 ACCEPT로 설정하고 규칙 초기화 후 SSH와 ICMP만 허용하는 정책 적용:
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -F
iptables -X
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
service iptables save
YUM 저장소 최적화
빠른 패키지 다운로드를 위해 국내 미러 저장소를 우선적으로 사용하도록 설정:
[base]
name=CentOS Base
baseurl=https://mirror.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
enabled=1
gpgcheck=0
[epel]
name=EPEL Repo
baseurl=https://mirrors.aliyun.com/epel/$releasever/$basearch
enabled=1
gpgcheck=0
저장소 캐시 갱신 및 시스템 업데이트:
yum clean all
yum makecache
yum update -y
시간 동기화 설정
chrony를 이용한 정밀 시간 동기화:
yum install -y chrony
/etc/chrony.conf에 신뢰 가능한 NTP 서버 추가:
server ntp.aliyun.com iburst
server time.cloudflare.com iburst
server pool.ntp.org iburst
서비스 활성화 및 상태 확인:
systemctl enable chronyd
systemctl start chronyd
chronyc sources -v
핵심 시스템 파일 보호
중요 설정 파일은 chattr +i 명령어로 변경 불가 상태로 잠급니다:
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/sudoers
잠김 상태 확인은 lsattr로 가능하며, 해제는 chattr -i 사용.
시스템 리소스 한도 조정
/etc/security/limits.conf에 다음 설정 추가:
* soft nofile 65536
* hard nofile 65536
* soft nproc 32768
* hard nproc 32768
* soft memlock unlimited
* hard memlock unlimited
CentOS 7 이상에서는 /etc/security/limits.d/20-nproc.conf도 함께 수정:
sed -i 's/4096/32768/' /etc/security/limits.d/20-nproc.conf
터미널 프롬프트 및 환경 개선
사용자 친화적인 프롬프트 색상 설정 (/etc/profile.d/prompt.sh):
export PS1="\[\e[1;32m\][\[\e[0m\]\t \[\e[1;33m\]\u@\h\[\e[1;31m\] \W\[\e[1;32m\]]\[\e[0m\]\\$ "
필수 유틸리티 설치:
yum install -y tree bash-completion lrzsz vim net-tools wget
yum groupinstall -y "Development Tools"
로깅 및 언어 설정
로그 형식을 상세하게 변경:
sed -i 's/RSYSLOG_TraditionalFileFormat/RSYSLOG_FileFormat/' /etc/rsyslog.conf
systemctl restart rsyslog
로그 회전 주기를 월간으로 변경:
sed -i 's/weekly/monthly/' /etc/logrotate.conf
시스템 언어 및 인코딩 설정:
localectl set-locale LANG=ko_KR.UTF-8
히스토리 기록 강화
~/.bashrc에 다음 내용 추가:
export HISTSIZE=10000
export HISTFILESIZE=10000
export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S "
shopt -s histappend
PROMPT_COMMAND="history -a"