리눅스 원격접속
SSH
1. 텔넷과 기능이 거의 같으며 다만 보안이 추가된 버전
1) 서버와 클라이언트 사이의 데이터 송수신에서 암호화가 없어서 보안이 취약한 것 2) OPENSSH를 사용하면 데이터 송수신 작업에서 암호화 되는 과정이 추가되어 통신이 된다.
2. 핵심은 ‘KEY’
- 클라이언트와 서버는 각각의 키를 보유 -> 이 키를 이용해 연결 상대를 인증하고 데이터 통신
- key는 다음 두가지 방식
- 비대칭 키 (공개키, 개인키) : 접속 시도 시, 클라이언트와 서버가 서로를 알아보기 위해 사용
- 대칭키 : 접속이 허용된 상태에서 정보를 안전하게 주고 받기 위해 사
- SSH 프로토콜은 클라이언트 - 서버 모델로 동작하며 대칭키 방식, 비대칭키 방식, 해시 알고리즘
을 사용하여 인증 및 암호화 수행
- 대칭키 방식 : 클라이언트 - 서버 간 전체 연결을 암호화에 사용
- 비대칭키 방식은 키 교환, 클라이언트 인증, 서버 인증에 사용
- 해시 알고리즘은 패킷의 무결성을 확인하기 위해 사용
3. 해보자
-
apt-get -y install openssh-server OpenSSH 설치
-
SSH 서비스 가동
- systemctl restart ssh
- systemctl status ssh
- systemctl enable ssh ( SSH 상시가동 )
- 방화벽 설정 (22번 포트 열어줌)
- ufw allow 22/tcp
- 리눅스 클라이언트에서 접속.
- 윈도우 클라이언트에서 접속
Telnet, FTP
1. 보안 이슈로 인해서 거의 쓰지 않으나 가끔 있으니 알아두자
2. PUTTY
- 텔넷과 거의 같다. 정확하게 말하면 텔넷의 기능을 쓸 수 있고, GUI가 있다.
- 연결방식을 텔넷으로 바꾸면 된다.
3. 해보자
-
apt-get install xinetd telnetd ->텔넷 설치
-
/etc/xinetd.d/telnet 파일을 편집한다.
- 사용자 생성 (teluser)
- adduser teluser
- 텔넷 서비스 가동
- systemctl restart xinetd
- systemctl status xinetd
- 포트 설정 후 서버에서 telnet 테스트
- ufw allow 23/tcp (telnet은 23번 포트 이용)
- 윈도우 클라이언트에서 접속해보기. (Putty 이용)
Telnet VS SSH
텔넷 대 SSH: 비교 개요
Telnet과 SSH는 몇 가지 유사점이 있지만 둘 사이에는 많은 차이점이 있습니다. 가장 중요한 점은 SSH가 Telnet보다 훨씬 더 안전하다는 것입니다. 이로 인해 일상적인 사용에서 거의 완전히 Telnet을 대체하게 되었습니다.
Telnet과 SSH는 서로 다른 기본 포트를 사용합니다. Telnet은 일반 텍스트로만 데이터를 전송할 수 있지만 SSH는 양방향 트래픽을 암호화할 수 있습니다.
특징 | 텔넷 | SSH |
---|---|---|
작업 | TCP 포트 23을 사용하며 근거리 통신망에서 가장 잘 작동합니다. | 기본적으로 TCP 포트 22를 사용합니다. 포트 번호를 쉽게 변경할 수 있습니다. |
보안 | 많은 취약점이 있는 SSH보다 덜 안전합니다. 데이터 암호화가 어렵습니다. | 매우 안전합니다. |
입증 | 인증 메커니즘이 없습니다. | 공개 키 암호화를 사용합니다 . |
데이터 형식 | 데이터는 일반 텍스트로 전송됩니다. | 데이터는 보안 채널을 통해 암호화된 형식으로 전송됩니다. |
운영체제 | 리눅스와 윈도우 . | 널리 사용되는 모든 운영 체제. |
대역폭 사용량 | 낮은. | 높은. |
포트포워딩
포트?
-
논리적인 접속 장소 :
-
HTTP와 HTTPS의 경우 지정된 포트 번호가 있는데 이런 것들을 “잘 알려진 포트들” “Well-known port”이라고도 합니다.
-
브라우저에 도메인 주소를 입력하고 엔터를 치면, 도메인에 해당하는 IP와 HTTP 프로토콜을 함께 서버에 요청합니다.
DNS서버는 그 도메인에 해당하는 IP(컴퓨터)를 찾고, IP에 도달하면 서버는 어떤 포트로 접속 요청을했는지 확인합니다. HTML 문서를 주고받기 위한 규약이 바로 HTTP 프로토콜이며, 80번 포트입니다. 80번 포트로 접속이 되면 비로소 서버는 HTML 문서를 클라이언트(브라우저)에 전송합니다.
사용 목적에 따라 지정된 논리적 주소인 포트 번호로 연결된 두 개의 컴퓨터 사이에서 네트워크를 이용한 통신 시,
발신 컴퓨터에서 출발한 패킷(사용자 데이터)은 TCP/IP 의 각 계층을 거치면서 최종 목적지 주소(IP)를 가지고 있는 컴퓨터에 도착, 패킷을 수신한 컴퓨터는 패킷 안에 있는 데이터만 응용 프로그램에 전달합니다.
1
-
잘 알려진 포트들
21 : FTP : File Transfer Protocal : 파일 전송 프로토콜 : 서버와 클라이언트 사이의 파일 전송을 하기위한 프로토콜
22 : SSH : Secure Shell : 시큐어 셀 : 다른 사용자가 세션을 엿듣지 못하도록 세션을 감싸 보안 및 안정성을 높임. 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 프로토콜. Linux 계열에서 사용함.
23 : TELNET : 텔넷 :
25 : SMTP : Simple Mail Transfer Protocol : 전자우편을 보낼 때 이용하는 프로토콜
53 : DNS : Domain Name System : 영문/한글 주소를 네트워크에서 찾아갈 수 있는 IP로 변환해 준다.
Web
61 : SNMP : Simple Network Management Protocol
80 : HTTP : HyperText Transfer Protocao
110 : POP3 : Post Office Protocol version 3
115 : SFTP
143 : IMAP : Internet Messaging Access Protocal
443 : HTTPS(SSL) : HyperText Transfer Protocol over Secure Socket Layer : 월드와이드웹 통신 프로토콜인 HTTP의 보안이 강화된 버전
3389 : RDP : 윈도우 PC 원격데스크탑 연결
그럼 포트포워딩은?
- 포트 포워딩은 외부 아이피 : 포트번호와 내부 아이피 : 포트번호를 연결해주는 기능이다.
- 별도의 설정 없이 외부 아이피가 접속을 시도할 때, 내부에 어떤 프로세스(서비스) 또는 기기와 연결할 지 알 수 없기 때문에 접근이 불가능하다.
- 그래서 특정 프로세스(서비스) 또는 기기에 접근하기 위해 포트 포워딩을 통해
외부 아이피 : 특정 포트
로 접속하면내부 아이피 : 특정 포트
로 맵핑해준다.