Linux

CH.8 원격지 시스템 관리

낑깡꺙냥 2024. 3. 18. 01:19

8.1 텔넷 서버

텔넷은 오랫동안 전통적으로 사용되어 온 원격접속 방법이다.

더보기

원격접속: 멀리 있는 장소의 PC에서 내 리눅스 서버에 접속하는 행위이다. (케이블 대신 네트워크 망을 사용)

 

8.1.1 텔넷 서버 개요

텔넷은 프로토콜로 운영체제와 관계없다.

텔넷의 포트 번호는 23번이다.

더보기

서버-클라이언트의 특징

서버 프로그램이 작동할 때 그 서버에 접속하려면 클라이언트 프로그램이 필요하다.

(네이버 웹 서버 - 집에서 웹 클라이언트(웹 브라우저))

  • 서버에 접속하려면 클라이언트 프로그램이 반드시 필요하다.
  • 서버의 운영체제와 클라이언트의 운영체제가 같아야 하는 것은 아니다.
  • 각각의 서버 프로그램에 접속하려면 그에 맞는 별도의 클라이언트 프로그램이 필요하다.
 

8.1.2 텔넷 서버 구축

1. 텔넷 서버 설치

2. 텔넷 서비스 시작

3. 텔넷 전용 사용자 생성

4. 방화벽 설정(포트 열기)

5. 텔넷 서비스 상시 가동

6. 클라이언트에서 접속

 


연구 과제 1

Server B를 초기화하시오.

상호 통신이 가능하도록 IP를 브릿지 네트워킹을 이용하여 설정하시오.
팀원들과 상호 간 텔넷 서버에 접속할 수 있도록 텔넷 서버를 구축하고, 클라이언트를 통해 접속하시오.
접속할 클라이언트는 임의로 선택하시오.
서버 관리자는 상대방의 이름으로 된 접속 가능한 아이디를 생성하시오.
접속 완료 후 로그인이 완료된 상태에서 상대방 서버에 test_이니셜 이라는 디렉터리를 남기고 로그아웃하시오.

 

- 보너스 : 클라이언트 역시 Server B에서 해결하시오.

 

Settings에서 Network connection을 bridged 방식으로 변경

 

nmcli con mod ens33 ipv4.addr "" ipv4.dns "" ipv4.gateway "" ipv4.method auto connection.autoconnect yes //IP 자동 할당
nmcli con down ens33
nmcli con up ens33
nmcli con sh

rpm -qa | grep telnet  //telnet 확인

dnf -y install telnet-server  //서버 설치
dnf -y install telnet  //클라이언트 설치

systemctl start telnet.socket  //telnet 서비스 시작
systemctl status telnet.socket  //telnet 상태 확인
//systemctl --now enable telnet.socket //telnet 서비스를 시작하면서 재부팅시에도 상시 가동

firewall-cmd --add-service=telnet --permanent  //telnet 서비스를 허용하도록 방화벽 설정, permanent 옵션은 영구적 반영
// firewall-cmd --add-port=23/tcp --permanent  //port 번호로 개방
firewall-cmd --reload   //방화벽 설정 후 reload 필수

useradd teluser
passwd teluser

telnet IP주소  //클라이언트 프로그램으로 접속

NOTE

더보기

 

원격 접속 시에는 root를 사용하지 않는 것이 보안 상 좋다

설치 시의 패키지 이름과 제어 시의 서비스 이름이 다를 수 있으므로 주의
systemctl : CentOS 7 버전부터 변경된 서비스 제어 명령

IP주소: 컴퓨터의 주소
Port번호: 컴퓨터의 서비스 접근 구역 [0~1023번 포트 = Well-Known Port]

  • port 할당 파일: less /etc/services

 

8.2 OpenSSH 서버

telnet과 동일하지만 보안이 강화됐다.
 

8.2.1 OpenSSH 서버 개요

텔넷은 서버와 클라이언트 사이에 데이터를 전송할 때 암호화를 하지 않아 해킹 위험에 노출되어 있다. 
OpenSSH는 telnet과 거의 동일하지만, 데이터를 암호화해서 전송한다는 차이점이 있다.
 

8.2.2 OpenSSH 서버 구축

1. sshd 서버 확인
2. 방화벽 설정
3. 리눅스 or 윈도우 클라이언트로 접속

연구 과제 2

Server B를 초기화 한 후, 팀원 간 상호 텔넷 서버 접속을 할 수 있도록 구축하고, 연결을 확인하시오. (PW없이)
rpm -qa | grep openssh  //server B에 서버와 클라이언트 설치 확인

systemctl status sshd  //sshd 상태 확인

firewall-cmd --list-all  //방화벽 확인


//클라이언트에서//
ssh-keygen  //키 생성
ls ~/.ssh   //키 확인
ssh-copy-id root@원격지IP   //키 전송
ssh root@원격지IP   //원격지 접속

NOTE

더보기

