[Linux] 개념 이해하기 - 3

BBeumSeok·2024년 7월 29일
0

Linux

목록 보기
4/8
post-thumbnail

systemd

  • 시스템 전반에 대한 처리를 위해서 시작되는 프로세스

  • 서비스를 구현할 때 이 systemd로 변경해서 사용하기 시작했다

  1. 제공 기능
  • 시스템 부팅 프로세스

  • Service Management

  • cgroup을 이용한 프로세스 자원 관리

  • 서비스 프로세스 관리
    흔히 말하는 Daemon 프로그램들을 위한 로깅, 자원 할당, 부팅 관리 등 systemd로
    모두 할 수 있다

  1. 주요 명령어(systemd를 위한 주요 명령어들)
  • systemctl(*)

  • systemd -anlyze

  • systemd -cgls

  • systemd -cgtop

  • systemd -loginctl

systemctl

  1. 현재 작동하고 있는 서비스들 목록 확인
    (관리자 권한으로 실행)

  2. 모든 서비스들을 보고싶은 경우(현재 동작 여부와 상관없이 모두 불러옴)

  • systemctl list-unit-files

  1. 서비스 활성화, 비활성화, 시작, 정지, 재시작
ex) telnet

# systemctl enable telnet.socket	=> 서비스 등록

# systemctl disable telnet.socket	=> 서비스 비활성화

# systemctl stop telnet.socket		=> 서비스 중지(정지)

# systemctl start telnet.socket		=> 서비스 시작

# systemctl restart telnet.socket	=> 서비스 재시작

  1. 서비스가 활성화 또는 실행중인지 확인
# systemctl status telnet.socket	=> 상태 정보 확인

# systemctl is-enabled telnet.socket	=> enable 활성화 여부 확인

# systemctl is-active telnet.socket	=> 실행 중인지 확인

Telnet Service

  • Application 계층에서 원격 시스템에 접속하여 관리하는 서비스

  • 서버와 클라이언트 사이에 문자 혹은 줄 단위의 정보를 송/수신

  • NVT(Network Virtual Terminal)을 지원함

  • TCP 23을 사용하고 있음 (=Port 23번)

  • 데이터 전송 시 암호화 지원 안함(미지원)

Telnet 설치

  1. 설치 전 먼저 설치가 되어있는지 확인한다
  • dnf[또는 yum] list installed telnet

  • rpm -qd | grep telnet

  • 둘 중 한 가지 방법으로 사용

  1. 설치 명령어
  • dnf[yum] install telnet-server -y (-y는 설치 여부를 yes로 처리한다는 의미이다)
    telnet으로 검색된 패키지는 클라이언트 프로그램

  1. 서비스 데몬 등록 및 시작
  • 등록
    systemctl enable telnet.socket

  • 서비스 시작(재시작)
    systemctl start[restart] telnet.socket

실행중인 서비스(Telnet 연결)

  1. 로컬 쉘 새로 열기

  2. AWS - EC2 - Public IPv4 주소 확인

  3. 아래로 내려가면 보안 탭에 인바운드 규칙을 추가하여 현재 내 아이피에서
    접근이 가능하도록 방화벽 추가 설정을 한다

  4. 로컬 쉘에서 telnet "Public IPv4 Address(퍼블릭 IP 주소)" 입력 후 엔터

  5. 연결 확인

Telnet 삭제

  1. dnf[yum] remove telnet-server 명령어로 삭제

  2. 접근 시 수정했던 인바운드 규칙을 삭제해준다 !!

SSH(Secure Shell) - 포트 번호 22번

  • Application 계층에서 원격 시스템에 접속하여 관리하는 서비스

  • Telnet과 다르게 데이터를 암호화해서 전송한다

  • 포트 번호 22번 사용

  • 인증서와 암호를 통해서 인증처리를 진행

SSH 세팅하기

  1. 설치 확인 및 설치
  • dnf[yum] list installed sshd

또는

  • rpm -qa | grep sshd

  • 설치
    dnf[yum] install sshd

  • 서비스 등록 및 시작
    systemctl enable sshd[.service] (.service는 생략 가능)
    systemctl start[restart] sshd

  1. 방화벽 설정
  • /etc/ssh/sshd_config
    ssh_host_ed25519_key => Private Key
    ssh_host_ed25519_key.pub => pub는 Public을 의미함

ssh = Client
sshd = Server

  • vim /etc/ssh/sshd_config(sshd 데몬 설정 파일) 입력 후 내용을 확인

  • #Port 22
    서비스 포트 번호

  • #ListenAddress
    특정 IP로만 접근을 허용

  • #LoginGraceTime
    로그인 시 자연스러운 화면 전환을 위한 시간 설정

  • #AuthorizedKeysFile
    공개 키로 인증을 허용

  • PasswordAuthentication no
    SSH를 통해 서버 접속 시 비밀번호를 사용하지 않음

  • PermitEmptyPasswword no
    암호가 없는 계정에 대해서는 허용하지 않음

  • Subsystem sftp /usr/libexec/openssh/sftp-server
    활성화 시 FTP 서버의 하나인 것처럼 동작할 수 있게 함

