728x90

Linux Task (Ver. Ubuntu 20.04)

  1. adminkisec은 특수한 내부 계정으로 임시로 root의 권한으로 명령을 실행할 수 있는 권한을 갖는 계정이다.
  2. kisec2, kisec3의 계정은 내부자의 계정으로 kisec이라는 그룹으로 분류하여 관리한다.
  3. 내부자의 계정 생성 시(kisec4) 기본적으로 생성되는 파일 외에 tmp라는 디렉토리가 생성되도록 구성한다.
  4. 각 계정의 홈디렉토리는 각각의 계정만 파일을 생성할 수 있도록 구성하고 tmp라는 디렉토리는 내부자끼리는 공통으로 사용할 수 있는 공간으로 구분한다.
  5. /tmp에 내부자들끼리 읽을 수 있도록 readme.txt라는 파일을 생성하고 수정사항이 있는 경우 임시로 adminkisec의 권한을 받아서 수정할 수 있도록 구성한다.
  6. ssh 통신은 보안상 root는 접속이 불가하도록 구성하고 ssh로 로그인 시 보이는 시스템 정보는 안보이도록 구성한다.

1. 특수계정 설정

adminkisec@adminkisec:~$ sudo visudo /etc/sudoers

  • r--r----- 1 root root 755 2월 3 2020 sudoers
  • 현재 sudoers 파일은 440 권한을 가지고 있어 vi로 편집을 하려면 제한이 발생한다
  • chmod를 사용해 권한을 변경할 수 있으나 visudo 명령어를 사용해 편집을 진행한다
  • /etc/sudoers 파일에도 visudo 명령어를 통해 수정하기를 권고한다
#
# This file MUST be edited with the 'visudo' command as root. // visudo 사용이유
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap>

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL:ALL) ALL
adminkisec    ALL=(ALL:ALL)    NOPASSWD: ALL  // 특수권한을 사용할 사용자 계정을 추가 

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d
  • User Privilege specification (사용자 권한 규격) 에 adminkisec을 추가 특수계정을 설정한다
    • 하지만 일반계정에서 관리자 권한을 획득하는 경우 많은 보안적 이슈등이 발생할 수 있다
      가능하면 전체보단 필요부분만 설정하는 것이 안전하다

adminkisec@adminkisec:~$ ls -l /bin/ | grep su
...
-rwsr-xr-x 1 root root 67816 7월 21 2020 su
...

  • 4755 권한설정이 되어있다
  • 이것을 chmod 명령어를 사용해 chmod 4750 /bin/su 으로 설정한다
  • 이렇게 되면 소유자 other권한이 없으므로 root 또는 root 그룹만 접근이 가능해진다
adminkisec@adminkisec:~$ sudo chmod 4750 /bin/su
adminkisec@adminkisec:~$ ls -l /bin/ | grep su
...
-rwsr-x--- 1 root root       67816  7월 21  2020 su
...
  • other 권한을 제거
kisec2@adminkisec:~/Desktop$ sudo su
[sudo] password for kisec2: 
kisec2 is not in the sudoers file.  This incident will be reported.
  • 접속에 대한 시도를 리포트 하겠다는 내용과 함께 제한됨을 확인

2. 계정생성 및 그룹분류

계정생성은 adduser & useradd 명령어가 있다

래드햇 계열 (페도라, CentOS)에서는 useradd 와 adduser의 차이가 없다
adduser 명령어는 useradd에 대한 심볼릭 링크 파일로 존재하기 때문
useradd
계정을 생성할 때 -m 옵션을 사용 홈디렉토리도 함께 만들어줘야 한다
passwd 명령어로 비밀번호 또한 만들어야 한다
adduser
사용자 정보를 입력하는 과정까지 한번에 진행 된다

  • 둘다 custom 옵션들이 존재

2-1. 그룹용 kisec 계정 생성

adminkisec@adminkisec:~$ sudo groupadd kisec  // 그룹생성
adminkisec@adminkisec:~$ cat /etc/group | tail -3 // 생성 그룹확인
sambashare:x:132:adminkisec
systemd-coredump:x:999:
kisec:x:1001:

