원격 서버 운영 시, 지리적 제약 없이 언제 어디서든 서버에 접속해야 할 필요가 있습니다. 이를 위한 대표적인 기술로는 Telnet과 SSH가 있습니다. Telnet과 SSH는 원격으로 서버에 접속하여 관리하는 핵심 도구로 사용됩니다. Telnet은 일반적으로 TCP 프로토콜을 사용하며, SSH는 Telnet의 기능과 함께 데이터 전송 중에 암호화를 제공하여 보안성을 강화합니다.
1.Telnet
텔넷(Telnet)은 일반적으로 TCP(Transmission Control Protocol)를 사용하는 네트워크 프로토콜입니다. 텔넷은 원격 접속을 위해 주로 사용되며, 텍스트 기반의 터미널 에뮬레이션을 통해 원격 시스템에 접속하여 명령을 입력하고 결과를 확인할 수 있게 합니다.
- 우분투 실습
1) xinetd, telnetd 설치
apt-get install xinetd telnetd
xinetd: 여러 인터넷 서비스를 관리하는 프로그램
telnetd: telnet 서버를 실행하는 프로그램
2) /etc/xinetd.d/telnet에 다음 텍스트를 입력합니다.
service telnet
{
disable = no
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
}
- service telnet:
- "telnet"이라는 이름의 서비스를 설정
- disable = no:
- Telnet 서비스를 활성화하도록 설정. "no"는 비활성화를 의미하며, 만약 "yes"로 설정되면 Telnet 서비스 비활성화
- flags = REUSE:
- 이 속성은 소켓을 재사용하도록 설정
- socket_type = stream:
- Telnet 서비스의 소켓 유형을 정의."stream"은 연결 지향적인 스트림 소켓
- wait = no:
- 이 속성은 Telnet 서비스가 완료될 때까지 대기하지 않도록 설정. "no"로 설정하면 다중 접속을 허용
- user = root:
- Telnet 서비스를 실행할 사용자를 지정, 여기서는 "root" 사용자로 지정
- server = /usr/sbin/in.telnetd:
- 이 속성은 Telnet 서비스를 제공하는 실행 파일의 경로를 지정. "/usr/sbin/in.telnetd"는 Telnet 서비스를 실행하는 데 사용되는 실행 파일의 경로.
- log_on_failure += USERID:
- Telnet 서비스 로그인 실패 시에 USERID를 포함하여 로그를 기록하도록 설정(우분투는 " /var/log/auth.log"에 기록됨)
3) xinetd 재실행
수정사항을 반영하기 위해서 xinetd를 재실행 시킵니다.
systemctl restart xinetd
4) 포트 열기
다음 명령어로 telnet 포트를 오픈합니다. telnet은 일반적으로 23포트를 사용합니다.
ufw allow 23/tcp
5)클라이언트 접속 확인
원격 서버에 접속하기 위해서 telent 명령어를 이용하여 접속합니다.(루트 계정 접속은 일반적으로 막혀 있습니다.)
telnet [IP주소] [포트]
2. SSH
Telnet은 데이터 전송 중 탈취 우려로 인해 보안에 취약합니다. 이를 개선한 프로토콜이 SSH입니다. SSH는 데이터를 안전하게 암호화하여 전송하며, 원격으로 컴퓨터를 안전하게 제어하는 데 사용되는 프로토콜입니다. 주로 원격 서버에 안전한 로그인, 원격 명령 실행, 파일 전송 등에 활용됩니다.
1) SSH 기본 원리
실제로 SSH가 수행되는 과정을 보면, 중간에 버전,파라미터 설정, 사용자 인증 등의 스텝이 있지만 대략적인 원리는 위와 같습니다.
-참고
https://info.support.huawei.com/info-finder/encyclopedia/en/SSH.html
What Is SSH? How Does SSH Work? - Huawei
Secure Shell (SSH) is a security protocol that uses encryption and authentication mechanisms to implement secure remote access and other network services.
info.support.huawei.com
2) 우분투 실습
- 클라이언트 키페어 생성
윈도우에서는 puttygen를 이용하여 키페어를 만듭니다.
Save private key를 통해 클라이언트의 private key(비밀키)를 저장하고
"Public key for pasting into OpenSSH authorized_keys file:" 이 글의 아래에 있는 "ssh-rsa AA.." 이 부분이 public key(공개키)입니다. 이 내용을 서버 쪽에다 전달을 해야 하므로 복사합니다.(private key는 유출되면 안됩니다.)
- 서버에서 ssh설치 확인 및 진행
리눅스는 ssh서버가 기본적으로 설치되어 있지만 없을 경우 설치하고 실행합니다.
apt-get install openssh-server #ssh 서버 설치
systemctl restart ssh #ssh 서버 실행
systemctl status ssh #ssh 서버 실행 확인
리눅스에서 공개키는 /root/.ssh/authorized_keys에서 관리합니다. 복사해둔 공개키를 해당 파일에 붙혀 넣습니다.
vi /root/.ssh/authorized_keys
- 클라이언트에서 ssh 접속
윈도우 cmd창에서 다음 명령어를 통해 ssh접속을 할 수 있습니다.(v옵션은 ssh접속 디버깅용도)
ssh [사용자 계정]@[SSH서버 IP]
root계정의 비밀번호를 입력하면 접속이 됩니다.
- 추가 사항
root계정으로 접속할 때 root계정의 비밀번호를 입력하여 접속하였습니다. 이때 비밀번호 대신에 클라이언트의 private key를 이용하여 접속하게 할 수도 있습니다.
다음 파일에서
vi /etc/ssh/sshd_config
PasswordAuthentication을 no로 수정하여 비밀번호 대신에 클라이언트의 private key를 제시하도록 합니다.
ssh서버를 다시 실행시켜서 변경사항을 반영합니다.
systemctl restart ssh
키 형식에는 대표적으로 ".pem" 확장자와 ".ppk" 확장자가 있습니다. ".pem"는 리눅스 기반 시스템에서 일반적으로 사용되고 ".ppk"는 윈도우 환경(putty)에서 사용 됩니다. 아까 private key를 저장할 때 확장자명이 ".ppk"였으므로 이를 ".pem"으로 변환해서 SSH서버에 전달해주어야 합니다.(왜냐하면 SSH서버는 리눅스이기 때문입니다.)
puttygen 프로그맴에서 Conversions => Export OpenSSH key를 눌러서 ".pem" 확장자를 붙혀서 저장합니다.
ssh "i" 옵션에서 방금 저장했던 ".pem"파일의 경로를 써줍니다.
그러면 root계정의 비밀번호를 입력하지 않아도 접속이 가능합니다. SSH로 접속할 때는 이와 같이 비밀번호 대신 키 기반 인증을 사용하는 것이 안전합니다.
정리
- Telnet
- Telnet은 TCP 프로토콜을 사용하는 원격 접속을 위한 네트워크 프로토콜이다.
- 주로 텍스트 기반의 터미널 에뮬레이션을 통해 원격 시스템에 접속하여 명령을 입력하고 결과를 확인한다.
- Telnet은 보안상의 이유로 데이터 전송 중 탈취 우려가 있어 취약하다는 단점이 있다.
- SSH
- SSH는 Telnet의 취약성을 보완하기 위해 개발된 프로토콜로, 데이터를 안전하게 암호화하여 전송한다.
- 주로 원격 서버에 안전한 로그인, 원격 명령 실행, 파일 전송 등에 사용된다.
- SSH는 공개 키와 개인 키를 사용하여 안전한 키 기반 인증을 제공하며, 데이터를 암호화하여 전송함으로써 보안성을 강화한다.
'컴퓨터 > 운영체제' 카테고리의 다른 글
Ubuntu - 4. 하드디스크 마운트, RAID(Redundant Array of Independent Disks) (0) | 2023.12.10 |
---|---|
Ubuntu - 3.우분투(리눅스) 기본 사용법2 (0) | 2023.12.09 |
Ubuntu - 2. 우분투(리눅스) 기본 사용법1 (0) | 2023.12.07 |
Ubuntu - 1. 우분투 개요 (0) | 2023.12.04 |
운영체제 -프록시 서버 (0) | 2023.11.05 |