[출처] 제타위키 http://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EC%82%AC%EC%9A%A9%EB%A5%A0_%ED%99%95%EC%9D%B8





sar

명령어
sar -r 1
실행예시
[root@zetawiki ~]# sar -r 1
Linux 2.6.30.10-105.2.23.fc11.x86_64 www.jmnote.com) 	05/06/2012

12:54:07 PM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
12:54:08 PM     42440    490744     92.04     65124    168916   1146744       128      0.01        16
Average:        42440    490744     92.04     65124    168916   1146744       128      0.01        16




free

명령어
free
실행예시
[root@zetawiki ~]# free
             total       used       free     shared    buffers     cached
Mem:        533184     490736      42448          0      65264     168936
-/+ buffers/cache:     256536     276648
Swap:      1146872        128    1146744

top

명령어
top -n1 | grep Mem:
실행예시
[root@zetawiki ~]# top -n1 | grep Mem:
Mem:    533184k total,   494296k used,    38888k free,    64920k buffers

meminfo

명령어
cat /proc/meminfo | grep Mem
실행예시
[root@zetawiki ~]# cat /proc/meminfo | grep Mem
MemTotal:         533184 kB
MemFree:           41860 kB







1. Destination Server 에서 아래 명령어를 통해 인증 키 생성, 옵션을 통해 인증키의 인증방식을 수정 가능

[root@Destination Server ~]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): 

Created directory '/root/.ssh'.

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:6MLun8gQLmRbAqPGH5XKw+WFX3wKdfGC8mm+ziyWyUs root@Destination Server.net

The key's randomart image is:

+---[RSA 2048]----+

|         . o.    |

|      o o o .    |

|o    = + + o .   |

|+.o = o.= + .    |

|.*.B ...S=       |

|+.=oo.  o        |

|..o.o oEo.       |

| . + o.Bo .      |

|   .=.+.+=       |

+----[SHA256]-----+

[root@Destination Server /]# cd ~/.ssh/

[root@Destination Server .ssh]# vi ./authorized_keys <- Source 서버에서 생성한 키를 삽입 할 목적



2. Source가 될 리눅스 서버에서 아래 명령어 수행

[root@Source Server /]# ssh-keygen

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

5e:32:7c:5e:67:58:5c:31:7d:c0:19:20:83:4e:c2:88 root@Source Server

The key's randomart image is:

+--[ RSA 2048]----+

|   . o   .o .oo*+|

|  E . o o  o .o.+|

|       +      o .|

|       ..    o   |

|        S o o o  |

|       . * . o   |

|        . .      |

|                 |

|                 |

+-----------------+

[root@Source Server /]# cat ~/.ssh/*pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmk5uEnZOcMC8OtWyyu/FLQmqyla5VbSo2yR1bRwgDP4zcxDkm3bvKZAmRbQYOKzOum++jOUZBliW141wXhV+LqGAvg2vYOa5y06Gfdlw6pJwVA8/1/H/BBPFCpYGShUJNMxw89Y/Ct3gcH1f0umcxzaJRvhzpu0z/FDmr3ZFyMT4oQ+4pHz6IgtFKiDCzQZJbmm5i9zLBoGGyRtNYaQyF46YB+u567hU1SIbMRofzaWFqePt6ty0XboPmIdcgPD0HEjLDCWTttXgPdprK54m7MZP2SMR3EGTKRMsSp48ssMrQompMkP2HXHTEI3wK/Bia7gmx+VB+CpyQRMsV/eQB root@Source Server


3. Source가 될 리눅스 서버에서 해당 인증키를 복사하여 Destination Server authorized_keys 에 등록




4. 접속 테스트

[root@Source Server /]# ssh 192.168.0.241

Last login: Mon Apr  3 21:34:01 KST 2017 on cron

Last login: Mon Apr  3 21:34:55 2017 from 192.168.0.242

[root@Destination Server ~]# 



5. 원격 명령어 수행 테스트

[root@Source Server /]# ssh 192.168.0.241 free

             total       used       free     shared    buffers     cached

Mem:       4059404    3643352     416052          0       4752     423612

-/+ buffers/cache:    3214988     844416

Swap:            0          0          0

[root@Source Server /]# 

