SSH 기본 포트가 22로 결정된 배경과 역사, SSH 포트 변경 방법, 방화벽 및 iptables에서 SSH 접근을 설정하는 방법을 설명한다.
SSH 포트가 22가 된 과정SSH 포트 22를 배정받은 이야기서버에서 SSH 포트 변경하기명령줄에서 SSH 포트 번호 지정하기방화벽을 통한 SSH 접근 구성아웃바운드 SSH역방향 터널링(back-tunneling)은 위험하다인바운드 SSH 접근iptables로 SSH 접근 허용하기
기본 SSH 포트는 22이다. 이는 우연이 아니다. 여기에는 어떻게 그 포트 번호를 갖게 되었는지에 대한 이야기가 있다.
내가(Tatu Ylonen) 이 이야기를 2017년 4월에 처음 공개했을 때, 이 글은 입소문을 타고 단 3일 만에 약 12만 명이 읽었다.
나는 SSH(Secure Shell)의 초기 버전을 1995년 봄에 작성했다. 그 당시에는 telnet과 FTP가 널리 사용되고 있었다.
어쨌든, 나는 SSH를 telnet(포트 23)과 ftp(포트 21)를 모두 대체하도록 설계했다. 포트 22는 비어 있었다. telnet과 ftp 포트 사이에 위치해 있어서 편리했다. 나는 이 포트 번호를 쓰게 되면 작은 부분이긴 해도 일종의 신뢰감을 줄 수 있을 거라고 생각했다. 하지만 그 포트 번호를 어떻게 얻을 수 있을까? 나는 한 번도 포트를 할당받아 본 적은 없었지만, 그 과정을 해본 사람을 한 명 알고 있었다.
그 당시 포트 할당 기본 절차는 꽤 간단했다. 인터넷은 지금보다 훨씬 작았고, 인터넷 붐의 극초기 단계였다. 포트 번호는 IANA(Internet Assigned Numbers Authority)에서 할당했다. 당시 이것은 저명한 인터넷 개척자인 Jon Postel과 Joyce K. Reynolds를 의미했다. 그 밖에도, Jon은 IP(RFC 791), ICMP(RFC 792), TCP(RFC 793)와 같은, 사소하다면 사소하다고 할 수도 있는 프로토콜 표준들의 편집자이기도 했다. 여러분 중 일부는 이 이름들을 들어본 적이 있을 것이다.
나에게 Jon은 인터넷의 주요 RFC를 거의 모두 작성한 인물이라, 솔직히 말해 좀 두려운 존재였다!
어쨌든, 1995년 7월에 ssh-1.0을 발표하기 직전에, 나는 IANA에 다음과 같은 이메일을 보냈다.
From ylo Mon Jul 10 11:45:48 +0300 1995 From: Tatu Ylonen <ylo@cs.hut.fi>To: Internet Assigned Numbers Authority <iana@isi.edu>Subject: request for port numberOrganization: Helsinki University of Technology, FinlandDear Sir, I have written a program to securely log from one machine into another over aninsecure network. It provides major improvements in security and functionality over existingtelnet and rlogin protocols and implementations. In particular, it prevents IP, DNS andouting spoofing. My plan is to distribute the software freely on the Internet and to get itinto as wide use as possible. I would like to get a registered privileged port number forthe software.The number should preferably be in the range 1-255 so that it can be used in the WKS fieldin name servers. I'll enclose the draft RFC for the protocol below. The software has been inlocal use for several months, and is ready for publication except for the port number. Ifthe port number assignment can be arranged in time, I'd like to publish the software alreadythis week. I am currently using port number 22 in the beta test.It would be great if this number could be used (it is currently shown as Unassigned in thelists). The service name for the software is "ssh" (for Secure Shell).Yours sincerely, Tatu Ylonen <ylo@cs.hut.fi> ... followed by protocol specificationfor ssh-1.0
다음 날, Joyce가 보낸 이메일이 내 메일박스에 와 있었다.
Date: Mon, 10 Jul 1995 15:35:33 -0700 From: jkrey@ISI.EDU To: ylo@cs.hut.fi Subject: Re: request for port number Cc: iana@ISI.EDU Tatu, We have assigned port number 22 to ssh, with you as the point of contact. Joyce
이렇게 해서, SSH 포트는 22가 되었다!!!
1995년 7월 12일 새벽 2시 32분, 나는 헬싱키 공과대학교의 베타 테스터들에게 최종 베타 버전을 알렸다. 오후 5시 23분에는 ssh-1.0.0 패키지를 베타 테스터들에게 공지했다. 그리고 같은 날 오후 5시 51분, 나는 cypherpunks@toad.com 메일링 리스트에 SSH(Secure Shell)에 대한 공지를 보냈다. 또 몇몇 뉴스그룹과 메일링 리스트, 그리고 인터넷에서 관련 주제를 논의하던 일부 사람들에게도 직접 공지를 보냈다.
기본적으로 SSH 서버는 여전히 포트 22에서 동작한다. 하지만 다른 포트에서 동작시키는 경우도 있다. 테스트용이 한 가지 이유다. 동일한 호스트에서 여러 설정을 동시에 실행하는 것도 다른 이유다. 드물게는 루트 권한 없이 SSH 서버를 실행해야 하는 경우도 있는데, 이때는 비특권 포트(즉, 포트 번호 ≥ 1024)에서 실행해야 한다.
포트 번호는 /etc/ssh/sshd_config 파일에서 Port 22 지시문을 변경함으로써 설정할 수 있다. 또한 sshd를 실행할 때 -p <port> 옵션을 사용해서 지정할 수도 있다. SSH 클라이언트와 sftp 프로그램도 -p <port> 옵션을 지원한다.
Linux에서 ssh 명령을 사용할 때, -p <port> 옵션을 이용해 접속할 포트 번호를 지정할 수 있다. SFTP와 scp를 사용할 때는 -P <port>(주의: 대문자 P) 옵션을 사용한다. 명령줄에서 지정한 SSH 포트 번호는 설정 파일에 구성된 값보다 우선한다.
SSH는 방화벽을 통해 상대적으로 자주 허용되는 몇 안 되는 프로토콜 중 하나이다. 아무 제한 없이 아웃바운드 SSH를 허용하는 환경도 매우 흔한데, 특히 규모가 작고 기술 중심적인 조직에서 그렇다. 인바운드 SSH는 대개 한 대 또는 소수의 서버로만 제한된다.
방화벽에서 아웃바운드 SSH를 구성하는 것은 매우 쉽다. 나가는 트래픽에 제한이 있더라도, TCP 포트 22를 나가는 방향으로 허용하는 규칙을 하나 만들기만 하면 된다. 그것이 전부다. 목적지 주소를 제한하고 싶다면, 규칙을 귀사의 클라우드 상 외부 서버나 클라우드 접근을 보호하는 점프 서버(jump server)로만 허용하도록 제한할 수도 있다.
그러나 아웃바운드 SSH를 무제한 허용하는 것은 위험할 수 있다. SSH 프로토콜은 터널링을 지원한다. 기본 아이디어는, 외부 서버에 있는 SSH 서버가 어디에서 오는 연결이든 수신하도록 해두고, 그 연결을 조직 내부로 다시 포워딩한 뒤, 내부의 어떤 서버로든 접속을 만드는 것이 가능하다는 점이다.
이것은 어떤 환경에서는 매우 편리할 수 있다. 개발자와 시스템 관리자는 자택이나 출장을 나갔을 때 자신의 노트북에서 원격 접속을 하기 위해, 자주 이런 터널을 열어 사용한다.
하지만, 일반적으로 이런 방식은 보안 정책을 위반하며 방화벽 관리자와 보안 팀의 통제권을 빼앗는다. 예를 들어, 이는 PCI, HIPAA, NIST SP 800-53를 위반할 수 있다. 또 해커나 해외 정보기관이 조직 내부로 들어오는 백도어를 남기는 데 악용될 수 있다
인바운드 접근의 경우, 현실적인 대안으로 다음과 같은 방법들이 있다.
방화벽을 구성해 포트 22로 들어오는 모든 연결을 내부 네트워크나 DMZ에 있는 특정 IP 주소로 포워딩한다.
다른 서버에 접근하기 위해 방화벽에서 서로 다른 포트를 사용한다.
일반적으로 IPsec 프로토콜을 사용하는 VPN(Virtual Private Network)에 먼저 로그인한 이후에만 SSH 접근을 허용한다.
Iptables는 Linux 커널에 내장된 호스트 방화벽이다. 보통 서버를 보호하기 위해, 명시적으로 열지 않은 포트에 대한 접근을 차단하도록 설정한다.
서버에서 iptables가 활성화되어 있다면, 다음 명령들을 사용해 인바운드 SSH 접근을 허용할 수 있다. 이 명령들은 루트 권한으로 실행해야 한다.
iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 22 -m conntrack --ctstate ESTABLISHED -j ACCEPT
규칙을 영구적으로 저장하고 싶다면, 일부 시스템에서는 다음 명령으로 가능하다.
service iptables save

