[클라우드 With리눅스/사용자 관리자 계정 및 사용자 인증]

SooYeon Yeon·2022년 8월 18일

클라우드 With리눅스

목록 보기
10/39

리눅스 실습 시나리오

우리는 centos7이라는 인스턴스를 생성했다. 주소는 211.183.3.201이고, ec2-user가 만들어져 있으며 해당 계정은 wheel 그룹에 포함되어 있어 sudo를 이용하면 필요할 때마다 루트의 권한을 불러와서 실행할 수 있다.

public key는 인스턴스에 위치하고 있으며 private key는 윈도우에서 보관하며 접속할 계획이다.

  1. IP 점검

    • ip addr show
    [root@srv7 0720]# ip addr show
    ...
    2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:0c:29:55:f8:2b brd ff:ff:ff:ff:ff:ff
        inet 211.183.3.201/24 brd 211.183.3.255 scope global noprefixroute ens32
           valid_lft forever preferred_lft forever
        inet6 fe80::d632:e7f5:b06e:f94f/64 scope link noprefixroute 
           valid_lft forever preferred_lft forever
    ...

    IP 주소가 정상적임에도 외부와 통신이 되지 않는다면

    • ifdown ens32로 비활성화 후 ifup ens32로 활성화 (인터페이스 비활성화→활성화)
    • VMWare 문제일 수 있으므로 본체 컴퓨터 네트워크 및 인터넷 설정 열기>이더넷>어뎁터옵션변경에 VMnet10을 우클릭>사용안함>다시 사용함 (VMnet10 비활성화→활성화)
    • cat /etc/sysconfig/network-scripts/ifcfg-ens32 로 파일의 내용을 직접 열어서 IP/게이트웨이/DNS 들이 정확히 잘 들어갔는 지 확인가능
  2. SSH 동작 상태 확인하기

    • systemctl restart sshd
    • systemctl status sshd
    • 정상적으로 Acive로 나오는 지 확인
    [root@srv7 0720]# systemctl restart sshd
    [root@srv7 0720]# systemctl status sshd
    ● sshd.service - OpenSSH server daemon
       Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2022-07-20 10:35:42 KST; 8s ago
         Docs: man:sshd(8)
               man:sshd_config(5)
     Main PID: 4333 (sshd)
        Tasks: 1
       CGroup: /system.slice/sshd.service
               └─4333 /usr/sbin/sshd -D
    
    Jul 20 10:35:42 srv7 systemd[1]: Starting OpenSSH server daemon...
    Jul 20 10:35:42 srv7 sshd[4333]: Server listening on 0.0.0.0 port 22.
    Jul 20 10:35:42 srv7 sshd[4333]: Server listening on :: port 22.
    Jul 20 10:35:42 srv7 systemd[1]: Started OpenSSH server daemon.
  3. SSH를 위한 설정파일 확인하기

    [root@srv7 0720]# gedit /etc/ssh/sshd_config

    17번 행 : Port 22

    • 22번 포트에서 기본적으로 제공하는데, 보안 등의 이유로 다른 포트로 변경하고싶다면 주석을 제거하고 포트번호를 바꾸면 됨

    38번 행 : PermitRootLogin yes

    • yes로 되어있을 떄, 원격지에서 root로 원격 접속 가능

    43번 행 : PubkeyAuthentication yes

    • public key인증으로 하겠다는 뜻

    → 47번째 AuthorizedKeysFile은 .ssh/authorized_keys로 할 것

    65번 행 : PasswordAuthentication no

    • 패스워드 인증은 하지 않겠다는 뜻
  4. 계정 생성

    # 계정 생성 & 비밀번호 설정
    [root@srv7 ~]# useradd ec2-user
    [root@srv7 ~]# passwd ec2-user
    Changing password for user ec2-user.
    New password: 
    BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
    Retype new password: 
    passwd: all authentication tokens updated successfully.
    • 해당 계정으로 로그인
    [root@srv7 ~]# su ec2-user
    [ec2-user@srv7 root]$ cd
    [ec2-user@srv7 ~]$ pwd
    /home/ec2-user
    [ec2-user@srv7 ~]$
  5. key-pair 만들기

    • 키 생성 후 숨겨져있는 .ssh 파일에 pem(개인키), pem.pub(공개키)가 만들어져 있는 것을 확인 가능
    [ec2-user@srv7 ~]$ ssh-keygen -q -f ~/.ssh/0720.pem -N ""
    [ec2-user@srv7 ~]$ ls -a
    .  ..  .bash_logout  .bash_profile  .bashrc  .cache  .config  .mozilla  .ssh
    [ec2-user@srv7 ~]$ ls .ssh
    0720.pem  0720.pem.pub
    • public key (0720.pem.pub) 는 authorized_keys 파일에 넣기
    [ec2-user@srv7 ~]$ cd .ssh
    [ec2-user@srv7 .ssh]$ cat 0720.pem.pub > authorized_keys
    [ec2-user@srv7 .ssh]$ ll
    total 12
    -rw-------. 1 ec2-user ec2-user 1675 Jul 20 10:46 0720.pem
    -rw-r--r--. 1 ec2-user ec2-user  395 Jul 20 10:46 0720.pem.pub
    -rw-rw-r--. 1 ec2-user ec2-user  395 Jul 20 10:47 authorized_keys
    
    # authorized_keys에 public key가 잘 들어가 있는 지 확인
    [ec2-user@srv7 .ssh]$ head -1 authorized_keys 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDW6H97F6dv3wjE5gXSOA/aXG2NknHnIUb8d7+eB6adufxWGBS5ACIsakR+vaL/Ukye0C+WvGzjfsfzP4DAt5sEwXy23fYGeP7+uYfwiTI1CDZsgc1KMRC2Hc0A+7vwCv55uS7Yh+Vl7/eUs/rF2IHlK3BBhLWwZbJD6lYVfFSK/KwOUJ5wcBeqRyjjbzCE5JcEkClgb8tYlOuwd3wMB05jIj35tC2SvNThbkCReppRM8Ow4IBcnhmsrMne32FFIiFmBZ4Eo3PbPfntEz0DgQCOWYewigG0sSuJ2UZnHLWxA8Z56Px+D+Kxlp1MwrOGByBON1Tkuoy9KRc0ikrIS9S3 ec2-user@srv7
    • private key (0720.pem) 를 내용을 복사하여 본체 윈도우 바탕화면 메모장(0720.pem)에 붙여넣고 저장
    [ec2-user@srv7 .ssh]$ cat 0720.pem
  1. ec2-user 권한 변경

    • ec2-user는 현재 인스턴스 내에서 sudo를 이용하여 root의 권한으로 명령 실행할 수 있어야 한다. (=해당 사용자를 wheel 그룹에 넣어야 함)
    • exit로 빠져나가 root로 접속
    [root@srv7 ~]# gedit /etc/sudoers

    wheel 그룹 사용자들은 루트 권한 가능하나, sudo 명령시 패스워드를 요구받는다.

    107번 행 # %wheel ALL=(ALL) ALL

    110번 행 %wheel ALL=(ALL) NOPASSWD: ALL

    으로 107은 주석처리하고, 110번은 주석을 해제하여 wheel그룹에 추가된 사람들은 password를 묻지 않게 함

  • ec2-user을 기존 그룹은 유지하면서 새로운 wheel그룹에 추가하도록 함
  • wheel은 sudo 명령을 이용하여 루트의 권한으로 명령 실행이 가능하되, 패스워드는 요구하지 않는다.
