42SEOUL

[born2beroot] 서브젝트 설정

daykim 2022. 6. 17. 09:04

sudo 설정

#sudo 설치여부 확인
dpkg -l sudo

apt-get update //패키지 목록 업데이트
apt-get install sudo
visudo //sudoer 파일 접근해서 옵션 설정
	Defaults	authfail_message="원하는 에러메세지" #권한 획득 실패 시 (sudo 인증 실패 시)
	Defaults	badpass_message="원하는 에러메세지" #sudo인증 비번 실패 시
	Defaults	log_input #sudo명령어 실행했을 때 입력된 명령어 log로 저장
	Defaults	log_output #sudo명령어 실행했을 때 출력 결과를 log로 저장
	Defaults	requiretty #sudo명령어 실행했을 때 tty강제
	Defaults	iolog_dir="/var/log/sudo/" #sudo log 저장 디렉토리 설정
	Defaults	passwd_tries=3 #sudo 비밀번호 시도 가능 횟수

sudo

root가 아닌 사용자가 root에 준하는 능력으로 명령을 실행하게 해주는 명령어

모든 사용자에게 root계정을 줄 수 없기 때문에 

secure_path, requiretty

sudo 명령을 실행할 때 사용하는 가상 쉘의 PATH정보

sudo(super user) 명령에 의해 악의적으로 사용되는것을 막아준다.

 

유저 설정

#유저 생성
adduser <username>

#유저 삭제
userdel -r <username>

 

그룹 설정

groupadd user42 //그룹 추가
usermod -aG sudo,user42 <username> //해당 그룹에 유저 추가, 그룹 여러개는 공백없이 콤마로 구분
usermod -g user42 <username> // user42 그룹이 primary group되도록

-G # gid그룹 제외하고 명령어에 나열된 그룹만 추가되고, 명령어에 나열되지 않은 유저가 속해있는 그룹은 전부 탈퇴
-a # G옵션에서만 함께 쓰임. 유저가 속해있지만 명령어에 나열되지 않은 그룹에 관해 탈퇴처리하지 않음
-g # 홈 디렉토리 정보 수정

 

UFW 설정

sudo apt install ufw
sudo ufw status verbose // ufw 상태 확인
sudo ufw enable // ufw 활성화
sudo ufw default deny //기본 incoming deny 설정
sudo ufw allow 4242 // ssh연결 허용
sudo ufw delete deny <port num>

 

ssh 설정

apt search openssh-server // openssh 설치 여부 확인 -> 대부분 설치 돼있다.
systemctl status ssh // openssh 실행여부와 사용 포트 확인
sudo vim /etc/ssh/sshd_config // ssh 설정 변경
	Port 4242
	PermitRootLogin no // 외부에서 root로 로그인하는 것 막음
// vim 없다면 apt-get install vim

 

로컬과 가상환경 연결

ifconfig // 자신의 로컬 IP주소 확인 
// -> debian에선 실행되지 않는다. Tool 옆에 network 눌러서 vboxnet0에 적힌 주소로 넣어줌
// ip 명령으로 통합되었다고 한다.
// ip address / ip addr / ip a 입력시 ifconfig처럼 정보 볼 수 있다.

hostname -I //가상환경 IP주소 확인

ssh <계정이름>@<로컬주소> -p <port number>
//설정에서 막아둬서 root 계정에서는 로그인 불가능하다.

 

비밀번호 정책 변경

sudo apt install libpam-cracklib

vim /etc/pam.d/common-password

vim /etc/login.defs
  • retry=N : 암호 입력 N회 가능
  • minlen=N : 암호 최소길이 N
  • difok=N : 기존 패스워드와 달라야하는 문자 수 N
  • ucredit=-N : 대문자 N개 이상
    • 음수 : 새 패스워드에 있어야 하는 대문자 최소 개수
    • 양수 : 새 패스워드에서 대문자로 얻을 수 있는 최대 점수
  • lcredit=-N : 소문자 N개 이상
  • decredit=-N : 숫자 N개 이상
  • reject_username : 사용자 이름이 그대로 혹은 뒤집혀 패스워드에 있는지 검사
  • enforce_for_root : 루트 사용자가 패스워드 바꾸려 할 때에도 조건 적용
  • maxrepeat=N : 같은 문자가 N번 이상 연속하는지 검사

 

패스워드 변경

  • passwd -e <username>
  • 로그아웃
  • 재로그인 할 때 새로운 패스워드 입력

 

HostName