[root@Source Server /]# ssh 192.168.0.241 hostname

Destination Server



샌드박스란?


현재 시중에 소개되어 보안 제품으로 유통되는 샌드박스 제품들은 VM 구성을 통한 사용자 OS 환경을 가상으로 구축하고, 구축 된 VM OS 상에 의심되는 파일을 업로드하여 행위를 분석 하는데 기본적으로 그 초점이 맞추어져 있다. 실제로 가상 OS 환경에서 해당 파일을 실행 하였을 때 벌어지는 Behavior 들을 감사하여 개발사에서 제공하는 특정 패턴이나 시그니처, 인디케이터, 룰을 통해 해당 파일에 대한 점수를 부여하고, 수상한 행위가 많을 수록 악성에 가깝다라는 평가를 내어 준다.

Behavior를 탐지하는 범위는 제품마다 차이가 있고 개발사에서 말하고자 하는 용도에 따라 활용도에서의 차이가 존재한다. 일반적으로 이러한 솔루션에서는 화이트리스트 처리가 없다면 대부분이 외산 제품인 관계로 국산 개발사들에서 나온 툴바나 패치, 관련 에이전트들은 악성 점수가 높게 나온다..


1. 레지스트리, 파일, 폴더 생성/삭제 및 위변조

2. 서비스 등록

3. 부모 및 자식 프로세스 생성, 터미네이트

4. LISTENING 포트 오픈

5. 네트워크 활동

... 등 전반적인 OS Kernel&Process 단에서 벌어지는 Behavior 에 대해 감사 하는 경우가 많으며, 개발사의 선택에 따라 인텔리전스 서비스가 들어가 평판 정보를 이용한 분석도 가능하다. 상용/비상용 Feed 나 Virustotal 과 같은 알려진 Reputation 서비스 등을 활용하는 경우도 볼 수 있다.


6. 네트워크 활동 + 접속한 목적지 IP의 평판정보 - 알려진 악성 도메인인지?

7. 생성 뮤텍스 감사 - 특정 악성코드에서 쓰는 뮤텍스를 담고 있진 않은지?

8. File Hash 평판 정보 - 알려진 악성 파일인지?


샌드박스 사용 효과?


기본적으로 기업에서는 침해사고 대응을 위해 파일에 대한 악성 검사를 수행한다. 다만, 파일 분석 분야에서 Legacy 제품군들의 경우 파일의 헤더 정보만 살펴보는 정적 분석이나, 해당 제품이 알고 있는 시그니쳐나 패턴을 기반으로 Known Malicious 만을 탐지하는데, 샌드박스 제품의 경우 해당 파일을 VM OS 상에서 직접 수행하고, 플러그인 등을 통해 사람이 직접 버튼을 클릭하는 것과 유사한 고스트 효과를 집어넣음으로써, 운영 체제에서 해당 파일이 실행 되었을 때 실질적으로 어떤 변화가 일어 나는지 모니터링 하고, 해당 행위에 대한 인디케이터나 패턴을 기반으로 점수를 측정하기 때문에, 기존의 시그니처, 패턴 방식에 더해져 Unknown  Malicious 에 대한 분석의 여지를 준다. 하지만 앞서 설명한 대로, 악성으로 보이는 행위를 하고 있는 것을 탐지 한 것이기에, 정상 프로그램이 악성과 같이 보이는 행위를 하는 경우에 대해서도 탐지 된다. 그러므로 실질적으로는, 전문 분석 인력이 없는 한 운영이 까다롭고, 악성인지 판별해 주기 원하는 고객의 니즈를 충족하기엔 
어려운 특성을 가지고 있으며, 이에 대해서 실제 운용 기업의 경우 타 제품의 인텔리전스나 평판 정보를 활용하거나, 여러 제조사의 샌드박스를 놓고 교차 검증하는 사용 사례가 있다. 실제적으로 리버싱 가능한 인력을 보유하고 해당 인력에게 코드를 뜯어보게 끔 하는 형태의 서비스는 거의 하지 않는다..


샌드박스 활용 방안?