[root@srv7 ~]# usermod -aG wheel ec2-user
  • permission 변경
[root@srv7 ~]# cd /home/ec2-user/.ssh
[root@srv7 .ssh]# ls -l
total 12
-rw-------. 1 ec2-user ec2-user 1675 Jul 20 10:46 0720.pem
-rw-r--r--. 1 ec2-user ec2-user  395 Jul 20 10:46 0720.pem.pub
-rw-rw-r--. 1 ec2-user ec2-user  395 Jul 20 10:47 authorized_keys
[root@srv7 .ssh]# chmod 644 authorized_keys
  1. putty를 이용한 원격 접속

    • putty generator 키기

    • File > load private key> save private key

    • putty 열기

    • SSH > Kex > 디피헬만 그룹14를 가장 위로, 그다음을 1로

    • AUTH > Private key file for authentication Browse.. > ppk파일 불러오기

    • Session > SSH > IP(211.183.3.201) 치고 ssh로 연결

    • ec2-user에서 비밀번호 없이 접속할 수 있게 됨

    login as: ec2-user
    ec2-user@211.183.3.201's password:
    Last failed login: Wed Jul 20 11:20:11 KST 2022 from myhome on ssh:notty
    There were 2 failed login attempts since the last successful login.
    Last login: Wed Jul 20 10:44:43 2022
    =========================
            HELLO ALL
    =========================
    [ec2-user@srv7 ~]$ sudo systemctl restart mariadb
    [ec2-user@srv7 ~]$ sudo systemctl stop firewalld

    SSH 연결과정

    1. 서버 인증
      • 클라이언트가 서버를 인증
    2. 사용자 인증
      • 서버가 정상적인 사용자인지 여부를 확인

DC에서

데이터 센터 관점에서는

  1. 템플릿 이미지를 준비한다

  2. 템플릿 이미지 수정하기

    • public key 인증 불가 시 활성화
    • 사용할 계정을 미리 만들어두기
  3. key-pair 만들기

    • 이미지(템플릿)에서 만들어야 하는게 아니고, bastion host(관리용서버)에서 만든다.
  4. public key를 기본이미지에 추가적으로 부착

    virt-customize -a test.qcow2 —upload mykey.pem.pub:/root/.ssh/authorized_keys
  1. private key는 사용자에게 보여주거나 다운로드해 준다. 이후 개인키는 삭제한다.

  2. 템플릿 이미지를 인스턴스로 실행한다.

  3. 생성된 인스턴스의 정보는 DB에 저장한다.

    • 인스턴스의 IP정보
    • 인스턴스의 CPU 정보
    • 인스턴스의 RAM 정보
    • 인스턴스의 HOST[ZONE] 정보
  4. 사용자는 관리페이지에서 IP를 확인하고 접속

    • 명령어로 접속
    ssh -i mykey.pem IP주소

    또는

    • ppk 파일을 putty와 연결해 접속

0개의 댓글