All posts by Enteroa

webtatic 저장소를 이용한 php 7 설치

php 는 httpd 의존이기 때문에 php를 설치하는것만으로 httpd 가 설치 된다.
즉 httpd 먼저 설치하고 php를 설치해야 한다.

webtatic의 php 는 기본적으로 nts 이며 apache 가 prefork mpm 이 아닐 경우(worker, event) zts 모듈이 로딩이 되므로 매우 편리하게 사용할 수 있다.
아울러 yum을 이용한 설치이기 때문에 더 훌륭하다 =3=b

 

레포지트리 설치

 

php7 설치

 

httpd 의 mpm 방식은 아래와 같이 확인한다.

httpd -V 의 값에서 MPM 이 worker 로 확인 되었기 때문에 cron 등에 등록을 하려면 zts-php 명령어를 써야 한다.
worker 방식은 메모리를 적게 쓰지만 다종의 웹솔루션을 운영하기엔 적합하지 않다.
다만 apache 2.4.27 에서 부터 http/2 를 지원하는데 있어서 profork 방식을 더 이상 지원하지 않는다.

 

서버에서 php 명령어 실행은 아래와 같이 한다.

 

httpd를 worker MPM 으로 설치 하고 webtatic 제공의 php 를 설치한 서버에서 오라클 접속을 사용하기 위해 oci8 익스텐션 설치 진행은 아래와 같이 진행 했다.
phpize, config-php 역시 각각 zts-phpize, zts-php-config 의 것을 사용한다.

 

설치된 oci8 은 웹문서에서 phpinfo(); 로 호출하거나 리눅스 쉘에서 아래와 같이 확인이 가능하다.

 

PS. webtatic 에서는 php70w-odbc를 제공 하므로 yum 설치로 odbc를 이용할 수 있다.

openDMARC 설치

기존에 구글에 대량메일을 보내기 위한 opendkim 설치 및 운용 방법을 올렸었다.

DMARC (Domain-based Message Authentication, Reporting & Conformance)

DMARC는 SPF, DKIM의 검사 결과를 기초로 TXT 레코드의 내용에 따라 메일 발송 차단, 혹은 자신의 메일 도메인을 도용한 스푸핑 메일에 대한 보고 등을 설정할 수 있는 유용한 툴 이다.

 

사용법은 opendkim 보다 쉽지만 일부 설정값이 dkim을 필요로 함으로 dkim 과 dmarc 를 같이 진행하는것이 좋다.

 

설정을 위해서는 도메인이 있어야 하며

사전에 메일 발송서버의 IP 와 DNS A 레코드에 정식등록된 서버명이 필요로 한다.

여기서 설명은 서버아이피 123.123.123.123 의 호스트네임 mail01.enteroa.com 을 기준으로 설명 한다.

 

설치는 CentOS7 에서 진행을 하였습니다.

설치는 끝…

 

설치 완료 후 vi 를 이용하여 /etc/opendmarc.conf  파일을 수정 합니다.

 

sendmail.mc 파일의 하단에 opendmarc 필터를 추가합니다. (:8891 = open dkim) (:8893 = dmarc)

make를 하고 sendmail 을 재시작 합니다.

서버 설정이 끝났습니다.

 

다음은 DNS 설정으로 TXT 레코드 등록을 진행합니다. (서버연결롱 A 레코드 및 _dmarc TXT 레코드 입니다.)

 

시작서비스 등록 및 서비스 시작.

 

아울러 지속적인 운영을 위해 suffix 파일을 주기적으로 업데이트 해야 합니다.

 

구글의 DMARC 메뉴얼 입니다.

https://support.google.com/a/answer/2466563?hl=ko

아래는 dmarc wiki 입니다.

https://dmarc.org/wiki/FAQ#When_can_I_expect_to_receive_my_first_aggregate_report.3F

Cron 을 활용한 SSD 강제 trim

background trim이 활성화 된 경우 성능 저하에 별다른 대비를 할 필요성이 없어지기 때문에 시스템 관리가 편해진다.

