카테고리 Archives: linux

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 명령어로 누적 카운트를 초기화 해줄 수 있다.

mod_pagespeed with apache 2.4.x

구글이 공개한 mod_pagespeed를 컴파일된  apache 2.4 에 설치하는 방법을 설명 한다.
구글의 경우 nginx 의 경우 컴파일 버전을 apache 버전은 rpm 버전으로 제공 하고 있으며
일반적으로 yum 설치되어 /etc/http 안에 위치한경우 rpm 설치만으로 활성화가 가능 하다.

 

다만 컴파일을 해서 prefix 가 다른곳에 있을경우 rpm을 설치한다면 dependency 때문에 yum 으로 httpd 가 설치되어 시스템이 꼬이게 되므로 설치할 수 없는게 일반적인 상식 ‘ㅅ’..

하지만 yum 으로 설치가능한 httpd 의 경우 버전이 매우 낮아 새로운 기술을 전혀 활용하지 못한다… SNI 라던가 HTTP/2 라던가..
때문에 구글이 배포한 rpm을 분해하여 서버에 맞게 편집한뒤에 적용을 한다 ‘ㅅ’b
1. mod_pagespeed 배포 는 https://developers.google.com/speed/pagespeed/module 에서 다운받아서 rpm2cpio 명령어를 이용해 rpm을 분해 한다.

 

2. 압축해제된 파일을 경로에 맞게 수정 이동 시킨다 ‘ㅅ’a  ( 예제 에서 컴파일된 위치는 /usr/local/apache 이다. )

 

3. httpd.conf 에서 pagespeed.conf 파일을 불러오도록 설정 한다.

 

4. 아래는 개인적으로 편집한 pagespeed.conf 파일이다 ‘ㅅ’a

memcache 를 쓴다면 중간에 주석처리된 ModPagespeedMemcached 관련 옵션을 활성화 한다. ‘ㅅ’a

 

외부에서 js 를 가져오는 부분의 속도가 빨라지기 때문에 js를 많이 쓰는 복잡하고 느린 사이트일수록 사이트 가속된것을 체감할수 있는것으로 확인됨 ‘ㅅ’b
그리고 또 js minify 기능이 있기 때문에 별도로 개발자가 신경을 쓰지 않아도 되기 때문에 매우 편한 mod 인듯…

설치를 추천합니다 ‘ㅅ’ b

간혹 캐시 적용으로 사이트가 특정 경로상에 문제가 발생하는 경우 아래와 같이 특정 경로에서 기능을 끄거나
사이트 전제 pagespeed 적용을 해제 할 수 있다.

 

OWASP CRS 룰셋 v3.0.0

기존 v 2.2.9  엄청나게 많은 부분이 바뀌었다. ( 초급자에게 오히려 다루기가 쉬워졌다. )
기존 CRS 를 쓰던 사람은 v3.0.0 으로 업그레이드 하지 말고 새롭게 설치해야 한다.
– 설치 방법은 apache 기준이다. Nginx, IIS 의 경우 포함된 INSTALL 문서를 참조하여 설치해야 한다.
물론 기존에도 spamhouse 연동이나 spam bot의 에이젼트 구분을 하던부분이 있었지만.
projecthoneypot.org 연동으로 기존 룰셋에 비해 스팸 방지 기능이 매우 탁월해 졌다.
– Blocking Based on IP Reputation 부분을 정독하고 SecHttpBlKey 를 연동해야한다.

 

  • git을 이용하여 룰셋 다운로드를 하고 기초 메뉴얼에 따라 파일 명 변경등을 한다.

 

  • httpd.conf 에서 아래와 같이 각 룰셋 등을 불러오도록 설정한다.

 

  • 이후 crs-setup.conf 수정을 한다. ( 사랑해요 구글 번역♥ )

conf 파일중 “Project Honey Pot HTTP Blacklist” 부분은 제공되는 URL을 참조하여 SecHttpBlKey 키를 받아 사용한다.
https://www.projecthoneypot.org 을 접속 한 뒤에 회원 가입메일 인증을 한뒤에 간단히 키를 받을 수 있다.

기초적인 crs-setup 이다 좀더 고급적인 설정을 하려면 하나하나 읽어보고 세팅해야한다 ‘ㅅ’a
Paranoia Level Initialization 선언을 1 이나 2 정도로 하는것이 좋을것으로 생각되며
현재 올려둔 기본 세팅 설정은 level = 1 이다.

 

  • 룰셋 예외 처리

사전 룰셋 예외처리는 rules/REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf 에서 선언된다.

주의할점은 여러줄을 선언할 경우 id:1000 그다음을 id:1001 이런식으로 틀리게 줘야 한다.

사후 룰셋 예외 처리는  rules/RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf 에서 선언이 된다.

Project Honey Pot HTTP Blacklist 에서 구글 봇의 접속조차 막기 때문에 추가 해서 운영하자 ‘ㅅ’a

기존 과 같이 가상호스트 내에서 특정 룰셋만 끄는것 역시 유효 하다.

 

 

PS.1 여기까지 읽기전에 httpd.conf 에서 OWASP csr 룰셋을 불러오는 설정이 httpd-vhost.conf  혹은
         httpd-ssl.conf 보다 먼저 불러와야 한다는걸 눈치챘다면……..    참 잘했어요 🙂

PS.2 apache 2.4.11 보다 낮은 버전의 경우 SecRule 선언을 제대로 인식하지 않을 수 있다.
         이때는 아래 명령어로 여러줄로 되어 있는 Rule 선언을 한줄로 만들어 줘야 한다.

PS.3 아래 명령어로 현재 modscurity 로직에 걸린 error_log 를 확인할 수 있다. IP  ruleID  URL/URI  가 출력된다.
         룰셋 910000 910160 910170 의 경우 악의적인 / 의심되는 / 스패머 IP로 분류되는 것으로 제외하고 본다.