posted by 은이종 2015. 1. 16. 18:02


$TOMCAT_HOME/conf/server.xml

에다

 

 <security-constraint>
     <display-name>Forbidden</display-name>
        <web-resource-collection>
         <web-resource-name>Forbidden</web-resource-name>
            <url-pattern>/*</url-pattern>
            <http-method>PUT</http-method>
            <http-method>DELETE</http-method>
            <http-method>TRACE</http-method>
            <http-method>OPTIONS</http-method>
  </web-resource-collection>
        <auth-constraint>
         <role-name></role-name>
  </auth-constraint>
 </security-constraint>


등으로 막아둔다.



'Linux' 카테고리의 다른 글

yum histroy 관리법입니다.  (1) 2015.03.06
Nginx SSL Chain 설정 방법  (0) 2015.02.05
dmidecode 리눅스 하드웨어 정보 확인  (0) 2015.01.07
VNC 설정 하기, Port변경  (0) 2014.10.16
SSL 인증서 만료 날짜 확인하기  (0) 2014.09.18
posted by 은이종 2015. 1. 7. 15:23


BIOS 나 하드웨어 스펙 확인을 할 경우가 있는데


이번 경우 같은 경우는, 

메모리 증설을 해야하는데, 현재 몇개의 슬롯이 남는지 확인하는 명령어 입니다.


dmidecode 라는 명령어를 이용하면 됩니다.


저같은 경우는


dmidecode -t 17 | egrep 'Memory | Size' 

를 통하여 현재 사용하는 메모리 슬롯과 남는 슬롯을 체크하였습니다.


참고로 -t 옵션 입니다.


-t 타입으로는 아래와 같이 있습니다. 

————————–
0 BIOS
1 System
2 Base Board 보드명칭
3 Chassis
4 Processor
5 Memory Controller
6 Memory Module
7 Cache
8 Port Connector
9 System Slots
10 On Board Devices
11 OEM Strings
12 System Configuration Options
13 BIOS Language
14 Group Associations
15 System Event Log
16 Physical Memory Array / 최대지원 메모리
17 Memory Device / 메모리 슬롯수 확인
18 32-bit Memory Error
19 Memory Array Mapped Address
20 Memory Device Mapped Address
21 Built-in Pointing Device
22 Portable Battery
23 System Reset
24 Hardware Security
25 System Power Controls
26 Voltage Probe
27 Cooling Device
28 Temperature Probe
29 Electrical Current Probe
30 Out-of-band Remote Access
31 Boot Integrity Services
32 System Boot
33 64-bit Memory Error
34 Management Device
35 Management Device Component
36 Management Device Threshold Data
37 Memory Channel
38 IPMI Device
39 Power Supply
40 Additional Information
41 Onboard Device


'Linux' 카테고리의 다른 글

Nginx SSL Chain 설정 방법  (0) 2015.02.05
Tomcat method 설정  (0) 2015.01.16
VNC 설정 하기, Port변경  (0) 2014.10.16
SSL 인증서 만료 날짜 확인하기  (0) 2014.09.18
Linux DSR구조에서 Loopback 설정하기  (0) 2014.07.16
posted by 은이종 2014. 10. 16. 17:22

1. 
리눅스 내, VNC가 설치 되어있는지 확인

rpm -qa | grep vnc

( 대부분의 CentOS에는 기본적으로 설치되어있음. 혹시 모르니 )



2. 환경설정

vi /etc/sysconfig/vncservers


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

VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 1024x768"
root이라는 사용자에게 1번을 할당하고, 접속 시 해상도를 1024x768로 하겠다는 뜻입니다.

기본적으로 VNC는 5900번 포트를 사용한다.
1:root 란 의미는

root라는 계정을 사용하겠다는 것과
5900 + 1 = 5901 Port가 실제 VNC 접속 포트가 된다.


만약 자신이 8080Port로 VNC를 띄우고 싶다하면

VNCSERVERS="2180:root"로 설정하면 된다.





3. vnc password 설정
vncpasswd
 
Password:
Verify:
원하는 비번 설정.




4. vncserver 재시작

service vncserver restart
or
/etc/init.d/vncserver restart


 

'Linux' 카테고리의 다른 글

Tomcat method 설정  (0) 2015.01.16
dmidecode 리눅스 하드웨어 정보 확인  (0) 2015.01.07
SSL 인증서 만료 날짜 확인하기  (0) 2014.09.18
Linux DSR구조에서 Loopback 설정하기  (0) 2014.07.16
SSH Trust login 설정  (0) 2014.07.08
posted by 은이종 2014. 9. 18. 14:08

인증서을 교체 하면 Daemon 재구동 후, 적용이 되는데,

그 전에 아래 명령어로, 제대로 인증서가 교체 됐는지 확인할수 있다

 openssl x509 -in  인증서.crt -noout -text 


   Validity
            Not Before: Sep 17 00:00:00 2014 GMT
            Not After : Oct 15 23:59:59 2015 GMT
 
결과값이 제대로 만료날짜가 맞으면 제대로 변경 완료 

'Linux' 카테고리의 다른 글

dmidecode 리눅스 하드웨어 정보 확인  (0) 2015.01.07
VNC 설정 하기, Port변경  (0) 2014.10.16
Linux DSR구조에서 Loopback 설정하기  (0) 2014.07.16
SSH Trust login 설정  (0) 2014.07.08
JDK와 JRE 구분  (0) 2014.04.24
posted by 은이종 2014. 7. 16. 10:46

1. 해당 서버에 접속하여 Loopback 설정
ifcfg-lo 가 있으면, ifcfg-lo0 에 설정 후, ifup
ex) NAT IP 211.110.115.79
vi /etc/sysconfig/network-scripts/ifcfg-lo:0
---------------------------------
DEVICE=lo:0
IPADDR=211.110.115.79
NETMASK=255.255.255.255
ONBOOT=yes
---------------------------------

2. 마지막 줄의 DSR관련 설정을 활성화 시킨다.
vi /etc/sysctrl.conf
---------------------------------------------------------
# DSR
# Packet Forwarding 기능 (0: disable, 1: enable)
net.ipv4.ip_forward = 0 
-> 활성화 1로 변경
net.ipv4.ip_forward = 1

#net.ipv4.ip_ignore = 1
#net.ipv4.conf.lo.arp_announce = 2
#net.ipv4.conf.all.arp_ignore = 1
#net.ipv4.conf.all.arp_announce = 2
-> 활성화 
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
----------------------------------------------------------

4. 변경사항 적용
ifup lo:0
sysctl -p




'Linux' 카테고리의 다른 글

VNC 설정 하기, Port변경  (0) 2014.10.16
SSL 인증서 만료 날짜 확인하기  (0) 2014.09.18
SSH Trust login 설정  (0) 2014.07.08
JDK와 JRE 구분  (0) 2014.04.24
hpacucli 간단한 명령어  (0) 2014.01.17
posted by 은이종 2014. 7. 8. 13:46
패스워드 없이  SSH나 scp 연결할 때, 
또는 Hadoo Cluster 설정 시 SSH Trust login 설정이 필요하다.

A > B 로 Trust설정

1. B 서버 sshd conf  허용설정

/etc/ssh/sshd_config 주석제거
---------------------------------------------------------------------------
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys

PasswordAuthentication yes
---------------------------------------------------------------------------

+ 특정한 경우에 (해당 계정만, 특정IP만 허용시킬 때)

AllowUsers
 memex@127.0.0.1 memex@IP

--------------------------------------------------------
sshd 재시작

service sshd restart
 

2. A 서버
 
su - memex
scp /app/memex/.ssh/scp id_dsa.pub memex@172.21.0.142:/app/memex/.ssh/authorized_keys



*. 유의점

authorized_keys
id_dsa.pub
 
파일 그룹권한에 W 권한이 있으면 안된다

700이나 750으로 설정해야함

 




'Linux' 카테고리의 다른 글

SSL 인증서 만료 날짜 확인하기  (0) 2014.09.18
Linux DSR구조에서 Loopback 설정하기  (0) 2014.07.16
JDK와 JRE 구분  (0) 2014.04.24
hpacucli 간단한 명령어  (0) 2014.01.17
쉘, 명령어 창 기본세팅  (0) 2013.12.06
posted by 은이종 2014. 4. 24. 13:15
사실 별것도 아니지만 자바 개발을 위한 첫 단계로써 알아두어야 할 사항중에 하나가
JDK 와 JRE 의 차이점, 그리고 JVM 이란 무엇인지를 알아야 할 듯 해서 간단하게 용어를
정리해보려고 합니다.

JDK ( Java Development Kit )
 Java 용 SDK ( Software Development Kit ) 라고 생각하면 쉽겠다.
 -> 실제로 두가지 용어를 혼용해서 쓰므로 헷깔리기 쉽지만 다 같은 의미정도로 생각하자.
 Java 개발자가 Java 기반 프로그램을 개발할 수 있도록 컴파일러, 툴 등을 제공한다.
 개발자 용이기 때문에 사용자는 굳이 설치할 필요가 없다.
 -> 다만 자바로 개발된 Application을 사용하기 위한 실행 환경은 있어야 한다. 그 역할을 JRE 가 한다.
 JDK 는 다시 J2EE ( Enterprise Edition ) , J2SE ( Standard Edition ) , J2ME ( Micro Edition ) 등으로 분류한다.
 -> EE는 기업용 대규모 개발 환경에서 적합한 버전이고
 -> SE는 일반적인 개발 환경
 -> ME는 PDA나 Embeded 환경에서의 개발환경을 제공합니다.

JRE ( Java Runtime Environment )
 Java 프로그램을 실행시키기 위한 환경을 제공한다.
 즉, Java 언어로 만들어져서 컴파일된 프로그램을 실행하려면 JRE 는 설치되어 있어야 한다.

JVM ( Java Virtual Machine )
 Java 소스 코드로부터 만들어지는 Java byte code(자바파일이 컴파일된 코드) 를 실행할 수 있다.
 "write once, run anywhere" 라는 Java 의 trade mark ( '슬로건' 이라는 단어정도로 해석하시면 쉬울듯)
 는 JVM 이 많은 SW/HW 플랫폼에서 동작 할 수 있기때문에 가능한 이야기 이다.
 -> 개발을 했으면, 어디서든 사용이 가능해야지 !! 라는 슬로건 아래에서 만들어진 개념이 JVM 입니다.
 -> 다시 말해 윈도우에서 개발하고 리눅스에서도 실행이 가능하다는 말입니다.
 -> 또한 윈도우에서 개발해도 다른 임베디드 시스템에서도 사용이 가능하게 된다는 뜻입니다.

* JDK 는 개발자 툴이므로 당연히 실행할수 있는 환경이 제공되어진다. 따라서 
JDK = JRE + 개발툴 + Java 컴파일러
JRE = JVM, 라이브러리, 기타 애플릿이나 어플리케이션 구동 요소 
로 생각하면 쉬울듯 하다.
* JRE 는 개발자용이 아니다 -> 따라서 Debuger 등의 유틸리티 역시 없다.

 <기타> Java 를 별로 사용안하면 생각보다 해깔리는 경우가 많아서 ... 간단히 용어 정리 합니다.

JNI ( Java Native Interface ) 
 JVM 에서 동작하는 Java code 가 다른언어(assem, c, c++) 에 의해 호출되고, 
 다른 언어를 호출 할 수 있도록 만들어진 interface 이다.
 -> 위키백과를 참조하시면 더 좋을듯 합니다. ( http://en.wikipedia.org/wiki/JNI )

JSP ( Java Server Page )
 HTML 내에 자바 코드를 삽입하여서 웹 서버 내에서 동적으로 웹 페이지를 생성하여 웹 브라우져에
돌려주는 언어입니다.
출처:JDK, JRE, JVM

원본글 :
http://mwultong.blogspot.com/2006/08/java-jdk-jre-java-development-kit-java.html 

'Linux' 카테고리의 다른 글

Linux DSR구조에서 Loopback 설정하기  (0) 2014.07.16
SSH Trust login 설정  (0) 2014.07.08
hpacucli 간단한 명령어  (0) 2014.01.17
쉘, 명령어 창 기본세팅  (0) 2013.12.06
넷사랑 xshell 기본 설정  (0) 2013.11.12
posted by 은이종 2014. 1. 17. 11:35

# 컨트롤러 전체 확인

 

hpacucli controller all show

 

 

# 컨틀롤러 1번에 전체 물리 디스크 현황

 

hpacucli ctrl slot=1 physicaldrive all show

 

 

# 컨트롤러상 논리적으로 오류난 디스크 확인

hpacucli ctrl slot=2 logicaldrive all show | grep Failed

 

 

# 예시

# hpacucli ctrl slot=2 logicaldrive all show | grep Failed

#      logicaldrive 5 (2.7 TB, RAID 0, Failed)

 

# 디스크 상태 확인

hpacucli ctrl slot=2 logicaldrive 5 show

 

# 디스크 제거

hpacucli ctrl slot=2 logicaldrive 5 delete

 

# raid 재생성

hpacucli ctrl slot=2 create type=ld drives=2E:1:5 raid=0 stripsize=256

 

hpacucli ctrl slot=1 create type=ld drives=2I:1:3 raid=0 stripsize=256

'Linux' 카테고리의 다른 글

SSH Trust login 설정  (0) 2014.07.08
JDK와 JRE 구분  (0) 2014.04.24
쉘, 명령어 창 기본세팅  (0) 2013.12.06
넷사랑 xshell 기본 설정  (0) 2013.11.12
fail2ban  (0) 2013.04.04
posted by 은이종 2013. 12. 6. 15:17


디렉토리 색상 및 
vi => vim ,  ls -al -> ll  등등 기본 세팅

 
1.  vi -> vim alias 설정
 

vi /root/.bashrc       

한줄 추가

alias vi='vim' 


2. Prompt 에 절대경로 설정 
(부팅시, 설정 내역 읽어옴)

ㅇ /etc/profile 에 설정


export PS1="[\u@\[\e[20;44m\]\h\[\e[m\]] \$PWD>\\$ "




ㅇ b 파일을 생성해서 아래 내역 추가

  vi /etc/profile.d/prompt.sh
------------------------------------

export PS1="[\u@\[\e[20;44m\]\h\[\e[m\]] \$PWD>\\$ "

--------------------------------
권한 부여
chmod 777  
/etc/profile.d/prompt.sh

3. 색깔 넣기

vi /root/.bashrc 

LS_COLORS="di=01;34":"fi=01;37":"ex=01;32":"ln=01;36":"so=01;33"


or
xshell 사용하시면 색상표 추가해서 사용

참고)
http://www.jongeun.co.kr/search/xshell

 



'Linux' 카테고리의 다른 글

JDK와 JRE 구분  (0) 2014.04.24
hpacucli 간단한 명령어  (0) 2014.01.17
넷사랑 xshell 기본 설정  (0) 2013.11.12
fail2ban  (0) 2013.04.04
리눅스 부팅과 커널 Fail시 대처방안  (0) 2013.02.06
posted by 은이종 2013. 11. 12. 14:12

보통 SSH 접속 프로그램이라고 하면,


Putty
SecureCRT
xshell 
mRemote(mstsc)

이 네 가지의 종류가 가장 많이 쓰이는데,
(mRemote는 윈도우용 mstsc로, 추후 포스팅하겠습니다.)

현재 제가 주로 SSH접속용으로 쓰는건 xshell입니다.

우선 국산 프로그램이며,
개인용은 무료 (회사에서 사용시 라이선스 필요)이며
xftp라는 추가 플러그인 프로그램까지 사용하면 
SE로써 상당히 편리합니다.

보통 디폴트 설정으로만 사용중인 데,
간단한 설정만 해줘도 더 효율적인 사용이 가능합니다.

1. 색 구성표
리눅스계열 디렉토리 색깔이 어두운 파란색이라서 색구성도를 추가하면 구분이 편합니다.

color schemes.xcs

hanterm_color_schemes.xcs



위의 파일을 다운 받으신 후



색구성표를 클릭 후 
"찾아보기"에서 "가져오기"에서 추가하시면 됩니다.




2. 세션 폴더 경로
"도구"-"설정"-"일반"

세션이 보통 C:/Program .... 으로 설정이 되어있는데
저같은 경우, 회사나 집에서 접속을 해야함으로,
D드라이브쪽으로 설정하여 동기화 작업을 진행합니다 ^_^
(N드라이브나, TCLOUD를 이용)


3. 자동 클립보드 복사
이 설정이 상당히 편합니다.
"도구"-"설정"-"키보드와 마우스"  [선택]쪽에

선택한 텍스트를 자동으로 클립보드에 복사(C) 를 클릭해주면
드래그한 화면이 자동으로 클립보드에 복사가 됩니다.
마우스 가운데 단축버트는 디폴트가 붙여넣기라서
두개를 이용하면 Ctrl C->V 작업이 편리해집니다.



4. 작성 창
일명 모든 세션에 똑같은 명령어 날리기

여러대의 서버에서 단순 반복작업할 떄 편리합니다.

"보기"-"작성창" 눌러서 활성화 시키면 됩니다.


단축키는 Alt + I (영문) 입니다. 토글키로서 한번 누르면 작성창으로 가고, 다시 누르면 현재 세션으로 돌아갑니다.


5. 빠른 명령
"보기"-"빠른 명령" 활성화 시키면 자주 쓰는 명령어를 등록시킬 수 있습니다.
단순 명령어에서 스크립트까지 지원가능합니다.



6. 로그인 스크립트

세션을 생성하고, 세션에 로그인 후 자동 스크립트를 설정하는데
(생성한 세션에 우클릭 후 정보등록 누르면 됩니다. Alt + Enter)
 

저같은 경우는 아래의 명령어들을 미리 설정해두고 사용합니다.
export TERM=linux; unset TMOUT; who

작업자가 겹치는 경우가 생기는데, who명령을 설정해두어서
접속하자마자 체크를 하는 용도입니다.

로그인 계정과 비밀번호 설정이 가능한데
보안상 취약함으로 사용않기를 권장드립니다.
 




7. 로그 남기기
생성한 세션에 우클릭 후 정보등록 누르면 됩니다. Alt + Enter
"고급" - "로깅"에 가면

아래와 같이 설정해두면, 일일이 설정해두지 않아도
작업한 내역이 자동으로 기록이 됩니다.





이정도만 설정해두어도, xshll이 조금은 활용성이 늘어납니다.


추후 포스팅은
자동으로 세션생성해주는 스크립트 작성해둔게 있는데, 그 내역 포스팅할 예정입니다.

 




 


'Linux' 카테고리의 다른 글

hpacucli 간단한 명령어  (0) 2014.01.17
쉘, 명령어 창 기본세팅  (0) 2013.12.06
fail2ban  (0) 2013.04.04
리눅스 부팅과 커널 Fail시 대처방안  (0) 2013.02.06
sourceforge로 yum.repo 변경하기  (0) 2012.11.08
posted by 은이종 2013. 4. 4. 18:08

0. 개요

python 기반의 툴로

log파일을 읽어 일정시간 차단을 어플로, ssh ftp 등 무작위 로그인을 통한 brute force attack에 대응하기 위한 좋은 어플이다.

iptables , tcpwrapper 등에 해당 host 를 직접 등록하여, 직관적인 차단이 가능하다.

 

1 .설치 과정

공홈 : http://www.fail2ban.org

CentOS 에 yum으로 설치 하려면

vi /etc/yum.repos.d/CentOS-Base.repo

에 아래 글 추가

[dag]
name=Dag RPM Repostory for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
enabled=1
gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

[kbs-CentOS-Misc]
name=CentOS.Karan.Org-EL$releasever - Stable
gpgkey=http://centos.karan.org/RPM-GPG-KEY-karan.org.txt
gpgcheck=1
enabled=1
baseurl=http://centos.karan.org/el$releasever/misc/stable/$basearch/RPMS/

 

2. 설치 과정

yum install fail2ban

설치경로는  /etc/fail2ban 이다.

 

3. 설정

설정파일은 /etc/fail2ban/jail.conf

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1/8

# "bantime" is the number of seconds that a host is banned.
bantime  = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

 

ignoreip : 무시할 IP주소 (여기에 입력한 IP는 차단 하지 않음) CIDR Mask, DNS, IP를 입력가능

              공백을 이용하여 여러개 입력 가능

bantime : 해킹시도가 감지되었을 때 해당 IP를 차단할 차단기간 (기본값 : 600, 단위 : 초)

findtime : 로그에서 검색할 시간 (기본값 : 600, 단위 : 초)

maxretry : 일정시간동안 해킹시도 횟수

backend : 로그 파일 변경을 감지할 방법 (gamin, polling, auto)

               gamin : Gamin(file alteration monitor)설치된 경우 사용가능

               polling : 주기적으로 점검

               auto : Gamin이 설치된 경우 gamin사용, 아니면 polling 사용

설정파일에서 이메일 주소 변경

:%s/you@mail.com/내메일주소

:%s/fail2ban@mail.com/보내는사람 메일 주소

 

# This jail corresponds to the standard configuration in Fail2ban 0.6.
# The mail-whois action send a notification e-mail with a whois request
# in the body.

[ssh-iptables]

enabled  = false
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com]
logpath  = /var/log/sshd.log
maxretry = 5

[proftpd-iptables]

enabled  = false
filter   = proftpd
action   = iptables[name=ProFTPD, port=ftp, protocol=tcp]
           sendmail-whois[name=ProFTPD, dest=you@example.com]
logpath  = /var/log/proftpd/proftpd.log
maxretry = 6

# This jail forces the backend to "polling".

[sasl-iptables]

enabled  = false
filter   = sasl
backend  = polling
action   = iptables[name=sasl, port=smtp, protocol=tcp]
           sendmail-whois[name=sasl, dest=you@example.com]
logpath  = /var/log/mail.log

실제 적용해야 할 서비스 목록입니다. 가장 중요한 부분이겠죠?

해당 원하는 서비스를 확인후에 enabled = false를 true로 변경하시면 됩니다.

 

변경된 설정을 적용시켜주시고, 재부팅후에도 fail2ban이 실행되게 chkconfig에 등록합니다.

service fail2ban start

chkconfig –levels 235 fail2ban on

 

 

추가 설정

1. devecot-pop3설정

# sudo vi /etc/fail2ban/filter.d/dovecot-pop3imap.conf  <- 파일 추가
[Definition]
failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
ignoreregex =
# sudo vi /etc/fail2bain/jail.conf   <- 아래 내용 추가
[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,imap", protocol=tcp]
logpath = /var/log/maillog
maxretry = 20
findtime = 1200
bantime = 1200
# sudo /etc/init.d/fail2ban restart   <- 서비스 재시작

 

Proftpd 필터 사용시 proftpd 설정에 따라 로그를 검사하지 못하는 경우가 생긴다. /etc/fail2ban/filter.d/proftpd.conf 파일을 아래와 같이 변경 (진한 부분을 추가)

failregex = (S+[<HOST>])[: -]+ USER S+: no such user found from S+ [S+] to S+:S+$
            (S+[<HOST>])[: -]+ USER S+ (Login failed): Incorrect password.$
            (S+[<HOST>])[: -]+ SECURITY VIOLATION: S+ login attempted.$
            (S+[<HOST>])[: -]+ Maximum login attempts (d+) exceeded$ 
USER S+: no such user found from S* [<HOST>] to S+s*$
          ^<HOST> .* nobody .*PASS .* 530

posted by 은이종 2013. 2. 6. 14:12
1. 리눅스 부팅 과정 이해의 필요성

리눅스 부팅 시 커널패닉이나 파일시스템 에러 같은 경우를 만났을 때 어떻게 해야 할지 몰라 당황하는 경우가 있다. 리눅스 부팅 과정의 이해를 통해 이러한 에러 상황을 효과적으로 대처 할 수 있다.

2. 리눅스 부팅 과정의 이해

1) 전원 ON

2) BIOS 프로그램 실행 – CPU, MEMORY, VGA 같은 하드웨어에 대한 진단 테스트(POST)를 실행한다. 이상 발생시 비프 음을 내며 멈춘다. POST(Power On Self Test)과정이 이상없이 수행되면 부트디바이스의 MBR(하드 디스크의 첫 섹터,크기는 512 byte)에서 부트로더를 불러들인다.

3) 부트로더가 실행되면 레드햇계열에서는 보통 다음과 같은 메시지가 출력되며 GRUB(GRUB이부트로더이다)이 실행된다. GRUB은 커널이미지를 메모리에 로드한다.

Booting Red Hat Enterprise Linux Server (2.6.18-8.el5) in 5 seconds...

4) 그 다음 커널에 의한 초기화가 실행되고 드라이버의 적재가 이루어 진다. 이 과정은dmesg명령이나 /var/log/dmesg 파일에서 확인 할 수 있다. 보통 다음과 같은 것들을 확인 할 수 있다.

커널버전 표시

램 용량 표시

CPU관련 정보 표시

SELinux 상태 표시

Kernel command line 명령 확인

램디스크 할당 (initramfs)

하드드라이브와 파티션 확인

네트워크 카드 확인

파일시스템 활성화

스왑 활성화

5)커널과 드라이버가 로드된 다음에는 /sbin/init 프로세스가 부팅 과정을 마무리 한다. 이때 실행되는 순서를 간략하게나마 나열하면

/sbin/init à /etc/inittab à /etc/rc.d/rc.sysinit à 각 런 레벨 서비스 스크립트

--> /etc/rc.local à 로그인 프롬프트

로 나타낼 수 있다.

3. 각 과정 별 트러블슈팅

1) grub.conf 파일이 손상되거나 내용이 변경되었을때

증상

부팅시 GURB관련 메뉴가 나오지 않음

부팅시 GRUB 콘솔 상태로 바로 이동

mv /boot/grub/grub.conf /boot/grub/grub.conf_bak

해결방법

GRUB 콘솔 명령어로 사용하여 부팅

grub 환경설정파일 손상

root (hd0,0)

cat /etc/fstab

find /etc/fstab

kernel /vmlinuz-2.6.18-92.el5 ro root=/dev/sda7

initrd /initrd-2.6.18-92.el5.img

boot

부팅후 GRUB관련 설정을 점검하고 원인을 찾아 해결한다.

GRUB을 재 설치 한다.

2) MBR 손상시 복구하기

BIOS가 POST과정을 끝마치면 하드디스크의 첫번째 섹터를 읽어드린다. 이부분을 MBR이라고 한다. MBR에는 부트로더와 파티션 정보가 들어있다. 다음과 같은 명령어로 부트로더를 지울 수 있다.

dd if=/dev/zero of=/dev/sda bs=446 count=1

bs를 512로 하면 파티션 정보까지 모두 손상되므로 테스트 서버 외에는 절대 실행하면 안된다. GRUB(부트로더)는 446바이트이내에 설치 되어 있다.

이제 복구를 해보자.

1번 시디로 부팅

#linux rescue

#chroot /mnt/sysimage

#/sbin/grub

grub-install /dev/sda

find /grub/stage1

find /grub/grub.conf

혹은

#/sbin/grub

root(hd0,0)

setup (hd0)

위와같이 GRUB을 재설치하고 리부팅한다.

3) /etc/fstab 손상시

cat /proc/mounts

mount –o remount,rw /

cat /proc/mounts

vi /etc/fstab

에러난 부분 수정후 리부팅

4)/sbin/init 명령어 손상시

rm /sbin/init

/bin/sh: ro: No such file or directory

Kernel panic - not syncing: Attempted to kill init!

SysVinit-2.86-14.i386.rpm 재설치

# linux rescue

#chroot /mnt/sysimage

#ftp 222.239.223.108

#cd centos/5.2/CentOS

#mget Sys*

rpm -Uvh –force SysVinit-2.86-14.i386.rpm

rpm -Vf /sbin/init

chroot /mnt/sysimage

/bin/bash 파일 손상시 다음과 같은 에러 메시지가 나온다.

chroot: cannot run command '/bin/sh' : No such file or directory

#ftp 222.239.223.108

#cd centos/5.2/CentOS

#mget bash*

rpm -Uvh --force --root=/mnt/sysimage bash-*.rpm

기타

/etc/initab, /etc/rc.d/rc.sysinit à initscripts-8.45.19.1.EL-1.el5.centos

주의사항: 시스템을 새로 설치하는게 빠른지 아니면 복구하는게 빠른지 판단을 하여 가장 빠른 복구 프로세스를 수행한다. 자료 백업과 보존을 최우선으로 한다. 가장 안전한 방법을 고른다.

4. 파일 시스템 오류검사 및 복구 요령

파일 시스템이 손상되었을 때 부팅중 문제가 발생 할 수 있다. 파일 시스템이 손상 되었을때의 대표적인 증상은 아래와 같다.

1) 파티션이 Read Only로 마운트 되면서 파일이 생성되지 않는다.

2) 부팅 과정 중 Ctrl+D 입력을 요구 하면서 더 이상 진행이 되지 않는다.

3) 파일시스템이 손상되었을 경우 dmesg명령어나 /var/log/messages에 에러가 남는다.

이러한 상황이 발생 했을 때 fsck명령으로 쉽게 복구 할 수 있다. 다만 파일시스템을 복구할 때 몇 가지 주의 사항이 있는데 이를 지키지 않을 시 데이터를 날려버릴 위험이 있으므로 반드시 다음 주의 사항을 지키면서 복구를 해야 한다.

먼저 파일 시스템을 마운트 시킨 상태에서 복구를 해서는 안된다.

df –h

cat /proc/mounts

명령으로 손상된 파티션이 마운트 되어 있는지 확인한다.

마운트 되어 있으면 umount 시킨 상태에서 복구 명령을 실행 시켜야 한다.

그러면 / 파티션 같은 경우에는 어떻게 복구해야 할까? / 파티션을 umount 시킨다면 복구명령을 실행 할 수 없으니 이런 의문이 당연히 떠 오를 것이다. 이럴때는 다음과 같이 / 파티션을Read Only로 remount 시킨다음 체크를 실행한다.

#cat /proc/mounts

/dev/root / ext3 rw,data=ordered 0 0

와 같은 줄이 보인다. 다음 명령으로 / 파티션을 Read Only로 마운트 시킬 수 있다.

#mount -o remount,ro /

/dev/root / ext3 ro,data=ordered 0 0

/var /usr 파티션 같은 경우 다음과 같은 에러를 내면서 umount가 되지 않을 수도 있다. /usr파티션이 사용되고 있기 때문이다.

umount /usr

umount: /usr: device is busy

umount: /usr: device is busy

그러므로 가장 확실한 방법은 잠시 서비스를 내리고 다음과 같이 1번 시디를 이용해서rescue모드로 부팅을 해서 복구하는 방법이다.

#linux rescue nomount

/dev/sda1 파티션이 ext3 파일 시스템을 사용 하고 있을 때 다음과 같은 명령어로 복구 시킬 수 있다.

#e2fsck –j ext3 –vy /dev/sda1

badblock이 생겼을 때는 -c옵션을 주면 badblock을 체크한다. 그러나 가능하면 badblock이 생겼을 경우 빠른 시간내에 하드를 교체하는 것이 최선이다.

또한 손상 정도가 심한 경우는 파일시스템을 복구해도 차후 같은 증상을 가져 올 수 있기 때문에 서비스를 올린다음 해당 디스크를 교체하는 것이 좋다.

superblock이 손상되었을 경우 다음과 같은 명령어로 복구 시킬 수 있다.

#dumpe2fs /dev/hda1

명령어로 해당 파티션이 정보를 본다. 슈퍼블럭을 확인하고 다음과 같이 복구한다.

#fsck -b 8193 /dev/hda1

슈퍼블럭은 여러 백업본이 있기 때문에 하나가 안되면 다음과 같이 다음 슈퍼블럭을 선택해서 복구하면 된다.
#fsck -b 32768 /dev/hda2

5. 커널패닉이 발생했을 때 위에서 설명한 부팅 과정중 어디에서 에러가 나는지 찾을 수 있어야 한다

그러면 더욱 쉽게 문제점을 해결 할 수 있다. 일단 서버가 돌아가고 있는 상태라면 서버에 리눅스를 처음으로 설치 할 때는 커널 패닉이 없었다는 말이다. 그 뒤에 변화된 환경에 의해 커널패닉이 발생한 것이다.

부팅 할때 발생하는 커널패닉 메세지를 잘 보면 이에 대한 힌트가 담겨 있다. 만약에 운영체제 설치시 하드 디스크 사타 드라이버나 기타 레이드 카드 드라이버를 설치했다면 커널을 업데이트 한 후에는 다시 설치해 줘야 할 것이다. 그렇지 않다면 업데이트된 커널로 부팅을 하면 커널이 드라이버를 적재하는 과정에서 하드디스크(root(hd0,0))를 인식하지 못해서 커널패닉이 발생 할 것이다. 이럴때는 제일 처음 설치할 때의 커널로 부팅을 해 보는 것도 방법이다. 하드디스크의 / 파티션이 손상을 당해서 마운트가 제대로 되지 않으면 mount fail이 뜨면서 커널패닉이 발생할 것이다. 이럴때는 파일 시스템을 체크해서 복구해야 한다. 평소에 부팅할 때 보여지는 메세지들을 잘 분석하고 이해해두자. 리눅스 시스템을 이해하고 트러블슈팅을 하는데 많은 도움을 준다.

'Linux' 카테고리의 다른 글

넷사랑 xshell 기본 설정  (0) 2013.11.12
fail2ban  (0) 2013.04.04
sourceforge로 yum.repo 변경하기  (0) 2012.11.08
< iftop > 리눅스 Traffic 확인 프로그램  (0) 2012.10.26
dnstop 설치  (0) 2012.08.07
posted by 은이종 2012. 11. 8. 16:37
1. 

for 32bit:wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm
For 64 bithttp://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpmInstall DAG’s GPG keyrpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

 
2. RPM 설치

for 32bit:
rpm -Uvh rpmforge-release-0.5.1-1.el5.rf.i386.rpm
For 64 bitrpm -Uvh rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm

'Linux' 카테고리의 다른 글

fail2ban  (0) 2013.04.04
리눅스 부팅과 커널 Fail시 대처방안  (0) 2013.02.06
< iftop > 리눅스 Traffic 확인 프로그램  (0) 2012.10.26
dnstop 설치  (0) 2012.08.07
DNS Log log 설정  (0) 2012.08.07
posted by 은이종 2012. 10. 26. 13:55

1. 필요 라이브러리
ncurses
ncurses-devel-5.2-26
libpcap

2. 설치
http://pkgs.repoforge.org/iftop/
해당 OS에 맞는 버전 다운 (난  CentOS 5.8 x64)
wget http://pkgs.repoforge.org/iftop/iftop-0.17-1.el5.rf.x86_64.rpm
rpm -Uvh iftop-0.17-1.el5.rf.x86_64.rpm 

* Ubuntu 설치
apt-get install iftop


3. 실행
iftop -p -P -i eth1   

우측 세가지 표시되는 트래픽은 각기 2초 10초 40초 표시

Cumm은 실행하고 나서 총 합 




 

'Linux' 카테고리의 다른 글

리눅스 부팅과 커널 Fail시 대처방안  (0) 2013.02.06
sourceforge로 yum.repo 변경하기  (0) 2012.11.08
dnstop 설치  (0) 2012.08.07
DNS Log log 설정  (0) 2012.08.07
리눅스 CPU 확인 스크립트  (0) 2012.08.03
posted by 은이종 2012. 8. 7. 17:52

1. 라이브러리 준비


libcap 라이브러리가 미리 설치되어있는지 확인 (기본적으로 centos 개발tool에 포함)


 rpm -qa |grep libcap



2.설치

http://pkgs.repoforge.org/dnstop/


맞는 버전 확인후 wget으로 떙겨서 rpm설치


wget http://pkgs.repoforge.org/dnstop/dnstop-0.0.20080502-1.el5.rf.i386.rpm


rpm -Uvh dnstop-0.0.20080502-1.el5.rf.i386.rpm


3. 사용방법


 실행하기

# dnstop -4 -l 3 eth1


Queries: 2 new, 17 total                                              

 

Sources            Count      %

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

208.94.20.62           2   11.8

121.138.224.2          1    5.9

220.73.29.3            1    5.9

210.113.99.5           1    5.9

211.195.237.3          1    5.9

210.113.99.6           1    5.9

210.94.0.77            1    5.9

.

.

-4 : Ipv4 packet 만 보이기

-l : 도메인 레벨 3까지 보이기

eth0 : NIC eth0으로부터 오는 패킷만 캡쳐.

위 화면은 기본으로 IP count 만 보인다아래와 같이 레벨을 변경하면 좀 더 자세히 출력된다.

3)     레벨변경 및 기타옵션

1>   레벨변경 type 1

위와 같이 실행한 뒤 숫자 1에서 ~ 3까지 누르면 Query Name 부분이 바뀌면서 출력된다.

위에서 실행한 -l 3 옵션의 숫자 범위까지 적용된다만약 4를 줬으면 레벨 4까지 캡쳐가 되므로 4까지 적용이 된다.

2>   레벨변경 type 2

위와 같이 실행한 뒤 숫자 Shift + 1에서 ~ 3까지 누르면 Source IP가 보이고 Query Name 부분이 바뀌면서 출력된다.

위에서 실행한 -l 3 옵션의 숫자 범위까지 적용된다만약 4를 줬으면 레벨 4까지 캡쳐가 되므로 4까지 적용이 된다.

3>   필터옵션

dnstop 3가지 필터 옵션을 제공한다.

 unknown-tlds

- kr, jp, com, net 등 등록되지 않은 최상위 코드에 대한 질의를 필터링한다.

명령어 : /usr/sbin/dnstop -4 -l 3 -f unknown-tlds eth0

위 와 같이 필터링 했을 때 출력되는 값은 메일 주소를 잘못 입력했거나 네트워크 설정의 오류로 인한것이므로

해당 서버의 네트워크 설정 등을 점검해야된다.

 A-for-A

도메인이 아닌 IP 주소에 대한 A record를 질의하는 것을 필터링

명령어 : /usr/sbin/dnstop -4 -l 3 -f A-for-A eth0

이 역시 잘못된 DNS 질의이므로 원인을 찾는다.

③ rfc1918-ptr

- rfc 1918에 정의된 사설 ip에 대한 PTR 질의를 필터링한다.

명령어 : /usr/sbin/dnstop -4 -l 3 -f rfc1918-ptr eth0

사설 IP에 대한 질의는 내부 네트워크 사이의 트래픽이므로 DNS와 같은 외부 네트워크에서 보이지 않아야 한다.

만약 출력값으로 보인다면 해당 소스 IP tcpdump로 패킷캡쳐를 하여 원인을 찾아본다.

) tcpdump host 215.44.53.22

해결 방법으로는 각각의 서버에서 /etc/hosts 파일에 내부 IP를 등록해 두는 방법이 있다.

4>   기타옵션

ctrl + r : 출력 초기화

ctrl + x : 프로그램 종료

4)     질의 점검 하기

1>   과도한 질의

만약 접속이 많지 않은데도 특정 도메인에 대한 질의가 많다면 DNS에서 TTL 설정값이 너무 낮지는 않은지 확인

2>   비정상적인 특정 도메인 질의

sample.com.sample.com 또는 sample.com.localdomain 등의 경우

zone 파일에서 .을 입력하지 않았다거나 설정파일의 오류로 인해 발생하는 경우가 대부분이므로

tcpdump로 해당 질의의 소스 IP를 확인해햐 된다.

) tcpdump host 215.44.53.22

 

n  맺음말 :

DNS 쿼리에 대한 패킷을 tcpdump를 이용하여 패킷 캡쳐하여 볼 수도 있다하지만 DNS 쿼리만 따로 뽑아서 직관적으로 보기엔 쉽지않다. DNSTOP은 이러한 점을 해소해 줄 수 있는 유틸리티로서 잘 활용한다면 실시간 DNS쿼리 상황비정상적인 트래픽 등을 쉽게 모니텅링을 할 수 있다.

'Linux' 카테고리의 다른 글

리눅스 부팅과 커널 Fail시 대처방안  (0) 2013.02.06
sourceforge로 yum.repo 변경하기  (0) 2012.11.08
< iftop > 리눅스 Traffic 확인 프로그램  (0) 2012.10.26
DNS Log log 설정  (0) 2012.08.07
리눅스 CPU 확인 스크립트  (0) 2012.08.03
posted by 은이종 2012. 8. 7. 17:10

기존의 /var/log/message에 담기는 log를


DNS log 세분화를 위하여


      channel "update_syslog" {

            file "/var/named/log/update.log" versions 3 size 20m ;

            severity debug;

            print-category yes;

            print-severity yes;

            print-time yes;

      };


      channel "queries_syslog" {

            file "/var/named/log/queries.log" versions 3 size 20m ;

            severity debug;

            print-category yes;

            print-severity yes;

            print-time yes;

      };


과 같이 분할을 시켜놨더니.


queries_syslog가 20M를 넘어서

새로 생성 세개를 (versions 3)를 해야하는데


Aug  7 16:14:56 ns1 named[16385]: unable to rename log file '/var/named/log/queries.log.1' to '/var/named/log/queries.log.2': permission denied

NS1에 해당 로그를 뿜어냄



퍼미션 에러니까 chown chmod등을 확인해봤으나 아래와 같이문제 없음..

-rw-r--r-- 1 root named     164086  8월  7 17:09 queries.log


흐으으으으으음



named named로 소유권 권한을 변경했떠니 해결....






'Linux' 카테고리의 다른 글

리눅스 부팅과 커널 Fail시 대처방안  (0) 2013.02.06
sourceforge로 yum.repo 변경하기  (0) 2012.11.08
< iftop > 리눅스 Traffic 확인 프로그램  (0) 2012.10.26
dnstop 설치  (0) 2012.08.07
리눅스 CPU 확인 스크립트  (0) 2012.08.03
posted by 은이종 2012. 8. 3. 14:46

####################################

#### Counting of Physical CPUs ####

####################################

Processor Nums : 24

Core per Processor :  6

sibling (Logical CPUs) :  12

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

 Product Name :  Intel(R) Xeon(R) CPU E5-2640 0 @ 2.50GHz

 Core Nums(per Processor) :  6 

 Hyperthreding : Yes

 Total Physical Cpus : 2 


깔끔하게 출력!! 


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


#!/bin/bash

#

# Counting of Physical CPU and Core, HT

#

Info="/proc/cpuinfo"


echo "####################################"

echo "#### Counting of Physical CPUs ####"

echo "####################################"


PName=$(grep name $Info | sort -u | awk -F: '{print $2}')

ProcNum=$(grep processor $Info | sort -u | wc -l)

PhysCPUs=$(grep "physical id" $Info | sort -u | uniq | wc -l)


echo "Processor Nums : $ProcNum"


CoreNum=$(grep cores $Info | sort -u | awk -F: '{print $2}')

echo "Core per Processor : $CoreNum"


sibling=$(grep "sibling" $Info | sort -u | awk -F: '{print $2}')

echo "sibling (Logical CPUs) : $sibling"


echo "=================================="


echo " Product Name : $PName"

echo " Core Nums(per Processor) : $CoreNum "

HT=$(expr $sibling / $CoreNum)


if [ "$HT" -eq 1 ]

then

    echo " Hyperthreding : No"

else

    echo " Hyperthreding : Yes"

fi


echo " Total Physical Cpus : $PhysCPUs "



exit


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



'Linux' 카테고리의 다른 글

리눅스 부팅과 커널 Fail시 대처방안  (0) 2013.02.06
sourceforge로 yum.repo 변경하기  (0) 2012.11.08
< iftop > 리눅스 Traffic 확인 프로그램  (0) 2012.10.26
dnstop 설치  (0) 2012.08.07
DNS Log log 설정  (0) 2012.08.07