태그 Archives: Centos

crontab 에 등록된 스크립트의 한글 처리.

주기적인 작업을 crontab 에 등록하여 운영을 할때 캐릭터셋이 중요한 경우가 발생한다.
일반적으로 CentOS 리눅스 서버에는 i18n 설정이 되어 캐릭터셋이 운영 된다.

물론 CentOS7의 경우는 변경 되었다. ( /etc/locale.conf )

 

anyway.. cron 에 등록해서 적용하는경우 이러한 설정이 반영되지 않고 en_US가 기본 캐릭터셋으로 돌아간다 ‘ㅅ’a
때문에 캐릭터셋이 중요한 스크립트에서는 export LANG=ko_KR.eucKR 과 같이 선언을 하거나 source /etc/sysconfig/i18n내용을 호출하여 $LANG 가 정상 동작 하도록 한다 ‘ㅅ’a

echo $LANG 의 값이 euckr 혹은 utf8이 아닐 경우 i18n 혹은 locale.conf 을 불러오거나 현재 문서의 인코딩 셋을 LANG 으로 지정하도록 만든 로직 이다 ‘ㅅ’a (centos5 이하의 file 명령어 버전 차이때메동작 제대로 안됨..)

 

일반적으로 utf8서버에서 생성된 파일은 utf-8인코딩 셋일 꺼고 euc-kr 에서 생성된 파일은 euckr 문서일꺼기 때문에 =_=a
일반적인 상황에서는 export LANG=utf8 과 같은 선언으로도 충분하다.

다만 서버 관리 특성상 shell script의 버전관리를 통해 자동 배포를 하고(svn 혹은 git 처럼..)
받아서 쓰는 서버의 캐릭터셋이 예측할수 없을때 유용할 수 있음.

CentOS에서 whois 명령어를 이용한 도메인 정보 조회

CentOS 즉 레드햇 계열의 리눅스에는 jwhois 를 이용하여 linux 콘솔에서 도메인 정보조회를 할 수 있다.
설치는 yum 으로 진행을 할 수 있다.

사용법 다음과 같이 매우 간단하다.

 

다만 쓰다 보니 이것저것 불편한것이 많았다.

  1. new TLDs 가 전혀 조회가 되지 않는다.
  2. 브라우져에서 복사해서 바로 조회 할경우 http 혹은 https 까지 복제 되어 실패한다.

 

new TLDs 를 조회하기 위해서 /etc/jwhois.conf 파일을 새로운 conf 파일로 대체 한다.

 

whois 명령어를 조회해보니 아래와 같이 whois 명령어가 jwhois 명령어로 링크되어 있다.

때문에 먼저 whois 명령어를 삭제하고 새롭게 명령어를 만든다.

그리고 동작이 좀 더 되도록 입력값을 수정해서 작동되게 한다.

~]# whois https://www.enteroa.com 이 된다.
아~ 편하다 ‘ㅅ’a

CentOS7 – proftpd 설정.

RHEL 7, CentOS 7 에서 epel 레포지트리 추가 후 proftpd 설치를 할경우.

기존 버전과 틀리게 proftpd-1.3.5b 가 설치된다. (CentOS6은 proftpd-1.3.3g)

 

문제는 conf 파일이 호환 되지 않아서 ‘ㅅ’a 기존 잘운영하건 conf를 복사해서 붙여넣을 경우 작동하지 않는다.

그래서 그냥.. 설정값  ‘ㅅ’a 업데이트 (그냥 무리없이 쓸수 있는 설정이다. 당연히 어나니머스 ftp는 사용 안함)

기존과 틀려진 부분은 기존에 Certificate 와 Key 를 구분하여 받아 들였는데 pure-ftpd 처럼 한파일로 받는다.
TLS 설정을 안한경우 TLSEngine off 로 한다.

FTP용 인증서 발급 방법은 TLS통신을 위한 Public Certificate 발급&갱신을 확인 한당 ‘ㅅ’a

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

SSL 취약점을 이용한 신종 공격 방식인 DROWN, CacheBleed 취약점이 발견 되었습니다.

 

□ 개요

o 3월 1일(현지시간) 오픈SSL은 SSLv2 규격(Protocol)에 대한 긴급 업데이트 발표[1]

o SSL 취약점을 이용한 신종 공격 방식인 DROWN, CacheBleed에 대한 보안 업데이트 등

– DROWN(Decrypting RSA with Obsolete and Weakened eNcryption)

– CacheBleed: 인텔 프로세서의 Cache-bank 충돌로 인한 정보 노출을 이용한 부채널 공격

 

