728x90
Linux Task (Ver. Ubuntu 20.04)
- adminkisec은 특수한 내부 계정으로 임시로 root의 권한으로 명령을 실행할 수 있는 권한을 갖는 계정이다.
- kisec2, kisec3의 계정은 내부자의 계정으로 kisec이라는 그룹으로 분류하여 관리한다.
- 내부자의 계정 생성 시(kisec4) 기본적으로 생성되는 파일 외에 tmp라는 디렉토리가 생성되도록 구성한다.
- 각 계정의 홈디렉토리는 각각의 계정만 파일을 생성할 수 있도록 구성하고 tmp라는 디렉토리는 내부자끼리는 공통으로 사용할 수 있는 공간으로 구분한다.
- /tmp에 내부자들끼리 읽을 수 있도록 readme.txt라는 파일을 생성하고 수정사항이 있는 경우 임시로 adminkisec의 권한을 받아서 수정할 수 있도록 구성한다.
- 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 불가
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] 특정 디렉토리를 자유롭게 사용할 수 있게 함
- 단, 디렉토리 소유자나 파일 소유자 또는 슈퍼유저가 아닌 사용자들은 파일을 삭제, 변경 하지 못하게 만듬
4. ssh 통신 설정
adminkisec@adminkisec:~$ vi /etc/ssh/sshd_config
- ssh 설정 파일로 들어가서 설정
- :set nu 설정을 통해 라인을 쉽게 볼수 있게 라인번호 설정
- 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/ 하위 파일들 삭제
- 재시작 함으로 설정이 반영
- root 로 접근시 접근 거절됨
- 계정으로 login 진행 시스템에 대한 정보 삭제
- 하지만 Last login 정보는 나옴
// endTask
'System > Linux' 카테고리의 다른 글
리눅스 설치와 기본환경 구성 (0) | 2021.07.14 |
---|