스크립트 스케줄을 잡아줄 때 유저권한으로 파일을 실행할 경우가 있다.

그때는 해당 유저의 권한으로 잡아주고 실행하도록 설정하여야 한다.

그럴때 crontab에 잡아주는 부분이 다음과 같다.

04 4 * * * su -l oracle -c "/파일경로"

권한을 얻는 su 명령어를 사용한다.

su
-ㅣ 옵션 : 사용자 로긴 스크립트 파일을 읽어 사용자의 환경으로 변경한다.
- c 옵션 : 한개의 명령만 실행하도록 한다.

일케 잡아주면 되겠다.

== 혁진이 힘들어요~ㅠ_ㅠ ==

한국정보보호진흥원에서 신청하면 만들어 주는거다.
신청하는 거는 검색하면 정말 마니 나온다. 양식에 맞춰 신청하면 된다.

whistl은 웹쉴이 도는 의심되는 파일을 찾아내는 것으로 유용하게 쓰이는 툴이다.
신청하는 곳에 아이디/패스워드 신청을 하는데 그거 잘 기억해야한다;;;
잊어먹음 곤란하다는 ^^;;

파일을 받아 압축을 풀면 여러 파일이 있다.

README.txt  pattern.bin  usage.dat  whistl.log  whistl_kernel_2.4 whistl_kernel_2.6
validate.bin

README.txt 파일을 보면 한글로 잘 설명이 되어있다. 그걸 꼭 읽고 참고하자!!

실행하기전에 커널버전에 따른 실행파일을 선택한다.
whistl_kernel_2.4 / whistl_kernel_2.6  이 두파일인데 커널버전에 맞게 실행권한을 준다.
난 커널이 2.6버전이라 whistl_kernel_2.6에 실행권한을 부여하였다.

또 바로 실행한다고 되는 것이 아니라 설정을 해야한다.

./whistl_kernel_2.6 -c

이라고 하면 다음과 같은 설정이 나온다.

===================================================================
Choose Menu : s

        [1] Checking Directory : /home                                                 <= 체킹위치
        [2] Inspection Center directory : /tmp                                         
        [3] Extension of php     : inc,php,php3,php4,php5,ph,txt,html,htm <= php에서 찾을 파일명들
        [4] Extension of jsp     : jsp,js                                                  <= jsp에서  찾을 파일명
        [s] save                                                                                 <= 저장
        [q] quit                                                                                   <= 나가기
====================================================================

이렇게 해서 나와 실행을 하면 해당 체킹경로에 대해 웹쉘의심 체크를 한다.

./whistl_kernel_2.6

실행을 하면 아이디/패스워드 입력란이 나오고 신청한 아이디/비번을 입력한다.

돌아가기 시작하면 시간이 좀 거리는 편이다.
마친 상태는 아래와 같다.
=================================================================================
id : nanuminet
pwd : nanuminet!
Checking the configration
        [Config] Checking directory : /home
        [Config] Inspection Center directory : /tmp

Checking the update status
        [INFO] Pattern Update Finished


Checking /home directory
        [1 Found] /home/hyukjin/경로/파일명
        [1 Found] /home/hyukjin/경로/파일명
        [1 Found] /home/hyukjin/경로/파일명

Check Result
        [INFO] 7365 Files checked
        [INFO] 9 Suspected WebShell
        [INFO] Time cost : 00:53:12
        [INFO] Finish sending the checking result

[Press <ENTER> to continue]
        [1] [1 Found] /home/hyukjin/경로/파일명
        [2] [1 Found] /home/hyukjin/경로/파일명

[ view result(v), select (hit num), quit(q) ] : q
=================================================================================

q 누르고 나와서

해당 내용이 whistl.log 에 로그로 기록이 되어 있으니 확인하면 되겠다.
체크된 파일은 의심파일이니 꼭 확인하여 내용을 수정 또는 삭제를 해야한다.


다운

http://sourceforge.net/projects/rkhunter/ 에서 받아도 되고
바고 받는 것은
wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.3.4/rkhunter-1.3.4.tar.gz?use_mirror=cdnetworks-kr-1


rkhunter의 압축을 풀고 
./installer.sh  --layout /usr/local --install 옵션으로 플렛폼 독립적인 /usr/local에 설치할수 있다.
installer.sh만 실행하여 여러 옵션을 볼 수 있다.


보통 기본값으로 설정은
./installer.sh -layout default -install

=================================================================
Checking system for:
 Rootkit Hunter installer files: found. OK
 Available file retrieval tools:
    wget: found. OK
Starting installation/update

