490 likes | 770 Views
백업 및 비상상황 대비. 2014 SPARCS WHEEL SEMINAR CHOCHO 조현성. I. 백업 BACKUP. 백업 BACKUP. ‘ 임시 보관을 일컫는 말로 , 정보 기술에서는 데이터 백업이라고 하며 , 데이터를 미리 임시로 복제하여 , 문제가 일어나도 데이터를 복구할 수 있도록 준비해 두는 것을 말한다 .’. 백업의 이유. 파일이 손상되거나 없어질 때를 대비 Hardware failure (ex. disk breaking) Accidentally deleting wrong file
E N D
백업 및 비상상황 대비 2014 SPARCS WHEEL SEMINAR CHOCHO 조현성
백업 BACKUP • ‘임시 보관을 일컫는 말로, 정보 기술에서는 데이터 백업이라고 하며, 데이터를 미리 임시로 복제하여, 문제가 일어나도 데이터를 복구할 수 있도록 준비해 두는 것을 말한다.’
백업의 이유 • 파일이 손상되거나 없어질 때를 대비 • Hardware failure (ex. disk breaking) • Accidentally deleting wrong file • Computer being stolen …등등
백업의 종류: Full Backup • 할 때마다 모든 데이터 백업 • 메모리 소모 ↑ • 전부 압축 하나의 zip파일로 보관 • - 시간 ↑ • - 복구는 가장 간단 • - 해킹당하면모든 정부를 내줄 수 있으니 강력한 보안 조치 필요! • 다른 백업들이 Full에 의존하기 때문에 주기적으로 해줘야 함
백업의 종류: Incremental Backup • 마지막 백업 후 바뀐 내용만 백업 (Full/Incremental/Differential/Mirror 전부 다!) • 적은 내용 백업 백업 시간이 빠르다 • Full backup에 매우 dependent • 복구시 각각 백업을 해야 함! 느림!
백업의 종류: Differential Backup • 마지막 Full Backup 이후 바뀐 내용만 백업 • 백업에 걸리는 속도는 더 느리지만 복구는 더 빠르다
백업의 종류: Mirror Backup • Full backup과 비슷 • 압축 X • - 빠르다 • ※원본에서 삭제되면 백업본에서도 삭제되므로 주의!
백업하기: dd (dump disk) • ※ andromeda의 파일시스템과 스왑공간 참조 • fdsik로 새로운 partition 생성 • dd명령어를 이용해 디스크 덤프 • 마운트 할 폴더 생성 • 생성된 폴더에 마운트 • ex.) # fdisk/dev/sda # dd if=/dev/sda1 of=/dev/sda13 #mkdir /backup-dd # mount /dev/sda13 /backup-dd
백업하기: tar • Backup용 Directory를 만든다$ cd /$ sudomkdir backups$ cd backups • 하나의 tar파일로 모은다$ sudo tar –cvpf /backups/fullbackup.tar -–directory=/ --exclude=proc –-exclude=sys -–exclude=dev/pts –-exclude=backups . --directory 로 백업하고 싶은 디렉터리를 지정 (e.g. --directory=/etc) --exclude 로 제외할 항목 지정
백업하기: tar • +간편하다 • ‐압축 X 용량이 크다!
백업하기: gzip / bzip • 그냥 tar로 묶기는 용량이 너무 크니 gzip이나 bzip을 압축하는 것도 좋은 방법! • $ sudo tar –zcvpf /backups/fullbackup.tar.gz –-directory=/ --exclude=proc –-exclude=sys –-exclude=dev/pts --exclude=backups . • unzip하는 법은 다들 알죠? ( ͡° ͜ʖ ͡° )
다른 서버로 백업 백업 서버를 만들어서 백업 파일을 그 서버로 전송!
다른 서버로 백업: rsync • = Remote Sync; a file transfer program for Unix systems • Transfers just the differences between two sets of files across the network connection • 빠름!
rsync로 백업하기 } • Client 서버와 백업 서버에 ssh 와 rsync가 설치되어 있어야 한다$ sudo apt-get install ssh rsync • Client 서버에서 (1) public key 발급,(2) 백업 서버로 public key 복사$ ssh-keygen –t rsa$ scp .ssh/id_rsa.pub chocho@wseminar4.sparcs.org:~/.ssh/authorized_keys • Client 서버에서 백업하기$ rsync –avz –-progress –e ssh /home/chocho chocho@wseminar4.sparcs.org:backup protos회원의 보안 세미나 참조
백업 스크립트 작성 일일이 코드치기 귀찮으니 스크립트를 작성 해놓자! $ vi backup.sh $ chmod +x backup.sh $ ./backup.sh $ rsync–avz –-progress –e ssh /home/chocho chocho@wseminar4.sparcs.org:backup
Tips • ※ 오래된 백업 파일은 용량 관계상 제거 • ※ 백업용 디스크나 저장 매체를 만든 다음 백업 전 mount, 백업 후엔 unmounts 하는 명 령을 백업 스크립트 앞뒤에 끼워 넣으면 rm –rf/ 공격에도 살아남을 수 있다 • ※ 백업용 디스크는 백업 후 읽기 전용 혹은 하드웨어적으로 쓰기 및 변조 방지를 걸어두는 것이 좋다
+ 정기적 백업을 위해cron # 2014 두 번째 WHEEL SEMINAR # 쉘 스크립트와 크론
주로 접하게 될 문제들 • 크게 세가지로 나뉜다 • 소프트웨어적 • 하드웨어적 • 인적
소프트웨어적 문제 • 내부: • - 파일시스템 에러 • - 장치설정 오류 • - 부팅 에러 • - 기타 프로그램 에러 • - 커널패닉(블루스크린) • - 메모리 overflow • …등등 • 외부: • - 해킹 • - 악성코드 및 바이러스 • - 접속자 폭주 및 유사 상황 • …등등
하드웨어적 문제 • 내부: • - 랜선 고장 • - 케이블 절단 • - 전원장치 고장 • - 파워 이상 • - 냉각 이상 • - 특정 부품/부분 망가짐 • …등등 • 외부: • - 먼지 • - 물 쏟음 • ..등등
인적 문제 • 내부: • - 관리자의 실수 • - 잘못된 입력 혹은 오타 • …등등 • 외부: • - 도둑 • - 해커 • - 그 외의 악의적 사용자 • ..등등
주로 접하게 될 문제들 • 소프트웨어적– 여기 집중! • 하드웨어적 • 인적
소프트웨어 내부 문제 • 깨진 파일 시스템 가장 흔함 • /etc/fstab에서 장치명 지정 오류 • - Linux 설치 CD 등으로 Linux secure로 부팅한 후 수정 재부팅
소프트웨어 내부 문제 - e2fsck • 리눅스의 파일 시스템을 점검 및 복구를 할 수 있는 명령어; fsck의 확장 • 주로 슈퍼블록 및 파일 시스템의 오류를 수정 • - indo, block, sizes 점검 - 전체파일 개수 점검 • - 디렉터리 구조 점검 - 전체 블록 수 중 사용 중인 블록 점검 • - 디렉터리 연결성 점검- 파일 링크 정보 • …등등 • ※ 하기 전에 unmount하세요!$ e2fsck [options] [device to check] • 만약 root가 맛이 갔으면,USB 등에 부트로더를 담아서 부팅 /root 언마운트 후 점검
부팅이 되지 않는 경우 • 사전에 CD/DVD나 USB로 부팅 될 수 있게 미리 setting! • - 설치 CD엔 Rescue 모드가 있어 CD/DVD가 더 좋다 그 후 GRUB 등 부팅 관련 파일 복구
커널패닉Kernel Panic • 운영 체제가 치명적인 내부 오류를 감지하여 안전하게 복구가 불가능할 때 취하는 동작 • 원인: • 장치 드라이버 문제 • 메모리 문제 • 오작동의 누적 • 등등…
하드웨어 문제 대비 • 단순 접촉불량 랜선 고장 랜선 바꿔보고 접촉부위 점검 • 먼지는 주기적으로 털어줄 것 • 시끄럽게 울리는 비프음은 대체로 냉각 OR 파워 문제
해킹 • 주로 명령어를 못 쓰게 하거나 중요 파일 삭제/변조, 로그 삭제/변조, 비밀번호 에러가 뜨도록 변조 • 미리 백업해 놓은 시스템 코어로 대체 후 작업 • 데미지가 클 수도 있는 강경책: • - 해킹 감지 즉시 시스템 싱글 유저 모드 부팅 • - 랜선 등 기타 네트워크 강제 차단 • - 로그 보존을 위한 하드의 즉각적인 unmount
해킹 대비하기 • 안 쓰는 port 닫기 • 의심 가는 process는 죽이기 • 모의 해킹 등으로 보안 점검 • 주기적으로 프로그램 update • Root으로 로그인하고 자리 비우지 않기 • 비밀번호 적어놓기 OR 숨기지 않은 파일에 중요한 것들 적어놓기 절대 X • 서버실 물리적 보안
2012 KAIST/SPARCS해킹 사건 • 2012년 1월 10일. • KAIST 연구실들이 해킹당함. 스팍스도?!? • /var/run/sshd.sync/에 사용자들 비밀번호가 plain text로 저장. • root 아이디에 g0t4nyr00ts 를 치면 접속이 된다.
2012 KAIST/SPARCS 해킹 사건 YUI란 아이디의 해커가 스팍스IRC에 접속
2012 KAIST/SPARCS 해킹 사건 • 해킹 루트 분석: • zeroboard4 취약점으로 root 획득 획득한 서버에 백도어 설치 획득한 서버의 sshd를 변조 ssh사용자의 id와 pw를 획득 다른 서버에 같은 작업 반복
해킹 루트 분석: • Zeroboard? zeroboard4 취약점으로 root 획득 획득한 서버에 백도어 설치 획득한 서버의 sshd를 변조 ssh사용자의 id와 pw를 획득 다른 서버에 같은 작업 반복
해킹 루트 분석: • preg_replace • e modifier를 정규식에 넣고 NULL로 keyword 끝냄 • 앞까지의 문자열을 php로 실행! • preg_replace를 하면 /([^<]*)string/e 까지만 정규식으로 보고 string 앞 코드를 실행 zeroboard4 취약점으로 root 획득 획득한 서버에 백도어 설치 획득한 서버의 sshd를 변조 ssh사용자의 id와 pw를 획득 다른 서버에 같은 작업 반복 $keyword_pattern = "/([^<]*)$keyword([^>]*)/i"; $memo = preg_replace($keyword_pattern, blahblahblah…); keyword= "string/e/0“ $keyword_pattern="/([^<]*)string/e/0([^>]*)/i“
해킹 루트 분석: • Backdoor? • 시스템의 보안이 제거된 비밀통로로서, 서비스 기술자나 유지보수 프로그래머들의 액세스 편의를 위해 시스템 설계자가 고의적으로 만들어 놓은 것 • debugfs로 hair.so 라는 라이브러리를 만든 것을 발견 • readdir을 변조해 일반적인 명령으로 __인 디렉이 검색되지 않게 함 • accept를 변조해 특정 포트로 오는 패킷에 해커가 설정한 문자열이 나오면 root를 줌 • ld.so.preload를 변조해 hair.so 라이브러리를 로드함 zeroboard4 취약점으로 root 획득 획득한 서버에 백도어 설치 획득한 서버의 sshd를 변조 ssh사용자의 id와 pw를 획득 다른 서버에 같은 작업 반복
해킹 루트 분석: • readdir zeroboard4 취약점으로 root 획득 획득한 서버에 백도어 설치 획득한 서버의 sshd를 변조 ssh사용자의 id와 pw를 획득 다른 서버에 같은 작업 반복
해킹 루트 분석: • accept zeroboard4 취약점으로 root 획득 획득한 서버에 백도어 설치 획득한 서버의 sshd를 변조 ssh사용자의 id와 pw를 획득 다른 서버에 같은 작업 반복
해킹 루트 분석: • 변조된 sshd파일 • php의 preg_replace에 null을 넣으면 정규식의 끝으로 인식하는 취약점으로 쉘을 땀 zeroboard4 취약점으로 root 획득 획득한 서버에 백도어 설치 획득한 서버의 sshd를 변조 ssh사용자의 id와 pw를 획득 다른 서버에 같은 작업 반복
해킹 루트 분석: • php의 preg_replace에 null을 넣으면 정규식의 끝으로 인식하는 취약점으로 쉘을땀 • ssh client와 daemon을 변조 • 사용자들이 로그인을 시도할 시 기록을 남기도록 함 • 변조된 sshd파일 zeroboard4 취약점으로 root 획득 획득한 서버에 백도어 설치 획득한 서버의 sshd를 변조 ssh사용자의 id와 pw를 획득 다른 서버에 같은 작업 반복
2012 KAIST/SPARCS 해킹 사건: 복구 • 정보통신팀과CERT에 연락 • 해킹사건 공지 • 모든 서버 재설치 작업 • 대부분의 비밀번호 reset • wheel 계정은 전부 ssh certificate을 쓰도록 바뀜
‘한번의 백업이 하룻밤 삽질, 10번의 복구작업, 100번의 후회와 해고를 막습니다…’by sillo
References • 2010, 2011, 2012, 2013 Wheel Seminar (sillo, cling, whitegold, veritas) • http://www.debianhelp.co.uk/backup.htm • http://www.debiantutorials.com/remote-backups-using-rsync/ • 2012 KAIST Hacking