[root@server1 bin]# crontab -e
crontab: installing new crontab
[root@server1 bin]# crontab -l
14 09 * * * /bin/bash /root/srvmon.sh
35 16 * * * /usr/bin/find / -type f \( -perm -04000 -o -perm -02000 \)
-exec ls -l {} \; | /bin/mail -s "SUID/SGID LIST" root
[root@server1 bin]# ps -ef | grep srvmon
root 4640 4638 0 09:14 ? 00:00:00 /bin/bash /root/srvmon.sh
root 5990 3989 0 09:16 pts/0 00:00:00 grep --color=auto srvmon
[root@server1 bin]# crontab -e
crontab: installing new crontab
[root@server1 bin]# crontab -l
17 09 * * * /root/bin/srvmon.sh > /root/LABs/srvmon_`date +\%Y\%m\%d.log`
[root@server1 bin]# tail -f /var/log/cron
Sep 5 09:14:28 server1 crontab[4915]: (root) BEGIN EDIT (root)
Sep 5 09:16:04 server1 crontab[4915]: (root) REPLACE (root)
Sep 5 09:16:04 server1 crontab[4915]: (root) END EDIT (root)
Sep 5 09:16:10 server1 crontab[5939]: (root) LIST (root)
dateSep 5 09:17:01 server1 crond[1097]: (root) RELOAD (/var/spool/cron/root)
Sep 5 09:17:01 server1 CROND[6426]: (root) CMD (/root/bin/srvmon.sh >
/root/LABs/srvmon_`date +%Y%m%d.log`)
^C
You have new mail in /var/spool/mail/root
[root@server1 bin]# cd ../LABs/
[root@server1 LABs]# ls
d1 index.html kubernetes.txt linux.txt srvmon_20220905.log
fw_disable.sh kakao_1to5 link_dir perm time.sh
fw_enable.sh kakao_services linux1 services
(※ 요일은 0~7로 설정 가능하며 일요일이 0, 7 사용)
01 13 * * 6 /etc/init.d/syslog restart
0 12 1 1-10/2 * /usr/bin/echo 'It's system check time.'
0 12 * * 1,3,5 /usr/bin/rm -r /var/log/*
20 14 * * * /usr/sbin/clock -w && 20 14 * * * /usr/sbin/shutdown -r now
*/01 5-7(5,6,7) 3-5(3,4,5) * * /bin/bash /root/LABs/time.sh
15 7 * * 5 /bin/bash /root/LABs/time.sh
#!/bin/bash
set $(date)
fname="$6-$2-$3-backup"
tar -cvzf /BACKUP/$fname.tar.gz /var/log
참고 (변수를 이용한 파일이름 설정)
[root@server1 LABs]# date
Mon Sep 5 09:39:10 KST 2022
$1 $2 $3 $5 $6 $7
[root@server1 LABs]# chmod 700 log_backup.sh
[root@server1 LABs]# ./log_backup.sh
[root@server1 LABs]# cd /BACKUP/
[root@server1 BACKUP]# ls -l
total 756
-rw-r--r--. 1 root root 772897 Sep 5 09:41 2022-Sep-5-backup.tar.gz
[root@server1 BACKUP]# crontab -e
crontab: installing new crontab
[root@server1 BACKUP]# crontab -l
44 09 * * * /root/LABs/log_backup.sh
Sep 5 09:43:13 server1 crontab[21713]: (root) BEGIN EDIT (root)
Sep 5 09:43:24 server1 crontab[21713]: (root) REPLACE (root)
Sep 5 09:43:24 server1 crontab[21713]: (root) END EDIT (root)
Sep 5 09:43:29 server1 crontab[21870]: (root) LIST (root)
Sep 5 09:44:01 server1 crond[1097]: (root) RELOAD (/var/spool/cron/root)
Sep 5 09:44:01 server1 CROND[22184]: (root) CMD (/root/LABs/log_backup.sh)
^C
You have new mail in /var/spool/mail/root
백업파일을 주기적으로 생성하기 위해서는 비밀번호를 일일히 치지 않아도 실행되어야 한다.
packet 전송 시 평문으로 전송
packet 전송 시 암호문으로 전송
[root@server1 ~]# ssh server2
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'server2' (ECDSA) to the list of known hosts.
root@server2's password:
Last login: Fri Sep 2 02:07:34 2022 from 192.168.56.1
[root@server2 ~]#
[root@server1 ~]# uname -ar
Linux server1.kakao.com 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[root@server1 ~]# sysctl -n kernel.osrelease
3.10.0-1160.71.1.el7.x86_64
[root@server1 ~]# cat /proc/version
Linux version 3.10.0-1160.71.1.el7.x86_64 s(mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) ) #1 SMP Tue Jun 28 15:37:28 UTC 2022
runlevel 3: 다중 사용자 모드(NFS 포함) (권장)
[root@server2 ~]# systemctl get-default
graphical.target
[root@server2 ~]# systemctl set-default multi-user.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@server2 ~]# systemctl set-default graphical.target
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/graphical.target.
[root@server2 ~]# systemctl get-default
graphical.target
1) /etc/passwd: 계정 인증 파일
2) /etc/shadow: 계정 인증 파일, 암호화된 비밀번호
3) /etc/group: 그룹 관리 파일, 모든 사용자는 반드시 특정 그룹에 소속됨
4) /etc/default/useradd: 사용자 추가 시 적용되는 기본값
5) /etc/login.defs: UID/GID 생성 시 사용되는 기본값, 암호 만료 기간, 암호화
6) /etc/skel: 사용자 home 디렉터리에 포함되는 기본 환경설정 파일 제공
사용자 계정 정보가 저장된 기본 파일
1) 로그인 ID: 사용자 계정의 이름
2) x: 초기 Unix 시스템에서 사용자 암호를 저장하던 항목
3) UID: 사용자 ID 번호로 시스템이 사용자를 구별하기 위해 사용하는 번호
4) GID: 그룹 ID, 시스템에 등록된 그룹에 대한 정보는 /etc/group 파일에 저장
5) 설명: 사용자의 실명이나 부서명, 연락처 등 사용자에 대한 일반적인 정보 기록
6) 홈 디렉터리: 사용자 계정에 할당된 홈 디렉터리의 절대경로 기록
7) 로그인 셸: 사용자의 로그인 셸을 지정
/etc/passwd
사용자 암호에 관한 정보를 별도로 관리하는 파일
암호가 지정되지 않은 계정을 발견했을 경우
!! : 암호가 지정되지 않은 계정
1) 암호 설정
[root@server1 ~]# passwd kakao1
Changing password for user kakao1.
New password:
BAD PASSWORD: The password is shorter than 7 characters
Retype new password:
passwd: all authentication tokens updated successfully.
2) 제거
3) lock : 당장 계정이 서버에 접근할 수 없도록 하기 위해 사용
[root@server1 ~]# usermod -L kakao1
[root@server1 ~]# passwd -l kakao1
Locking password for user kakao1.
passwd: Success
결과
login as: kakao1
kakao1@192.168.56.101's password:
Access denied
[root@server1 ~]# passwd -u kakao1
[root@server1 ~]# passwd -u kakao1
Unlocking password for user kakao1.
passwd: Success
결과
Unlocking password for user kakao1.
passwd: Success
💡 암호화 방식 변경
그룹에 대한 정보 저장
-u uid
: UID 지정-o
: UID의 중복을 허용 (쓰지 마세요!) -g gid
: 기본 그룹의 GID 지정-G gid
: 2차 그룹의 GID 지정-d 디렉터리명
: 홈 디렉터리를 지정-s 셸
: 기본 셸 지정-c 설명
: 부가적인 설명 지정-D
: 기본 설정 값사용자 계정의 홈 디렉터리에 공통으로 배포해야 할 파일을 /etc/skel 디렉토리에 파일을 만들어 놓으면 사용자 계정 생성 시 자동으로 복사됨
.bash
: 사용자 level의 전역 설정
: 금일로부터 정직, 휴직, 해고 등의 사유로 출근하지 않는 자의 계정은 반드시 Lock 설정을 수행
[root@server1 ~]# cd /etc/pam.d/
[root@server1 pam.d]# ls
atd gdm-pin ppp sudo
chfn gdm-smartcard remote sudo-i
chsh liveinst runuser su-l
config-util login runuser-l system-auth
crond other samba system-auth-ac
cups passwd setup systemd-user
fingerprint-auth password-auth smartcard-auth vlock
fingerprint-auth-ac password-auth-ac smartcard-auth-ac vmtoolsd
gdm-autologin pluto smtp xserver
gdm-fingerprint polkit-1 smtp.postfix
gdm-launch-environment postlogin sshd
gdm-password postlogin-ac su
[root@server1 pam.d]# vi su
auth required pam_wheel.so use_uid
[root@server1 pam.d]# usermod -G wheel admin1
july@192.168.56.101's password:
Last failed login: Mon Sep 5 14:48:50 KST 2022 from 192.168.56.1 on ssh:notty
There were 2 failed login attempts since the last successful login.
Last login: Thu Sep 1 17:35:26 2022 from 192.168.56.1
[july@server1 ~]$ id
uid=1001(july) gid=1001(july) groups=1001(july) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[july@server1 ~]$ su - root
Password:
su: Permission denied
login as: admin1
admin1@192.168.56.101's password:
[admin1@server1 ~]$ su - root
Password:
Last login: Mon Sep 5 11:14:46 KST 2022 from 192.168.56.1 on pts/0
Last failed login: Mon Sep 5 14:49:38 KST 2022 on pts/1
There were 4 failed login attempts since the last successful login.
ABRT has detected 1 problem(s). For more info run: abrt-cli list --since 1662344086
-r
: 홈 디렉터리 삭제-f
: 사용자가 로그인 중이어도 강제로 삭제[root@server1 ~]# cd /home
[root@server1 home]# ls
atom blue cain jeff july kakao1 kevin oracle scott tom
[root@server1 home]# cd
[root@server1 ~]# userdel -r blue
[root@server1 home]# ls
atom cain jeff july kakao1 kevin oracle scott tom
devteam (3000): devuser1~3
opsteam (4000): opsuser1~3
devops1 (5100): devuser1, devuser2, opsuser1, opsuser2
devops2 (5200): devuser1, devuser2, opsuser1, opsuser2
adminteam (6000): opsuser1, opsuser3
[root@server1 home]# groupadd -g 3000 devteam
[root@server1 home]# groupadd -g 4000 opsteam
[root@server1 home]# groupadd -g 5100 devops1
[root@server1 home]# groupadd -g 5200 devops2
[root@server1 home]# groupadd -g 6000 adminteam
[root@server1 home]# useradd -g 3000 -G 5100 devuser1
[root@server1 home]# useradd -g 3000 -G 5100 devuser2
[root@server1 home]# useradd -g 3000 -G 5200 devuser3
[root@server1 home]# useradd -g 3000 -G 5200 devuser4
[root@server1 home]# useradd -g 4000 -G 5100,6000 opsuser1
[root@server1 home]# useradd -g 4000 -G 5100 opsuser2
[root@server1 home]# useradd -g 4000 -G 5200,6000 opsuser3
[root@server1 home]# useradd -g 4000 -G 5200 opsuser4
[root@server1 ~]# grep devteam /etc/group
devteam:x:3000:
[root@server1 ~]# grep devuser1 /etc/group
devops1:x:5100:devuser1,devuser2,opsuser1,opsuser2
[root@server1 ~]# grep opsuser1 /etc/group
devops1:x:5100:devuser1,devuser2,opsuser1,opsuser2
adminteam:x:6000:opsuser1,opsuser3
[root@server1 home]# groupdel adminteam
[root@server1 home]# groupdel devteam
groupdel: cannot remove the primary group of user 'devuser1'
[root@server1 home]# groupdel devops1
[root@server1 home]# groupdel devops2
[root@server1 home]# groupdel opsteam
groupdel: cannot remove the primary group of user 'opsuser1'
[root@server1 home]# userdel -r devuser1
[root@server1 home]# userdel -r devuser2
[root@server1 home]# userdel -r devuser3
[root@server1 home]# userdel -r devuser4
[root@server1 home]# groupdel devteam
[root@server1 home]# userdel -r opsuser1
[root@server1 home]# userdel -r opsuser2
[root@server1 home]# userdel -r opsuser3
[root@server1 home]# userdel -r opsuser4
[root@server1 home]# groupdel opsteam
암호가 쉬운 경우
Press 'q' or Ctrl-C to abort, almost any other key for status kakao1 (kakao1) 1g 0:00:00:10
암호가 어려운 경우
Remaining 4 password hashes with 4 different salts Press 'q' or Ctrl-C to abort, almost any other key for status 0g 0:00:08:37
last: 로그인 시도 기록
lastb: 실패한 로그인 시도 기록
lastlog: Never logged in인 system 계정을 통해 접근 시도한 기록(시간으로 출력됨)
vi /etc/sudoers
line 101 kevin All=(All) All
1) 일반 사용자에게 모든 권한을 부여하는 것은 매우 위험 ▶ 업무적으로 필요한 권한만 부여 (최소 권한의 원칙)
2) 해당 사용자 계정의 암호가 유출되면 root 계정의 암호가 유출된 것이나 마찬가지
3_ sudo 명령을 사용할 수 있는 사용자의 선정과 명령 선택은 매우 신중하게 처리해야 함 ▶ 권력 남용
만약, jeff 유저에게 시스템을 끄고(shutdown), 재시작(reboot) 할 수 있는 권한이 요구된다.
일반유저 jeff
[jeff@server1 ~]$ shutdown Must be root. [jeff@server1 ~]$ systemctl reboot -i ==== AUTHENTICATING FOR org.freedesktop.login1.reboot-multiple-sessions ===
[root@server1 ~]# cd LABs
[root@server1 LABs]# ls
d1 john-1.8.0 kubernetes.txt log_backup.sh time.sh
fw_disable.sh john-1.8.0.tar.tar link_dir perm
fw_enable.sh kakao_1to5 linux1 services
index.html kakao_services linux.txt srvmon_20220905.log
[root@server1 LABs]# cp time.sh /home/jeff
[root@server1 LABs]# su - jeff
Last login: Mon Sep 5 16:32:09 KST 2022 from 192.168.56.1 on pts/1
[jeff@server1 ~]$ ./time.sh
-bash: ./time.sh: Permission denied
[jeff@server1 ~]$ exit
logout
[root@server1 LABs]# chown jeff.jeff /home/jeff/time.sh
[root@server1 LABs]# su - jeff
Last login: Mon Sep 5 16:49:35 KST 2022 on pts/1
[jeff@server1 ~]$ ll
total 4
-rwx------. 1 jeff jeff 50 Sep 5 16:49 time.sh
[jeff@server1 ~]$ ./time.sh
------------
Mon Sep 5 16:50:16 KST 2022
September 2022
Su Mo Tu We Th Fr Sa
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
------------