Checking PREFIX /usr/local: exists, and is writable. OK
Checking installation directories:
 Directory /usr/local/share/doc/rkhunter-1.3.4: creating: OK.
 Directory /usr/local/share/man/man8: exists, and is writable. OK
 Directory /etc: exists, and is writable. OK
 Directory /usr/local/bin: exists, and is writable. OK
 Directory /usr/local/lib: exists, and is writable. OK
 Directory /var/lib: exists, and is writable. OK
 Directory /usr/local/lib/rkhunter/scripts: creating: OK.
 Directory /var/lib/rkhunter/db: creating: OK.
 Directory /var/lib/rkhunter/tmp: creating: OK.
 Directory /var/lib/rkhunter/db/i18n: creating: OK.
 Installing check_modules.pl: OK.
 Installing check_update.sh: OK.
 Installing check_port.pl: OK.
 Installing filehashmd5.pl: OK.
 Installing filehashsha1.pl: OK.
 Installing showfiles.pl: OK.
 Installing stat.pl: OK.
 Installing readlink.sh: OK.
 Installing backdoorports.dat: OK.
 Installing mirrors.dat: OK.
 Installing os.dat: OK.
 Installing programs_bad.dat: OK.
 Installing programs_good.dat: OK.
 Installing defaulthashes.dat: OK.
 Installing md5blacklist.dat: OK.
 Installing suspscan.dat: OK.
 Installing rkhunter.8: OK.
 Installing ACKNOWLEDGMENTS: OK.
 Installing CHANGELOG: OK.
 Installing FAQ: OK.
 Installing LICENSE: OK.
 Installing README: OK.
 Installing WISHLIST: OK.
 Installing language support files: OK.
 Installing rkhunter: OK.
 Installing rkhunter.conf: OK.
Installation finished.
==============================================================> 설치과정

현재 최근버전은 1.3.4이고 tar.gz 형식으로 제공하나 rpm 사용이 가능한 시스템은 rpm으로 만들수도 있다.
=> rpm -ta  rkhunter-1.3.4.tar.gz 명령으로 /usr/src/redhat/RPMS/noarch/rkhunter-1.3.4-1.noarch.rpm

rkhunter을 실행한다.

rkhunter -c

엔터를 치며 결과를 확인하고 다음 체킹으로 넘겨준다.
/var/log/rkhunter.log => 체킹결과는 이곳에 로그로 저장이 된다.

다른 옵션들

rkhunter --configfile = 설정 파일 경로 설정
rkhunter --append-log = 로그파일을 갱신 하지 않고 덧붙임, 이전로그와 함께 보관
rkhunter -c, --check = 시스템 체크 
rkhunter --sk, --skip-keypress = 기본적으로 각 테스트후 사용자 입력을 기다리나 이 옵션으로 계속 체크 가능
rkhunter --rwo, --report-warnings-only = 경고 메세지만 출력
rkhunter --display-logfile = 실행 종료후 로그파일 출력


웹얼라이져 설치하기!!
webalizer


yum으로도 설치가 가능하지만 한글로 나오게 하려면 한글 korean옵션을 주어야 하기에 소스컴파일로 설치한다.

먼저 필요한 것을 설치한다. 

yum install zlib-devel libpng-devel gd-devel 

그리고 소스를 다운받는다. 공식사이트 가서 다운 받으면 되겠다.


일케 wget을 이용하여 바로 다운을 받는다.

다운을 받아 압축을 푼다.

tar xfz webalizer-2.21-02-src.tgz 

그리고 소스컴파일 한다.

./configure --prefix=/usr/local/webalizer --with-language=korean 

prefix로 한곳에 몰아주고 언어를 한국어 옵션 달아준다.

make

make install 

pre픽스로 파일을 몰아 설치하였기에 환경변수 등록해 준다. 명령어 먹히도록!!

echo “export PATH=$PATH:/usr/local/webalizer/bin”>> /etc/profile 

source /etc/profile   적용!!


다음은 webalizer.conf 파일을 만드는 것이다.
기본적으로 제공되는 샘플이 있긴 하지만 원하는 경로에 파일을 두고 실행하면 적용이 될것이다.
그럼 계정별 웹얼라이져 분석화면이 만들어 지는 것이다.

도메인.webalizer.conf 이런식으로 이름을 달리하여 관리,

기본 conf를 사용하여도 되고 이건 개인적인 conf설정이다.

