1) 칼리 리눅스의 본질과 서비스 운영에 쓰이지 않는 이유, 2) 우분투 및 윈도우 환경에서의 SSH 키 인증 및 방화벽(UFW 포함) 실무 매뉴얼을 상세히 나누어 설명해 드리겠습니다. > 네트워크/보안/해킹

본문 바로가기
사이트 내 전체검색

네트워크/보안/해킹

▒ Info Tech ▒ 네트워크/보안/해킹 ▒ 하드웨어 ▒ 소프트웨어
Information Technology Group
▒ Info Tech ▒ 네트워크/보안/해킹 ▒ 하드웨어 ▒ 소프트웨어

보안 1) 칼리 리눅스의 본질과 서비스 운영에 쓰이지 않는 이유, 2) 우분투 및 윈도우 환경에서의 SSH 키 인증 및 방화벽(UF…

페이지 정보

profile_image
작성자 최고관리자
댓글 1건 조회 1회 작성일 26-08-01 06:33

본문

1) 칼리 리눅스의 본질과 서비스 운영에 쓰이지 않는 이유, 2) 우분투 및 윈도우 환경에서의 SSH 키 인증 및 방화벽(UFW 포함) 실무 매뉴얼을 상세히 나누어 설명해 드리겠습니다.

PART 1. 칼리 리눅스의 본질: 왜 서비스 운영에 쓰이지 않을까?

칼리 리눅스(Kali Linux)가 가볍고 빠르게 느껴지는 것은 맞습니다. 해커가 모의 침투를 기민하게 수행할 수 있도록 불필요한 백그라운드 서비스(오피스, 멀티미디어 도구 등)를 모두 제거하고 가벼운 데스크톱 환경(XFCE )을 기본 채택했기 때문입니다.

하지만 칼리 리눅스를 웹 서버나 데이터베이스 같은 실제 "서비스 운영용"으로 절대 사용하지 않는 결정적인 이유가 있습니다.

  1. 태생적 목적의 차이 (오직 공격 및 테스트용)
    칼리는 "모의 침투(Penetration Testing) 및 디지털 포렌식"만을 위해 특화된 배포판입니다. 해킹 도구 수백 개가 미리 설치되어 있어 편리하지만, 일반적인 웹 서비스 운영에 필요한 안정성이나 최적화는 고려되지 않았습니다.
  2. 보안성 역설 (서버로 쓰기엔 너무 위험함)
    서버는 공격 표면(Attack Surface)을 최소화해야 합니다. , 필요 없는 프로그램은 아예 없어야 안전합니다. 하지만 칼리에는 수많은 공격 툴과 취약점 테스트용 라이브러리가 기본 탑재되어 있어, 오히려 칼리 자체가 해킹당했을 때 공격자에게 거대한 무기 창고를 통째로 넘겨주는 꼴이 됩니다.
  3. 불안정한 업데이트 (Rolling Release)
    칼리는 최신 해킹 툴을 빠르게 반영하기 위해 시스템이 계속 변화하는 롤링 릴리스 방식을 씁니다. 반면 서비스 운영용 서버(Ubuntu LTS, Rocky Linux )는 시스템의 영속성과 안정성을 위해 보안 패치 외에는 OS 핵심 코어를 거의 변경하지 않는 방식을 씁니다. 칼리를 서버로 쓰면 업데이트 한 번에 웹 서버가 먹통이 될 확률이 매우 높습니다.

 결론: 칼리 리눅스는 "공격자의 PC(공격 기지)"혹은 "분석가의 노트북"역할로만 쓰고, 실제 서비스를 서비스하는 서버는 우분투 서버(Ubuntu Server LTS)나 윈도우 서버(Windows Server)를 사용하는 것이 글로벌 표준입니다.

PART 2. 우분투 & 윈도우 SSH (Key) 생성 및 등록 매뉴얼

비밀번호 로그인을 완전히 차단하고, 수학적으로 계산된 '암호화 키 쌍(Key Pair)'으로만 인증하는 방식입니다. 비밀번호 대입 공격(Hydra ) 100% 원천 봉쇄할 수 있습니다.

1. 우분투(Linux) 환경에서 SSH 키 설정법

