date: 2021-10-19 23:16:00
VirtualBox을 이용해 나만의 규칙을 적용한 operating system 을 만드는것
무료 오픈소스로 구성된 리눅스 배포판이며, 커뮤니티에 의해 관리됩니다. Debian은 리눅스 커널을 기반으로 한 가장 오래된 os중 하나 입니다.
데비안(Debian)은 데비안 프로젝트에서 만들어 배포하는 공개 운영체제이다.
데비안의 특징은 패키지 설치 및 업그레이드의 단순함에 있다.
일단 인스톨을 한 후 패키지 매니저인 apt 등을 이용하면 소프트웨어의 설치나 업데이트에서 다른 패키지와의 의존성 확인, 보안관련 업데이트 등을 자동으로 해준다.
데비안은 네트워크 결합 스토리지 부터 전화기, 노트북, 데스크탑 및 서버까지 다양한 하드웨어에서 사용할 수 있다.
데비안은 안정성과 보안에 중점을 두며 다른 많은 리눅스 배포판의 기반으로 쓰이고 있다.
다른 운영체제를 사용해야 하는 경우(맥OS에서 윈도우, 윈도우에서 리눅스)
독립된 작업공간이 필요한 경우 (바이러스 회피, 백업)
하나의 머신에서 여러명에게 운영체제 환경을 제공
시스템 관리자가 프로그램 프로필 별로 프로그램의 역량을 제한할 수 있게 해주는 리눅스 커널 보안 모듈이다.
프로필들은 네트워크 액세스, raw 소켓 액세스 그리고 파일의 읽기, 쓰기, 실행 같은 능력을 허용할 수 있다.
AppArmor는 강제적 접근 통제(MAC)를 제공함으로써 전통적인 유닉스 임의적 접근 통제(DAC) 모델을 지원한다.
이것은 리눅스 버전 2.6.36부터 포함되었으며, 개발은 2009년부터 캐노니컬 사에 의해 지원된다.
그래픽환경에서 동작하지 않는 것을 확인 (Ensure that the machine does not have a graphical environment at launch)
root가 아닌 사용자로 login (Connect the user not root)
password를 활용해서 machine에 로그인. (Password should be ruled as subject it saids) (->2)User)
sudo ufw status verbose
sudo systemctl status ssh
sudo hostnamectl
비밀번호는 30 일마다 만료되어야합니다.
비밀번호 수정 전까지 허용되는 최소 일수는 2로 설정됩니다.
사용자는 암호가 만료되기 7 일 전에 경고 메시지를 받아야합니다.
비밀번호는 10 자 이상이어야합니다. 대문자와 숫자를 포함해야합니다. 또한 3 개 이상의 연속 된 동일한 문자를 포함 할 수 없습니다.
암호에는 사용자 이름이 포함되지 않아야합니다.
다음 규칙은 루트 비밀번호에 적용되지 않습니다. : 비밀번호는 이전 비밀번호의 일부가 아닌 최소 7 자.
sudo vi /etc/login.defs
sudo apt install libpam-pwquality
sudo vi /etc/pam.d/common-password
(변경) retry=3 : 암호 입력 3회까지
minlen=10 : 암호 최소 길이는 10
difok=7 : 기존 패스워드와 달라야하는 문자 수는 7
ucredit=-1 : 대문자 한 개 이상
lcredit=-1 : 소문자 한 개 이상
dcredit=-1 : 숫자 한 개 이상
reject_username : username이 그대로 또는 뒤집혀서 새 패스워드에 들어있는지 검사하고, 들어있으면 거부
enforce_for_root : root 사용자가 패스워드를 바꾸려고 하는 경우에도 위의 조건들 적용
sudo passwd -e 사용자명
sudo adduser 사용자명
sudo groupadd evaluating
sudo hostnamectl
sudo hostnamectl set-hostname 바꾸려는호스트명
lsblk
dpkg -l sudo
apt-get install sudo
usermod (user) -g (group)
usermod -aG (group1),(group2) (user)"
cat /etc/group
sudo deluser 사용자명 그룹명
sudo userdel -r 사용자명
sudo mkdir /var/log/sudo/
sudo visudo
(변경) Defaults secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Defaults authfail_message="Authentication attempt failed."
Defaults badpass_message="Wrong password!"
Defaults log_input
Defaults log_output
Defaults requiretty
Defaults iolog_dir="/var/log/sudo/"
sudo apt install ufw
sudo ufw status verbose
sudo ufw enable
sudo ufw default deny
UFW 란?
sudo ufw allow 4242
sudo ufw status numbered
sudo ufw delete 규칙번호
apt search openssh-server
apt install openssh-server
systemctl status ssh
SSH 란?
ss -tunlp
sudo ufw allow 4242
ssh seungsle@192.000.000.000 -p 2424
vi /etc/ssh/sshd_config
PermitRootLogin no
service ssh restart
#!/bin/bash
printf "#Architecture: "
uname -a
printf "#CPU physical : "
nproc --all
printf "#vCPU : "
cat /proc/cpuinfo | grep processor | wc -l
printf "#Memory Usage: "
free -m | grep Mem | awk '{printf"%d/%dMB (%.2f%%)\n", $3, $2, $3/$2 * 100}'
printf "#Disk Usage: "
df -BM -a | grep /dev/mapper/ | awk '{sum+=$3}END{print sum}' | tr -d '\n'
printf "/"
df -BG -a | grep /dev/mapper/ | awk '{sum+=$2}END{print sum}' | tr -d '\n'
printf "GB ("
df -BM -a | grep /dev/mapper/ | awk '{sum1+=$3 ; sum2+=$2 }END{printf "%d", sum1 / sum2 * 100}' | tr -d '\n'
printf "%%)\n"
printf "#CPU load: "
mpstat | grep all | awk '{printf "%.1f%%\n", 100-$13}'
printf "#Last boot: "
who -b | sed 's/ system boot //g'
#(주석) 'system boot'앞 뒤로 적절한 갯수의 스페이스 집어넣었음
printf "#LVM use: "
if [ "$(sudo lvscan | grep -i ACTIVE | wc -l)" -gt 0 ] ; then printf "yes\n" ; else printf "no\n" ; fi
printf "#Connections TCP : "
ss -t | grep -i ESTAB | wc -l | tr -d '\n'
printf " ESTABLISHED\n"
printf "#User log: "
who | wc -l
printf "#Network: IP "
/sbin/ifconfig | grep broadcast | sed 's/inet//g' | sed 's/netmask.*//g' | sed 's/ //g' | tr -d '\n'
printf " ("
/sbin/ifconfig | grep 'ether ' | sed 's/.*ether //g' | sed 's/ .*//g' | tr -d '\n'
printf ")\n"
printf "#Sudo : "
grep 'sudo:' /var/log/auth.log | grep 'COMMAND=' | wc -l | tr -d '\n'
printf " cmd\n"
os의 아키텍쳐와 커널 버전 : "uname -a"를 통해 출력
the number of physical processors : "nproc --all"을 통해 설치된 프로세서의 갯수를 출력
the number of virtual processors : "cat /proc/cpuinfo | grep processor | wc -l"을 통해 가상 프로세서(vCPU)의 갯수를 출력
the available RAM on your server and its utilization rate as a percentage : "free -m | grep Mem | awk '{printf "%d/%dMB (%.2f%%)", $3, $2, $3/$2 * 100}'"
the available memory on your server and its utilitzation rate as a percentage : "df -BM -a | grep /dev/mapper"
the utilization rate of your processors as a percentage : "sudo apt-get install sysstat" && "mpstat | grep all | awk '{printf "%.2f%%", 100-$13}'"
the date and time of the last reboot : "who -b | sed 's/ system boot //g'"
Whether LVM is active or not : if [ "$(lvscan | grep -i ACTIVE | wc -l)" -gt 0 ] ; then echo "yes" ; else echo "no" ; fi
The number of active connections. : "ss -t | grep -i ESTAB | wc -l"하면 현재 established tcp 연결 수 출력
The number of users using the server. : "who | wc -l"
The IPv4 address of your server and its MAC (Media Access Control) address. : IPv4는 "/sbin/ifconfig | grep broadcast | sed 's/inet//g' | sed 's/netmask.//g' | sed 's/ /g' "를 통해 추출 가능. MAC은 "/sbin/ifconfig | grep 'ether ' | sed 's/.ether //g' | sed 's/ .*//g' "을 통해 추출 가능
The number of commands executed with the sudo program. : "grep 'sudo:' /var/log/auth.log | grep 'COMMAND=' | wc -l"을 통해 출력 가능
Cron이란?
제가 올린 글에서 잘못된 부분이 있으면 제 메일로 연락주세요!
이승수의 저작물인 이 저작물은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.