리눅스 시스템에서 보안 관리를 효과적으로 수행하기 위해서는 체계적인 기반 환경을 구축하고 운영해야 합니다. 명령어와 코드, 옵션 등을 포함하여 단계별로 설명합니다.
- 시스템 하드닝 및 패치 관리
- Sandfly 설치 및 구성
- 중앙 집중식 로그 관리 설정
- 방화벽 및 네트워크 보안 설정
- 사용자 및 권한 관리 강화
- 정기적인 보안 스캔 및 취약점 점검
- 자동화된 백업 및 복구 설정
- 모니터링 및 알림 시스템 구축
1. 시스템 하드닝 및 패치 관리
1.1. 시스템 업데이트
최신 보안 패치를 적용하여 알려진 취약점을 제거합니다.
# Ubuntu/Debian 계열
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL 계열
sudo yum update -y
1.2. 불필요한 서비스 비활성화
사용하지 않는 서비스 목록 확인 및 비활성화.
# 현재 활성화된 서비스 목록 확인
sudo systemctl list-unit-files --type=service | grep enabled
# 예시: Telnet 서비스 비활성화
sudo systemctl disable telnet.service
sudo systemctl stop telnet.service
1.3. SSH 보안 설정
/etc/ssh/sshd_config
파일을 수정하여 SSH 접근을 강화합니다.
# 루트 로그인 비활성화
PermitRootLogin no
# 패스워드 인증 비활성화 (키 기반 인증만 허용)
PasswordAuthentication no
# SSH 포트 변경 (예: 2222)
Port 2222
설정 변경 후 SSH 데몬 재시작
sudo systemctl restart sshd
2. Sandfly 설치 및 구성
2.1. Sandfly 서버 설치
Docker 설치
Sandfly는 Docker를 사용하므로 Docker를 먼저 설치합니다.
# Ubuntu/Debian 계열
sudo apt install -y docker.io
# CentOS/RHEL 계열
sudo yum install -y docker
# Docker 서비스 시작 및 활성화
sudo systemctl start docker
sudo systemctl enable docker
Sandfly 설치 스크립트 다운로드 및 실행
# 설치 스크립트 다운로드
curl -O https://repo.sandflysecurity.com/sandfly-install.sh
# 실행 권한 부여
chmod +x sandfly-install.sh
# 설치 스크립트 실행
sudo ./sandfly-install.sh
2.2. Sandfly 구성
웹 인터페이스 접속
설치 후 제공된 URL로 접속하여 초기 설정을 진행합니다.
노드 추가
관리할 리눅스 서버의 IP 주소 및 인증 정보를 추가합니다.
SSH 키 기반 인증 설정
관리 대상 서버에 Sandfly의 공개 키를 배포합니다.
# Sandfly 서버에서 공개 키 복사
ssh-copy-id -i /path/to/sandfly_public_key user@target_server_ip
2.3. Sandfly 스캔 설정
정기 스캔 일정 설정
Sandfly 웹 인터페이스에서 스케줄을 설정하여 정기적으로 스캔이 수행되도록 합니다.
커스텀 탐지 규칙 추가
특정한 보안 요구사항에 맞게 탐지 규칙을 추가하거나 수정합니다.
3. 중앙 집중식 로그 관리 설정
3.1. Syslog 서버 구축 (예: rsyslog 사용)
Syslog 서버 설치
sudo apt install -y rsyslog
# 또는
sudo yum install -y rsyslog
rsyslog 구성 파일 수정
/etc/rsyslog.conf
파일에서 다음 라인을 언주석 처리하여 UDP 또는 TCP 수신을 활성화합니다.
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
rsyslog 재시작
sudo systemctl restart rsyslog
3.2. 클라이언트 설정
각 리눅스 서버에서 Syslog 서버로 로그를 전송하도록 설정합니다.
/etc/rsyslog.d/50-default.conf
또는 /etc/rsyslog.conf
파일에 다음 라인 추가
*.* @syslog_server_ip:514 # UDP 전송
*.* @@syslog_server_ip:514 # TCP 전송
설정 후 rsyslog 재시작
sudo systemctl restart rsyslog
4. 방화벽 및 네트워크 보안 설정
4.1. UFW(Uncomplicated Firewall) 설정 (Ubuntu)
UFW 설치 및 활성화
sudo apt install -y ufw
sudo ufw enable
기본 정책 설정
sudo ufw default deny incoming
sudo ufw default allow outgoing
필요한 포트만 허용
# SSH 포트 (예: 2222) 허용
sudo ufw allow 2222/tcp
# 웹 서비스 포트 허용
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
상태 확인
sudo ufw status verbose
4.2. firewalld 설정 (CentOS/RHEL)
firewalld 설치 및 활성화
sudo yum install -y firewalld
sudo systemctl start firewalld
sudo systemctl enable firewalld
기본 영역 설정
sudo firewall-cmd --set-default-zone=public
포트 허용
# SSH 포트 (예: 2222) 허용
sudo firewall-cmd --permanent --add-port=2222/tcp
# 웹 서비스 포트 허용
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 방화벽 설정 재로드
sudo firewall-cmd --reload
4.3. Fail2Ban 설치 및 구성
Fail2Ban 설치
# Ubuntu/Debian 계열
sudo apt install -y fail2ban
# CentOS/RHEL 계열
sudo yum install -y epel-release
sudo yum install -y fail2ban
SSH 보호를 위한 설정
/etc/fail2ban/jail.local
파일 생성 및 편집
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log # Ubuntu/Debian
# logpath = /var/log/secure # CentOS/RHEL
maxretry = 5
Fail2Ban 서비스 시작 및 활성화
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
5. 사용자 및 권한 관리 강화
5.1. 새로운 사용자 생성 및 권한 부여
# 새 사용자 생성
sudo adduser username
# 사용자에 sudo 권한 부여
sudo usermod -aG sudo username
5.2. sudoers 파일 편집
/etc/sudoers.d/username
파일 생성하여 특정 명령어에 대한 권한만 부여
username ALL=(ALL) /usr/bin/systemctl restart nginx
5.3. 패스워드 정책 설정
/etc/login.defs
파일에서 패스워드 복잡도와 만료 정책 설정
PASS_MAX_DAYS 90
PASS_MIN_DAYS 10
PASS_MIN_LEN 12
PASS_WARN_AGE 7
6. 정기적인 보안 스캔 및 취약점 점검
6.1. Lynis를 이용한 시스템 감사
Lynis 설치
# 다운로드 및 설치
wget https://downloads.cisofy.com/lynis/lynis-3.0.8.tar.gz
tar xvf lynis-3.0.8.tar.gz
cd lynis
# 또는 패키지 매니저를 통해 설치
sudo apt install -y lynis
시스템 감사 수행
sudo ./lynis audit system
6.2. 결과 분석 및 조치
Lynis의 스캔 결과를 확인하고 권장 사항을 따라 시스템을 강화합니다.
7. 자동화된 백업 및 복구 설정
7.1. rsync를 이용한 데이터 백업
# 백업 스크립트 예시 (backup.sh)
#!/bin/bash
SOURCE="/home/"
DESTINATION="/backup/home/"
rsync -avz --delete $SOURCE $DESTINATION
실행 권한 부여
chmod +x backup.sh
7.2. 크론잡을 이용한 정기 백업 설정
# 크론탭 편집
crontab -e
# 매일 새벽 2시에 백업 스크립트 실행
0 2 * * * /path/to/backup.sh
8. 모니터링 및 알림 시스템 구축
8.1. Nagios를 이용한 시스템 모니터링
필요한 패키지 설치
sudo apt install -y nagios3 nagios-nrpe-plugin
Nagios 서버 설정
/etc/nagios3/conf.d/
디렉토리에서 호스트와 서비스 설정 파일을 편집하여 모니터링 대상 추가.
Nagios 웹 인터페이스 접속
웹 브라우저에서 http://server_ip/nagios3
로 접속하여 모니터링 상태 확인.
8.2. 메일 알림 설정
메일 서버 설치
sudo apt install -y postfix mailutils
Nagios 연락처 설정
/etc/nagios3/conf.d/contacts_nagios2.cfg
파일에서 이메일 주소를 설정.
추가적인 보안 강화 조치
- SELinux/AppArmor 활성화: 시스템 보안 정책을 강제 적용하여 권한 상승을 방지합니다.
- 정기적인 보안 업데이트 알림 설정: 업데이트가 있을 때 알림을 받도록 설정합니다.
# Ubuntu에서 자동 업데이트 알림 설정 sudo apt install -y unattended-upgrades sudo dpkg-reconfigure --priority=low unattended-upgrades
- TCP Wrappers 사용:
/etc/hosts.allow
및/etc/hosts.deny
파일을 이용하여 접근 제어를 설정합니다.
위의 단계들을 따라 명령어와 설정 파일을 직접 편집하고 적용함으로써 리눅스 시스템의 보안 수준을 크게 향상시킬 수 있습니다. 각 단계에서 제공된 예시를 기반으로 조직의 환경과 요구사항에 맞게 설정을 조정하시기 바랍니다.
보안은 지속적인 관리와 모니터링이 필요합니다. 정기적인 로그 검토, 시스템 업데이트, 보안 정책 검토 등을 통해 안전한 운영 환경을 유지하시기 바랍니다.
참고자료
댓글