본문 바로가기

2014/0713

패스워드 무작위 대입 공격 방어를 위한 fail2ban 사용법 서버운영을 하다보면 SSH,FTP등을 통해 외부에서 알 수 없는 IP가 계정접근 시도하는 경우가 있습니다. 그치만 패스워드를 모르니, 접근실패가 될 것입니다.. 그런데 이들은 해킹프로그램을 이용하여 접속이 될때까지 패스워드를 계속 바꾸며, 계속 접근을 시도할 겁니다.. 결국 패스워드가 뚫리며 root 계정에 접속될 것입니다. 이 문제를 해결하기위해서는 간단하게 관리자 IP만 서버접근을 허용하면 됩니다. 하지만, 관리자IP가 유동이거나 다른 외부에서 접근할 경우도 있을 수 있습니다. 그럼 차선책으로 몇회 이상 접근에 실패할 경우 해당 접근IP를 완전히또는 일정시간 동안은 차단 해야 이런 공격에 대비할 수 있겠지요.. 여기서는 fail2ban 이란 프로그램을 이용해 무작위 공격방어를 해볼까합니다. fail2.. 2014. 7. 29.
원하는 직장을 얻는 방법 10가지 1. 자신감과 자부심을 증진시켜라 (Increase Your Confidence and Self-esteem) 1) 내가 제시할 수 있는 것에 대해 자신감을 갖는다. 2) 어떠한 상황에서든 긍정적인 측면을 보도록 한다. 3) 긍정적인 태도를 취하다 보면 머지 않아 실제로 긍정적인 느낌을 갖게 된다. 4) 취업면접을 언제나 확률 게임으로 간주한다. 5) 긍정적 사고를 하는 친구들과 어울린다. 2. 자신의 상품으로서의 강조점을 확인하라 (Identify Your Key Selling Points) 내 자신의 업무관련 경력과 장점을 찾아봄으로써 입사 지원하는 회사를 위해 내가 어떤 공헌을 할 수 있을지를 생각해 본다. 자신의 이런 강점을 구체적으로 기억해 뒀다가 기회가 주어질 때 거침 없이 말할 수 있도록 한.. 2014. 7. 20.
MySQL 원격 증분 백업 – Percona XtraBackup # Percona XtraBackup 소개 이미 예전에 XtraBackup을 간단하게 소개한 글을 썼었는데 그 글의 내용만으로는 XtraBackup을 실무에 쓰기에 턱없이 부족하다. 그래서 이번에는 XtraBackup을 제대로 쓸 수 있는 문서를 만들었다.일반적으로 MySQL 백업으로 mysqldump를 사용하는데 매번 전체를 백업하는 방식이므로 데이터가 커질수록 백업에 걸리는 시간이 길어지고 부담이 커진다. 뿐만 아니라 백업된 데이터를 복구하는데도 무척 긴 시간을 필요로 한다. 하지만 XtraBackup을 사용하면 마지막 백업으로부터 변경된 사항만 이어서 백업하는 증분 백업이 가능하다.XtraBackup은 MySQL의 데이터 디렉토리 자체를 복사하는 것과 같기에 복구에 걸리는 시간은 단지 파일을 복사하.. 2014. 7. 18.
리눅스 32비트 64비트 확인 방법 1: getconf [root@jmnote ~]# getconf LONG_BIT 32 → 32비트 [root@jmnote ~]# getconf LONG_BIT 64 → 64비트 방법 2: arch /bin/arch 문서를 참고하십시오. [root@jmnote ~]# arch x86_64 → x86_64이므로 64 bit → 만약 i386 또는 i686이면 32 bit (i386은 매우 구식...) 방법 3: uname [root@jmnote ~]# uname -m x86_64 방법 4: $HOSTTYPE $HOSTTYPE 문서를 참고하십시오. [root@jmnote ~]# echo $HOSTTYPE x86_64 방법 5: lscpu [root@jmnote ~]# lscpu | grep ^Arch A.. 2014. 7. 18.
Mysql InnoDB – 테이블 당 테이블스페이스 사용하기 여러분은 각각의 InnoDB 테이블과 인덱스 파일을 각자의 파일에 저장할 수가 있다. 이러한 특성을 “다중 테이블스페이스 (multiple tablespaces)”라고 하는데, 그 이유는 실제로 각각의 테이블이 자신만의 테이블스페이스를 가지고 있기 때문이다. 다중 테이블스페이스를 사용하는 것은 특정 테이블을 물리적으로 구분된 여러 개의 디스크에 분산 하기를 원하거나 또는 남아 있는 InnoDB 테이블에 대한 인터럽트 없이 하나의 테이블 백업을 리스토어 하고자 하는 사용자에게 편리하다. 아래의 라인을 my.cnf의 [mysqld] 섹션에 추가하면 다중 테이블스페이스를 활성화 시킬 수가 있다. [mysqld] innodb_file_per_table 서버를 재 구동하면, InnoDB는 새롭게 생성된 각 테이블.. 2014. 7. 18.
XtraBackup을 이용한 MySQL 백업 및 복구 이 글은 XtraBackup을 간단하게 소개한 글이고 자세한 사용법은 MySQL 원격 증분 백업 – Percona XtraBackup 이라는 글에서 다루고 있다. mysql 백업시 보통은 mysqldump를 사용합니다. 하지만 데이터가 커질수록 mysqldump로 백업한 데이터는 복구에 걸리는 시간이 길어집니다. mysql 서버를 중단시키지 않고 InnoDB 엔진도 핫백업이 가능한 도구로 XtraBackup이라는 오픈소스 프로그램이 있습니다. 소개를 보면 mysql 상용 백업 프로그램인 InnoDB Hot Backup 보다 더 많은 기능을 제공합니다. XtraBackup은 기본적으로 InnoDB와 XtraDB의 백업을 지원하지만 같이 설치되는 innobackupex 스크립트를 통해서 MyISAM 방식도 .. 2014. 7. 17.
개발자가 보면 암 걸리는 동영상 개발자만 정상인건가? 2014. 7. 11.
MySQL(InnoDB) Clean shutdown MySQL의 InnoDB는 MyISAM과는 달리 트랜잭션을 지원하는 스토리지 엔진이며,또한, 내부적으로 여러 종류의 버퍼와 캐시들을 가지고 있어서 어떤 비 정상적인 상황에서도 트랜잭션이 보존될 수 있도록 "Redo log"라고 하는 트랜잭션 로그를 가지고 있으며, 이 트랜잭션 로그를 이용해서, 데이터 변경이 발생해도 즉시 그 변경 내용을 데이터 파일에 기록하지 않아도 ACID를 보장할 수 있게 된다. 일반적인 MySQL의 종료 또는 비 정상적인 종료가 발생하게 되면, 데이터 파일로 기록되지 못한 모든 작업 내용은 InnoDB의 시스템 테이블스페이스와 트랜잭션 로그 파일에 남아 있게 된다. MySQL이 다시 기동되면서InnoDB 스토리지 엔진은 트랜잭션 로그와 데이터 파일의 동기화 여부 (체크포인트 지점).. 2014. 7. 11.
GROUP BY의 Filesort 작업 제거 다른 DBMS와는 달리,MySQL은 GROUP BY 를 실행하면 GROUP BY 대상 컬럼을 기준으로 GROUP BY를 실행한 후, 정렬 작업까지 같이 수행하도록 구현되어 있다. 이러한 자동 정렬 기능이 때로는 필요할 수도 있고, 필요치 않은 경우도 많이 있지만 특별히 이를 제어할 수 있는 방법이 공유되지 않았기 때문에 정렬 작업이 필요치 않은 경우에도 불필요한 정렬 작업을 같이 실행시키고 있는 경우가 많았다. 간단히 GROUP BY 작업에 대한 실행 계획을 확인해보자.root@localhost:test>explain select * from user group by name ; +----+-------------+-------+------+..------+..------+-----------------.. 2014. 7. 8.
[MySQL] 내부 변수 max_allowed_packet 우리의 친구 MySQL에는 내부적으로 런타임 때(즉, 프로그램이 시작될 때) 설정되는 내부 변수들을 가지고 있다. 이러한 내부 변수의 설정은, mysql 명령어를 이용하여 프로그램을 시작할 때, 직접 입력할 수도 있지만, my.cnf에 넣어두면 DEFAULT로 읽기 때문에, 미리미리 입력해 놓으면, 까먹거나 하는 사태가 발생하지 않는다. 그 중 오늘 살펴 볼 것은 max_allowed_packet 이다. 왜 하필 이 놈을???? 이라고 생각할 수도 있지만, 내가 오늘 이 놈때문에 고초를 겪었기 때문이라고 말할 수 밖에....... -0-;;;; 일단 ERROR가 발생한 Log를 보자.. 아래 로그는 Replication이 설정 되어 있는 두 서버가 있고, 이 중 Slave에서 Master의 Log를 다 .. 2014. 7. 3.
InnoDB 테이블 손상(깨어진)시 강제 복구 MyISAM과 달리 InnoDB 테이블들은 매우 안정적이며, 왠만해서는 데이터 파일이 깨어지는 경우는 거의 경험하지 못했다.하지만, 데이터 파일이 깨어진다면 어떻게 해야 할까 ?. DBMS 벤더를 불문하고 손상된(깨어진) 데이터 파일을 복구한다는 것은 쉽지 않은 문제이며 위험도 크다.이런 비 정상적인 현상은 어느 DBMS에서나 발생할 수 있는 현상이며, 이를 위해서 우리는 데이터베이스를 그렇게 열심히 백업하고 있었던 것이다.만약, 백업마저도 복구가 안 된다면, 결국 지금의 깨어진 데이터 파일이라도 어떻게든 복구를 해야 한다.하지만, InnoDB는 myisamchk와 같은 별도의 복구 도구를 제공하지 않는다.손상된 InnoDB 테이블의 복구는 우선 MySQL을 기동시켜서 데이터를 덤프(mysqldump, .. 2014. 7. 3.
innodb 설치 및 옵션 1. 설치가 안되어 있을 때 1) 설치 여부 확인 mysql> show variables like 'have_innodb'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_innodb | NO | +---------------+-------+ 1 row in set (0.00 sec) 2) 2가지의 설치 방법 @ mysql 설치 시에 configure 추가 설치(or 재컴파일 설치) configure 시에 option 추가( --with-plugins=innobase) ./configure --prefix=/usr/local/mysql --with-charset=euckr --with-extra-ch.. 2014. 7. 1.
InnoDB에서 Auto_Increment 문제에 대해서 정확히 알자. Overview MySQL에서는 시퀀스 개념이 없지만, 테이블 단위로 움직이는 Auto_Increment라는 강력한 기능이 있습니다. Auto_Increment 속성은 숫자 형 Primary Key를 생성하는 데 많이 사용됩니다. 특히나 InnoDB 경우에는 Primary Key 사이즈가 전체 인덱스 사이즈에 직접적인 영향을 미치기 때문에, 저도 테이블 설계에 많이 권고하는 사항이기도 합니다. 그러나 InnoDB에서 Auto_Increment가 동작하는 방식을 정확하게 알지 못하고 사용하면, 대형 장애 상황으로도 치닫을 수 있습니다. 오늘은 간단한 사례를 바탕으로 관련 내용을 공유할까 합니다. ^^ Auto_Increment In InnoDB Auto_Increment는 스토리지 엔진 별로 다르게 동작합.. 2014. 7. 1.