Views: 1
목차
1. SSH 포트 변경으로 기본 공격 차단
SSH는 기본적으로 22번 포트를 사용한다. 이를 그대로 두면 자동화된 공격 봇에 쉽게 노출된다. /etc/ssh/sshd_config
파일에서 Port 2222
와 같이 값을 변경한 뒤 SSH 서비스를 재시작하면 적용된다. 방화벽 설정도 함께 수정해야 외부 접속이 가능하다. 단순하지만 효과적인 1차 방어 수단이다.
2. 패스워드 인증 비활성화하고 공개키 인증 사용
비밀번호 기반 인증은 무차별 대입 공격에 취약하다. 공개키 인증 방식은 클라이언트의 개인키와 서버에 저장된 공개키를 비교해 접속을 허용하므로 훨씬 안전하다. 설정 방법은 다음과 같다.
- 클라이언트에서
ssh-keygen
으로 키 생성 - 생성된 공개키를
~/.ssh/authorized_keys
에 추가 - 서버 설정 파일에서
PasswordAuthentication no
로 수정 후 재시작
이 방식은 인증 보안을 강화하고 자동화 작업에서도 유리하다.
3. 루트 계정 직접 접속 차단
루트 계정은 시스템 전체 권한을 가지므로 공격 목표가 되기 쉽다. /etc/ssh/sshd_config
파일에서 PermitRootLogin no
로 설정하면 루트 계정 직접 접속이 차단된다. 대신 일반 사용자로 로그인 후 sudo
명령을 사용해 필요한 권한을 획득하는 방식이 권장된다. 이는 로그 추적이 가능해 보안 사고 분석에도 유리하다.
4. Fail2Ban으로 무차별 로그인 공격 방어
Fail2Ban은 로그 파일을 분석해 연속적으로 잘못된 로그인 시도를 감지하고 해당 IP를 자동으로 차단한다. 설치 후 /etc/fail2ban/jail.conf
또는 jail.local
에서 SSH 항목을 활성화하면 작동한다. 대표적인 설정 항목은 다음과 같다.
maxretry
: 허용되는 최대 로그인 실패 횟수bantime
: 차단되는 시간
Fail2Ban은 과도한 접속 시도를 신속하게 차단해 서버 자원을 보호한다.
5. SSH 접속 제한: 방화벽과 AllowUsers 활용
서버에 접속 가능한 사용자와 IP를 명확히 제한하면 보안 수준이 크게 향상된다.
방화벽 설정
UFW 또는 firewalld를 사용해 특정 IP나 포트만 허용한다. 예를 들어 UFW에서는 다음과 같이 설정한다.ufw allow from 192.168.0.10 to any port 2222
이를 통해 허가된 IP만 SSH 포트에 접근할 수 있다.
AllowUsers 설정
/etc/ssh/sshd_config
에 AllowUsers user1 user2
와 같이 지정하면 정의된 계정만 SSH 접속이 가능해진다. 특정 사용자만 접속 허용하는 방식은 내부 관리 환경에서 특히 유효하다.

SSH 보안 점검 및 유지 관리 팁
systemctl status sshd
로 SSH 서비스 상태 확인journalctl -u sshd
로 로그 확인 및 이상 탐지- 정기적으로 패키지를 업데이트하고 보안 패치 적용
- 사용하지 않는 계정은 즉시 비활성화 또는 삭제
- SSH 접속 이력과 sudo 사용 로그를 주기적으로 점검
정리
SSH 보안은 단순한 설정 변경만으로도 크게 강화될 수 있다. 포트 변경, 공개키 인증, 루트 접속 차단, Fail2Ban, 방화벽 및 사용자 제한은 실무에서 바로 적용 가능한 핵심 방법이다. 각 방법을 조합하면 외부 공격에 대한 방어력을 높이고 안정적인 서버 운영 환경을 구축할 수 있다.