본문 바로가기
카테고리 없음

보안 취약점 점검 및 서버 보안 강화

by 백수A 2025. 3. 30. 23:19

보안 취약점 점검 및 서버 보안 강화

1. 문제 상황: 서버 보안 취약점 발견

최근 보안 점검을 수행한 결과 다음과 같은 보안 취약점이 발견되었다.

  • SSH 포트가 기본(22번)으로 설정되어 있어 공격 대상이 됨
  • 방화벽이 적절하게 설정되지 않아 불필요한 포트가 열려 있음
  • 사용자 계정과 권한 관리가 미흡하여 불필요한 관리자 권한 계정이 존재함
  • 애플리케이션에서 SQL 인젝션(SQL Injection) 및 XSS(Cross-Site Scripting) 취약점이 발견됨
  • 로그 파일에 민감한 정보(비밀번호, API 키 등)가 포함되어 있음

이러한 보안 취약점을 방치할 경우, 해커의 공격을 받을 위험이 높아진다. 따라서 서버와 애플리케이션의 보안을 강화할 필요가 있다.

2. 해결 과정: 서버 보안 강화 전략

2.1 SSH 보안 강화

기본 SSH 설정은 공격에 취약할 수 있으므로 다음과 같은 방법으로 보안을 강화한다.

1) SSH 포트 변경

기본 포트(22번)를 변경하여 무차별 대입 공격(Brute-force attack)을 방지할 수 있다.

sudo vi /etc/ssh/sshd_config

다음 설정을 변경한다.

Port 2222
PermitRootLogin no
PasswordAuthentication no

이후 SSH 서비스를 재시작한다.

sudo systemctl restart sshd

2) 공개키 인증 방식 사용

비밀번호 대신 공개키 인증 방식을 사용하면 보안성이 향상된다.

ssh-keygen -t rsa -b 4096
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server_ip

2.2 방화벽 설정

불필요한 포트를 차단하고, 특정 IP에서만 접근할 수 있도록 방화벽을 설정한다.

1) UFW(Uncomplicated Firewall) 설정

UFW를 사용하여 기본적인 방화벽 규칙을 적용할 수 있다.

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 2222/tcp
sudo ufw enable

2) Fail2ban 설정

SSH 등의 서비스에서 일정 횟수 이상 로그인 실패 시 IP를 차단하는 Fail2ban을 설정한다.

sudo apt install fail2ban -y
sudo vi /etc/fail2ban/jail.local

설정 파일에 다음 내용을 추가한다.

[sshd]
enabled = true
port = 2222
maxretry = 5
findtime = 10m
bantime = 1h

Fail2ban을 재시작한다.

sudo systemctl restart fail2ban

2.3 사용자 계정 및 권한 관리

서버에 불필요한 사용자 계정이 존재하면 보안 위험이 증가하므로 정리해야 한다.

1) 불필요한 사용자 계정 삭제

sudo userdel -r olduser

2) 관리자 권한이 필요한 사용자만 sudo 그룹에 추가

sudo usermod -aG sudo username

2.4 애플리케이션 보안 강화

1) SQL 인젝션 방지

SQL 인젝션 공격을 방지하려면 사용자 입력값을 직접 SQL 쿼리에 포함하지 않고, Prepared Statement를 사용해야 한다.

$stmt = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$stmt->bindParam(':email', $email);
$stmt->execute();

2) XSS 방지

HTML 출력 시 사용자 입력값을 반드시 이스케이프 처리해야 한다.

echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

2.5 로그 보안 강화

로그 파일에 민감한 정보가 포함되지 않도록 설정해야 한다.

  • 로그에 비밀번호, API 키, 토큰 등이 기록되지 않도록 설정
  • 로그 파일의 권한을 제한하여 불필요한 접근을 차단

예를 들어, 로그 파일의 권한을 다음과 같이 설정할 수 있다.

sudo chmod 600 /var/log/app.log

2.6 자동 보안 업데이트 설정

보안 패치를 신속하게 적용하기 위해 자동 업데이트를 설정한다.

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades

3. 최종 정리

서버 보안을 강화하면 해킹 및 악의적인 공격으로부터 시스템을 보호할 수 있다.

핵심 요약:

  • SSH 보안 강화를 위해 포트 변경 및 공개키 인증 방식 사용
  • 방화벽(UFW) 및 Fail2ban을 설정하여 불필요한 접근 차단
  • 불필요한 사용자 계정을 정리하고 관리자 권한을 최소화
  • 애플리케이션의 보안 취약점(SQL 인젝션, XSS 등)을 점검하고 보완
  • 로그 파일 보안을 강화하여 민감한 정보 노출 방지
  • 자동 보안 업데이트를 설정하여 최신 보안 패치를 유지

이러한 보안 강화 전략을 적용하면 서버와 애플리케이션의 안전성을 높일 수 있다.