보안 웹 서버, SSH 원격 접속, 데이터베이스는 공격자가 기업의 내부망으로 진입하고 핵심 데이터를 탈취하기 위해 노리는 가장 대표…
페이지 정보

본문
웹 서버, SSH 원격 접속, 데이터베이스는 공격자가 기업의 내부망으로 진입하고 핵심 데이터를 탈취하기 위해 노리는 가장 대표적인 3대 타깃입니다.
각 서비스별 공격자가 주로 사용하는 실제 침투 시나리오와 이를 무력화하는 구체적인 방어 대응법을 정리해 드립니다.
1. 웹 서버 (Web Server) 타깃 공격
웹 서버는 불특정 다수에게 항상 열려 있기 때문에 가장 취약하며, 침입자가 내부 서버 권한을 얻기 위한 디딤돌로 악용됩니다. [1]
침투 시나리오: 파일 업로드 취약점을 통한 웹셸(WebShell) 장악 [1]
- 정찰: Burp Suite를 이용해 웹사이트의 게시판이나 프로필 사진 업로드 기능을 탐색합니다.
- 우회 및 업로드: 확장자 검증이 허술한 점을 노려, 이미지 파일(jpg)인 것처럼 속여 악성 PHP/JSP 스크립트 파일(webshell.php)을 업로드합니다.
- 권한 획득: 업로드된 경로의 URL을 웹 브라우저로 직접 호출(예: http://target.com)합니다.
- 결과: 침입자는 웹 화면을 통해 서버의 터미널 명령어를 마음대로 실행할 수 있게 되며, 웹 서버 권한(www-data 등)을 완전히 탈취합니다. [1]
방어 및 대처법
- 업로드 디렉터리 실행 권한 제거 (핵심): 파일이 업로드되는 폴더(예: /uploads/) 내에서는 스크립트(PHP, JSP, ASP 등)가 절대 실행되지 않도록 웹 서버(Nginx, Apache) 설정을 변경합니다.
- 화이트리스트 방식 확장자 검증: .jpg, .png, .pdf 등 허용된 안전한 확장자 외에는 업로드를 원천 차단합니다.
- 웹 애플리케이션 방화벽(WAF) 도입: 외부에서 들어오는 웹 패킷을 실시간 감시하여 웹셸 소스코드가 포함된 요청이나 비정상적인 명령어 실행 요청을 차단합니다.
2. SSH 원격 접속 타깃 공격
SSH(22번 포트)는 리눅스 서버의 제어권을 통째로 쥐고 있는 문입니다. 이곳이 뚫리면 공격자가 서버의 모든 설정을 바꾸고 로그를 지울 수 있습니다.
침투 시나리오: 무차별 대입 및 자격 증명 스터핑(Credential Stuffing)
- 스캔: Nmap으로 인터넷에 노출된 22번 포트(SSH)를 찾아냅니다.
- 사전 공격: Hydra 같은 도구에 다크웹에서 유출된 흔한 비밀번호 조합 리스트(rockyou.txt)를 넣고, root나 admin 계정으로 초당 수백 번씩 로그인을 시도합니다.
- 서버 장악: 패스워드가 복잡하지 않거나 초기 설정 그대로인 경우 비밀번호가 풀리며, 공격자는 root 권한으로 서버에 원격 로그인 성공합니다.
- 후속 작업: 들어오자마자 자신의 접속 IP 로그를 지우고, 비밀번호를 변경하거나 스케줄러(cron)에 백도어를 심습니다.
방어 및 대처법
- 비밀번호 로그인 금지 및 SSH 키(Key) 인증 사용: 비밀번호 입력 창 자체를 없애고, 사전에 발급된 암호화 키 파일(.pem)이 있는 사용자만 접속할 수 있도록 설정합니다. (/etc/ssh/sshd_config에서 PasswordAuthentication no 설정)
- Fail2ban 도입: 3회~5회 로그인 실패 시 해당 IP를 방화벽에서 1시간 또는 영구 차단합니다.
- 기본 포트 변경: SSH 기본 포트인 22번을 22222번 등 임의의 고포트로 변경하여 자동화된 스캐너들의 정찰 대상에서 벗어납니다. [1]
3. 데이터베이스 (Database - MySQL, Oracle 등) 타깃 공격
데이터베이스(DB)에는 기업의 회원 정보, 결제 기록 등 가장 가치 있는 자산이 모여 있습니다. 공격자의 최종 목적지인 경우가 많습니다.
침투 시나리오: SQL 인젝션(SQL Injection) 및 DB 직접 접속 공격
- 패턴 A (웹을 통한 우회): 웹 로그인 창에 아이디 대신 ' OR '1'='1 같은 SQL 악성 구문을 주입합니다. 웹 서버가 입력값을 검증하지 않고 DB로 그대로 던지면, DB는 이를 올바른 명령으로 인식해 비밀번호 검증을 건너뛰고 관리자 계정 정보를 열어줍니다.
- 패턴 B (외부 노출 DB 직접 공격): DB 포트(MySQL 3306번 등)가 외부 인터넷에 그대로 노출되어 있는 경우, 포트 취약점을 찌르거나 무차별 대입 공격을 통해 DB 관리자(root, sa) 권한을 획득하고 데이터를 통째로 유출(Data Dumping)한 뒤 원본을 삭제합니다.
방어 및 대처법
- 시큐어 코딩 (Prepared Statement 사용): 웹 개발 시 사용자의 입력값이 SQL 명령어로 해석되지 않도록 변수를 분리해 처리하는 '인자화 질의(Prepared Statement)'를 반드시 적용합니다.
- DB 포트 외부 노출 금지: 외부 인터넷에서 DB 포트로 직접 접속하지 못하도록 방화벽에서 차단합니다. 오직 웹 서버 IP 또는 사내 특정 IP(VPN)만 DB에 접근할 수 있도록 접근 제어 목록(ACL)을 설정합니다.
- 최소 권한의 법칙: 웹 애플리케이션이 DB에 접속할 때 쓰는 계정은 전체 DB를 지우거나 수정할 수 없도록, 해당 웹 서비스에 필요한 테이블의 읽기/쓰기 권한만 부여합니다. [1, 2]
세 줄 요약 방어 체계
- 웹 서버: 업로드 파일의 실행 권한을 끄고, WAF를 켜둔다.
- SSH: 패스워드 로그인을 차단하고, SSH 키 인증과 Fail2ban을 쓴다.
- 데이터베이스: 외부 노출을 차단하고, 소스코드 단에서 SQL 인젝션을 막는다. [1, 2]
- 이전글모든 내용을 실무에 바로 적용할 수 있도록 공격 명령어 분석, 웹 서버/DB/SSH 시스템별 구체적 방어 설정법을 상세히 나누어 설명해 드리겠습니다. 26.08.01
- 다음글칼리 리눅스에서 모의 침투 및 공격 패턴 분석에 가장 많이 사용되는 4대 핵심 공격 도구의 목적, 구체적인 공격 명령어, 그리고 이를 방어 측면에서 어떻게 탐지하는지 정리한 매뉴얼입니다. 26.08.01
댓글목록
등록된 댓글이 없습니다.
