서버를 개통하고 가장 먼저 할 일
새 리눅스 서버를 발급받으면 기본 설정 그대로 방치하지 말고 바로 보안 설정부터 손봐야 한다. 기본값인 root 계정, 22번 SSH 포트, 비밀번호 로그인은 봇이 가장 먼저 노리는 조합이다. 실제로 인터넷에 노출된 서버는 개통 직후부터 자동화된 스캔과 로그인 시도를 받는다. 아래 순서대로 설정하면 개통 첫날에 필요한 기본 방어선을 갖출 수 있다.
1. 시스템 패키지부터 최신화한다
보안 설정을 시작하기 전에 운영체제와 패키지를 최신 상태로 업데이트한다. 데비안·우분투 계열이라면 apt update && apt upgrade, CentOS·RHEL 계열이라면 dnf update로 처리한다. 오래된 패키지에 남아 있는 알려진 취약점이 이후 설정을 아무리 잘해도 침입 경로가 될 수 있다.
2. 일반 계정을 만들고 sudo 권한을 준다
root 계정을 원격 로그인용으로 그대로 쓰지 않는다. root는 시스템의 모든 권한을 가지고 있어서, 이 계정 하나가 뚫리면 서버 전체가 넘어간다. 별도의 일반 계정을 만들고 sudo 그룹에 추가해, 관리 작업이 필요할 때만 권한을 상승시켜 쓰는 구조로 바꾼다.
3. SSH 접속 방식을 손본다
SSH 설정(/etc/ssh/sshd_config)에서 아래 세 가지를 함께 적용한다.
- root 로그인 차단:
PermitRootLogin no로 설정해 root 계정의 직접 원격 접속을 막는다. - 비밀번호 로그인 비활성화: 공개키 인증으로 전환하고
PasswordAuthentication no로 설정한다. 키가 없으면 아예 로그인 시도 자체가 불가능해진다. - 기본 포트 변경: 22번 대신 다른 포트를 사용하도록
Port값을 바꾼다. 이것만으로도 자동화된 스캔·무차별 대입 시도의 상당수를 걸러낼 수 있다.
4. 방화벽으로 접근을 제한한다
ufw(우분투 계열) 또는 firewalld(CentOS 계열)로 필요한 포트만 열어둔다. 기본 정책을 ‘전체 차단’으로 두고, 웹서비스라면 80·443, SSH라면 변경한 포트만 예외로 허용하는 화이트리스트 방식이 안전하다. 관리용 포트는 가능하면 특정 IP 대역에서만 접속 가능하도록 추가로 제한하는 것도 좋다.
5. fail2ban으로 무차별 대입 공격을 자동 차단한다
fail2ban은 로그 파일을 감시하다가 로그인 실패가 짧은 시간에 반복되면 해당 IP를 방화벽에서 자동으로 차단하는 도구다. 예를 들어 SSH 로그인 실패가 5회 발생하면 해당 IP를 10분간 차단하는 식으로 설정할 수 있다. SSH 포트를 바꾸고 fail2ban까지 적용하면 자동화된 공격 시도의 대부분을 걸러낼 수 있다.
초기 보안 설정 체크리스트
| 항목 | 설정 내용 |
|---|---|
| 패키지 업데이트 | OS 및 패키지 최신화 |
| 계정 관리 | 일반 계정 생성 후 sudo 권한 부여 |
| SSH 설정 | root 로그인 차단, 키 인증 전환, 포트 변경 |
| 방화벽 | ufw/firewalld로 필요한 포트만 화이트리스트 허용 |
| 침입 차단 | fail2ban으로 로그인 실패 반복 IP 자동 차단 |
정리
리눅스 서버 초기 보안 설정은 어느 것 하나만 적용해서는 충분하지 않다. root 로그인 차단, 키 기반 인증, 포트 변경, 방화벽, fail2ban을 함께 적용해야 서로 다른 공격 방식에 대응할 수 있다. 서버를 개통한 첫날 30분만 투자하면 이후 발생할 수 있는 침해 시도의 상당 부분을 사전에 차단할 수 있다.


