모의해킹 침해대응 정보보안 전문가 양성과정 Day14
백업 관리
1. tar CMD
[참고] 백업/복구 시 - 절대경로/상대경로 주의
# tar cvf file.tar file1 file2 : 풀백업 받는 방식
-g 옵션 붙이면 파일 이름 넣는 옵션
ex) tar -g /backup/time.list
# tar tvf file.tar
#tar xvf file.tar
* 백업은 시간이 오래 걸리기 때문에 압축하고 백업하는 형식
# tar cvzf file.gz file1 file2
# tar tvzf file.gz
#tar xvzf file.gz
# tar cvjf file.bz2 file1 file2
# tar tvjf file.bz2
#tar xvjf file.bz2
# tar cvJf file.xz file1 file2
# tar tvJf file.xz
#tar xvJf file.xz
* 전체백업 + 증(가)분백업(차등백업) 섞어서 사용하는 법
# tar -g /backup/time.list cvzf home.tar.gz /home
# tar -g /backup/time.list cvzf home1/tar/gz /home
# cd /
# tar -g /backup/time.list xvzf home.tar.gz
# tar -g /backup/time.list xvzf home1.tar.gz
* 디렉토리 마이그레이션 (/test1/* -> /test2.*)
# cd /test1
# tar cf - / | (cd /test2; tar xf -)안전한 방식
* OS 백업 혹은 특정 디렉터리 제외하고 백업 받기
1.OS 백업
# cd /
# tar cvzf /RootBackup/full.tar.gz
--exclude=/tmp \
--excudr=/run \
--exclude=/media \
--exclude=/proc \
--exclude=/RootBackup \
--absolite-name / : (/ ) 이걸 중심으로 백업을 받을 건데 위 폴더들은 제외
2. 특정 디렉터리 제외하고 백업
# tar cvzf /test/full.tar.gz \
--exclude=/test/a \
--absolute-name /test 이걸 중심으로 받을 건데 위 a는 제외하고 받아라
[참고] tar 명령어를 사용한 분할 압축 ( tar + split)
# cd /target
# tar czf- . | -d -b 2048m - target.tar.gz
https://promobile.tistory.com/262
# tar cvzf - /target | split -b 2048m - backup.tar.gz
rysnc CMD (원격 백업)
(주의)이전 실습에서 사용한 환경 설정 내용을 삭제한다.
■ /etc/profile, /etc/profile.d/test.sh, /etc/bashrc, ~/.bash_profile, ~/.bashrc
# vi /etc/profile
# rm -f /etc/profile.d/test.sh
# vi /etc/profile.d/sh.local
# vi /etc/bashrc
# vi ~/.bash_profile
# vi ~/.bashrc
# vi ~/.bash_logout
(동작원리) scp & rsync 동작 비교
# scp -r /test 172.16.6.252:/test
# rsync -avz --delete -e ssh /test 172.16.6.252:/test
(ssh는 암호화 통신. 암호화해주기 때문에 더 안전하다)
cp 명령어를 쓰는 것보다 rsysc -a를 쓰는 게 좋다.
cp를 쓰려면 꼭 -a 옵션을 써줘야 한다(rsync도 마찬가지)
rscync 사용 예
[주의] /backup1 VS /backup1/ (슬래시 있는 것을 기본적으로 사용)
Local -> Local
# rsync -a --delete /backup1(소스)[/] /backup2데스티네이션
Local -> Remote
# rsync -a --delete -e ssh /backup1 IP:/backup2
Remote -> Local
# rsync -a --delete -e ssh IP:/backup2/ /backup1
[참고] Sync 프로그램
(주의)아래 사항의 차이점을 이해해야 한다.
# rsync -avz --delete -e ssh /backup//test101/ (# rsync -avz --delete -e ssh /backup/ /test101)
-> (ㄱ) /test101 디렉터리가 없으면 생성된다.
-> (ㄴ) /backup 디렉터리의 내용과 /test101 디렉터리의 내용은 동일하다.(/backup/* <-sync-> /test101/*)
# rsync -avz --delete -e ssh /backup /test101
-> (ㄱ) /test101 디렉터리가 없으면 생성된다.
-> (ㄴ) /test101 디렉터리 안에 backup 디렉터리가 생성된다.(/backup/* <-sync-> /test101/backup/*)
[실습 1] / 안 붙였을 때
# yum -y install rsync
# systemctl list-unit-files | grep rsync
# mkdir -p /backup
# rm -rf /backup/*
# cp -p /etc/passwd /backup/file1
# cp -p /etc/group /backup/file2
# cp -p /etc/services /backup/file3
# ls /backup
# rsync -a /backup /test100 (슬래시 없이 싱크 한다)
# ls -l /test100
# ls /backup /test100/backup (싱크 내용 확인)
# rm -f /backup/file3 ( 파일 하나 지워보고 싱크 내용 변동 있나 확인)
# ls /backup
# ls /backup /test100/backup (삭제한 파일이 싱크 한 곳에는 그대로 있음)
--delete 옵션을 사용해 지운 파일 적용을 해주자!
# rsync -a --delete /backup /test100
# ls /backup /test100/backup (삭제한 파일이 적용되었다!)
[실습 2] / 붙였을 때
# rsync -a --delete /backup/ /test101
# ls /backup/ /test101
# rsync -a --delete -e ssh /backup/ /test101
# ls /backup /test101
* Mirror site with rsync CMD
1. 파일 만들기
# vi /etc/rsyncd.conf
---------------------------------------------------------------------
uid=nobody /* 사용자 아이디 */
gid=nobody /* 그룹 아이디 */
use chroot=no /* yes : 지정된 경로 이외에 다른 경로로 접속 못하게 함 */ 보안상 yes로 해 놔야 함
max connections=50 /* 최대 접속자 수 : 0은 무제한을 나타냄 */
timeout=60 /* Client의 접속이 idle 상태일 때 접속을 끊어버릴 초 단위 시간 */
[Backup] /* rsync 서비스명 */
comment=Rsync Backup Server /* rsync 서비스에 대한 설명 */
path=/backup1/* 미러링 될 데이터의 경로 (대상파일경로) */
read only=no /* yes : 다운로드 가능 / no : 업로드 가능 */
-------------------------------------------------------------
2. 기동시키기
# systemctl enable rsyncd.socket
# systemctl restart rsyncd.socket
3. 서버 개방
# rsync -a --delete -e ssh IP::Backup /backup2
# rsync -a --delete -e ssh /backup2/ IP:/backup2
환경설정 파일 백업 ( ~/.bachrc)
#
# specific configuration
#
export PS1='[\u@\h \w]\$ '
# alias tree='tree -C'
alias tree='tree -C -A -F'
alias ls='ls --color=auto -h -F'
#ex) pps rsyslogd
alias pps='ps -ef | head -1; ps -ef | grep $1'
#EX) nstat :22
alias nstat='netstat -antup | head -2; netstat -antup | greb $1'
alias vi=' /usr/bin/vim'
alias grep='grep --color=auto -i'
alias df='df -h -T'
alias c='clear'
alias slog='view /test/server_$(date +%m%d).log'
alias oslog='view /test/server_$(date +%m%d -d "-1 days").log'
#
# Specific configuration for Instructor
#
alias langen='export LANG="en_US.UTF-8"'
alias langko='export LANG="ko_KR.UTF-8"'
export PS1='\[\033[34;1m\][\h@\w]\[\033[31;1m\]\$ \[\033[m\]'
#export PS1='\[\033[34;1m\][\h@\w]\[\033[31;1m\]\$ \[\033[m\]'
Network Admin 과정 정리 시작
리눅스 설치 작업
[준비사항]
VMware Workstation Pro (가상화 프로그램)
Linux CD
[설치 절차]
1) VM 생성
* VM 이름 : linux2xx
* MEM : 2G
* 네트워크 방식 : 브릿지 방식
2) OS 설치
* Welcome To CentOS 7
* 언어 선택 -> 한국어
* 소프트웨어 설치 클릭 -> 서버 GUI 사용
* 시스템 설치 / 설치 대상 클릭 -> 파티션 안 나누고 VLM 방식을 사용해야 하기 때문에 완료 누르기
* 네트워크 및 호스트명 -> 호스트 이름 변경 / 설정 누르고 들어가서 이더넷 아래 거 선택
* Ipv4 들어가서 수동 선택, 주소 입력
*Root 및 사용자 생성
*재부팅
*초기설정 -> 라이센싱 : 완료
3) 초기설정 ( OS 설치 이후)
* 터미널 폰트 조정
(임시적) <CTRL + '+', '-', '0'>
(영구적) gnome-tweaks : 글꼴 > 고정폭
*아이콘 생성
# cd /usr/share/applications ; ls (찾으면 CTRL + C / CTRL + V로 빼와야 한다)
* 화면 보호기 끄기 (전원옵션)
전원아이콘 > 도구 > 전원 >절전 (안함)
*디스플레이 크기 설정 (화면 해상도 설정)
전원아이콘 > 도구 > 장치 > 디스플레이
* 방화벽 OFF
# systemctl disable firewalld
# systemctl stop firealld
* SELinux OFF
# vi /etc/selinux/config 들어가서 SELINUX 부분 permissive로 변경 ( SELINUX=permissive)
# setenforce 0 (재부팅 안 하고 반영)
* 환경 설정
# vi ~/.bashrc
적용 # . ~/.bashrc
* telnet 서비스 root 접속 허용
# yum install telnet telnet-server
# systemctl enable telnet.socket
# systemctl restart telnet.socket
# systemctl status telnet.socket (확인)
여기까진 일반 사용자가 접속하는데 문제가 없지만
루트 사용자가 못 들어온다. 그래서 아래 코드 입력.
for i in $(seq 1 11)
do
echo "pts/$i" >> /etc/securetty
done
#cat /etc/securetty (확인)
# telnet localhost로 루트 접속 확인
* 필수 패키지 설치
# yum install tree gcc
* 언어 변경
# localectl set-locale LANG=en_US.UTF-8|ko_KR.UTF-8
# reboot
1. 서비스 제어
--- legacy --- --- current ---
xinetd service(ex: telnetd) --> ex)telnet.socket
standalone service(ex: sshd) --> ex)sshd.service
# systemctl enable telnet.socket
# systemctl restart telnet.socket
# systemctl enable sshd.service
# systemctl restart sshd.service
2. 네트워크 설정 관리
네트워크 설정 파일들
* /etc/hosts아이피 네임서버 매핑
* /etc/host.conf (/etc/nsswitch.conf) 아이피 얻어오는 순서 결정하기 위해
* /etc/resolv.conf
네트워크 설정 명령어