티스토리 뷰

반응형

안녕하세요 요즘, SKT 해킹 사건으로 리눅스 서버 보안이 큰 화두를 가지고 있습니다.

 

그래서, 오늘은 리눅스보안에 대해 말씀을 드리도록 하겠습니다.

 

리눅스 서버 보안 하면 여러 가지가 있는데, 저는 외부에서 들어올 수 있는 관문들을 하나씩 잡아가는 게 중요하다고 생각합니다.

자, 외부에서 서버에 접속 하기 위해서는 뭘 하면 될까요?

 

네, 터미널(Terminal) 이죠

 

이제는, 텔넷은 사용을 안하지만, 10년 전만 해도 콘솔은 텔넷으로 접속을 많이 했는데요

 

현재는 텔넷을 사용안하고 SSH로 거의 100% 넘어갔습니다.

가장 중요한건 암호화되는지? 아닌지 차이가 큽니다.

 

텔넷 (Telnet)

텔넷은 **텔레타이프 네트워크(TELetype NETwork)**의 약자로, TCP/IP 네트워크를 통해 원격 호스트에 접속하여 명령행 인터페이스를 사용할 수 있도록 하는 오래된 프로토콜입니다.

  • 개발 초기 (1969년): 텔넷은 현대 인터넷의 전신인 ARPANET에서 원격 컴퓨터에 접근하기 위한 목적으로 개발되었습니다. 초기에는 공식적인 명세 없이 임시적인(ad hoc) 프로토콜로 사용되었습니다.
  • 표준화 (1970년대): 1970년대에 걸쳐 많은 연구와 RFC(Request for Comments)를 통해 텔넷 프로토콜이 체계화되었습니다. 최종적으로 RFC 854RFC 855가 발표되면서 인터넷 표준 8번으로 공식화되었습니다.
  • 초기 사용: 텔넷은 초기 인터넷 환경에서 원격 서버의 명령행 인터페이스에 접근하는 주요 수단으로 널리 사용되었습니다. 학술 기관이나 연구 기관에서 메인프레임이나 슈퍼컴퓨터에 원격으로 접속하는 데 활용되었습니다.
  • 보안 취약점 부각: 인터넷이 대중화되면서 텔넷의 심각한 보안 취약점이 드러났습니다. 텔넷은 통신 내용을 **평문(plain text)**으로 전송하기 때문에, 네트워크를 감청하는 사람이 있다면 중요한 정보(아이디, 비밀번호 등)를 쉽게 가로챌 수 있었습니다.
  • 사용 감소 및 대체: 이러한 보안 문제로 인해, 공개된 네트워크(인터넷) 환경에서 텔넷의 사용은 급격히 감소하고 **SSH(Secure Shell)**와 같은 보안 프로토콜로 대체되었습니다.
  • 현대적 사용: 현재 텔넷은 보안이 중요하지 않은 레거시 장비와의 통신이나, 간단한 네트워크 연결 테스트 등에 제한적으로 사용됩니다. 일부 산업 및 과학 장비는 여전히 텔넷만을 지원하기도 합니다. 아마추어 무선 통신에서도 공공 정보 제공을 위해 사용되는 경우가 있습니다.
SSH (Secure Shell)

SSH는 텔넷의 보안 취약점을 해결하고 안전한 원격 접속을 제공하기 위해 개발된 암호화 네트워크 프로토콜입니다.

  • 개발 배경 (1995년): 1995년, 핀란드 헬싱키 공과대학교의 연구원이었던 Tatu Ylönen은 대학 네트워크에서 발생한 비밀번호 스니핑 공격을 계기로 SSH의 초기 버전을 설계했습니다. SSH의 목표는 강력한 인증과 기밀성을 제공하지 못했던 기존의 rlogin, 텔넷, FTP, rsh 프로토콜을 대체하는 것이었습니다.
  • SSH Communications Security 설립: 1995년 12월, Ylönen은 SSH의 상업화 및 개발을 위해 SSH Communications Security를 설립했습니다. 초기 SSH 소프트웨어는 GNU libgmp와 같은 자유 소프트웨어의 일부를 사용했지만, 이후 SSH Communications Security에서 릴리스한 버전은 점차 독점적인 소프트웨어로 발전했습니다.
  • SSH-2 표준화 (2006년): "secsh"라는 워킹 그룹에서 논의된 후, 보안성과 새로운 기능이 향상된 SSH-2 프로토콜이 2006년에 표준으로 채택되었습니다. SSH-2는 SSH-1과 호환되지 않으며, Diffie-Hellman 키 교환과 같은 새로운 키 교환 메커니즘, MD5 또는 SHA-1과 같은 메시지 인증 코드를 통한 향상된 데이터 무결성 검사, AES와 같은 더 강력한 암호화 방식을 도입했습니다. 또한, 단일 SSH 연결을 통해 여러 개의 셸 세션을 실행하는 기능도 추가되었습니다.
  • SSH의 확산: SSH-2의 우수성과 보안성 덕분에 SSH는 빠르게 널리 보급되었으며, 현재 인터넷을 구동하는 대부분의 서버에 설치되어 사용되고 있습니다. 인터넷 인프라 관리에 필수적인 도구가 되었습니다.
  • 현대적 사용: SSH는 서버 관리자, 개발자 등이 원격 서버에 안전하게 접속하여 명령을 실행하고 파일을 전송하며, 터널링과 같은 다양한 보안 기능을 제공하는 데 널리 사용됩니다.