(1) 단독 사용 : 기업 내 의심스러운 파일을 수동 또는 API 형태로 파일을 업로드하여, 분석 점수를 측정하는 형태로 단독 사용 하는 사례.
(2) 파일 분석 자동화 : 네트워크 포렌직 장비 등 트래픽을 수집/분석 하는 솔루션에서 파일을 추출하는 기능을 이용해 샌드박스로 전달하여 분석하게 하는 사례
(3) 이기종 샌드박스 평행 분석을 통한 분석 신뢰도 향상 :  중간 파일 브로커 역할을 하는 서버를 구성하고, 각 다양한 제조사의 샌드박스가 해당 서버 내의 분석 대상 파일들을 자동적으로 분석하여 점수를 표현함, 이 때 각 제조사의 API 또는 파일 Upload 기능을 최대한 활용하고, 필요 시 배치 스크립트 등을 통해 파일 브로커 서버 -> 샌드박스로 업로드 하게끔 구성.  추가적으로 나온 결과값을 받아 특정 웹 서버에 점수를 중앙에서 받아 볼수 있으면 금상첨화.






전화를 사용할 때 자신의 전화 번호가 있듯이 인터넷을 사용할 때도 인터넷 주소가 있어야 하는데, 이 인터넷 주소가 IP 주소입니다. 이 인터넷 주소는 통상 인터넷에 접속할 때 동적(Dynamic)으로 할당 받는데 이 동적으로 IP 주소를 할당해 주는 프로토콜을 DHCP(Dynamic Host Configuration Protocol)라고 하며 이는 RFC 2131에서 표준 동작을 정의하고 있습니다.
 
DHCP를 통한 IP 주소 할당은 “임대”라는 개념을 가지고 있는데 이는 DHCP 서버가 IP 주소를 영구적으로 단말에 할당하는 것이 아니고 임대기간(IP Lease Time)을 명시하여 그 기간 동안만 단말이 IP 주소를 사용하도록 하는 것입니다. 단말은 임대기간 이후에도 계속 해당 IP 주소를 사용하고자 한다면 IP 주소 임대기간 연장(IP Address Renewal)을 DHCP 서버에 요청해야 하고 또한 단말은 임대 받은 IP 주소가 더 이상 필요치 않게 되면 IP 주소 반납 절차(IP Address Release)를 수행하게 됩니다.
 
이번 시간에는 단말(DHCP client)이 DHCP 서버로 부터 IP 주소를 할당(임대) 받는 절차에 대해서 알아 보도록 하겠습니다.
IP 주소 할당(임대) 절차에 사용되는 DHCP 메시지는 아래 그림과 같이 4개의 메시지로 구성되어 있습니다.
 

 

 

1) DHCP Discover

  • 메시지 방향: 단말 -> DHCP 서버
  • 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)
  • 의미: 단말이 DHCP 서버를 찾기 위한 메시지입니다. 그래서 LAN상에(동일 subent상에) 브로드캐스팅을 하여 "거기 혹시 DHCP 서버 있으면 내게 응답 좀 해 주세요~"라고 단말이 외칩니다.
  • 주요 파라미터
    • Client MAC: 단말의 MAC 주소
 
2) DHCP Offer
  • 메시지 방향: DHCP 서버 -> 단말
  • 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)이거나 유니캐스트일수 있습니다. 이는 단말이 보낸 DHCP Discover 메시지 내의 Broadcast Flag의 값에 따라 달라지는데, 이 Flag=1이면 DHCP 서버는 DHCP Offer 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 됩니다.
  • 의미: DHCP 서버가 "저 여기 있어요~"라고 응답하는 메시지입니다. 단순히 DHCP 서버의 존재만을 알리지 않고, 단말에 할당할 IP 주소 정보를 포함한 다양한 "네트워크 정보"를 함께 실어서 단말에 전달합니다.
  • 주요 파라미터
    • Client MAC: 단말의 MAC 주소
    • Your IP: 단말에 할당(임대)할 IP 주소
    • Subnet Mask (Option 1)
    • Router (Option 3): 단말의 Default Gateway IP 주소
    • DNS (Option 6): DNS 서버 IP 주소
    • IP Lease Time (Option 51): 단말이 IP 주소(Your IP)를 사용(임대)할 수 있는 기간(시간)
    • DHCP Server Identifier (Option 54): 본 메시지(DHCP Offer)를 보낸 DHCP 서버의 주소. 2개 이상의 DHCP 서버가 DHCP Offer를 보낼 수 있으므로 각 DHCP 서버는 자신의 IP 주소를 본 필드에 넣어서 단말에 보냄
 
