목차

리눅스 보안 관리 가이드

이 문서는 리눅스 시스템의 보안을 강화하기 위한 핵심 가이드라인을 제공합니다. 서버 및 시스템 관리자가 시스템을 안전하게 유지하고 잠재적인 위협으로부터 보호하는 데 필요한 기본적인 보안 원칙과 실용적인 방법을 다룹니다. 방화벽, 프록시 설정부터 사용자 관리, 로깅, 그리고 기타 필수 보안 조치까지 포괄적인 내용을 제공하여 안정적이고 안전한 리눅스 환경을 구축할 수 있도록 돕습니다.


1. 방화벽 관리 (Firewall Management)

방화벽은 외부 네트워크로부터 시스템을 보호하는 첫 번째 방어선입니다. 리눅스에서는 주로 iptables 또는 firewalld를 사용하여 방화벽을 구성합니다. 올바른 방화벽 설정은 불필요한 포트 노출을 막고, 허용된 트래픽만 시스템에 접근하도록 제한하는 데 필수적입니다.

1) iptables 기본 설정

iptables는 리눅스 커널의 netfilter 프레임워크를 제어하는 명령줄 도구입니다. 복잡하지만 매우 강력하고 유연한 방화벽 규칙을 설정할 수 있습니다.

체인 정책 설명
INPUT DROP 외부에서 들어오는 모든 연결 거부 (필수 포트 제외)
FORWARD DROP 라우팅 기능 사용 안 할 경우
OUTPUT ACCEPT 시스템에서 나가는 모든 연결 허용

다음은 기본적인 iptables 설정 예시입니다.

# 기존 규칙 플러시 (초기 설정 시에만 사용)
# sudo iptables -F
# sudo iptables -X
# sudo iptables -Z

# 기본 정책 설정
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT

# 로컬 루프백 인터페이스 허용 (필수)
sudo iptables -A INPUT -i lo -j ACCEPT

# 이미 ESTABLISHED 되거나 RELATED 된 연결 허용
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# SSH (22번 포트) 허용
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# HTTP (80번 포트) 허용
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# HTTPS (443번 포트) 허용
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# ICMP (Ping) 허용 (선택 사항, 네트워크 진단에 유용)
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

# 모든 다른 트래픽은 기본 DROP 정책에 의해 차단됨

# 규칙 저장 (데비안/우분투 계열)
# sudo apt-get install iptables-persistent
# sudo netfilter-persistent save

# 규칙 저장 (CentOS/RHEL 7+ 계열)
# sudo yum install iptables-services
# sudo systemctl enable iptables
# sudo systemctl start iptables
# sudo iptables-save > /etc/sysconfig/iptables

2) firewalld 사용법

firewalldiptables의 상위 레이어에서 작동하는 동적인 방화벽 관리 도구로, 주로 CentOS/RHEL 7+ 시스템에서 사용됩니다. '영역(zones)' 개념을 사용하여 네트워크 인터페이스나 소스 IP 주소에 따라 다른 보안 수준을 적용할 수 있습니다.

다음은 firewalld 사용 예시입니다.

# firewalld 서비스 시작 및 활성화
sudo systemctl start firewalld
sudo systemctl enable firewalld

# 현재 활성화된 영역 확인
sudo firewall-cmd --get-active-zones

# 기본 영역 확인
sudo firewall-cmd --get-default-zone

# SSH 서비스 허용 (영구적)
sudo firewall-cmd --permanent --add-service=ssh

# HTTP 포트 허용 (영구적)
sudo firewall-cmd --permanent --add-port=80/tcp

# HTTPS 포트 허용 (영구적)
sudo firewall-cmd --permanent --add-port=443/tcp

# 변경사항 적용 (reload 필요)
sudo firewall-cmd --reload

# 현재 활성화된 서비스 및 포트 확인
sudo firewall-cmd --list-all --zone=public

2. 프록시 서버 활용 (Proxy Server Utilization)

프록시 서버는 클라이언트와 서버 사이에서 중개자 역할을 수행하여 보안, 성능 및 접근 제어에 기여합니다.

1) 포워드 프록시 (Forward Proxy)

포워드 프록시는 내부 네트워크의 클라이언트가 외부 네트워크에 접근할 때 사용됩니다.

2) 리버스 프록시 (Reverse Proxy)

리버스 프록시는 외부 네트워크의 클라이언트가 내부 네트워크의 서버에 접근할 때 사용됩니다.


3. 기타 필수 보안 조치 (Other Essential Security Measures)

방화벽 및 프록시 외에도 리눅스 시스템의 전반적인 보안을 강화하기 위한 다양한 조치들이 필요합니다.

1) 시스템 업데이트 관리

소프트웨어의 취약점은 해킹의 주요 경로입니다.

2) 사용자 및 그룹 관리

계정 관리는 시스템 보안의 기본입니다.

3) SSH 보안 강화

SSH는 원격 접속에 사용되는 중요한 서비스이므로 특별한 보안 강화가 필요합니다.

# /etc/ssh/sshd_config 파일 예시
Port 2222
PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM yes
# AllowUsers youruser
# AllowGroups ssh_users

4) 파일 시스템 권한 관리

파일 및 디렉터리 권한을 올바르게 설정하는 것은 데이터 무결성과 시스템 보안에 중요합니다.

5) 로깅 및 감사

시스템 로그는 보안 사고 발생 시 원인을 분석하고 침입 흔적을 추적하는 데 필수적입니다.

6) 악성코드 방지

리눅스 시스템도 악성코드로부터 완전히 자유롭지 않습니다.

7) 백업 및 복구 전략

어떤 보안 조치도 100% 완벽하지 않습니다. 재해 발생 시 데이터를 보호하고 시스템을 복구하기 위한 백업 전략은 필수입니다.

8) SELinux/AppArmor 활용

SELinux (Security-Enhanced Linux)와 AppArmor는 리눅스 커널의 강제적 접근 제어(MAC: Mandatory Access Control) 보안 모듈입니다.


4. 결론 (Conclusion)

리눅스 시스템 보안은 단일 조치로 완성되는 것이 아니라, 지속적인 관리와 여러 계층의 보안 조치를 통해 이루어집니다. 이 가이드에서 제시된 방화벽, 프록시, 그리고 기타 필수 보안 조치들은 리눅스 시스템을 안전하게 운영하기 위한 핵심적인 요소들입니다.

안전한 시스템은 견고한 기초 위에 세워집니다. 이 가이드가 여러분의 리눅스 시스템을 더욱 안전하게 만드는 데 도움이 되기를 바랍니다.