| tail -3 명령어를 사용 /etc/group의 글을 출력하고 밑에서 3번째 라인까지 보여줘라

adminkisec@adminkisec:~$ sudo useradd -e 2021-07-12 -m -g kisec -s /bin/bash kisec 
                    // 계정만료된 kisec 계정을 생성 kisec그룹에 필요한 설정들을 담게 한다
adminkisec@adminkisec:~/Desktop$ cat /etc/passwd | tail -3 // 계정 생성 확인
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
sshd:x:126:65534::/run/sshd:/usr/sbin/nologin
kisec:x:1001:1001::/home/kisec:/bin/bash
adminkisec@adminkisec:~/Desktop$ groups kisec // 그룹확인
kisec : kisec
  • -e 옵션 (계정만료일지정옵션)을 넣어 로그인 불가 계정생성
    • 관리의 용이성을 위해 kisec 그룹에 필요한 /etc/skel 내용을 담을 계정을 생성kisec 계정 존재하지 않음.Not listed 로 접근해 kisec 후 비번을 적어도 login 불가
    • Kisec 계정 없음
    • Not listed 로 접근 시도 후 password 입력 >> login 불가 확인

2-2. kisec 그룹 'tmp' 디렉토리 구성

adminkisec@adminkisec:~$ sudo mkdir -p /home/kisec/kisec_skel/tmp // -p 옵션사용
dminkisec@adminkisec:~$ ls -lR /home/kisec  // -lR 옵션 사용
/home/kisec:
total 4
drwxr-xr-x 3 root root 4096  7월 13 20:13 kisec_skel

/home/kisec/kisec_skel:
total 4
drwxr-xr-x 2 root root 4096  7월 13 20:13 tmp

/home/kisec/kisec_skel/tmp:
total 0
  • mkdir -p 명령어 사용 경로까지 디렉토리를 생성해 kisec_skel/tmp 까지 구성
  • ls -lR 명령어 사용 하위 디렉토리 까지 출력해서 구성 확인
adminkisec@adminkisec:~$ sudo cp /etc/skel/.* /home/kisec/kisec_skel/

adminkisec@adminkisec:~$ ls -al /home/kisec/kisec_skel/
total 24
drwxr-xr-x 3 root  root  4096  7월 13 20:23 .
drwxr-xr-x 3 kisec kisec 4096  7월 13 20:13 ..
-rw-r--r-- 1 root  root   220  7월 13 20:23 .bash_logout
-rw-r--r-- 1 root  root  3771  7월 13 20:23 .bashrc
-rw-r--r-- 1 root  root   807  7월 13 20:23 .profile
drwxr-xr-x 2 root  root  4096  7월 13 20:13 tmp
adminkisec@adminkisec:~$ ls -al /etc/skel/
total 28
drwxr-xr-x   2 root root  4096  2월 10 03:48 .
drwxr-xr-x 130 root root 12288  7월 13 20:18 ..
-rw-r--r--   1 root root   220  2월 25  2020 .bash_logout
-rw-r--r--   1 root root  3771  2월 25  2020 .bashrc
-rw-r--r--   1 root root   807  2월 25  2020 .profile
  • /etc/skel (계정생성시 제공되는 파일 및 디렉토리가 들어있음) 을 kisec 그룹을 분류 관리하기 위해 미리 생성해둔 /home/kisec/kisec_skel/ 에 복사해줌 이 후 kisec 그룹에 포함되는 계정들은 미리 준비한 'kisec_skel' 에서 제공받게 설정
adminkisec@adminkisec:~$ sudo useradd -m -g kisec -s /bin/bash -k /home/kisec/kisec_skel kisec2 // kisec2 계정생성 
adminkisec@adminkisec:~$ sudo useradd -m -g kisec -s /bin/bash -k /home/kisec/kisec_skel kisec3  // kisec3
adminkisec@adminkisec:~$ sudo useradd -m -s /bin/bash -k /etc/skel test
                                                                  // test 계정생성
