리눅스 SSH Port 변경 방법 (22번 포트 변경하기)
리눅스로 구축된 서버를 운영하다 보면 SSH port 변경을 해야겠다 생각하는 경우가 많다. 기본적으로 포트를 잘 변경하지 않는 운영자도 SSH는 보안 강화를 위해 22번 포트에서 다른 포트를 변경하는 경우가 많다.
보안 강화를 위해 포트를 변경하다는게 어떤 말인지 궁금한 사람도 있을 것이다. 여기서 잠시 설명 하자면 SSH는 서비스에서 22번 포트를 사용하도록 설정되어 있다. 그런데 문제는 22번 포트가 전 세계적으로 널리 알려져 있다는 점이다. 그렇기에 22번 포트는 자동화된 공격 시도나 무차별 접속 시도가 자주 발생한다.
따라서 기본 포트인 22번 포트를 그대로 사용하는 대신 다른 포트로 변경하면 자동 공격 시도를 어느 정도 줄일 수 있다. 물론 포트 변경 만으로 완벽한 보안을 보장할 수 있는 것은 아니다. 하지만 자동 공격에서 어느정도 회피가 가능하다는 점에서 서버 보안을 강화하는 기본적인 방법 중 하나로 널리 사용 되고 있다.
그렇기에 이번 글에서는 리눅스 서버 보안을 위한 SSH port 변경 방법을 정리해 보았다.
sshd_config 설정부터 방화벽 설정, 접속 테스트까지 단계별로 살펴 보도록 하자.
SSH 는 무엇인가
SSH 서비스는 리눅스 서버에 원격 접속을 하기 위한 가장 대표적인 방법이다. 사용처는 서버 관리나 파일 전송, 원격 명령 실행 등 정마라 다양한 작업에 사용된다. 사용자가 포트를 별도 설정을 하지 않았을 경우 SSH는 기본적으로 22번 포트를 사용한다. 이 말인즉 SSH 서비스를 포트 변경 없이 오픈 시에는 다음과 같은 문제가 발생할 수 있다.
- 자동화된 공격 시도 증가
- 무차별 로그인 시도
- 불필요한 접근 로그 증가
실제 멀리 가지 않고 개인 NAS만 구축하더라도 SSH 포트인 22번을 열었을 때와 열지 않았을 때 외부에서 들어오는 접속 시도 건 수 부터가 달라진다. 22번 포트는 여는 순간 자동화 공격의 대상이 된다고 생각하는 것이 좋다. 하지만 SSH 서비스의 특성 상 이용을 하지 않을 수도 없는 서비스다. 이러한 이유로 서버 운영 환경에서는 SSH 서비스 오픈 시 포트를 다른 번호로 변경하는 경우가 대부분이다. 만약 이 글을 읽고 있는 서비스 담당자가 있는데, 혹여 본인들 서비스의 SSH 포트가 22번이라면 아래 글을 읽고 변경 하는 것을 생각해 보자.
SSH port 변경이 필요한 이유
SSH 포트를 변경하는 가장 큰 이유는 단순하지만 보안 강화다.
아까 위에서 했던 얘기를 한 번 더 해야 할 것 같다. 인터넷에 공개된 서버의 경우 다양한 자동 공격 프로그램들이 기본 포트인 22번 포트를 대상으로 접속을 시도한다. 이러한 공격은 대부분 단순한 포트 스캔이나 계정 로그인 시도 형태로 나타난다. SSH 포트인 22번 포트를 열면 해당 포트로 admin 등의 계정 아이디로 접속 시도가 무수히 들어오는 것을 볼 수 있다.
그 말인 즉슨 SSH 포트를 다른 번호로 변경하면 이러한 자동 공격의 상당수를 줄일 수 있다는 말이다. 물론 전문적인 공격자는 포트 스캔을 통해 새로운 포트를 찾을 수 있지만, 단순한 자동 공격을 줄이는 데는 포트 번호 자체를 바꾸는 것이 가장 효과적인 방법이다. 그러면 포트를 바꾸는 방법을 알아보자.
SSH 포트 변경 시 주의사항
본래 해당 내용을 마지막에 썼었는데, 다시 위로 올렸다. 그 이유는 아래의 내용대로 작업 후 ‘SSH 포트 변경하고 서버에 접속이 안돼요’라는 불상사를 최대한 줄여보기 위함이다.
SSH 포트를 변경 작업 시 가장 주의해야 할 점은 기존 연결을 유지한 상태에서 작업하는 것이다. SSH 설정을 변경한 뒤 바로 접속을 끊으면 다시 접속할 수 없는 상황이 발생할 수도 있다. 따라서 기존 SSH 세션을 유지한 상태에서 새로운 포트로 접속 테스트를 먼저 진행하는 것이 좋다. 중간에 서비스를 재시작하는 단락이 있는데, 서버를 재기동 하라는 것이 아니라 ssh 서비스를 재시작 하라는 이야기다. 정말 간혹가다 드물지만 서버를 재기동 해버리는 분들도 있다. 아래에 기재한 내용들을 순서대로 차근차근 따라간 사람 이라면 문제 될 것이 없겠지만 그렇지않고 방화벽 설정을 확인 하지 않으면 포트가 열리지 않아 접속이 차단될 수 있다. 포트 변경 후에는 반드시 방화벽 설정과 접속 테스트를 함께 확인해야 한다.
주의사항을 모두 읽었다면 작업을 시작해 보자.
sshd_config 파일 수정
위에 예시로 언급했던 Synology NAS 등은 별도 설정 관련 UI를 제공하기 때문에 해당 메뉴에서 변경을 해주면 된다. 하지만 우리가 자주 사용하게 될 리눅스에서는 SSH 포트를 변경하기 위해서는 SSH 설정 파일을 수정해야 한다.
SSH 설정 파일은 일반적으로 다음 경로에 위치한다. 밑에 서비스 재시작 시 시스템별로 명령어가 일부 다르긴 하지만 sshd_config 파일의 경우 리눅스 계열은 아래 위치에 존재한다.
/etc/ssh/sshd_config파일을 열면 여러 설정 항목이 보이는데, 그 가운데 Port 설정 항목을 찾아서 변경하면 된다. 설정 파일에서 Port를 찾으면 된다고 했는데 보통 아래와 같이 기재되어 있어 찾기 어렵지는 않을 것이다.
#Port 22
만약 위와 같이 되어 있는 것이 아니라면 아래와 같이 되어 있을 수도 있다.
Port 22여기까지 찾았으면 다 찾은 것이다. 위 숫자를 원하는 포트 번호로 변경하면 된다. 예를 들어 2222번 포트를 사용하려면 다음과 같이 수정한다고 생각해 보자.
Port 2222위와 같이 변경하면 22번 포트에서 2222포트로 변경된 것이다. 여기서 주의할 점은 이미 다른 서비스에서 사용 중인 포트는 사용할 수 없다는 것이다. 일반적으로 1024 이상의 포트를 사용하는 것을 권장한다.
방화벽 설정
SSH 포트를 변경 했는가? 하지만 아직 작업은 끝난 것이 아니다. 우리에게는 방화벽이라는 넘어야 하는 산이 있다. 실제 SSH 포트인 22번 포트의 경우는 대부분 방화벽에서 허용이 되어 있겠지만 금번에 당신이 설정한 포트는 방화벽에게 생소한 포트일 뿐이다. 방화벽에게도 이 포트를 오픈하라고 지시를 내려 주어야 한다.
예를 들어 UFW 방화벽을 사용하는 경우 다음과 같이 설정할 수 있다. 위의 예시에서 설정했던 2222 포트에 대한 방화벽을 허용한다고 생각한다면 아래와 같이 진행하면 된다.
sudo ufw allow 2222/tcp만약 firewalld를 사용하고 있다면 다음 명령어를 사용할 수 있다.
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload이 글을 처음 보는 사람 가운데 UFW와 firewalId가 어떤 차이인지 궁금한 사람이 있을 수도 있을 수 있어 간단히 설명하자면 UFW는 데비안과 우분투 진영에서 지배적인 반면, firewalld는 레드햇 기반 시스템에서 표준으로 자리 잡은 방화벽 관리 도구라고 보면 된다. 해당 내용에 대해 자세히 다루는 것은 다음 글의 즐거움으로 남기고 SSH에 관한 이야기를 이어가도록 하자. 어쨌든 위와 같이 새로 지정한 포트를 방화벽에서 허용하지 않으면 SSH 접속이 차단될 수 있기 때문에 반드시 확인하도록 하자.
SSH 서비스 재시작
설정 변경을 완료 했는가? 그러면 이제 마지막 단계만이 남았다. Ubuntu, Debian 등의 시스템이라면 아래 명령어로 SSH 서비스를 재시작 하면 된다.
sudo systemctl restart sshRed Hat 및 CentOS 등 일부 시스템에서는 다음 명령어를 사용하면 된다.
sudo systemctl restart sshd위와 같이 서비스를 재시작 해주면 새로운 포트가 적용 되게 된다. 혹시 서비스 시작, 중단 등의 명령어를 더 알고 싶다면 아래 글을 참고하도록 하자.