물론 평상시 파일 삭제시 trim 활성화가 되어 있다면 그만큼 성능 저하가 발생한다.

 

시스템 목적에 따라 최대한의 IO 성능을 확보하기 위해서 cron 과 스크립트를 활용하여 주말등 한가한 시간대에 trim 이 될수 있도록 한다.

목표 시간이 없이 단순 주말에 하는것을 원한다면 /etc/cron.weekly 폴더안에 생성한다.

 

sudo 보안 취약점 CVS-2017-1000367

sudo 명령을 이용하여 root 권한을 탈취 할 수 있는 보안 취약점이 공개 되었습니다.

일반적인 보안 권고 사항인 그룹 지정(wheel 과 같은)을 한 경우에는 관련이 없습니다.

또한 selinux 를 활성화 하고 그룹 지정이 없이 운영 할 경우에는 아래 메뉴얼에 따라 sudo 명령어를 업데이트 하시기 바랍니다.

다만 업데이트가 쉽기 때문에 진행을 하는것이 좋습니다 🙂

[참고 사이트]

Ubuntu https://www.ubuntu.com/usn/usn-3304-1/
CentOS https://lists.centos.org/pipermail/centos-announce/2017-May/022450.html

주의 사항 : 업데이트를 할 경우 명령어의 소유권 및 퍼미션이 초기화가 되어 권한이 -rwsr-xr-xr   소유권 및 그룹이 root:root 가 되므로 기존에 쓰던 정보를 확인 하고 나서 sudo 업데이트 후에 재 지정 해야 합니다.

 

CentOS

 

Ubuntu

 

CentOS / ubuntu 계정 잠금 임계값 설정

서버에 접근을 할때 패스워드가 일정 횟수 이상 틀릴 경우 잠깐이라도 해당 계정을 잠금 처리 하는것이 사전 대입 방지(brute force attack) 공격에 대비 할 수 있다.

이방법은 pam.d 에 설정하는것으로 pam.d를 이용하는 모든 접속 서비스 sasl, pop3, smtp,ssh , ftp 에 공통 적용이 된다. (물론 pam.d 설정을 별도로 해서 쓴다면 이야기는 바뀌겠다.)

물론 이러한 사전 공격 대응 방법은 일반적으로 iptables 로직이나 hosts.deny 쪽에서 설정도 가능하지만…

최근 공격 방식은 port scan 이후에 ssh 공격4회 -> pop3 공격4회 -> smtp 공격 4회 -> ftp 공격 4회 의 순서로 이루어 진다.

즉 iptables 로 3 ~ 5회 제한으로 하는경우가 많기 때문에 프로토콜을 바꾸어 가며 로그인을 사전대입 공격을 하고 공격이후 일정시간 interval 이후에 다시 순차 공격을 한다.

때문에 이와 같은 설정을 추가로 한다.

pam_tally2 를 이용하여 CentOS 7 및 ubuntu 14.04 에 설정을 하는 방법이다.

  • CentOS 7

vi /etc/pam.d/system-auth   (2번째 줄은 변경, 13번째 줄은 추가 한다.)

vi /etc/pam.d/password-auth (2번째 줄, 8번째줄을 추가한다.)

  • Ubuntu 14.04 LTS

vi /etc/pam.d/common-auth (16번째줄을 추가한다.)

추가되는 줄의 deny=5 는 몇 회 틀렸을 경우 잠금을 할지 선언하는 부분이다.
unlock_time=600 잠금시간을 설정 한다. (10분=600초)


이후 적용되었는지 다른 세션을 열어 접속시도 및 잘못된 패스워드를 대입하면서 테스트 해볼 수 있다.

로그인 테스트를 하면서 패스워드 임계값 5회 를 초과한경우 아래와 같은 메세지를 볼 수 있다.

잠긴 상태이므로 설정한 10분을 기다린 뒤에 접속을 할수 있으며, 필요시 pam_tally2 명령어로 누적 카운트를 초기화 해줄 수 있다.