adminkisec@adminkisec:~$ sudo passwd kisec2
New password: 
Retype new password: 
passwd: password updated successfully
adminkisec@adminkisec:~$ sudo passwd kisec3
New password: 
Retype new password: 
passwd: password updated successfully
                                                              // 계정 Password 설정
adminkisec@adminkisec:~$ cat /etc/passwd | tail -5
sshd:x:126:65534::/run/sshd:/usr/sbin/nologin
kisec:x:1001:1001::/home/kisec:/bin/bash
kisec2:x:1002:1001::/home/kisec2:/bin/bash
kisec3:x:1003:1001::/home/kisec3:/bin/bash
test:x:1004:1004::/home/test:/bin/bash                   // 계정생성 확인

adminkisec@adminkisec:~$ ls -lR /home/kisec2 /home/kisec3 /home/test 
/home/kisec2:
total 4
drwxr-xr-x 2 kisec2 kisec 4096  7월 13 20:13 tmp

/home/kisec2/tmp:
total 0

/home/kisec3:
total 4
drwxr-xr-x 2 kisec3 kisec 4096  7월 13 20:13 tmp

/home/kisec3/tmp:
total 0

/home/test:
total 0                                                  // tmp 폴더 생성 확인
  • useradd
    • -m : --create-home 홈디렉토리가 생성되게 함
    • -g : --gid GROUP 계정의 그룹을 지정함 (사전에 그룹이 존재해야 함)
    • -s : --shell SHELL 로그인 할 때 사용할 쉘 설정 (default값 /etc/default/useradd에 존재)
    • -k : --skel SKEL_DIR 다른 디렉토리를 skel 디렉토리로 지정하고 싶을 때 사용
  • 각 계정의 password를 설정해야 login이 가능하다
  • 계정 생성시 제공되는 파일 및 디렉토리를 kisec 그룹은 /home/kisec/kisec_skel 에서 참조하도록 진행
  • test 계정은 일반 /etc/skel 에서 참조

2-3. tmp 디렉토리 공통 사용공간 구성

adminkisec@adminkisec:~$ sudo chmod 770 /home/kisec2/tmp /home/kisec3/tmp
[sudo] password for adminkisec:
                                                                                   // 770 권한 설정
adminkisec@adminkisec:~$ ls -l /home/kisec2 /home/kisec3 | grep tmp
drwxrwx--- 2 kisec2 kisec 4096  7월 13 20:13 tmp
drwxrwx--- 2 kisec3 kisec 4096  7월 13 20:13 tmp   
                                                                                                                                       // 설정 확인
  • chmod 770 권한 설정 user : group 만 읽기, 쓰기(편집), 실행(접근) 가능하게 구성
kisec2@adminkisec:~$ touch check.txt /home/kisec3/ /home/kisec3/tmp/
touch: setting times of '/home/kisec3/': Permission denied
touch: setting times of '/home/kisec3/tmp/': Permission denied 
                                                              // 770 권한 설정 전
kisec2@adminkisec:~$ cd /home/kisec3/
kisec2@adminkisec:/home/kisec3$ touch check.txt
touch: cannot touch 'check.txt': Permission denied
kisec2@adminkisec:/home/kisec3$ cd ./tmp/
kisec2@adminkisec:/home/kisec3/tmp$ touch check.txt
kisec2@adminkisec:/home/kisec3/tmp$ ls -l
total 0
-rw-r--r-- 1 kisec2 kisec 0  7월 13 21:30 check.txt
                                                              // 770 권한 설정 후
  • 770 권한 설정 이전 755 이었기 때문에 w 권한의 부재로 편집 불가능
  • 770 권한을 줌으로 kisec 그룹이 아닌 사용자는 접근을 할 수 없고, kisec 그룹은 'tmp'디렉토리에 편집이 가능해 짐

3. /tmp 디렉토리 kisec그룹만 읽을 수 있는 readme.txt 파일 생성 및 수정사항 adminkisec 권한 받아 할 수 있게 구