SSH 접속 테스트
자! 서비스 재시작까지 완료가 되었다. 그렇다면 끝일까? 아니다. 서비스 운영자로써 서비스를 재시작한 후에는 반드시 새 포트로 접속 테스트를 진행해야 한다. 서비스 운영자 입장에서는 서비스 포트 변경이 끝이 아니라 실제 해당 포트가 작동하는지까지 확인을 해야 작업 완료라고 볼 수 있다.
예를 들어 포트를 2222로 변경했다면 다음과 같이 접속할 수 있다.
ssh -p 2222 user@server-ip여기서 -p 옵션은 포트를 지정하는 옵션이다. 포트를 지정하지 않으면 Default인 22번을 지정하게 된다. 포트를 변경했다면 꼭 위와 같이 포트를 지정하도록 하자. 접속이 되었는가? 축하한다. 정상적으로 접속이 된다면 SSH 포트 변경이 성공적으로 적용된 것이다.
마무리
SSH 포트를 무사히 변경 후 여기를 보고 있는가? 만약 변경 후 변경한 포트로 접속이 되지 않는다면 심심한 애도의 인사를 전한다. 위 설정 가운데 놓친 것이 없는지 다시 한 번 살펴보자. 만약 계속 접속이 되지 않는다면 아래 글을 보고 이유를 하나하나 찾아 보도록 하자.