========================================================================================
LogFile         /var/log/httpd/도메인-access_log     ### 아파치 access로그 경로
OutputDir       /home/웹얼라이져 웹 생성경로/public_html/webalizer
HistoryName     /var/lib/webalizer/도메인-webalizer.hist        ###웹얼라이져 해당 도메인 히트파일 경로
Incremental     yes
IncrementalName /var/lib/webalizer/도메인-webalizer.current
HostName        bluelife.co.kr
PageType        htm*
PageType        php*
PageType        cgi
PageType        pl
HideSite        bluelife.co.kr
HideSite        www.bluelife.co.kr
HideReferrer    Direct Request
HideReferrer    bluelife.co.kr
HideReferrer    www.bluelife.co.kr
HideReferrer    web.bluelife.co.kr
#HideURL                *.css
#HideURL                *.CSS
#HideURL                *.js
#HideURL                *.JS
#HideURL                *.gif
#HideURL                *.GIF
#HideURL                *.jpg
#HideURL                *.JPG
#HideURL                *.jpeg
#HideURL                *.JPEG
#HideURL                *.png
#HideURL                *.PNG
#HideURL                *.swf
#HideURL                *.SWF
#HideURL                *.ra
#HideURL                *.RA
#HideURL                *.asf
#HideURL                *.ASF
#HideURL                *.wma
#HideURL                *.WMA
#HideURL                *.wmv
#HideURL                *.WMV
SearchEngine    yahoo.com       p=
SearchEngine    altavista.com   q=
SearchEngine    google.com      q=
SearchEngine    eureka.com      q=
SearchEngine    lycos.com       query=
SearchEngine    lycos.co.kr     query=
SearchEngine    hotbot.com      MT=
SearchEngine    msn.com         MT=
SearchEngine    infoseek.com    qt=
SearchEngine    webcrawler      searchText=
SearchEngine    excite          search=
SearchEngine    netscape.com    search=
SearchEngine    mamma.com       query=
SearchEngine    alltheweb.com   query=
SearchEngine    northernlight.com       qr=
SearchEngine    empas.com       q=
SearchEngine    naver.com       query=
===================================================================================


원하는 경로에 있는 webalizer.conf 파일을 바로 적용하는 명령어이다.

webalizer -c /etc/webalizer/{도메인명}-webalizer.conf 

이거 실행후 http://도메인/webalizer 웹으로 확인하면 됨.

바로 적용하면 access_log 가 그닥 없기때문에 바로 통계가 안나온다.

예전기록들을 적용하면 통계가 바로 즉시 적용된다.

/var/log/httpd/access_log 외에도 access_log.1 access_log.2 access_log.3 이런식으로

예전 로그파일들이 있다.

webalizer.conf의 access_log부분을 예전파일들을 읽도록 잡아주고

LogFile         /var/log/httpd/도메인-access_log.1

다시한번 실행하여 주면된다.

webalizer -c /etc/webalizer/{도메인명}-webalizer.conf 

그리고 마지막에 다시 webalizer.conf 에다가 현재 access_log파일인 

LogFile         /var/log/httpd/도메인-access_log

로 꼭 변경을 다시 해 줘야된다.

서버 상태를 다 살필수 없으니 상태를 메일로 보내게 하여 필요한 사항을 체크할 수 있도록 한다.

이거는 시스템 체크하는거
-----------------------------------------------------------------------------------
#!/bin/sh
echo -e "====================================="
hostname
echo -e "====================================="

echo -e "\n 1. 오늘날짜:"
date

echo -e "\n 2. 디스크용량"
df -h

echo -e "\n 3. 포트점검"
netstat -an | grep LISTEN

echo -e "\n 4. /tmp점검"
ls -al /tmp

echo -e "\n 5. /var/tmp점검"
ls -al /var/tmp

echo -e "\n 6.  큐에쌓인메일수 점검"
ls -l /var/spool/mqueue | wc -l

echo -e "\n 7. 실행프로세스 점검"
pstree

echo -e "\n 8. 최후접속자 점검"
lastlog | grep -v "한번도"

echo -e "\n 9. Memory"
free

echo -e "\n 10. Uptime"
uptime

echo -e "\n 11. faillog"
faillog
----------------------------------------------------------------------------------

요 내용을 바로 cron으로 스케줄을 걸어 메일로 전송하기.

파일을 /etc/cron.d/ 와 같은 원하는 경로에 위치시키고 실행권한을 넣는다.

예를 들면  chmod 755 와 같이,


그리고 vi /etc/crontab 에서 다음과 같이 메일 발송 스케줄을 잡아준다. (crontab -e 명령어를 통해서 입력하여도 됨.)


00 06 * * * `/경로/system_check.sh | mail -s "메일제목" 메일주소@hyukjinworld.com`



CentOS 4.x로 yum update를 하려면 다음 명령어로 레포지토리를 추가한다.

