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
참고자료
- https://techdebt.tistory.com/18?category=833728
- https://www.notion.so/born2beroot-2ce1177e08904c329fb437c7fdcd7113
'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 |