일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- MySQL
- goblin 3번
- 1819 (HY000):
- Union SQL Injection
- No module named ‘requests’
- 가상머신 os
- docker compose
- XAVIS
- los.rubiya.kr
- Lord of SQL Injection
- Lord of SQLinjection
- btmp
- M2
- blind SQLi
- LOS 5번
- ubuntu
- ModuleNotFoundError: No module named ‘requests’
- Python requests 설치
- mocOS
- SQLi wargame
- Error Based SQL Injection
- 2002(HY000)
- utmp
- 우분투
- SQL i
- str_replace함수
- sql injection
- UTM
- sqli
- Kail Linux
- Today
- Total
klaus
[KDT-DAY_14]Linux (feat. 사용자 권한, 그룹, 정보) 본문
0. 들어가기
- 홈디렉토리를 옮기는 방법
--적용되지 않는다.
touch /houch /home/choii/choii.txt && mkdir /home/choii/CHOII
ls /home/choii
chmod -m choii -d /tmp/choii
1. 리눅스 권한(su, sudo)
====CENTOS====
[+] su(Switch User)
- 현재 계정(일반유저)에서 로그아웃하지 않고 다른 계정으로 전환하는 명령어 입니다.
[+] sudo(SuperUser DO)
[옵션]
-c : 쉘을 실행하지 않고, 주어진 명령만을 수행합니다.
-s : 지정된 셀로 로그인합니다.
-, -l : 지정한 사용자의 환경 변수를 적용하여 로그인합니다.
su -c 'cat /etc/shadow'
sudo cat /etc/shadow
-일시적으로 5분간 루투 권한을 얻을 수 있다.(?????)
> nano /etc/sudoers에서 아래와 같이 타임스템프를 2분으로도 설정할 수 있다.
- 패스워드 없이 모든 권한을 사용할 수있음 (위험)
[+] 그룹 권한 (%wheel으로 내장 그룹)
- centos에서는 wheel은 관리자 역할을 대행할 수 있는 그룹
- ubuntu
[실습] tori에게 wheel 권한
> sudo usermod -G wheel -a tori
> grep wheel /etc/group ==
====ubuntu====
- 설치시 root 사용자/PW를 지정하기 때문에 일반 사용자에서 sudo su명령을 통해 root로 접근하여 권한 습득
==> 최초 사용자의 경우 ubuntu는 이미 /etc/sudoers 파일에 작성
- centos와 다른점은 /etc/sudoers에서의 그룹명이 %sudo가 권한 그룹
- ubuntu가 sudo명령을 사용할 수 있는 이유는 sudo 그룹에 속해있기 때문이다.
2. PAM (Pluggable Authentication Modules)
- 리눅스 시스템에서 사용하는 '인증 모듈(Pluggable Authentication Modules)'로써 라이브러리 통합 관리 폴더
- PAM은 /etc/pam.d파일 내용의 모듈별 인증관리하고 있다.
즉, 필요한 공유라이브러리의 묶음을 제공하여 PAM을 사용하는 응용프로그램을 재컴파일없이 인증 방법을 변경 가능
PAM에 있는 설정 파일은 기존 설정파일들 보다 먼저 적용된다.
예) etc/ssh/sshd.conf 파일보다 /etc/pam.d가 먼저 적용
시스템의 환경 설정을 효율적으로 할 수있다.(== 한곳에서 집중적으로 관리)
[실습]
- (원본) head -20 /etc/ssh/sshd_config | cat -n
- (PAM) cat -n /etc/pamd.sshd
단, 원본파일(/etc/ssh/sshd_config의 96번째줄)에서 설정 부분이 UsePAM yes설정으로 되어 있어야 한다.
- pam.d/ssh 파일을 열었을 때, required "필수적"이라는 의미
만약, 예를 들어 pam.d/su에서 pam_wheel.so use_uid의 주석을 지워주면 wheel의 그룹에 속한 사용자만 su명령을 사용할 수 있다.
tori같은 경우 wheel의 그룹이기 때문에 su를 사용할 수 있고, asd같은 경우 su명령어를 사용할 수 없다.
그룹 확인 grep wheel /etc/group
만약, asd 사용자가 su 권한이 없는 상태에서 사용을 한다면 su를 사용할 수 없다. (사용 불가)
[+] sudo권한
sudo: 현재 계정에서 다른 계정의 권한만 빌림
abc 그룹이 centos:wheel이고 사용가능한 명령은cat/kill
2. 리눅스 그룹 관리 명령어
- 리눅스의 경우 사용자(Owner), 그룹(Group), 기타 사용자(Other)로 구분하여 권한 을 분리하여 사용
- 새로운 사용자를 만들면 보통 사용자와 같은 이름으로 그룹으로 설정되며, 사용자를 별도의 그룹으로 묶어서 관리하기 위해서는 그룹 관련 명령어을 확인해야합니다.
[+] group명령어
> ABC그룹만들기groupadd ABC
> ABC그룹삭제 groupdel ABC
> ABC그룹 확인 grep ABC /etc/group
==> 패스워드 groupmod -p ABC ABC
> 그룹 속성변경 – groupmod과 chgrp
[+]chgrp 명령어
centos파일을 만들고 그룹을 root로 변경한다.
touch centos.txt && chgrp root centos.txt
[+]finger, id, groups, getent 명령어
- 사용자와 그룹등의 속성을 확인하는 명령어
- finger의 경우 centos에서 따로 설치하여 사용 (yum -y install finger)
w
who
users
빈줄하고 주석을 확인하는 명령어
grep ^[^#] 파일위치
[+]getent 명령어
특정 시스템 데이터베이스의 NSS (Name Service Switch) 라이브러리에서 항목을 가져 오는 명령 줄 유틸리티
user Manager
사용자 관리 모드를 사용할 수도 있다.
- yum -y install system-config-users
- system-config-users
2. 서비스 관련 명령어 정리
프로세스 확인 : ps, tstree, top 와 pidof, pgrep, pmap
특정 작업의 프로세스를 확인 : fuser
프로세스 종료 명령어 : kill, killall와 pkill,skill
프로세서의 우선순위를 지정하는 nice와 renice
메모리 관련 명령어 free와 sync
커널 정보를 확인하는 명령어 : uname
백그라운드 작업 확인 : &, bg,fg,%그리고 jobs, disown
시스템 사용자 정보 관련 : who, w, users, last, lastb, whoami, finger,id등이 있다.
[+]ps 명령어
- ps -ef | grep ssh 를 했을 때
root 1174 1 0 10:39 ? 00:00:00 /usr/sbin/sshd -D
[USER] [PID][PPID] [size] [time] [tty] [%cpu:%mem:start command]
PPID를 확인할 때,는 pstree -p [PPID]를 통해 어느 위치에서 실행되는지 확인할 수있다.
PPID(Parent Process ID)는 부모 프로세스의 PID를 의미
ps - aux | grep sshh
ps -ef |grep pts*
외부에서 접속한 PID를 확인하면, kill -9 PID를 통해 접속을 끊을 수있다.
w
- 외부 접속확인가능
pmap $$ 메모리 주소 정보
top 명령어
- 시스템 자원 정보를 실시간 확인
옵션
k를 누르면kill의미
r의 경우 nice를 설정 (nice는 실행의 우선순위!!! ==> nice 범위 : -20~20이다.
x의 우선순위를 높이면
시스템의 정보를 볼 때
l(TOP), m, t, c 등 키를 입력하면 정보를 숨기거나 보이거나 할 수 있다.
fuser
fuser를 사용해서
kill 명령어
kill
-1(up) PID-19 (stop)PID -9(kill)PID를 주로사용한다.
nice와 renice
- 프로세서의 우선순위 표시와 변경이다.
- 범위는 -20~20(19)로 설정되어 있으며, -20이 가장 처음
skill
skill -STOP [PID]
skill - CONT [PID]
skill -KILL [PID]
skill
skill -9 -t pts/2로 ubuntu에서 연결을 종료시킬 수 있다.
-> 우분투에서는 아무런 키입력이 되지 않는다.
free / sync명령어
- 캐시에 저장된 쓸데 없는 메모리를 반환해서 시스템의 안정성을 높인다.
※ 주기적으로 사용하려면 crond를 사용하여 루틴 작성을 한다.
crontab -e 정책을 하나 만들어주고
해당 파일이 실행되도록 작성한다.
실행될 nano /home/centos/mem_free.sh 파일을 만들어 준다.
[+] uname
- 커널 정보를 확인하는 명령어
- r 간단하게 -a 자세하게
[+] &, bg, fg, %, 그리고 jobs, disown
- 백그라운드 작업을 보이는 명령어
- 명령어 & : 해당 명령어 작업을 백그라운드로 실행시킴
- % : (최근) 작업번호를 보임
- bg : 포그라운드 작업을 백그라운드로 보냄
- fg %job_id : 해당 백그라운드 작업(job_id)을 포그라운드로 불러 올림
- jobs : 모든 백그라운드 작업을 보임(여기서 jobs –p 하면 모든 백그라운드 잡의 PID를 보이고, jobs –r 하면 백그라운드 잡만 보이며, jobs –s 하면 일시 정지된(Suspend) 잡을 보이고, jobs 2 하면 2번 잡만 보인다)
- notify %job_num : 해당 백그라운드 작업(job_num)이 끝나면 알림
- []+ / []- : []+는 fg나 bg 명령어에 의해 현재 실행되고 있는 디폴트 잡이며,
- []-는 현재 디폴트 잡이 중지되었을 때 새로 실행 될 잡 등의 옵션이 있다.
- more /root/inital-setup-ks.cfg 를 사용하면 파일의 내용을 볼 수 있고 뒤에 & 를 추가하면 백그라운드로 불러온다.
[+] who, w, users, last, lastb, whoami와 finger, id 명령어
- 시스템 사용자에 관한 정보
- wtmp는 /var/log/wtmp에 있고 last 명령어의 결과를 저장하는데 로그기록으로 시간별 이벤트와 로그인한 호스트의 IP와 시간, 그리고 리부팅 날짜 등이 들어 있다. 여러 로그인 정보를 보인다. ->utmp의 history 기능
- btmp는 /var/log/btmp에 있으며 lastb 명령어의 결과를 저장하는데 실패한 로그인 정보를 보인다.
- utmp /var/run/utmp에 있고 w, who, finger 명령어의 결과를 저장한다. 성공한 로 그인 정보를 보인다.
cat /var/run/utmp 명령을 통해 확인하면, 글자가 깨지는 것을 확인할 수 있다. 이럴 때에는strings 사용하여 제대로 확인
- strings /var/run/utmp
[+] 유저 정보 쉘 스크립트 작성
- vi logs.sh 스크립트 작성
- chomd +x logs.sh 실행 권한 주기
- bash logs.sh 실행하기
- tori에 대한 정보를 확인하기
[+]데몬
- 서버 : 서비스를 제공하는 머신
- 클라이언트 : 서비스를 요청하는 머신
Linux 서버는 여러 서비스를 실행하고 있으므로 클라이언트 머신에서 다양한 서버 서비스에 접속해서 작업할 수 있다. 서버는 서비스(Web, FTP, VNC, Database, Proxy, Mail, Name, DNS, DHCP, ...)를 데몬(daemon) 형태로 실행시켜둔다.
보통 다음 단계로 서비스를 수행한다. 예를 들어서 SSHD 데몬이라면
① (필요하면) 해당 프로그램을 설치하고
② 해당 서비스의 구성 설정파일(/etc/ssh/sshd_conf)이 있으면 상황에 맞게 변경해주고
③ system-config-firewall 해서 방화벽에서 해당 서비스 포트 22를 열어두고
=>CentOS 7에서는 firewall-config
④ setenforce 0 해서 SELinux 설정을 permissive로 해두고, getenforce로 확인하고,
⑤ service sshd (re)start식으로 해당 서비스 데몬을 (재)실행시킨 뒤
=>CentOS 7에서는 systermctl start sshd ; systemctl enable sshd
⑥ netstat –nltp |grep 22 해서 해당 서비스 포트가 듣고 있는지 보고
⑦ (필요하면) chkconfig sshd --level 35 on식으로 실행 레벨을 정해주고
⑧ 이제 클라이언트들을 해당 서비스로 접속시켜서 서비스를 이용하게 한다.
서비스 실행은 service network restart/start/stop/status 식인데
CentOS 7에서는 systemctl start network나
리커시에서는 /etc/(rc.d/)init.d/network start식으로 해주어도 된다.
[+]리소스 제한하기(자원 관리)
cat /etc/security/limits.conf
'수업 > KDT' 카테고리의 다른 글
[KDT-DAY_12] Linux H/W (feat. RAID, LVM, zfs ) (0) | 2023.01.16 |
---|---|
[KDT-DAY_15] Linux (feat. 데몬, HW명령어) (2) | 2023.01.15 |
[KDT-DAY_13] Linux (feat. 편집기, 권한) (1) | 2023.01.11 |
[KDT-DAY_12] Linux (feat. 명령어) (0) | 2023.01.10 |
[KDT-DAY_11] Linux 명령어 (0) | 2023.01.09 |