정보보안공부/정보보안전문과정

모의해킹 침해대응 정보보안 전문가 양성과정 Day14

takudaddy 2020. 9. 21. 18:43

 

 

 

 

 

백업 관리

 

 

 

 

 

 

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

네트워크 설정 명령어

 

 

 

 

 

 

 

728x90