시스템관리자의 쉼터, 커피닉스 - 팁, 강좌 http://coffeenix.net 시스템관리자의 쉼터 - *NIX, 보안, 네트웍 운영, IT 정보 ko 퍼미션, 소유자, 파일 시간을 똑같이 다른 파일에 적용하기 http://coffeenix.net/board_view.php?bd_code=1792 작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2016.7.5(화)

A라는 파일이 있다. A 파일 내 문자열을 변환 후 B라는 파일로 저장했다.

 
-rw-------. 1 root root 4529 12월 29 2013 A
-rw-r--r--. 1 root root 4535 7월 5 13:19 B
 


B라는 새로운 파일로 저장했을 때 바뀌는 것은 퍼미션, 소유자(경우에 따라서), 그리고 파일 날짜. 이렇게 3개다. 이 3가지를 원래 파일과 동일하게 맞추고 싶다. 그리고 파일명도 B에서 원래대로 A로 바꾸려고 한다.

1. 리눅스에서

 
chmod --reference=$ORIG $TEMP # 퍼미션 원래대로
chown --reference=$ORIG $TEMP # 소유자 원래대로
touch -r $ORIG $TEMP # 날짜 원래대로
mv $TEMP $ORIG # 파일명 원래대로
 


2. FreeBSD에서

2가지 방법이 있다.

1) GNU coreutils를 설치해서

FreeBSD의 chmod, chown는 coreutils가 아니라서 리눅스에서 사용하는 옵션이 없다. coreutils 패키지를 설치하면 리눅스와 동일하게 사용할 수 있다.

...]]>
시스템 관리 / 서버운영 Tue, 05 Jul 2016 17:30:21 +0900
apache에서 404, 403 액세스 로그만 별도로 저장하기 http://coffeenix.net/board_view.php?bd_code=1786 작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2016.4.12(화)

지인이 아파치(apache)에서 전체 요청 로그와 별도로 404 not found나 403 forbidden 액세스 로그만 남기는 방법이 있는지 물어본다. ELK처럼 웹로그를 DB로 쌓는다면 404, 403 액세스 로그만 별도로 추출하는 게 문제가 되지 않을 것이다. 모두 쌓고, 필요한 것만 바로 뽑아보면 되니깐. 하지만 로그를 파일로 쌓는 경우 404와 403을 별도로 저장하는 방법이 있을까? 난 모르는데. 떠오르는 방법은 2개.

1) apache에서 HTTP status code값을 갖고 있는 변수가 있다면 SetEnvIf를 이용해서 가능할 것. 그러나 내가 알기로는 이런 변수는 없다.
2) CustomLog 설정에서 파이프(|)를 써서 외부 프로그램을 요청한다. 외부 프로그램에서 status code에 따라 로그를 분리해서 저장한다.


1. mod_setenvifplus 모듈



apache에 HTTP status code값을 갖고 있는 변수는 없다. 그런데 mod_setenvifplus 모듈에 해당 변수가 있다. Response_Status 변수명에...]]>
시스템 관리 / 서버운영 Tue, 19 Apr 2016 18:09:31 +0900
Linux, FreeBSD에서 Dell PERC RAID 펌웨어 업그레이드 http://coffeenix.net/board_view.php?bd_code=1785 작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2016.4.12(화)

MegaCLI 명령 설치와 기본 명령은 '참고 자료'에 적어둔 'MegaRAID용 Megacli 명령 사용하기'를 참고하길 바라며, 이 글에서는 Firmware를 다운받아 업그레이드 하는 방법을 설명한다.


1. 펌웨어 다운로드 받기

Dell 홈페이지에서 최신 펌웨어를 다운로드 받는다.

Dell -> Support -> Drivers and Downloads ( http://www.dell.com/support/home/us/en/04/Products/?app=drivers ) -> Browse for a product -> Server 선택 -> Category에서 'SAS RAID'를 선택하면 펌웨어를 다운로드 받을 수 있다. 예를 들어 Dell PERC 6/i용 펌웨어는 'Dell PERC 6/i Integrated Firmware Update ( http://www.dell.com/support/home/us/en/19/Drivers/DriversDetails?driverId=F96NR )페이지에서 받는다. 이 중에 SAS_RAID_..._ZPE.exe 파일(zip파일임)을 다운받는다.

 
# unzip SAS_RAID_PERC6i-int_6.3.3-0002_A00_ZPE.exe
 


이 중에 FW????.rom (예 : FW1371iI.rom) 파일 하나만 필요...]]>
시스템 관리 / 서버운영 Tue, 19 Apr 2016 18:07:06 +0900
다중 routing table 사용하기(multiple route table) - 다른 네트웍 대역 IP 사용 하기 http://coffeenix.net/board_view.php?bd_code=1784 이때, 다른 네트웍 IP로 각각 외부 서비스가 되도록 설정이 필요한 경우가 있는데, 이때 문제가 되는 것이 gateway 설정입니다.