adminkisec@adminkisec:/tmp$ touch readme.txt
adminkisec@adminkisec:/tmp$ ls -l ./ | grep readme
-rw-rw-r-- 1 adminkisec adminkisec    0  7월 13 21:46 readme.txt
                                              //tmp 디렉토리에 readme.txt 파일 생성
adminkisec@adminkisec:/tmp$ sudo chown .kisec readme.txt
[sudo] password for adminkisec:
adminkisec@adminkisec:/tmp$ sudo chmod 5750 readme.txt
                                    // readme.txt kisec 그룹소유로 변경 및 5750 권한 설정
adminkisec@adminkisec:/tmp$ ls -l ./ | grep readme
-rwsr-x--T 1 adminkisec kisec         0  7월 13 21:46 readme.txt
                                                                  // 설정사항 확인
  • chown .kisec && chmod 5750 readme.txt 설정
    • kisec 그룹만 읽을 수 있도록 chown 명령어를 사용 소유그룹 변경
    • other 권한을 제거 다른 계정에서 접근 할 수없도록 설정
    • setUID[4000] 권한 설정 수정을 하려면 소유자인 adminkisec의 권한을 받아야함
    • Sticky bit[1000] 특정 디렉토리를 자유롭게 사용할 수 있게 함
      • 단, 디렉토리 소유자나 파일 소유자 또는 슈퍼유저가 아닌 사용자들은 파일을 삭제, 변경 하지 못하게 만듬

kisec2계정으로 접근 > vi readme.txt 실행 > 'hi' 작성을 하면 'readinly file' 편집 불가능 Warring문구 >>  읽기만 가능

 

4. ssh 통신 설정

adminkisec@adminkisec:~$ vi /etc/ssh/sshd_config

  • ssh 설정 파일로 들어가서 설정
  • :set nu 설정을 통해 라인을 쉽게 볼수 있게 라인번호 설정

RootLogin 을 prohibit 하는 옵션을 '#' 을제거한뒤 설정한다

  • default로 설정되어 있어 '#' 만 제거해도 됨

  • PrintLastLog && Banner 또한 '#'을 제거해 보안상 마지막에 누가 접속했었는지를 확인할 수 있게 설정

adminkisec@adminkisec:~/Desktop$ ls -l /etc/update-motd.d/
total 44
-rwxr-xr-x 1 root root 1220 12월  5  2019 00-header
-rwxr-xr-x 1 root root 1157 12월  5  2019 10-help-text
-rwxr-xr-x 1 root root 5023  8월 17  2020 50-motd-news
-rwxr-xr-x 1 root root   96  6월 19  2020 85-fwupd
-rwxr-xr-x 1 root root  218 12월  8  2020 90-updates-available
-rwxr-xr-x 1 root root  374  7월 18  2020 91-release-upgrade
-rwxr-xr-x 1 root root  165  7월 22  2020 92-unattended-upgrades
-rwxr-xr-x 1 root root  129 12월  4  2020 95-hwe-eol
-rwxr-xr-x 1 root root  142 12월  4  2020 98-fsck-at-reboot
-rwxr-xr-x 1 root root  144 12월  4  2020 98-reboot-required  // 디렉토리 확인

adminkisec@adminkisec:~/Desktop$ rm /etc/update-motd.d/*  // 디렉토리 내 파일 삭제

adminkisec@adminkisec:~/Desktop$ ls -l /etc/update-motd.d/
total 0                                                      // 디렉토리 확인

kisec@kisec:~/Desktop$ sudo service ssh restart   // ssh 재시작
  • 원격 접속시 시스템에 정보 노출을 막기 위해 /etc/update-motd.d/ 하위 파일들 삭제
  • 재시작 함으로 설정이 반영 

Putty를 통한 원격접속

  • root 로 접근시 접근 거절됨
  • 계정으로 login 진행 시스템에 대한 정보 삭제
    • 하지만 Last login 정보는 나옴

// endTask

'System > Linux' 카테고리의 다른 글

리눅스 설치와 기본환경 구성  (0) 2021.07.14

+ Recent posts