리눅스 서버에서 80·443 포트만 열려 있는데 왜 공격받을까?

Views: 0

서버에서 HTTP(80)와 HTTPS(443) 포트만 열어두고 나머지는 모두 차단했음에도 공격 로그가 끊임없이 발생하는 경우가 많다. 외부 접근 가능한 포트가 최소화되어 있음에도 공격 시도가 계속된다면 보안이 뚫린 것인지, 아니면 정상적인 현상인지 혼란스러울 수 있다. 실제로는 웹 서비스가 열려 있는 이상 공격 위험은 항상 존재하며, 방화벽만으로 모든 위협을 막을 수는 없다. 이 글에서는 서버가 80·443 포트만 열려 있어도 공격받는 이유와 그에 대한 대응 전략을 설명한다.

80·443 포트는 왜 항상 공격의 대상일까?

웹 서비스는 기본적으로 공개된 포트

80과 443 포트는 웹 서비스 제공을 위해 외부에 반드시 개방해야 하는 포트다. 이 포트만 열어두는 것은 기본적인 보안 설정이지만, 동시에 전 세계 누구나 접근 가능한 창구가 된다. 따라서 공격자도 해당 포트를 통해 서버에 접속하고, 웹 애플리케이션의 취약점을 노린다.

.htacess

자동화된 포트 스캐닝 도구의 존재

인터넷에는 Shodan, Censys처럼 공개된 시스템을 스캔해 정보를 수집하는 서비스가 존재한다. 이외에도 공격자들은 Nmap 같은 도구로 무작위 IP에 대해 80과 443 포트를 자동 스캔한다. 즉, 특정 서버가 아니라 “모든 서버”가 공격 대상이 된다.

80·443 포트는 단순 서비스가 아니다

방화벽은 네트워크 접근만 제어할 뿐, 애플리케이션 내부 취약점까지 막지 못한다. 따라서 다음과 같은 요소를 통해 공격이 발생한다.

  • 취약한 웹 애플리케이션
  • 잘못된 HTTP 헤더 설정
  • 인증되지 않은 API 접근
  • 파일 업로드 기능 악용

80·443 포트에서 발생하는 대표적인 공격 유형

취약한 URL 요청 및 스캐닝

공격자는 /admin, /phpmyadmin, /backup 같은 디렉터리가 존재하는지 확인하며 취약점을 찾아낸다. 서버 로그에 404 오류가 반복된다면 이런 스캔 시도일 가능성이 높다.

SQL Injection, XSS, LFI 등 애플리케이션 공격

웹 서버는 단순 포트만 제공하는 것이 아니라 사용자 요청을 받아 데이터베이스, 파일 시스템과 상호작용한다. 이 과정에서 검증되지 않은 입력이 사용되면 다음과 같은 공격이 발생한다.

  • SQL Injection: 데이터베이스 조작
  • XSS(Cross-Site Scripting): 사용자 브라우저 공격
  • LFI/RFI: 시스템 파일 열람 또는 악성 코드 실행

인증 우회 및 무차별 로그인 공격

로그인 페이지가 존재할 경우 공격자는 자동화된 프로그램으로 다양한 계정을 시도해 로그인에 성공하려 한다. SSH를 닫아도 웹 로그인 페이지가 있으면 공격은 계속된다.

웹 서버 자체 설정 취약점

Apache, Nginx, PHP-FPM 등 웹 서버 설정 오류도 공격의 대상이다.

  • 디렉터리 인덱싱 허용
  • 서버 버전 정보 노출
  • HTTPS 인증서 잘못된 설정
  • 오래된 모듈 또는 플러그인 미 업데이트

단순 포트 차단만으로 막을 수 없는 이유

포트가 열려 있다는 것은 상호작용 가능한 소프트웨어가 뒤에 존재한다는 의미다. 공격은 네트워크 레벨이 아니라 애플리케이션, 사용자 입력, 세션 관리 등 더 높은 계층으로 이동한다. 즉, 방화벽이 아닌 웹 보안이 핵심이 된다.

공격 대응을 위한 필수 방어 전략

1. 웹 애플리케이션 보안 강화

  • 입력값 검증 및 필터링
  • prepared statement를 통한 SQL Injection 방지
  • 파일 업로드 시 MIME, 확장자, 실행 권한 제한
  • 관리자 경로 숨김 처리

2. WAF(Web Application Firewall) 적용

  • ModSecurity, NAXSI 같은 도구 활용
  • L7 레벨 공격(HTTP·HTTPS 요청 기반 공격) 필터링
  • 특정 국가, User-Agent, 비정상 요청 차단 가능

3. 서버 설정 최적화

  • 불필요한 응답 헤더 제거(Server, X-Powered-By)
  • HTTPS 강제 적용
  • HTTP/2, HSTS 설정
  • 인증서 자동 갱신 도구 사용(Let’s Encrypt + Certbot)

4. 로그 모니터링 및 자동 대응

  • /var/log/nginx/access.log, error.log 정기 분석
  • fail2ban을 사용한 IP 자동 차단
  • 공격 IP 자동 차단 스크립트 활용

5. 취약점 점검 및 업데이트 습관화

  • 운영체제 보안 패치 적용
  • PHP, Apache, Nginx, DB 업데이트
  • OWASP Top 10 기준 보안 테스트 수행

결론

80·443 포트만 열려 있더라도 서버는 언제든 공격받을 수 있다. 포트를 최소화하는 것은 보안의 출발점일 뿐 완전한 방패는 아니다. 웹 서비스는 외부와 연결되는 구조이므로 애플리케이션 보안, 서버 설정, 모니터링 체계를 함께 마련해야 한다. 공격은 피할 수 없지만 대비는 충분히 가능하며, 이를 위해서는 네트워크와 애플리케이션 계층 모두를 고려한 보안 전략이 필요하다.