구글링읕 하다 보면 이러한 문제에 대하여 gateway를 2개 설정하라는 둥의 글들이 보이는데요.
결과가 불확실 하고, 다중 default gateway 설정시에는 우선순위에 따라서 동작합니다.
이에 관점을 바꿔서 route 가 문제면 다중 route를 사용하면 어떨까 하고 접근해 보니 보다 쉬운 방법이 존재 합니다.


링크 공유 드리며, 간단한 설명 드리면 아래와 같습니다.
http://www.thegeekstuff.com/2014/08/add-route-ip-command/

1. 새로운 route-table을 만들고(/etc/iproute2/rt_tables 에 추가)
2. 새로운 IP 대역에 대해 새로운 route table에 설정(route 설정)을 넣어주고(ip route add)
3. Ip rule 명령어로 main rule 보다 높게 올려주고(ip rule add)
4. 재부팅시 자동으로 올라오게 설정해 준다.(rc.local등에..)


Centos 6에서 해봤는데, 아주 잘 됩니다. network 추가시 하나씩 하나씩 route table 만들어서 해주면 되고요.

다들...]]>
시스템 관리 / 서버운영 Tue, 23 Feb 2016 15:49:31 +0900
logstash에서 로그를 파일로 저장할 때 날짜별로 저장하기 http://coffeenix.net/board_view.php?bd_code=1781 작성일 : 2015.10.13(화)
작성자 : 좋은진호(truefeel, http://coffeenix.net/ )



logstash를 통해 수집된 데이터를 elasticsearch에 쌓고 있다. 수집된 데이터를 elasticsearch에 넣지 않고 로그파일로 저장할 필요가 생겼다. lnav 같은 쉘용 로그분석툴을 사용하기 위해서.

 
output {
file {
path => "/data/log/%{+YYYY_MM_dd}.log"
message_format => "%{message}"
}
}
 


위와 같이 설정했을 때 2015_10_13.log 파일명으로 로그를 쌓는다. 그런데 한가지 문제가 있다. logstash 시간은 UTC기준이라서, 우리나라 시간 AM 9시 이전은 2015_10_12.log 파일명에 쌓고, 9시 이후는 2015_10_13.log 파일명에 쌓는다.

다음과 같이 설명하면 서버의 timezone 기준(KST)으로 날짜 파일명에 로그를 쌓을 수 있다.

 
filter {
ruby {
code => "event['date_index'] = event.timestamp.time.localtime.strftime('%Y_%m_%d')"
}
}

output {
file {
...]]> 시스템 관리 / 서버운영 Wed, 02 Dec 2015 18:18:43 +0900 TestDisk로 삭제한 파일 복구 http://coffeenix.net/board_view.php?bd_code=1778 작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2015.7.20(월)

FreeBSD에서 삭제한 파일을 복구할 때 TestDisk( http://www.cgsecurity.org/wiki/TestDisk ) 외에 마땅한 툴이 없다.
리눅스에서는 TestDisk 외에 ext3만 지원하는 ext3grep이 있고 ext3, ext4를 지원하는 extundelete라는 좋은 툴이 있다. 개인적으로 리눅스에서 파일 복구할 땐 extundelete를 사용한다.



이 글은 FreeBSD를 기준으로 설명하지만, 설치 외에 리눅스와 동일하다. pkg로 설치한다.

 
# pkg install testdisk
 


df로 복구할 파티션명을 확인한다. 잘 아시겠지만 복구된 파일을 임시 저장할 디렉토리는 '복구할 파티션'과 상관없는 파티션에 있어야 한다. 덮어지지 않도록.

 
# photorec /log /d /home/coffeenix/undelete/ /dev/mfid0s1e
 


1) /log : photorec.log 파일을 남긴다.
2) /d /home/coffeenix/undelete/ : 복구한 파일을 임시 저장할 디렉토리
3) /dev/mfid0s1e : 복구할 파티션

[ 초기 ...]]>
시스템 관리 / 서버운영 Tue, 21 Jul 2015 18:24:10 +0900
FreeBSD 10에서 sendmail DH key 에러 http://coffeenix.net/board_view.php?bd_code=1777 작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2015.7.14(화)

FreeBSD 10.1에서 서버 내부 메일(cron결과 메일, 서버 로그 메일 등) 발송할 때, 다음과 같은 에러가 나왔다.

 
Jul 14 13:05:36 cnx sendmail[35077]: STARTTLS=client, error: connect failed=-1, reason=dh key too small, SSL_error=1, errno=0, retry=-1
Jul 14 13:05:36 cnx sm-mta[35078]: STARTTLS=server, error: accept failed=0, reason=sslv3 alert handshake failure, SSL_error=1, errno=0, retry=-1, relay=localhost [127.0.0.1]
Jul 14 13:05:36 cnx sendmail[35077]: ruleset=tls_server, arg1=SOFTWARE, relay=[127.0.0.1], reject=403 4.7.0 TLS handshake.
 