만약 정상 접속이 되었다면 본인들 서비스의 쉘에 SSH를 사용하는 것이 있다면 포트 등을 변경해 주는 작업도 추가로 진행하도록 하자. 변경해 주지 않으면 추후 배치나 쉘 실행 시 접속 거부가 나는 것을 볼 수 있을 것이다. 서비스 운영자 입장에서는 특정 포트 변경 시 영향도를 잘 체크하는 것이 중요하다. 꼭 잘 챙기도록 하자.
초반에도 서술했지만 SSH 포트 변경은 리눅스 서버 보안을 강화하는 가장 기본적인 설정 가운데 하나다. 기본 포트인 22번 대신 다른 포트를 사용하면 자동화된 공격 시도를 줄이는 데 큰 도움이 된다. 물론 그래도 들어올 공격은 들어오지만 자동화 된 공격 시도를 줄이는 것만으로 보안에는 큰 도움이 된다. 물론 포트 변경만으로 서버 보안을 완벽하게 보호할 수 있는 것은 아니다. SSH 키 인증 사용, root 로그인 제한, 방화벽 설정 등과 함께 적용하면 보다 안전한 서버 환경을 구축할 수 있다. 리눅스 서버를 운영하고 있다면 오늘 진행했던 SSH 포트 변경과 같은 기본적인 보안 설정부터 하나씩 적용해 보는 것도 좋은 방법이다.
Add your first comment to this post