카테고리 Archives: Server engineering

yum에 대해서…

CentOS 및 redhat 계열을 쓰면서 안써본사람은 없은 yum
기본적으로 yum은 배포 패키지를 설치하는 명령어 이다 ‘ㅅ’a

/etc/yum.repos.d/ 폴더에 위치하는 레포지트리에 입려된 주소를 참조하여
패키지를 검색하고 검색된 패키지를 설계도에 맞게 설치하는 역할을 한다.

그럼 레포지트리는 무엇이냐 ‘ㅅ’a
A레포지트리에서 ccc 라는 패키지를 설치 할때 서버에 설치되는 위치와
B레포지트리에서 ccc 라는 패키지를 설치할때의 위치가 틀리다.

각 레포지트리에 따라서 설치되는 패키지의 버전역시 틀려진다.
A 레포지트리에서는 버전 1.0.0 을 /usr/share/ 폴더에 설치 하지만
B 레포지트리에서는 버전 2.0.0 을 /usr/include/ 폴더에 설치 할 수 있다.

즉 레포지트리라는 것은 설계도면을 배포하는 곳 정도로 인식을 하면 비교적 정확하다고 생각된다.

 

구글신은 많은것을 알려주지만 각각의 엔지니어 특성에 따라 주로 쓰는 레포지트리는 틀릴 수 있다.
때문에 하나의 메뉴얼을 따라 하다가 안된다고 다른 메뉴얼을 따라하다가는 시스템이 엉망으로 꼬일 수 도 있다.
( 물론 두 메뉴얼이 같은 레포지트리를 이용한 메뉴얼이라면 좀 덜꼬이겠다.. )

 

yum 은 아래와 같은 사용방법으로 일반적인 사용을 한다.

 

또한 설치된 패키지의 새 설계도면에 따른 업데이트도 할수 있다.

 

또는 아래 명령어로 모든 설치패키지를 업데이트 할수도 있다 ( 심지어 커널업데이트 까지 )

 

그리고 뭔가 설치해야할 명령어(ex ftpwho)가 있다면 아래와 같은 방법으로 명령어를 포함하는 패키지를 검색을 할수도 있다.

 

최종적으로 귀찬이즘이 극에 달한 엔지니어는 yum 업데이트를 주기적으로 하는게 싫어서
아래와 같은 방법으로 자동 업데이트 데몬을 운영할수도 있다. ( 이건 아직 나도 안해봤음… )

아파치에 Access-Control-Allow-Origin 관련 설정하기.

워드프레스 테마들은 font-awesome의 아이콘을 많이 이용 한다. http://fontawesome.io/icons

폰트가 로딩이 안될경우 아래 그림처럼 아이콘이 깨져 보이게 된다 @_@a

20160825_PicPick_154639

 

그리고 또 다른 상황으로는 하나의 워드프레스에 여러 도메인을 연결해서 쓸때 crossorigin 관련 보안 문제 때문에
폰트나 css 로딩이 되지 않아 깨져보일수도 있다.

때문에 이를 허용해 header 에 이를 허용해주는 값을 삽입해야 한다.
일반적인 경우는 프로그래밍으로 해결 할 수 있지만 js 안에서 외부 폰트파일을 불러오도록 되어 있을경우 순수 서버설정의 헤더가 들어가기 때문에 주로 폰트쪽만 문제가 발생할 수 있다.

20160825_PicPick_154449

 

이경우 .htaccess 혹은 아파치 내에서 설정을 해야 해결 할 수 있겠다. ‘ㅅ’a
아래는 Access-Control-Allow-Origin를 파일에 따라 모두 허용해 줄수 있도록 설정하는 부분이다.

적용 후 아파치를 재시작 하고 접속 확인을 해본다 ‘ㅅ’a

출처 : 스택오버플로우

리눅스 하드디스크 UUID 변경

DD 명령을 이용하거나 cat 을 이용하여 disk 클론을 뜰 경우 혹은 클라우스 서버에서 스냅샷을 이용하여 볼륨으로 환원한 뒤에 마운트를 한 경우
한 서버에 두개 UUID가 존재하게 되어 가끔 곤란한 상황이 올 수 있다.

기술적인 측면에서 한 서버에서 UUID는 겹치게 발급되어 있으면 안된다.

디스크의 UUID 는 서버내에서 blkid 명령어로 확인할 수 있다.

위와 같이 완벽히 같다면 부팅 단계에서 부터 꼬여서 문제가 발생 할 수 있다 ‘ㅅ’a

 

때문에 부득이 하게 Clone 을 사용한 경우 각 파티션의 UUID를 변경 해줘야 한다.
UUID 는 uuidgen 이란 명령어로 쉽게 만들 수 있다.

 