요약하자면, 텔넷은 초기 인터넷 시대의 중요한 원격 접속 프로토콜이었지만 보안상의 문제로 인해 현대에는 거의 사용되지 않고 보안성이 뛰어난 SSH로 완전히 대체되었습니다. SSH는 현재까지도 안전한 원격 서버 관리를 위한 핵심 기술로 자리매김하고 있습니다.

 

🛵 요약하면

특징 텔넷(Telnet) SSH(Secure Shell)
보안 취약함 - 모든 통신 내용을 평문으로 전송 안전함 - 모든 통신 내용을 암호화하여 전송
암호화 지원 안 함 지원 (다양한 암호화 알고리즘 사용)
인증 방식 주로 아이디/비밀번호 기반 인증 (보안에 취약) 공개 키 인증, 비밀번호 인증 등 다양한 안전한 방식 지원
데이터 무결성 보장 안 함 메시지 인증 코드를 통해 데이터 무결성 보장
포트 번호 기본 포트 23번 기본 포트 22번
주요 용도 과거 원격 접속에 주로 사용, 현재는 거의 사용 안 함 (레거시 장비 관리, 간단한 연결 테스트 등에 제한적 사용) 안전한 원격 서버 관리, 파일 전송 (SFTP), 포트 포Forwarding (터널링) 등 다양한 용도로 사용
안전성 낮음 - 보안에 매우 취약 높음 - 안전한 원격 접속을 위한 표준 프로토콜
사용 편의성 단순함 설정이 다소 복잡할 수 있지만, 보안 이점을 고려하면 감수할 만함
터널링 지원 안 함 포트 포Forwarding (터널링) 기능을 통해 안전한 통신 지원

 

기본 지식은 여기까지로 하고

자, ssh보안을 어떻게 하면 좋을지? 해커들이 들어오는 관문을 어떻게 하면 되는지에 대해 알아봅시다.

 

🚀 기본 포트 변경

- SSH는 기본 포트인 22번 포트를 사용합니다. 이는 알려진 포트 이기 때문에 포트스캐닝으로 유추가 가능합니다.

이에, 불필요한 접근 시도가 발생할 수밖에 없지요. 이를 해결하기 위해 포트 번호를 변경하는 방법이 있습니다.

 

* ssh 포트 변경 방법

/etc/ssh/sshd_config 
#Port 22 / 주석 해제 및 원하는 포트로 변경
저장

 

* 다음으로 ssh 재시작을 해야 합니다. ssh데몬 재시작하는 방법

sudo systemctl restart sshd
또는
sudo systemctl restart ssh
더보기

sudo : 관리자 권한으로 실행

systemctl : systemd를 관리하는 명령어

restart : 시스템 지시작

sshd : ssh 데몬(서버)의 서비스 이름

으로 진행하시면 됩니다.

 

🚅 Root 로그인 금지 

PermitRootLogin no 설정을 통해 root 사용자의 직접적인 SSH 로그인을 막고 , 일반 사용자로 로그인 후 sudo 명령어를 사용하도록 합니다.

결국에는 권한 설정을 통해 마구잡이로 명령어를 막겠다는 의미입니다.

 

🚍 공개키 인증 방식 사용

비밀번호 대신 SSH 키 쌍 (개인키, 공개키)을 사용하여 더욱 안전한 인증 방식을 적용합니다

PubkeyAuthentication yes

# 사용자 계정에 공개키 등록 방법
~/ .ssh/authorized_keys

 

🚡 강력한 암호화 알고리즘 사용

취약한 암호알고리즘은 비활성화하고 암호 비도가 높은 안전한 알고리즘만 허용

/etc/ssh/sshd_config 

Ciphers MACs 조정

 

다만, PUTTY에서 암호 비도가 안맞으면 다음과 같은 오류 메시지가 발생 할 수 있습니다.

 

No matching MAC found

No matching cipher found

 

이 메시지가 발생 할 경우 Putty와 서버 간 공통으로 지원하는 암호화 또는 MAC 알고리즘이 없다는 의미입니다.

 

2가지 케이스가 있겠죠

Case#1 Putty 버전이 낮아서 암호비도가 높은 ssh가 지원이 안될 경우

🛫 이때에는 Putty 버전 업데이트를 통해 해결됩니다.

Case#2 반대의 경우, ssh의 암호 비도가 낮은 경우 Putty에서 접속이 안 되는 경우

🛬 Putty에서도 암호 비도가 낮은 거에 대해서는 주기적으로 삭제를 하는데요. 이경우에는 Putty의 구버전을 통해 접속이 가능합니다

다만, 보안 사고 등으로 위 암호비도 강화를 권고합니다.

 

TMI

Putty와 유사한 툴로는 Xshell 이 있습니다. 상업용 SSH 클라이언트로 강력한 기능과 안정성을 제공해서 기업에서 많이 사용하는데 개인은 무료인 것도 있습니다.

 

오늘은 ssh에 대해 알아봤습니다.

다음 시간에는 또 다른 주제로 다가와 보겠습니다

 

반응형