리눅스

aws pem 키를 잘 사용하는 방법은?
-> 한 PC마다 1개의 키를 관리

EC2 연결 방법

  • ec2 인스턴스 연결: 웹에서 연결하는 방식
  • session manager
    백도어, ec2를 모니터링하기 위한 에이전트, ssm-agent로 접속하는 것. 기본적으로는 접속할 수 없다. role을 통해서 추가적으로 허용하는 것. 권장되지 않는다.
  • ssh client: pem은 개인키. 노출된 키를 compromised-key라고 한다.

다중 사용자

윈도우는 여러 명이 한 계정에 접속할 수 없다.
리눅스는 여러 명이 한 계정에 접속할 수 있다.

사용자

whoami -> ubuntu(현재 사용자)
sudo whoami -> root

사용자 만들기

adduser -> 오로지 root만 만들 수 있다.

sudo adduser user1으로 생성 후, 다시 user1으로 접속하려면(만약 비밀번호를 설정하고 싶지 않다면 --disabled-password)

내 맥북 터미널에서 ssh user1@public ip 으로 접근하면 된다. 하지만 안될 것이다. 왜?

id/pw 로그인이 비활성화 되어있다. 절대로 실무에서 하면 안되지만
vi /etc/ssh/sshd_config 에서 수정하여 활성화할 수 있다.

password authentication 을 yes로 하면 된다.

(만약 수정을 한다면 sudo systemctl restart sshd를 해야 적용된다)

활성화하여 접속했으면 user1@{ip}로 확인할 수 있다.
만약 이 유저로 sudo 명령어를 사용하면

위 그림처럼 password를 요구한다. 실패한다면 This incident will be reported.에서 알려줬듯이 비인가 접근을 로그에 기록한다. 어디서 확인하냐? /var/log/auth.log에 남는다.

그렇다면 어떻게 접속해야할까?


멘토님이 알려주시는 방법은?

키 기반으로 인증

여기서 chmod 600 authorized_keys는 단순 텍스트 파일이기 때문에 execute를 줄 필요가 없다. 600임에도 owner가 쓰고 읽을 수 있다.

우선 멘토링에서 인증 과정은 다음과 같다.

  • ubuntu 계정으로 user1 id를 sudo로 만듬
  • ubuntu에서 id/pw로 접근할 수 있도록 설정을 변경함
  • user1와 설정한 password로 접근한다 (i option없이 접근하여 키 없이 하는 거일걸?)
  • 로컬환경의 ~/.ssh에 있는 ssh public 키를 user1 ~/.ssh/authorization_keys에 추가하면 된다.
  • 이제 키로 접근할 수 있다.
  • 위까지가 앞에서 진행했던 내용이고 사실은 ubuntu계정으로 /home/user1에 접근해서 .ssh 폴더를 만들고 공개키를 등록하면 된다.(공개키는 user1의 개인키로 생성된 것으로 받아야겠지?)
  • .ssh 폴더를 ubuntu로 만들었으니 소유자를 변경하자 sudo chown user1:user1 .ssh && sudo chown user1:user1 .ssh/authorized_keys 혹은 sudo chown -R user1:user1 .ssh

id command

지금 사용자의 그룹을 확인할 수 있다.
전체적으로 보려면 cat /etc/group을 보면 된다.

번외편

cat /etc/passwd에 계정 정보를 확인할 수 있다.
crackjack을 통해서 cat /etc/shadow에 접근하면 hash된 비밀번호의 원래 문자열을 확인할 수 있다.

파일이 만들어 지는 기본 속성

기본값 rw-rw-rw-

umask: 내가 원하는 기본값을 갖도록 할 수 있음. 기본값에서 허락하지 않는 권한을 masking하는 것
0002 -> (이상한놈 + read + write + execute)

변경하려면 umask 0007 처럼 하면 된다.

폴더의 기본 권한

기본값 rwxrwxrwx

권한 변경

chmod u+r -> 소유자의 읽기 권한 추가
chmod g+x -> 그룹의 실행 권한 추가
chmod o+rw -> other의 읽기와 쓰기 권한 추가

사용자 권한 부여

usermod -a -G sudo user1

a option append(기존의 권한을 유지한채로 권한 추가)
G option 그룹권한 부여

기본적으로 user의 권한은 login 시점에 부여된다. 권한 변경을 반영하기 위해서는 재로그인해야한다.

또 다른 점으로 user1에 sudo 권한을 줬지만 여전히 sudo를 사용해도 password를 묻는다. 무슨 차이일까?

음. 보니깐 이 password는 sudo에 관한 password(그니깐 root계정의)가 아니라 본 계정의 password를 묻는 거였다. 근데 --disable로 password를 설정하지 않았다면 sudo를 사용할 수 없을까? 아니다.

위 그림처럼 수정하면 더이상 비밀번호를 묻지 않는다.

또 다른 질문. 그럼 왜 우분투 계정은 패스워드를 묻지 않을까?

sudo cat /etc/sudoers.d/90-cloud-init-users에 보면 알 수 있다.

사용자 권한 회수

sudo deluser user1 sudo

번외

yes no

위 그림처럼 리눅스에서 Yes or no를 물어볼 때가 있음. 대문자가 빈값(엔터)에 대한 기본값임.

read vs execute in directory

read만 있으면 뭐가 있는지는 알 수 있는데 접근(access)는 할 수 없다. 반대의 경우는 들어갈 수는 있는데 뭐가 있는지는 알 수 없다.

'컴퓨터과학' 카테고리의 다른 글

OpenSSL을 사용해서 localhost와 https로 통신하자  (0) 2023.11.29
[운영체제] 개요  (0) 2023.10.25
OIDC, OpenID Connect 누구냐 넌  (0) 2023.07.20
OAuth 동작 원리  (0) 2023.07.07
OAuth, 간단하게 알아보자  (0) 2023.07.07