각 파티션에 적용은 tune2fs 명령어의 -U 옵션으로 교체가 가능하다.

역 따옴표 안의 명령어거 먼저 실행되기 때문에 위명령어로 즉시 바꿀수 있다.
변경후 blkid 명령어로 변경이 정상적으로 되었는지 재 확인 한다 ‘ㅅ’a

 

swap 파티션의 경우 tune2fs 가 아닌 mkswap 명령어로 변경한다.

swap 파티션이 이미 마운트 된 상황에서는 UUID변경이 되지 않기 때문에 swapom, swapoff 명령어로 마운트를 해제하고 진행한 뒤에 재 마운트를 한다.

 

 

PS. tune2fs 명령어는 ext2~4 의 uuid 를 변경 할 수 있다.
xfs 파일 시스템은 아래의 명령어로 uuid 변경을 진행한다.

 

smartctl을 이용한 디스크이상 사전 탐지

smartctl 명령어는 하드디스크 롬에 기록되는 형태이다. 때문에 I/O 에러 발생때문에 write가 잠겨
/var/log/messages 상에 찍히지 않는 I/O에러를 검출하는 목적으로 사용할 수 있다.

CentOS 5/6 은 이미 탑재되어 있는 명령어 이지만 Centos 7의 경우 아래와 같이 명령어 추가를 한다.

 

명령어는 작동시간, 부팅횟수, 헤더, 온도, 배드카운터, CRC 에러등등 하드디스크의 모든 종합 정보를 볼수 있다.
클라우드 – 가상디스크는 지원하지 않는다.
일반디스크인데 정보 표기다 되지 않을경우 아래 명령어서 on  시켜줘야 할 수 있다.

 

1. 아래 명령어는 SMART 속성 정보만 표기 한다.

주요 해서 봐야 하는 부분은 아래와 같다.
HEAD spindle error   //   Spin_Retry_Count  (매우 높음) = 헤드가 재 작동을 시도한 횟수.
BAD sector  //   Offline_Uncorrectable  (높음) = 읽기/쓰기에 문제가 발생한 섹터 = 배드 섹터 발생
아래는 약간은 중요도가 떨어지지만 주요해서 봐야 한다.
UDMA_CRC_Error_Count   (낮음) = HDD인터페이스 전송 CRC 오류 (sata 케이블 오류의심)

위 에러중 HEAD 관련 카운트가 1개라도 나온경우 스핀들모터 혹은 리드헤드 쪽에 문제가 발생한것이다.
이는 즉시 데이터 백업 및 디스크 교체를 진행한다.

 

2. 누적된 에러 로그를 호출한다. ‘ㅅ’a

정상일경우 아무런 메세지도 표시되지 않는다. 메세지가 출력되는 경우 아래 상세 테스트를 진행한다.

 

 

3. 상세한 테스트를 한다. ( short 1~2분 소요 / long = 약 두시간 가량 소요 )

백그라운드 테스트가 진행되며 테스트간 off-line 모드가 되고 테스팅 시간은 약 108분 걸린다고 되어 있다.
smartctl -X 명령어로 long 테스트를 중지할 수 있다.

Status 값에 failure 가 떨어질경우 백업 및 디스크 교체를 한다.

CVE-2016-2107 -취약점 Padding oracle , CVE-2016-2108 취약점 – Memory corruption ASN.1 encoder

아직 한국어 기사 혹은 취약점 공문 이런게 안떳지만..
https://www.openssl.org/news/vulnerabilities.html#y2016
openssl – Severity: High 즉 심각한 보안 취약점이 두개나 공개 되었다. ‘ㅅ’a

https://www.openssl.org/news/secadv/20160503.txt

이 공격에 대비하여 openssl 을 각각 1.0.1t 혹은 1.0.2h 로 업그레이드를 권고 하고 있다.

 

openssl 컴파일 설치 방법은 아래의 게시물 하단을 참조

CVE-2016-0800 취약점 – DROWN, CVE-2016-0702 취약점 – CacheBleed

 

Centos 5/6/7 버전에서 yum 을 이용한 openssl 을 설치 및 운용중인 경우 아래와 같이 yum으로 업데이트 하면 된다.

yum을 이용한 업데이트 이후에는 아래와 같은 명령어로 보안 취약점이 패치 되었는지 확인할 수 있다.

openssl 업데이트 후에는 아파치 재시작을 해야 적용되니 참고 ‘ㅅ’a
memory corruption 은 레드햇에서 찾아서 적용이 공식 사이트보다 하루 빨랐나보다 ‘ㅅ’a

 

PS. openssl 0.9.8 버전의 경우 AES – CBC cipher 가 없기 때문에 CVE-2016-2107 취약점은 패치가 없다.