사용자 PC(클라이언트)에서 키를 만들어 서버에 등록하는 과정입니다. [1]

[Step 1] 사용자 PC에서 키 쌍 생성

개인 PC의 터미널(또는 칼리 리눅스)에서 아래 명령어를 입력합니다.

bash

# rsa 방식보다 보안성이 높고 가벼운 ed25519 알고리즘으로 키 생성

ssh-keygen -t ed25519 -b 4096 -C "my_server_key"

코드를 사용할 때는 주의가 필요합니다.

  • 엔터를 몇 번 누르면 ~/.ssh/ 디렉터리에 두 개의 파일이 생깁니다.
    • id_ed25519 : 비밀키 (Private Key) -> 절대 남에게 주면 안 됨 (내 컴퓨터에 보관)
    • id_ed25519.pub : 공개키 (Public Key) -> 서버에 등록할 자물쇠 역할 [1]

[Step 2] 생성한 공개키를 우분투 서버에 등록

bash

# 가장 간단한 원격 복사 명령어

ssh-copy-id -i ~/.ssh/id_ed25519.pub [서버계정]@[서버_IP]

코드를 사용할 때는 주의가 필요합니다.

  • 만약 이 명령어가 안 된다면, 서버의 ~/.ssh/authorized_keys 파일 안에 내 id_ed25519.pub 파일의 텍스트 내용을 그대로 복사해서 붙여넣어 주면 됩니다.

[Step 3] 서버에서 비밀번호 로그인 기능 끄기 (핵심)

우분투 서버의 설정을 변경합니다. sudo nano /etc/ssh/sshd_config 명령어로 파일을 엽니다. [1]

ini

# 아래 항목들을 찾아서 수정 (앞에 # 주석이 있다면 제거)

PubkeyAuthentication yes

PasswordAuthentication no

PermitRootLogin no

코드를 사용할 때는 주의가 필요합니다.

설정 저장 후 SSH 서비스 재시작:

bash

sudo systemctl restart ssh

코드를 사용할 때는 주의가 필요합니다.

  • 주의: 기존 터미널 창을 끄지 마시고, 새 터미널 창을 열어서ssh -i ~/.ssh/id_ed25519 계정@IP로 비밀번호 없이 로그인이 잘 되는지 확인한 후 기존 창을 닫으세요. (설정 오류 시 관리자도 영영 튕길 수 있습니다.)

2. 윈도우 서버(Windows Server) 환경에서 SSH 키 설정법

윈도우 서버에 탑재된 OpenSSH 기능을 이용하는 방법입니다.

[Step 1] 윈도우 서버에 OpenSSH 기능 활성화 (PowerShell 관리자 권한)

powershell

# OpenSSH 서버 기능 설치

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# 서비스 시작 및 자동 실행 등록

Start-Service sshd

Set-Service -Name sshd -StartupType 'Automatic'

코드를 사용할 때는 주의가 필요합니다.

[Step 2] 공개키 등록하기

사용자 PC에서 만든 id_ed25519.pub 내용(텍스트)을 복사합니다.
윈도우 서버의 로그인할 사용자 폴더 내부(: C:\Users\Administrator\.ssh\)로 이동하여 authorized_keys라는 이름의 파일(확장자 없음)을 만들고 텍스트를 붙여넣습니다. [1]

  •  Windows Server 주의사항 (중요):
    Windows
    Administrator 계정이나 Administrators 그룹에 속한 계정은 보안 정책상 위 경로가 아니라 C:\ProgramData\ssh\administrators_authorized_keys 파일에 키를 넣어야 작동하는 경우가 많습니다.

[Step 3] 윈도우 SSH 비밀번호 로그인 차단

C:\ProgramData\ssh\sshd_config 파일을 메모장(관리자 권한)으로 열어 수정합니다.

ini

PasswordAuthentication no

PubkeyAuthentication yes

코드를 사용할 때는 주의가 필요합니다.

설정 후 파워셸에서 서비스 재시작: Restart-Service sshd

PART 3. 방화벽 실무 운용법 (우분투 UFW vs 윈도우 고급 방화벽)