3) DHCP Request
  • 메시지 방향: 단말 -> DHCP 서버
  • 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF)
  • 의미: 단말은 DHCP 서버(들)의 존재를 알았고, DHCP 서버가 단말에 제공할 네트워크 정보(IP 주소, subnet mask, default gateway등)를 알았습니다. 이제 단말은 DHCP Request 메시지를 통해 하나의 DHCP 서버를 선택하고 해당 서버에게 "단말이 사용할 네트워크 정보"를 요청합니다.
  • 주요 파라미터
    • Client MAC: 단말의 MAC 주소
    • Requested IP Address (Option 50): 난 이 IP 주소를 사용하겠다. (DHCP Offer의 Your IP 주소가 여기에 들어감)
    • DHCP Server Identifier (Option 54): 2대 이상의 DHCP 서버가 DHCP Offer를 보낸 경우, 단말은 이 중에 마음에 드는 DHCP 서버 하나를 고르게 되고,  그 서버의 IP 주소가 여기에 들어감. 즉, DHCP Server Identifier에 명시된 DHCP 서버에게 "DHCP Request" 메시지를 보내어 단말 IP 주소를 포함한 네트워크 정보를 얻는 것임
 
4) DHCP Ack
  • 메시지 방향: DHCP 서버 -> 단말
  • 브로드캐스트 메시지 (Destination MAC = FF:FF:FF:FF:FF:FF) 혹은 유니캐스트일수 있으며 이는 단말이 보낸 DHCP Request 메시지 내의 Broadcast Flag=1이면 DHCP 서버는 DHCP Ack 메시지를 Broadcast로, Flag=0이면 Unicast로 보내게 됩니다.
  • 의미: DHCP 절차의 마지막 메시지로, DHCP 서버가 단말에게 "네트워크 정보"를 전달해 주는 메시지입니다. 앞서 설명드린 DHCP Offer의 '네트워크 정보"와 동일한 파라미터가 포함됩니다.
  • 주요 파라미터
    • Client MAC: 단말의 MAC 주소
    • Your IP: 단말에 할당(임대)할 IP 주소
    • Subnet Mask (Option 1)
    • Router (Option 3): 단말의 Default Gateway IP 주소
    • DNS (Option 6): DNS 서버 IP 주소
    • IP Lease Time (Option 51): 단말이 본 IP 주소(Your IP)를 사용(임대)할 수 있는 기간(시간)
    • DHCP Server Identifier (Option 54): 본 메시지(DHCP Ack)를 보낸 DHCP 서버의 주소
 
이렇게 DHCP Ack를 수신한 단말은 이제 IP 주소를 포함한 네트워크 정보를 획득(임대)하였고, 이제 인터넷 사용이 가능하게 됩니다.


<출처 : Netmanias.com>

기본적인 find 파일 찾기


find / -name 'a.txt'



오류제외 기본적인 find 파일 찾기


find / -name 'a.txt' > /dev/null




find 한 파일 내 특정 문자열 찾기


find / -name 'a.txt' >/dev/null | xargs grep string



특정 문자열을 포함하는 파일 이름 뽑기


grep -rl 'babo' ./


특정 문자열을 포함하는 파일 이름 + 찾은 문자열이 속한 라인 뽑기


grel -r 'babo' ./


Python 입문자용 무료 교재

Byte of Python(한글판)


『원저자 : Swaroop C H <swaroop@swaroopch.com>

Translated by Jeongbin Park <pjb7687@gmail.com>』



  Python 초보 및 입문자용 교재로 널리 알려진 Byte of Python 교재로, 발행되고 배포되기 시작한지는 오래 되었으나, 배우기엔 부족함이 없다. 기본적인 C나 객체지향 언어의 개념만 알고 있다면 실습을 통해 얼마든지 간단한 스크립팅, 프로그래밍이 가능 할 것으로 보인다. 




Sourceforge Download links

http://byteofpython-korean.sourceforge.net/byte_of_python.html

http://byteofpython-korean.sourceforge.net/byte_of_python.pdf

+ Recent posts