□ 영향 받는 사용자

– OpenSSL 1.0.2 사용자: 1.0.2g로 업데이트
– OpenSSL 1.0.1 사용자: 1.0.1s로 업데이트

 

□ 업데이트 내용

o SSLv2 프로토콜 비활성화 기본 설정 및 SSLv2 EXPORT 암호화 제거 등

 

□ 취약점 내용 및 권고 사항

o DROWN: 낡고 취약한 암호화를 통한 RSA 복호화

– RSA(Rivest Shamir Adleman): 공개키 암호화 알고리즘의 하나

CVEs 심각도 내용 비고
CVE-2016-0800 높음 SSLv2를 이용한 TLS에 대한 프로토콜 간 공격 DROWN
CVE-2016-0705 낮음 DFB, 발생 빈도 낮음
CVE-2016-0798 낮음 SRP 데이터베이스에서의 메모리 누수
CVE-2016-0797 낮음 널 포인터 역참조 및 힙 커럽션
CVE-2016-0799 낮음 고정 메모리 이슈
CVE-2016-0702 낮음 부채널 공격 CacheBleed
CVE-2016-0703 높음 분할 정복 알고리즘
CVE-2016-0704 보통 Bleichenbacher 공격

 

□ 용어 설명

o DFB(Double-Free Bug): 힙 오버플로우에 기반을 둔 공격으로, 원하는 위치의 메모리를 사용하기 위한 방법

o 널 포인터 역참조(Null Pointer Dereference): 널 포인터에 임의의 값을 대입하여 발생하는 에러

o 힙 커럽션(Heap Corruption): 동적 할당한 크기보다 더 큰 영역에 접근함으로써 발생하는 에러

o 부채널 공격(Side Channel Attack): 알고리즘의 약점을 찾거나 무차별 공격을 하는 대신 암호 체계의 물리적인 구현 과정의 정보를 기반으로 하는 공격 방법

o 분할 정복 알고리즘(Divide-and-conquer): 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법

o Bleichenbacher 공격: RSA 암호화 메시지 내용을 점차적으로 노출하기 위한 공격

 

□ 문의사항

o 한국인터넷진흥원 인터넷침해대응센터: 국번 없이 ☏118

 

[참고사이트]

[1] https://www.openssl.org/news/secadv/20160301.txt

=====================================================================

openssl 의 취약점이 발생했다.

해결 방법은 openssl 1.0.1 사용자의 경우 1.0.1s 으로 업데이트.

1.0.2 버전 사용자는 1.0.2g 으로 업데이트를 하면 된다.

다만 아직 업데이트 패치가 나오지 않았기 때문에 아래와 같이 httpd.conf 혹은 extra/httpd-ssl.conf 에 설정하여 DROWN 공격을 막을 수 있다.

주의할것은 이는 SMTP , POP , IMAP 등과 같이 SSL을 적용할수 있는 모든 분야에 발생할 수 있기 때문에

위와 같은 임시조치를 하였더라도 업데이트가 나올경우 업데이트를 실시해야 한다.

업데이트 명령어는 아래와 같으며 실행시 openssl, openssl-devel 이 업데이트 된다.

 

아래는 openssl 1.0.2g 를 소스 컴파일로 업그레이드 하는 방법이다.

기존 openssl 이 깔려 있는 상태에서 openssl 을 설치한 경우
–with-ssl=/usr/local/openssl 옵션을 추가하여apache 재컴파일을 해야 한다.

 

아울러 php.ini 의 아래 항목을 찾아 수정 해야 한다.

아니면 아래와 같이 심볼링 링크를 생성한다.

 

ImageMagick 설치

ImageMagick 썸네일을 생성하는 php extension 이다.

자세한 설명은 요기 : http://ko.wikipedia.org/wiki/이미지매직

먼저 프로그램 설치를 한다. ‘ㅅ’a

한 20~여개가 의존성으로 깔리더라능.. ㄷㄷ..

 

이후에 아래 링크에서 패키지 다운로드를 받아 서버에 업로드 하고 설치 진행을 한다.

http://pecl.php.net/package/imagick

설치 진행은 /opt 폴더에서 진행하였다.

5, 6 번째줄은 자기서버의 php 경로에 따라 달라지겠다.

 

이후에 php.ini 에 해당 익스텐션을 불러오도록 설정한다.

php 에서 익스텐션을 정상적으로 불러오나 확인

그다음 아파치 재시작을 하면 바로 적용이 됩니다 🙂