CentOS 서버 기본 보안 및 성능 최적화 가이드

최소 설치 및 필수 패키지 구성

시스템은 필요한 기능만 선택적으로 설치합니다. 개발 도구, 네트워크 기본 유틸리티, 핵심 애플리케이션 패키지만 포함하여 불필요한 요소는 제거합니다.

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"

태그: CentOS SSH SELinux iptables Chrony

9월 24일 06:50에 게시됨