SSH 인증서를 이용한 로그온(Linux)

  • 공개키 기반 인증(RSA 암호화 방식 - 비대칭형 암호화)

  • 공개키, 개인키(private)를 이용하여 암호화 통신

  1. 대칭형 암호화
  • 암호화 통신하는 두 장비간 동일한 암호화 키를 가지고 통신하는 방식
    주로 일반적인 데이터 통신에서 사용된다

  1. 대칭형 암호화 특징
  • 암호화 시 데이터의 사이즈 변화가 없다

  • 가장 오래된 형태의 암호화 방식

  • 통신 데이터에 최적화 되어있다

  • 중요 포인트(issue) => 어떻게 암호화 키를 전달할 것인가?

  1. 비대칭형 암호화
  • 암호화 통신 시 공개키와 복호화 키를 사용하여 전달하는 방식

  • 공개키는 암호화 통신 시 상대방에게 전달하는 키

  • 개인키 또는 비밀키로 통신 시 전달하지 않는 키

  1. 비대칭형 암호화 특징
  • 암호화 통신 시에 키값을 데이터에 같이 전달
    (데이터의 사이즈 변화가 존재함)

  • 데이터 통신용으로 사용하지 않고, 인증에 많이 사용됨

  • 대칭형 암호화 통신을 위한 키 교환에 사용됨

  • 중요 포인트(issue) => 암호화 통신을 위해 전달받은 공개키가 정말 상대방이 맞는가? (PKI 도입)

  • SSH로 접근 시 ID, PW를 입력하여 인증하는 방식이 아닌, 인증서를 기반으로
    암호화 통신, 공개키 기반 인증은 ID, PW(입력x)하지 않고 접근

RSA 키 생성하기

  1. key 생성
  • ssh -keygen -t rsa
[testuser1@ip-172-31-9-66 ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/testuser1/.ssh/id_rsa): 
Created directory '/home/testuser1/.ssh'.
Enter passphrase (empty for no passphrase): (엔터)
Enter same passphrase again: (엔터)
Your identification has been saved in /home/testuser1/.ssh/id_rsa
Your public key has been saved in /home/testuser1/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:3HG6DbWAG2aPitRWLxD8Z65Gf04pbR09VBBQMR6BFBw testuser1@ip-172-31-9-66.ap-northeast-2.compute.internal
The key's randomart image is:
+---[RSA 3072]----+
|     ..    oE*O=.|
|      .. .  o. o.|
|      ..* o o .. |
|     . *.Bo* ... |
|    . o S+* . ...|
|   . o ....= o ..|
|    . .. oo * .  |
|        o .+.    |
|       .   o.    |
+----[SHA256]-----+
  • 접속의 주체가 되는 곳에서 비밀 키를 가지고 있어야 한다.

  1. .ssh 폴더로 이동 후 키 생성 확인
  • cd ~/.ssh

  • ls -l

total 8
-rw-------. 1 testuser1 testuser1 2655 Jul 24 12:43 id_rsa
-rw-r--r--. 1 testuser1 testuser1  610 Jul 24 12:43 id_rsa.pub
(Host PC에서 접속)

  1. id_rsa.pub 파일을 authorized_keys로 이름 변경 (오타 주의 !!!)
  • authorized_keys가 아닌 다른 이름으로 변경할 경우 설정에서도 같이 변경해주어야 함
    (이전 vim 편집기로 /etc/ssh/sshd_config 안에 AuthorizedKetyFile 설정을 의미)

  • mv id_rsa.pub authorized_keys
    (authorized_keys는 SSH에서 인증을 위해 사용할 키를 지정(공개 키)

  • 비대칭형 암호화를 사용하기 때문에 접속 상대방은 개인키를 이용하여 접속

  1. Host PC(windows 10)에 WinSCP를 이용하여 ip_rsa(개인 키)를 전달

  2. Xshell을 이용하여 인증 방식을 public key로 변환한 후에 전달 받은 id_rsa 키를
    사용하여 연결

상속 관련 설정

  • 키 생성 후 상속 관련 설정하기
  1. VS Code 원격 탐색기 - SSH 설정 - C:\Users.ssh\config - IdentityFile을
    해당 키 경로로 설정

  2. 키 파일 우클릭 -> 속성 -> 보안 탭 -> 고급 -> 상속 제거 -> 변경-고급 -> 지금 찾기
    -> 검색 결과 중 주체를 찾아 설정 -> 저장

  3. 다시 SSH로 돌아가서 비밀번호를 입력하지 않고도 접근이 가능하게 바뀌었는지 확인

JAVA 설치 후 환경변수 설정

  • sudo yum install java-17-amazon-corretto

  • echo $JAVA_HOME

  • java -version

  • which java 또는 whereis java

  • ls -l /usr/bin/java

  • ls -l /etc/alternatives/java

  • ls -l /usr/lib/jvm/java-17-amazon-corretto.x86_64/bin/java

  • source .bashrc

  • echo $JAVA_HOME
    => /usr/lib/jvm/java-17-amazon-corretto.x86_64가 출력되면 성공 !!

profile
Do your best every moment

0개의 댓글