Linux 서버 강화 체크리스트
15분 소요 - 2026년 5월 8일

Linux 서버를 강화하기 위한 단계별 체크리스트. SSH, 방화벽, 패치, 파일 권한, SELinux/AppArmor 및 감사 로깅을 다룹니다
Linux 서버 강화 체크리스트
기본 Linux 설치는 안전한 Linux 설치가 아닙니다. 개방형 루트 SSH 액세스, 취약한 방화벽, 패치되지 않은 소프트웨어와 같은 잘못된 구성이 대부분의 침해 사고를 일으킵니다. 새 서버는 온라인 상태가 된 후 몇 분 이내에 자동화된 검사를 받게 되므로 무엇보다도 먼저 보안을 강화해야 합니다.
이 체크리스트는 SSH 잠금, 방화벽 구성, 패치 적용, 파일 권한 강화, 필수 액세스 제어 활성화, 감사 로깅 설정 등 핵심 단계를 다룹니다.
SSH 잠금
SSH는 주요 액세스 지점이며 공격자가 가장 먼저 조사하는 곳입니다. 기본 구성(비밀번호 인증, 루트 로그인, 포트 22)은 자동화된 스캐너가 찾는 것과 정확히 일치합니다.
RSA보다 더 나은 보안과 성능을 제공하는 Ed25519 키 쌍을 생성하세요:
ssh-keygen -t ed25519키 기반 로그인이 작동하면 /etc/ssh/sshd_config를 업데이트합니다:
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
PermitRootLogin no
AllowUsers yourname
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2기본 포트를 22에서 덜 눈에 띄는 것으로 변경합니다. 이렇게 하면 의도적인 공격자를 막을 수는 없지만 자동화된 스캔으로 인한 노이즈를 크게 줄일 수 있습니다.
현재 세션을 닫기 전에 항상 두 번째 터미널에서 변경 사항을 테스트하세요. Sudo sshd -t를 실행하여 구문 오류를 확인한 다음 systemctl reload sshd를 실행하여 활성 연결을 끊지 않고 적용하세요.
2단계 인증 추가
2단계 인증은 공격자가 사용자의 SSH 키와 디바이스에 대한 물리적 액세스 권한이 모두 필요하다는 의미입니다. Google 인증기 PAM 모듈을 설치합니다:
sudo apt install libpam-google-authenticator # Debian/Ubuntu
sudo dnf install google-authenticator # RHEL/Fedora각 사용자에 대해 Google 인증기를 실행하여 비밀 키와 복구 코드를 생성합니다. 복구 코드를 오프라인에 저장합니다.
이 줄을 /etc/pam.d/sshd에 추가합니다:
auth required pam_google_authenticator.so그런 다음 /etc/ssh/sshd_config를 업데이트합니다:
KbdInteractiveAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive테스트하는 동안 활성 세션을 열어두세요. TOTP 코드는 정확한 시스템 시간에 따라 달라지므로 NTP가 실행 중인지 확인하세요.
방화벽 및 Fail2Ban 구성하기
서버가 네트워크 방화벽 뒤에 있는 경우에도 호스트 기반 방화벽을 실행하세요. 원칙은 간단합니다. 기본적으로 들어오는 모든 트래픽을 거부한 다음 필요한 트래픽만 허용합니다.
우분투/데비안 (UFW)의 경우:
ufw default deny incoming
ufw default allow outgoing
ufw limit ssh
ufw enableRHEL/록키/알마리눅스 (방화벽)의 경우:
firewall-cmd --set-default-zone=public
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=https
firewall-cmd --reloadEtc/sysctl.conf에 추가하여 커널 네트워크 스택을 강화하세요:
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1Fail2Ban 설치
Fail2Ban은 로그인 시도를 모니터링하고 실패가 반복되면 IP를 차단합니다. Jail.conf를 직접 편집하지 마세요. 업데이트가 덮어쓰기 때문입니다.)를 만들고 10분 이내에 세 번 실패하면 1시간 동안 IP를 금지하도록 구성합니다. 방화벽의 올바른 백엔드를 설정합니다(금지 액션 = ufw 또는 금지 액션 = nftables).
서비스 감사 및 레거시 프로토콜 제거하기
Ss -tlnp로 수신 중인 항목과 systemctl list-units --type=service --state=running으로 실행 중인 항목을 확인합니다. 필요 없는 것은 모두 비활성화하세요: 블루투스, CUPS, avahi-데몬, rpcbind.
데이터를 일반 텍스트로 전송하는 레거시 프로토콜을 제거합니다:
| 레거시 프로토콜 | 포트 | 보안 대안 |
|---|---|---|
| 텔넷 | 23 | SSH |
| RSH/Rlogin | 512, 513, 514 | SSH |
| FTP | 21 | SFTP / FTPS |
| TFTP | 69 | SFTP / SCP |
| NIS | 변수 | LDAP/케르베로스 |
데비안/우분투에서: sudo apt-get --purge remove xinetd nis tftpd telnetd rsh-server. RHEL 기반 시스템에서: yum erase xinetd ypserv tftp-server telnet-server rsh-server. Ss -tulpn으로 제거를 확인합니다.
패치 및 업데이트 자동화
시스템 업데이트는 알려진 보안 격차를 해소하는 가장 빠른 방법입니다. 프로비저닝 후 즉시 업데이트를 실행하세요:
apt update && apt upgrade -y # Debian/Ubuntu
dnf update -y # RHEL/Rocky그런 다음 보안 패치를 자동화하세요. 데비안/우분투의 경우, 무인 업그레이드를 설치하고 보안 패치만 적용하도록 구성하세요. RHEL/Rocky의 경우 dnf-automatic을 설치하고 /etc/dnf/automatic.conf에서 upgrade_type = security를 설정합니다.
업데이트 결과에 대한 이메일 알림을 설정합니다. 프로덕션 서버에서 자동 재부팅을 비활성화(자동 재부팅 = false)하여 계획된 유지 관리 기간 동안 재부팅이 이루어지도록 합니다. 가동 시간이 많은 환경의 경우 Canonical Livepatch (Ubuntu) 또는 kpatch (RHEL)로 실시간 패치를 고려하세요.
파일 시스템 및 권한 강화
먼저 SUID 및 SGID 바이너리를 감사하세요. 이러한 파일은 상승된 권한으로 실행되며 악용의 주요 표적이 됩니다:
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -ls중요한 파일에 대한 권한을 강화하세요: / etc/shadow는 600, /etc/passwd는 644, /etc/ssh/sshd_config는 600이어야 합니다. Etc/profile에서 전역 유마스크를 027로 설정하여 새 파일을 전 세계에서 읽을 수 없도록 합니다.
Find / -xdev -type f -perm -0002 -ls로 전 세계에서 쓰기 가능한 파일을 찾아 수정합니다. 전 세계 쓰기 가능 상태를 유지해야 하는 디렉터리(예: /tmp)의 경우 chmod 1777 /tmp와 같은 고정 비트를 적용하세요.
보안 마운트 옵션
Etc/fstab을 편집하여 중요한 파티션에서 일어날 수 있는 일을 제한합니다:
| 파티션 | 마운트 옵션 | 목적 |
|---|---|---|
/tmp | 노데브, 노수이드, 노엑섹 | 월드 쓰기 가능한 영역에서 맬웨어 실행을 방지합니다 |
/var/tmp | nodev, nosuid, noexec | Tmp와 동일한 보호 |
/dev/shm | nodev, nosuid, noexec | 공유 메모리 보호 |
/home | nodev, nosuid | Setuid 바이너리와 디바이스 노드를 차단합니다 |
/var/log | nodev, nosuid, noexec | 로그 무결성 보호 |
부팅 문제를 방지하기 위해 재부팅하기 전에 마운트 -o 재마운트로 변경 사항을 테스트하세요.
필수 액세스 제어 사용
SELinux와 AppArmor는 프로세스가 수행할 수 있는 작업에 커널 수준의 제한을 추가합니다. 배포와 함께 제공되는 것을 사용하세요: RHEL/CentOS/Fedora용 SELinux, 우분투/데비안/SUSE용 AppArmor. 이들 간에 전환하면 호환성 문제가 발생할 수 있습니다.
SELinux: Getenforce로 상태를 확인합니다. 최소 2주 동안 허용 모드(setenforce 0)에서 시작하여 아무것도 중단하지 않고 워크로드 동작을 캡처하세요. Ausearch -m avc -ts 최근으로 위반 사항을 모니터링합니다. Audit2why를 사용하여 차단을 진단하고 audit2allow -M [module_name] 을 사용하여 정책 모듈을 생성합니다. 로그가 깨끗해지면 setenforce 1을 사용하여 강제 적용으로 전환한 다음 /etc/selinux/config에서 영구적으로 설정합니다.
AppArmor: aa-status로 활성 프로필을 확인합니다. 관리 명령을 위해 apparmor-utils를 설치합니다. Aa-complain으로 불평 모드에서 프로파일을 시작한 다음, 확신이 들면 aa-enforce로 시행 모드로 전환합니다. 사용자 지정 애플리케이션에 대한 프로필을 구축하려면 aa-genprof를 사용하세요.
감사 로깅 및 모니터링 설정
로깅이 없으면 인시던트는 흔적을 남기지 않습니다. Auditd를 설치합니다:
sudo apt-get install auditd audispd-plugins중요한 파일에 대한 파일 시스템 감시를 추가하세요:
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity모든 루트 수준의 명령 실행을 추적하세요:
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands규칙 파일 끝에 augenrules --load를 사용하여 규칙을 로드하고 -e 2를 추가하여 구성이 변조되지 않도록 하세요(변경 시 재부팅이 필요함).
AIDE로 파일 무결성 모니터링
AIDE는 현재 상태를 알려진 정상 기준과 비교하여 무단 파일 변경을 감지합니다. 설치하고, aideinit으로 데이터베이스를 초기화한 다음, 결과 파일을 /var/lib/aide/aide.db.gz로 옮깁니다. 매일 크론 작업을 설정하여 보좌관을 실행하고 결과를 관리자에게 이메일로 전송합니다.
로그 중앙 집중화
루트 액세스 권한을 가진 공격자가 로그를 삭제하면 로컬 로그는 쓸모가 없습니다. TLS 암호화가 포함된 rsyslog를 사용하여 실시간으로 로그를 원격 서버로 전달하세요. Etc/rsyslog.conf에 추가합니다:
*.* @@remote-host:514로그인에 성공할 때마다 로그에 키 지문이 포함되도록 SSH 구성에서 LogLevel VERBOSE를 설정하세요. 여러 대의 서버를 관리하는 프로덕션 환경의 경우, Wazuh 또는 OSSEC 같은 도구는 중앙 집중식 로그 분석으로 호스트 기반 침입 탐지 기능을 제공합니다.
지속적인 유지 관리
보안 강화는 일회성 작업이 아닙니다. 구성이 바뀌고, 새로운 취약점이 나타나고, 직원이 바뀌면 고아가 된 계정이 남게 됩니다.
매주: Fail2Ban 로그를 검토하고, 업데이트 실패를 확인하고, 백업을 확인합니다.
매월: 사용자 계정 및 권한을 감사하고, 실행 중인 서비스를 검토하고, Lynis 또는 OpenSCAP으로 전체 검사를 실행합니다.
분기별: 자격 증명 교체, 방화벽 규칙 업데이트, 재해 복구 테스트.
Dev-sec.io 강화 역할과 함께 Ansible과 같은 코드형 인프라 도구를 사용하여 제품군 전체에 일관된 구성을 적용하고 감사 간 이동을 방지하세요.
FDC의 전용 서버는 완전한 루트 액세스 권한과 보안 스택에 대한 완전한 제어를 제공합니다. 전용 서버 옵션을 살펴보고 모든 계층을 제어할 수 있는 플랫폼에 구축하세요.

느린 배포나 대역폭 제한에 지치셨나요? FDC 서버는 즉각적인 전용 전원, 글로벌 범위, 모든 규모에 맞게 구축된 유연한 요금제를 제공합니다.
지금 업그레이드하기
Linux 서버 강화 체크리스트
Linux 서버를 강화하기 위한 단계별 체크리스트. SSH, 방화벽, 패치, 파일 권한, SELinux/AppArmor 및 감사 로깅을 다룹니다
15분 소요 - 2026년 5월 8일
iperf3 튜토리얼: Linux 및 Windows에서 네트워크 속도 테스트하기
10분 소요 - 2026년 5월 7일

질문이 있거나 맞춤형 솔루션이 필요하신가요?
유연한 옵션
글로벌 도달 범위
즉시 배포
유연한 옵션
글로벌 도달 범위
즉시 배포