이 에러가 왜 갑자기 나오는지 확인해봤더니 FreeBSD 10.1-p13에서 다음과 같은 패치가 이뤄졌다. 패치 후 DH Key(Diffie-Hellman Key)가 너무 짧아서 생겼던 것.

 
20150618: p13 FreeBSD-EN-15:08.sendmail
Improvements to sendmail TLS/DH interoperability. [EN-15:08]
 


openssl...]]>
시스템 관리 / 서버운영 Tue, 14 Jul 2015 18:20:36 +0900
zabbix 셋팅값만 백업 후 DB 새로 구축하기 http://coffeenix.net/board_view.php?bd_code=1775 작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2015.5.26(화)
정리일 : 2015.6.17(수)

zabbix 를 오래 운영하면 zabbix DB가 무럭무럭 자라서 용량이 상당히 커지고 속도도 느려진다.
수집한 데이터는 오래될수록 필요가 없으므로 이 데이터는 제외하고, 'zabbix 설정값만' 뽑아서 zabbix DB를 새로 구축하려고 한다.

[ 조건 ]
- 수집한 데이터는 버린다.
- 설정값(호스트, 템블릿, ...)만 받는다.
- zabbix DB를 새롭게 시작한다.




1. 설정값만 백업하기

Zabbiz 2.0, 2.2, 2.4를 지원하는 zabbix-mysql-dump 라는 간단한 스크립트가 있다.
https://github.com/maxhq/zabbix-backup/wiki 에서 셀스크립트를 다운 받는다.

스크립트에서 zabbix DB 접속 정보와 mysqldump 경로(스크립트내에서는 /usr/bin/mysqldump로 되어 있음)를 확인한다.

 
DBHOST="127.0.0.1"
DBNAME="zabbix"
DBUSER="..."
DBPASS="..."
 


스크립트를 실행하면 현재디렉토리 dump 파일이 생겼을 것이다....]]>
시스템 관리 / 서버운영 Wed, 17 Jun 2015 18:33:14 +0900
HAProxy로 로드밸런싱(LB, 이중화) 구성 http://coffeenix.net/board_view.php?bd_code=1771 작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2015.3.10(화)

HAProxy는 L4(TCP), L7(HTTP) 네트웍 스위치를 대체할 수 있는 로드 밸런싱(load balancing), HA(high availability)용 오픈소스다. 예를 들어 웹서버가 여러대가 있고, 이 서버를 로드 밸런싱한다면 웹서버 앞단에 HAProxy서버를 셋팅한다. 여러대 웹서버 중 1대가 장애발생해도 서비스에는 지장이 없다. HAProxy는 바로 서버 장애를 인지하고 해당서버를 서비스에서 제외시키기 때문이다.




1. HAProxy 기본 설정

 
global
log 127.0.0.1 local1 # Linux
# log /var/run/log local1 # FreeBSD

#
maxconn 4096
uid 99
gid 99
daemon

defaults
log global
mode http
# option httplog
option dontlognull

retries 3
redispatch
maxconn 4000
contimeout 5000

listen wwwlb 0.0.0.0:80
option httpchk
option httpclose
option forwardfor

balance roundrobin
server www1 10.10.10.1:80 check inter 3000 ...]]> 시스템 관리 / 서버운영 Tue, 24 Mar 2015 18:39:05 +0900 FreeBSD에서 CARP와 HAProxy로 이중화(HA) 구성 http://coffeenix.net/board_view.php?bd_code=1770 작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
작성일 : 2015.2.17(화)


1. CARP(Common Address Redundancy Protocol)란

네트웍에서 VRRP(Virtual Router Redundancy Protocol)를 들어본 적 있는가?
VRRP, CARP 이름에 Redundancy(리던던시)가 들어가 있는 것을 보면 용도가 무엇인지 짐작이 갈 것이다.
라우터 1대만 운영할 때 이 라우터에 문제가 발생하면 서비스 장애가 발생한다. 이를 막고자 기본라우터 + 하나 이상의 백업 라우터를 구성한다. 그리고 VRRP로 라우터에 가상의 서비스 IP(VIP)를 부여한다. VIP로 서비스를 하다가 기본 라우터가 장애가 발생하면 백업 라우터로 VIP가 자동으로 넘어가므로 서비스 장애는 VIP가 넘어가는 아주 짧은 순간 뿐이다. 장애시간이 없다고 봐도 좋다.

VRRP의 라이센스를 피해서 새롭게 구현한게 CARP다.

이글은 다음과 같은 서버 환경에서 설명하겠다.

- VIP(서비스 IP) : 10.10.10.10
- 서버 1 : 10.10.10.1
- 서버 2 : 10.10.10.2

CARP 이중화(또는 다중화)는 Active-Active구성은 되지 않고, Active-Standby로 구성...]]>
시스템 관리 / 서버운영 Wed, 11 Mar 2015 10:42:31 +0900