방화벽은 서버의 문지기입니다. 불필요한 포트는 닫고, 필요한 포트도 특정 IP만 들어오게 설정하는 것이 실무의 핵심입니다.

1. 우분투 UFW(Uncomplicated Firewall) 실무 명령어

UFW iptables를 사용하기 쉽게 포장한 우분투의 기본 방화벽입니다. [1]

  • 기본 규칙 설정 (안전한 화이트리스트 방식)

bash

# 들어오는 모든 기본 접속은 차단, 나가는 접속은 허용

sudo ufw default deny inbound

sudo ufw default allow outbound

코드를 사용할 때는 주의가 필요합니다.

  • 필수 서비스 포트 개방

bash

# 웹 서버 기본 포트(80, 443)는 전 세계 누구나 접속 가능하게 오픈

sudo ufw allow 80/tcp

sudo ufw allow 443/tcp

코드를 사용할 때는 주의가 필요합니다.

  • 특정 IP에서만 SSH 접속 허용 (가장 강력한 보안)

bash

# 만약 내 사내/ IP 211.234.56.78 이라면, IP 22번 포트 진입 허용

sudo ufw allow from 211.234.56.78 to any port 22 proto tcp

 

# 특정 대역(: 사내 망 192.168.1.0 ~ 192.168.1.255) 전체 허용 시

sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp

코드를 사용할 때는 주의가 필요합니다.

  • 방화벽 켜기 및 상태 확인

bash

# 방화벽 활성화 (SSH 포트 허용 규칙을 최소 1개 이상 넣은 후 켜야 합니다!)

sudo ufw enable

 

# 현재 적용된 방화벽 규칙 번호와 함께 보기

sudo ufw status numbered

코드를 사용할 때는 주의가 필요합니다.

  • 규칙 삭제

bash

# status numbered로 확인한 규칙 번호(: 3)를 지정해 삭제

sudo ufw delete 3

코드를 사용할 때는 주의가 필요합니다.

[1, 2, 3, 4]

2. 윈도우 서버 방화벽 실무 운용법 (Netsh & PowerShell)

윈도우 서버는 GUI로도 잘 되어 있지만, 실무 환경이나 자동화를 위해서는 스크립트(PowerShell) 명령어를 사용하는 것이 훨씬 빠르고 정확합니다. [1]

  • 웹 서버 포트(80, 443) 전면 개방

powershell

# HTTP 오픈

New-NetFirewallRule -Name "Web-HTTP" -DisplayName "Allow HTTP 80" -Enabled True -Profile Any -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80

# HTTPS 오픈

New-NetFirewallRule -Name "Web-HTTPS" -DisplayName "Allow HTTPS 443" -Enabled True -Profile Any -Direction Inbound -Action Allow -Protocol TCP -LocalPort 443

코드를 사용할 때는 주의가 필요합니다.

  • 특정 IP에서만 데이터베이스(MySQL 3306) 접속 허용

powershell

# 211.234.56.78 IP Windows 서버의 3306 포트로 접속을 허용하는 규칙 생성

New-NetFirewallRule -Name "MySQL-Secure" -DisplayName "Allow MySQL for Trusted IP" -Enabled True -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3306 -RemoteAddress "211.234.56.78"

코드를 사용할 때는 주의가 필요합니다.

  • 기존에 열려 있던 허술한 규칙 차단 또는 삭제

powershell

# 규칙 비활성화 (동작 중지)

Set-NetFirewallRule -Name "기존규칙이름" -Enabled False

# 규칙 아예 삭제

Remove-NetFirewallRule -Name "기존규칙이름"

코드를 사용할 때는 주의가 필요합니다.

  • 현재 방화벽 상태 및 활성화 여부 확인

powershell

Get-NetFirewallProfile | Select-Object Name, Enabled

코드를 사용할 때는 주의가 필요합니다.

 최종 실무 보안 아키텍처 요약 요령

