
[Ubuntu/Linux] SSH 서버 설치부터 보안을 위한 포트 변경 및 Root 로그인 차단 가이드
리눅스 서버를 구축한 후 가장 먼저 해야 할 일은 원격 접속을 위한 SSH 설정입니다. 하지만 기본 설정 그대로 방치하면 무작위 대입 공격(Brute-force)의 표적이 되기 쉽습니다.
우분투(Ubuntu) / Linux 환경에서 SSH를 설치하고 보안을 강화하는 필수 설정법을 알아보겠습니다.
1. SSH 서버 설치 및 상태 확인
먼저 시스템에 SSH 서비스가 설치되어 있는지 확인하고 설치합니다.
리눅스 SSH 보안을 강화하려면 root 로그인 금지, 비밀번호 인증 대신 SSH 키(Public Key) 기반 인증 사용, 기본 22번 포트 변경, 그리고 Fail2Ban을 통한 무차별 대입 공격 차단이 필수적입니다.
1.1. 데비안/우분투 계열 (Ubuntu, Debian, Linux Mint)
# 1. 패키지 리스트 업데이트
sudo apt update
# 2. SSH 서버 설치
sudo apt install openssh-server -y
# 3. 서비스 상태 확인
sudo systemctl status ssh
1.2. 레드햇/CentOS/Fedora 계열 (RHEL, Rocky Linux, AlmaLinux)
# 1. SSH 서버 설치
sudo dnf install openssh-server -y # (또는 yum install)
# 2. 서비스 시작 및 부팅 시 자동 실행 설정
sudo systemctl start sshd
sudo systemctl enable sshd
# 3. 서비스 상태 확인
sudo systemctl status sshd
2. sshd_config 설정을 통한 보안 강화
SSH의 핵심 설정 파일인 /etc/ssh/sshd_config를 수정하여 보안을 강화합니다.
sudo vi /etc/ssh/sshd_config
#* 다음과 같이 수정합니다.
#Port 22
Port 2233
#PermitRootLogin prohibit-password 또는 yes
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
- Port 2233 (22번 대신 1024~65535 사이의 임의 번호 입력)
- PermitRootLogin no (루트 직접 접속 차단)
- PasswordAuthentication no (반드시 SSH 키 등록 후에 변경하세요! 미리 하면 접속이 막힙니다.)
- MaxAuthTries 3 (로그인 시도 횟수 제한 추가 권장)
① 접속 포트(Port) 변경
기본 포트인 22번은 공격자들이 가장 먼저 스캔하는 포트입니다. 이를 1024~65535 사이의 임의의 번호로 변경하는 것이 좋습니다.
- 수정 전: #Port 22
- 수정 후: Port 2233 (원하는 번호로 입력)
② Root 로그인 차단
보안상 루트 계정으로 바로 접속하는 것은 매우 위험합니다. 일반 사용자로 접속 후 sudo 권한을 사용하는 방식을 권장합니다.
- 수정 전: PermitRootLogin prohibit-password 또는 yes
- 수정 후: PermitRootLogin no
③ Fail2Ban 설치 및 활성화
자동화된 공격을 차단하는 가장 효율적인 방법
sudo apt update && sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
④ SSH 키(Key) 생성 및 서버 등록 방법 3단계 (비밀번호 없이 접속하기)
ㅁ 1단계: 내 컴퓨터에서 키 쌍(Key Pair) 생성
ssh-keygen -t ed25519 -C "내-서버-별칭"
- -t ed25519: 최근 가장 권장되는 빠르고 안전한 알고리즘입니다. (구형 시스템은 -t rsa -b 4096 사용)
- Enter 처리: 파일 경로나 비밀번호(Passphrase)를 묻는데, 처음이라면 그냥 Enter를 세 번 눌러 기본값으로 생성하세요.
- 결과: ~/.ssh/ 폴더에 id_ed25519(개인키-절대 유출 금지)와 id_ed25519.pub(공개키-서버용) 파일 생성됩니다.
ㅁ 2단계: 서버에 공개키 전송 (등록)
생성한 공개키(.pub)를 서버에 복사해야 합니다. 가장 간단한 방법은 ssh-copy-id 명령어를 사용합니다.
ssh-copy-id -p [포트번호] [사용자계정]@[서버IP]
- 예: ssh-copy-id -p 22 admin@1.2.3.4
- 명령어가 실행되면 서버의 비밀번호를 한 번 입력합니다. 이제 공개키가 서버의 ~/.ssh/authorized_keys 파일에 자동으로 등록됩니다.
이제 아래 명령어로 접속을 시도해 보세요. 비밀번호 없이 바로 로그인이 된다면 성공입니다.
ssh -p [포트번호] [사용자계정]@[서버IP]
⑤ 패스워드 접근 차단 : PasswordAuthentication no 설정
작동이 된다면 비밀번호 로그인 완전히 차단하기 (PasswordAuthentication no 설정) 를 통해 접근을 차단 할 수 있습니다.
3. 설정 적용 및 서비스 재시작
설정 파일을 저장(:wq)한 후, 변경 사항을 시스템에 반영해야 합니다.
# 설정 데몬 리로드
sudo systemctl daemon-reload
# SSH 서비스 재시작 (Stop & Start)
sudo systemctl stop ssh
sudo systemctl start ssh
# 또는 한 번에 재시작
sudo systemctl restart ssh
주의사항: 포트를 변경했다면 반드시 방화벽(UFW 등)에서 해당 포트를 허용해 주어야 접속이 끊기지 않습니다.
sudo ufw allow 2233/tcp
sudo ufw allow 2233/tcp # 변경한 포트 허용 sudo ufw limit 2233/tcp # 동일 IP의 단시간 과다 접속 차단 (간이 Fail2ban 효과) sudo ufw enable
4. 요약 및 결론
SSH 보안의 기본은 '잘 알려진 정보 삭제' 만으로도 효과적입니다.
- 포트 번호만 바꿔도 자동화된 공격의 90% 이상을 차단할 수 있습니다.
추천 키워드
Ubuntu SSH 설정, 리눅스 보안, sshd_config 수정, SSH 포트 변경, RootLogin 차단, 우분투 서버 구축, Linux Security, SSH 설치 가이드
'DevOps' 카테고리의 다른 글
| WSL2 VHDX 가상드라이버 추가하기 (0) | 2026.02.21 |
|---|---|
| (PostgreSQL) DBA를 위한 베스트 GUI 툴 추천: pgAdmin부터 Luna Modeler까지 (4) | 2025.12.09 |
| (추천) 소프트웨어 개발을 위한 최고의 실시간 커뮤니케이션 협업 도구 (17) | 2025.12.05 |
| 테스트의 종류 - 단위.통합테스트 CBT UAT 시스템테스트 (0) | 2025.10.10 |
| 클로드코드(Claude Code) 설치 및 사용 완벽 가이드 (1) | 2025.08.08 |
| Redis 설치 유의사항 - Slow clocksource - redis-server --check-system (0) | 2025.07.21 |
| Redis 설치 유의사항 - redis-server --check-system 점검 (0) | 2025.07.21 |