# 호스트 이름 확인
hostnamectl 

# 호스트명 변경
sudo hostnamectl set-hostname <변경할 이름>

reboot

 

cron

특정 시간 또는 특정 시간마다 어떤 작업을 자동으로 수행하게 하는 프로그램

* * * * * command 
| | | | |_ // 요일
| | | |_ // 월
| | |_ // 날짜
| |_ // 시간
|_ // 분

// 예시1) 5일에서 6일까지 2시,3시,4시에 매 10분마다 test.sh 를 실행
*/10 2,3,4 5-6 * * /home/script/test.sh

// 10분마다 monitoring.sh를 싱행
*/10 * * * * /monitoring.sh
sudo crontab -e

wall
# write to all
# 컴퓨터 파일, 표준 입력을 로그인 된 모든 사용자에게 보여준다.

# /user/sbin/anacron
# 크론과 같이 동작하는 프로그램으로, 서버가 일정시간 중지됐을 때도 작업이 실행되는 것을 보장하기 위해 사용하는 도구

# /etc/cron.daily
# /etc/cron.weekly
# /etc/cron.monthly
# 시스템 크론 설정 디렉토리, cron은 주기적으로 실행할 내용을 시스템 크론 설정 디렉토리에 넣어 작동시킴

# /var/log/cron
# 크론 실행내용이 기록됨

 

Monitoring.sh

  • apt-get -y install sysstat
    mpstat
# 시스템 정보 출력 uname
uname -a
# a : 프로세스 종류, 하드웨어 플랫폼 정보 제외하고 모든 정보 출력
# 커널 이름, 네트워크의 호스트, 커널의 릴리즈 정보, 커널 버전, 시스템 하드웨어 타입, 운영체제 이름

# 물리적 프로세서 수
nproc -all

# 가상 프로세서 수
# nproc : user 당 사용 가능한 프로세스 최대 개수
cat /proc/cpuinfo | grep processor | wc -l

# 서버 내에서 사용 가능한 램, 가동률을 백분율로 표시
# free : proc/meminfo에서 메모리 정보 가져옴
# swap memory : 실제 메모리가 가득 차고 더 많은 메모리 필요할 때 가상 메모리로 대체하는 것
# $n : n번째 필드 출력
free --mega | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\n", $3, $2, $3/$2 * 100}'

# 서버 내에서 사용가능한 메모리와 가동률을 백분율로 표시
# df : 시스템에 마운트된 하드디스크의 남은 용량 확인하는 명령어
# -P : POSIX에서 사용되는 형태로 출력
#tmpfs
# 물리적 파일에 저장하거나 디렉터리 생성가능한 공간이 아닌 메모리를 파일처럼 사용할 수 있게하는 파일 시스템.
# 휘발성이라 서버 재부팅시 초기화됨
#udev : 리눅스 커널을 위한 장치 관리자

# 프로세서들의 가동률을 백분율로 표시
# mpstat : 사용 가능한 CPU와 Core 별로 사용율
# idle : 유효한 CPU 시간 백분율
mpstat | grep all | awk '{printf 100 - $13}'

# 마지막 부팅 시간과 날짜
# who : 현재 시스템에 접속한 사용자 확인
who -b | awk '{printf $3" "$4}'

# LVM 활성화 여부
lsblk | grep "lvm" | wc -l
if [$lvm_n -gt 0];
then
	lvm_u="yes";
else
	lvm_u="no";
fi

# 활성화된 acive connections의 수
# ss : 네트워크 상태 확인
# -t : tcp 포트 확인
ss -t | grep -i ESTAB | wc -l

# 서버를 사용하고 있는 유저의 수
who | wc -l

#서버의 IPv4 주소와 MAC(Media Access Control) 주소
#ip : 네트워크 인터페이스의 IP 출력
# link : 모든 네트워크 인터페이스의 상태를 관리하고 출력
hostname -I
ip link | grep ether | awk '{printf $2}'

# sudo로 실행된 command 수
# sudoreplay : sudo에 의해 생성된 출력 로그 나열
sudoreplay -d /var/log/sudo/ -l | wc -l

 

참고자료

'42SEOUL' 카테고리의 다른 글

[push_swap]  (0) 2022.07.03
[minitalk] 개념정리  (0) 2022.06.26
[born2beroot] Virtual Box 세팅하기  (0) 2022.06.04
[born2beroot] 개념 정리  (0) 2022.05.22
[ft_printf] printf()  (0) 2022.04.22