SSH는 사람, 시스템, 네트워크 간 통신을 보호하는 선도적인 방어형 사이버보안 기업이다. 우리는 제로 트러스트 특권 접근 제어와 양자 안전(Quantum Safe) 네트워크 보안을 전문으로 한다. 고객은 여러 포춘 500 대 기업부터 금융, 리테일, 기술, 산업, 헬스케어, 공공 부문 등 다양한 업종의 중소기업까지 매우 다양하다. 포춘 100 대 기업의 25%가 SSH의 솔루션에 의존하고 있다. 최근 전략적 초점은 국방, 중요 인프라 운영자, 제조 OT 보안, 공공 안전 영역으로 SSH의 비즈니스를 확장했다.
Leonardo S.p.A는 SSH에 2,000만 유로를 투자하여 회사의 최대 주주가 되었다. SSH 솔루션은 Leonardo 내에서 제로 트러스트 특권 접근 관리와 양자 안전 네트워크 암호화를 위한 센터 오브 엑설런스로 기능한다. Leonardo는 연 매출 178억 유로(2024년 기준)를 기록하는 항공우주, 방위, 보안 분야의 다영역 기술 역량을 개발하는 글로벌 산업 그룹이다. SSH의 주식(티커: SSH1V)은 나스닥 헬싱키에 상장되어 있다.
© Copyright SSH • 2025• Legal