보안상 원격접속시 root 로그인은 막고 sudo 권한을 받은 일반사용자와 키를 교환하여 SSH 원격접속하는 것이 이상적이다.

서로 다른 네트워크에서 키를 전송할 경우 1대1로 전송됨(=1:1로만 연결됨, root로 전달할 경우 제한이 덜해짐(?))

전달받은 공개키는 원격지에서는 authorized_keys라는 이름으로 변경되어 저장

키는 총 2개(보내는 키(공개키), 가지고 있는 키(비밀키))

user@blizzard.com
사용자@도메인

 

연구과제 3

Server B를 초기화한 후 작업하시오.
팀 원간 상호 키 교환을 통한 접속을 할 수 있도록 하시오. 단, 다음과 같이 계정을 연결하시오.
본인의 서버(집이라고 가정)
이니셜_ssh이라는 이름으로 자신의 계정을 생성, 이후 해당 계정이 모두 비밀번호 없이 sudo 권한을 사용할 수 있도록 root에서 설정
출발지는 자신의 이니셜_ssh 계정으로 상대방 서버의 내 이름으로 된 이니셜_ssh 계정으로 키를 전송
이후 root 원격 로그인 및 비밀번호 접속을 막는 보안 조치를 취하여 키로만 SSH가 접속되도록 하시오.

//설정은 연구과제 2에서 이어짐
//원격지
useradd sshuser
passwd sshuser
visudo //111행에 sshuser ALL=(ALL) NOPASSWD: ALL , 일반 사용자(sshuser) sudo 권한 부여
systemctl restart sshd

//클라이언트
useradd csy_ssh
passwd csy_ssh

su - csy_ssh  //csy_ssh 접속

ssh-keygen
ls -a ~/.ssh
ssh-copy-id sshuser@IP주소
ssh sshuser@IP주소

//원격지
cat ~/.ssh/authorized_keys 
vi /etc/ssh/sshd_config  //43행 PermitRootLogin no, 70행 PasswordAuthentication no
//root 보안 설정, password 입력 설정(password 입력을 원천적으로 막기 때문에 원격접속을 할 수 없음)
systemctl restart sshd

 

NOTE

  • /etc 는 전반적인 설정파일
  • vi 행 번호 붙이기 :set nu
  • vi /etc/sudoers로 파일을 직접 수정하는 것이 아닌 visudo 명령어로 수정
  • visudo -> 101행에 sshuser ALL=(ALL)  ALL을 추가할 경우, sudo사용시 password 입력 필요

 

8.3 XRDP 서버

최근 추세에 따라 X 윈도 환경에서 사용되는 유틸리티나 명령이 많으므로 X 윈도 환경 자체를 원격지에서 사용할 수 있게 세팅할 필요가 있다.

 

8.3.1 XRDP 서버 개요

XRDP 서버란 그래픽 모드로 원격 관리를 사용할 수 있게 도와주는 서버 프로그램이다.

XRDP의 경우Windows의 '원격 데스크톱 연결' 프로그램을 사용해 편리하게 그래픽 환경으로 리눅스를 접할 수 있다는 장점이 있지만 텔넷과 비교했을 때 속도가 느리다는 단점이 있다.

 

8.3.2 XRDP 서버 구축

1. XRDP 서버 설치

2. 서비스 시작

3, 방화벽 설정

4. 원격 데스크톱에서 접속

 

연구 과제 4

Server A를 초기화 한 후 작업하시오.
윈도우 호스트 OS에서 XRDP로 상대방의 Server A에 원격 접속하시오.
이후 상대방의 해당 서버 내부에서 설치 디스크를 통해 dnf 명령이 작동할 수 있도록 구성하시오.
단, 설치 디스크가 마운트되는 경로는 /media/mycdrom 디렉터리로 하시오.
이후 dnf -y install mc help2man mariadb 명령어를 통해 작동을 확인하시오. (XRDP 포트번호: 3389)

 

dnf -y install epel-release
dnf -y install xrdp
systemctl --now enable xrdp
firewall-config

//원격 프로그램 접속
//rocky에게 sudo 권한 부여 or rocky로 로그인 후 su 

mkdir /media/mycdrom  //마운트할 디렉터리 생성
umount /dev/sda0  //기존 마운트 해제
mount /dev/sda0 /media/mycdrom  
mount | tail -1  //마운트 정보 확인

cd /etc/yum.repos.d/
mkdir temp
mv *.repo temp
vi test.repo

dnf -y install mc help2man mariadb
 

vi test.repo

 

 

지금까지 구축한 3가지 원격 접속 서버를 비교해 정리하면 다음 표와 같다.

  텔넷 서버 SSH 서버 XRDP 서버
속도 빠름 빠름 약간 느림
그래픽 지원 X X O
보안 약함 강함 보통
사용 가능 명령 텍스트 모드의 명령 텍스트 모드의 명령 제한 없음
클라이언트 프로그램 대부분의 운영체제에서 기본 제공 리눅스에서 기본 제공
Windows에는 별도 설치 필요
Windows에서 기본 제공