새로운 서버를 한 대 구축하면 다음 프로세스를 기계처럼 수행하시는 습관을 들이는 것이 좋습니다.

  1. OS 설치 (Ubuntu Server LTS 혹은 Windows Server)
  2. 방화벽 기본 차단 정책 적용 (ufw default deny )
  3. 웹 포트(80, 443)만 전체 오픈
  4. 관리자 PC에서 SSH 키 생성 후 서버에 전송
  5. 서버 SSH 설정에서 '비밀번호 로그인 금지' 조치
  6. 방화벽에서 SSH/DB 포트는 오직 '관리자 전용 IP'만 허용하도록 규칙 추가

이렇게만 구성해 두어도 전 세계 인터넷에서 몰려오는 자동화된 해킹 봇(Bot)이나 웬만한 무차별 대입 공격은 아무런 힘을 쓰지 못하고 차단됩니다.

여기까지 배우신 내용 중, 실제로 본인의 가상머신(VirtualBox, VMware )이나 클라우드 환경에 직접 구축해 보면서 실습하고 싶으신 파트가 있으신가요?

혹시 실습 중에 마주치기 쉬운 핵심 에러 유형(: SSH Key Permission denied 오류 등)이나 해결 방안이 필요하시면 추가로 알려드리겠습니다.

 

댓글목록

profile_image

최고관리자님의 댓글

최고관리자 작성일

192.168.1.0/24에서 뒤에 붙는 24는 '서브넷 마스크(Subnet Mask)'의 비트 수를 의미하며, 255는 IP 주소의 마지막 자리에 들어가는 숫자입니다. [1]
네트워크에서 대역(범위)을 표시할 때는 255를 쓰지 않고 24를 사용해야 방화벽이 올바르게 인식합니다. 이해하기 쉽게 핵심만 나누어 설명해 드릴게요.
________________________________________
1. 왜 255가 아니라 24인가요? (CIDR 표기법)
컴퓨터는 IP 주소를 32자리의 이진수(0과 1)로 인식합니다.
192.168.1.0/24에서 /24는 "앞에서부터 24번째 자리까지의 숫자는 사내 망으로 고정하고, 나머지 뒤의 8자리 숫자만 마음대로 바꾸겠다"라는 뜻입니다.
• 앞의 24비트 (고정): 192.168.1.
• 뒤의 8비트 (자유 변경): 0부터 255까지 총 256개
즉, 192.168.1.0/24라고 적는 것 자체가 "192.168.1.0부터 192.168.1.255까지의 모든 IP를 의미"하게 됩니다. 이를 IT 용어로 CIDR(Classless Inter-Domain Routing) 표기법이라고 부릅니다. [1]
________________________________________
2. 흔히 하는 실수와 올바른 UFW 명령어
❌ 잘못된 입력 예시
bash
# 이렇게 입력하면 UFW 방화벽이 문법 오류(Error)를 내며 작동하지 않습니다.
sudo ufw allow from 192.168.1.0/255 to any port 22 proto tcp
sudo ufw allow from 192.168.1.0-255 to any port 22 proto tcp
코드를 사용할 때는 주의가 필요합니다.
올바른 입력 예시
bash
# 범위 전체를 지정할 때는 반드시 /24를 씁니다.
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp
코드를 사용할 때는 주의가 필요합니다.
________________________________________
 실무용 서브넷 마스크 팁 (이것만 기억하세요)
실무에서 방화벽 범위를 지정할 때 가장 많이 쓰는 형태는 딱 3가지입니다. 이것만 외워두시면 편리합니다.
1. /32 (딱 1개의 IP만 지정할 때)
o 예: 192.168.1.50/32 → 오직 192.168.1.50 컴퓨터 1대만 허용 (보통 /32는 생략해도 됩니다.)
2. /24 (C클래스, 마지막 자리 0~255 전체를 지정할 때)
o 예: 192.168.1.0/24 → 192.168.1.0 ~ 192.168.1.255까지 총 256대 허용
3. /16 (B클래스, 뒤의 두 자리를 통째로 지정할 때)
o 예: 192.168.0.0/16 → 192.168.0.0 ~ 192.168.255.255까지 대규모 사내 망 전체 허용
사내 망 범위(192.168.1.0 ~ 192.168.1.255)를 완벽히 지정하는 숫자는 24가 정확합니다.


사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
6
어제
10
최대
28
전체
209
Copyright © HeyWEB. All rights reserved.