리눅스
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 |