rpm -Uvh http://download.fedora.redhat.com/pub/epel/4/i386/epel-release-4-9.noarch.rpm



php5.2 버전 설치를 원한다면 다음 레포지토리를 추가한다.
추가한다음 업데이트나 설치를  yum으로 쉽게 하면된다.

wget -q -O - http://www.atomicorp.com/installers/atomic.sh | sh



위와 같이 다른 레포지토리로 CentOS에는 없는 yum설치를 쉽게하는 것은 좋지만
업데이트를 하다 꼬일수가 있으므로 구분을 잘하여 하나의 레포지토리만 되도록한다.

/etc/yum.repos.d/ 에 위치하고 있으며 여기서 각 레포지토리 수정을 하면된다.
enable를 '1'로하면 사용하는 것이고 '0'으로 설정하면 미사용이다.

본인은 원하는 설치후 기본 CentOS레포지토리만 설정을 하였다.



Linux에서 Login 실패시 계정 잠그기

 

리눅스에서 계정에 관한 설정은 login.defs에서 합니다. Password의 최소 길이나 최대, 최소 사용일 수 등을 설정합니다. 그러면, 계정 잠금 설정도 이 파일에 있지 않을까 생각 할 수 있습니다.

그러나, 아쉽게도 login.defs에는 계정 잠금을 설정 할 수 있는 부분이 없습니다. login.defs는 윈도우처럼 password 정책에 관한 설정입니다. 그러면, 리눅스는 어디서 할까요? 배포판에 따라 조금씩 틀릴 수 있습니다. 여기서는 Redhat linux를 기준으로 설명 드립니다.

 

리눅스에서 계정 잠금 설정을 하는 부분은 /etc/pam.d/system-auth 라는 파일 입니다.

 

설정 방법은 다음과 같습니다.

auth required /lib/security/pam_tally.so no_magic_root

account required /lib/security/pam_tally.so deny=2 no_magic_root

 

위의 부분을 system-auth에 추가 하시면 됩니다. 위와 같이 설정하면 연속 3 login 실패 시 계정이 잠기게 됩니다. 그러나, 윈도우처럼 잠금 시간 설정이 없기 때문에 일정시간이 지난다고 해서 계정이 풀리지 않습니다. 따라서, 계정이 잠겼을 경우에는 관리자에게 요청하여 계정 잠금을 풀어야 합니다.

 

각 설정에 대해서 살펴 보도록 하겠습니다.

auth required /lib/security/pam_tally.so no_magic_root

account required /lib/security/pam_tally.so deny=2 no_magic_root

 

 

 

 

 

- deny : 실패 횟수 0부터 시작하며 몇 번 실패하면 계정 잠금을 할 것인지 설정, 연속 3번 실패하면 lock 걸기 위해서는 deny 2로 설정

- no_magic_root : root password fail 횟수를 기록하나 실제 lock은 걸지 않도록 함.

- reset : 실패 횟수 안에서 login하면 기존 실패 횟수를 reset해 줌으로써 연속 실팽 대한 기록을다시 함.

 

faillog –u <사용자 계정> -r

잠긴 계정을 열기 위해서는 faillog 명령어를 사용해야 합니다.

 

 

 

auth required /lib/security/pam_tally.so no_magic_root

account required /lib/security/pam_tally.so deny=2 no_magic_root

 

앞서 설명한 위 적용 내용의 no_magic_root 설정할 경우 faillog 카운터 되나 deny 설정이 되어 있더라도 fail 카운터 이상 되어도 정확한 패스워드로 로그인 시 접속 가능하여 사용시 무용 지물이다.

그래서 아래의 내용으로 변경하여 적용하자

 

 

]# /etc/pam.d/system-auth

맨 위줄에 해당 내용을 적용하자

 

auth required /lib/security/pam_tally.so onerr=fail deny=2

account required /lib/security/pam_tally.so onerr=fail


imagemaick 설치

소스컴파일 설치전 설치해줘야 하는것들

yum install -y IMageMagick-devel fontconfig hal

---------------------------------------------------------

설치후 소스를 다운받는다.
wget http://pecl.php.net/get/imagick-2.3.0.tgz

압축을 풀고
tar zxf imagick-2.3.0.tgz

해당 디렉토리서 환경설정 및 컴파일 설치한다.
phpize


./configure --with-php-config=/usr/bin/php-config
=>php-config위치 잡아서 configure 한다

make

make install

---------------------------------------------------------

모듈이 있는곳을 파악하고,
/usr/lib/php/modules/  에 imagick.so 모듈이 있음


php.ini에 추가한다.
extension=imagick.so

그리고 아파치 restart / reload 이런거 하면된다.

+ Recent posts