반응형

DNS서버는 컴퓨터가 사용하는 IP주소와 사람이 사용하는 도메인명을 맵핑하는 역할을 수행한다.

DNS서버에는 모의 해킹에 유용한 공개정보가 풍부하며 이를 바탕으로 공격 계획을 수립할 수 있다.


DIG 사용하기


dig는 만능 DNS 검색 도구로 이를 이용하면 IP 주소에 해당하는 여러 도메인과 관련된 모든 정보를 손쉽게 수집할 수 있다.

dig는 브라우저 같은 네트워크 애플리케이션이 전세계 곳곳의 DNS서버와 통신할 때 이용하는 질의를 수행한다.


dig [도메인명]

실제로  강조한 부분이 의미있는 결과로 naver의 주소이다


root@choi:~# dig naver.com


; <<>> DiG 9.11.3-1ubuntu1-Ubuntu <<>> naver.com

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8182

;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1


;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 65494

;; QUESTION SECTION:

;naver.com.                     IN      A


;; ANSWER SECTION:

naver.com.              127     IN      A       210.89.160.88

naver.com.              127     IN      A       125.209.222.142

naver.com.              127     IN      A       125.209.222.141

naver.com.              127     IN      A       210.89.164.90


;; Query time: 2 msec

;; SERVER: 127.0.0.53#53(127.0.0.53)

;; WHEN: Thu Jul 05 22:11:14 KST 2018

;; MSG SIZE  rcvd: 102 


dig [도메인명] [유형]


root@choi:~# dig google.com -t MX


; <<>> DiG 9.11.3-1ubuntu1-Ubuntu <<>> google.com -t MX

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44491

;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1


;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 65494

;; QUESTION SECTION:

;google.com.                    IN      MX


;; ANSWER SECTION:

google.com.             600     IN      MX      10 aspmx.l.google.com.

google.com.             600     IN      MX      20 alt1.aspmx.l.google.com.

google.com.             600     IN      MX      40 alt3.aspmx.l.google.com.

google.com.             600     IN      MX      30 alt2.aspmx.l.google.com.

google.com.             600     IN      MX      50 alt4.aspmx.l.google.com.


;; Query time: 70 msec

;; SERVER: 127.0.0.53#53(127.0.0.53)

;; WHEN: Sun Jul 08 18:47:42 KST 2018

;; MSG SIZE  rcvd: 147 



DIG를 사용해서 검색할 수 있는 레코드 유형

  • A : 주소 레코드로 질의된 도메인과 맵핑된 IP 주소 목록
  • AAAA : IP 버전 6 주소 레코드
  • CNAME : 캐노니컬 네임 레코드로 명시된 도메인이 캐노니컬 레코드인 경우 도메인 명을 반환
                 이 옵션은 지정된 도메인이 다른 도메인을 의미하는 별칭인지, 해당도메인이 다른 도메인을 의미하는 별칭인지 알아 볼때 사용
  • MX : 메일 익스체인지 레코드로 지정된 도메인인의 메시지 전송 에이전트와 맵핑된 주소목록을 반환
  • PTR : 포인터 레코드로 역방향 DNS 검색시 종종 사용
  • SOA : 권한(authority) / 구역 (zone) 레코드의 시작 부분으로 지정된 도메인의 '대표권한' 도메인 서버에 관한 레코드를 반환
  • AXFR : 권한 구역 전달로 네잌 서버에게 해당 도메인과 관련된 모든 레코드를 반환하도록 요청 
              이 옵션은 상당한 양의 정보 노출 취약점을 야기하며 꽤 효과적인 서비스 거부 공격에 악용될 수 있다.
dig가 DNS 질의의 세부 결과는 생략한채 중요 정보, 즉 요청한 주소만 반환 하게 할 수 있다 

dig [도메인 명] +short

root@choi:~# dig  naver.com +short

125.209.222.141

210.89.160.88

210.89.164.90

125.209.222.142


dig에 -x 옵션을 지정하면 역방향 IP주소결정도 수행 가능합니다.

root@choi:~# dig -x 8.8.8.8


; <<>> DiG 9.11.3-1ubuntu1-Ubuntu <<>> -x 8.8.8.8

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30461

;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1


;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 65494

;; QUESTION SECTION:

;8.8.8.8.in-addr.arpa.          IN      PTR


;; ANSWER SECTION:

8.8.8.8.in-addr.arpa.   65640   IN      PTR     google-public-dns-a.google.com.


;; Query time: 2 msec

;; SERVER: 127.0.0.53#53(127.0.0.53)

;; WHEN: Sun Jul 08 19:12:39 KST 2018

;; MSG SIZE  rcvd: 93 


DNSMAP 사용하기 


dig나 whois 도구로 타겟 호스트나 네트워크 관련된 도메인 명이나 서브도메인을 알아내기 어려운 경우 dnsmap이나 dnsenum을 사용해서 부르트포스가 가능하다.


root@choi:~# dnsmap gmarket.com

dnsmap 0.30 - DNS Network Mapper by pagvac (gnucitizen.org)


[+] searching (sub)domains for gmarket.com using built-in wordlist

[+] using maximum random delay of 10 millisecond(s) between requests


m.gmarket.com

IP address #1: 183.111.134.253


mobile.gmarket.com

IP address #1: 183.111.134.253


ns.gmarket.com

IP address #1: 117.52.16.50


ns2.gmarket.com

IP address #1: 117.52.16.50


www.gmarket.com

IP address #1: 183.111.134.253


[+] 5 (sub)domains and 5 IP address(es) found

[+] completion time: 10 second(s) 




반응형
반응형

후이즈 서버는 특정기관이 관리하고 소유하고 있는 IP 주소 도메인 명 그밖의 네트워크 주소 지정 관련 정보를 보유한다.


모의 해킹 업무시 IP주소 목록이나 IP주소로 맵핑되는 도메인 명을 제공받을 수 있다.


사용법 : whois [IP주소]


root@choi:~# whois 8.8.8.8


#

# ARIN WHOIS data and services are subject to the Terms of Use

# available at: https://www.arin.net/whois_tou.html

#

# If you see inaccuracies in the results, please report at

# https://www.arin.net/resources/whois_reporting/index.html

#


# start


NetRange:       8.0.0.0 - 8.127.255.255

CIDR:           8.0.0.0/9

NetName:        LVLT-ORG-8-8

NetHandle:      NET-8-0-0-0-1

Parent:         NET8 (NET-8-0-0-0-0)

NetType:        Direct Allocation

OriginAS:

Organization:   Level 3 Parent, LLC (LPL-141)

RegDate:        1992-12-01

Updated:        2018-04-23

Ref:            https://whois.arin.net/rest/net/NET-8-0-0-0-1




OrgName:        Level 3 Parent, LLC

OrgId:          LPL-141

Address:        100 CenturyLink Drive

City:           Monroe

StateProv:      LA

PostalCode:     71203

Country:        US

RegDate:        2018-02-06

Updated:        2018-02-22

Ref:            https://whois.arin.net/rest/org/LPL-141



OrgAbuseHandle: IPADD5-ARIN

OrgAbuseName:   ipaddressing

OrgAbusePhone:  +1-877-453-8353

OrgAbuseEmail:  ipaddressing@level3.com

OrgAbuseRef:    https://whois.arin.net/rest/poc/IPADD5-ARIN


OrgTechHandle: IPADD5-ARIN

OrgTechName:   ipaddressing

OrgTechPhone:  +1-877-453-8353

OrgTechEmail:  ipaddressing@level3.com

OrgTechRef:    https://whois.arin.net/rest/poc/IPADD5-ARIN


# end



# start


NetRange:       8.8.8.0 - 8.8.8.255

CIDR:           8.8.8.0/24

NetName:        LVLT-GOGL-8-8-8

NetHandle:      NET-8-8-8-0-1

Parent:         LVLT-ORG-8-8 (NET-8-0-0-0-1)

NetType:        Reallocated

OriginAS:

Organization:   Google LLC (GOGL)

RegDate:        2014-03-14

Updated:        2014-03-14

Ref:            https://whois.arin.net/rest/net/NET-8-8-8-0-1



OrgName:        Google LLC

OrgId:          GOGL

Address:        1600 Amphitheatre Parkway

City:           Mountain View

StateProv:      CA

PostalCode:     94043

Country:        US

RegDate:        2000-03-30

Updated:        2017-12-21

Ref:            https://whois.arin.net/rest/org/GOGL



OrgAbuseHandle: ABUSE5250-ARIN

OrgAbuseName:   Abuse

OrgAbusePhone:  +1-650-253-0000

OrgAbuseEmail:  network-abuse@google.com

OrgAbuseRef:    https://whois.arin.net/rest/poc/ABUSE5250-ARIN


OrgTechHandle: ZG39-ARIN

OrgTechName:   Google LLC

OrgTechPhone:  +1-650-253-0000

OrgTechEmail:  arin-contact@google.com

OrgTechRef:    https://whois.arin.net/rest/poc/ZG39-ARIN


# end


  • 객체 : 후이즈 질의나 검색을 실행할 때 송수신되는 정보이며 여기에는 해당 IP의 다양한 키-값 쌍 정보가 들어있다
  • 유지관리자 : 해당 레코드 / 객체 자체를 과리하는 사람
사용법 : whois -i [항목 이름] [값]

예를들어 야후! 직원이 유지관리하는 모든 후이즈 레코드를 검색하는 명령어이다


root@choi:~# whois -i mnt-by YAHOO-MNT|more

% This is the RIPE Database query service.

% The objects are in RPSL format.

%

% The RIPE Database is subject to Terms and Conditions.

% See http://www.ripe.net/db/support/db-terms-conditions.pdf


% Note: this output has been filtered.

%       To receive output for a database update, use the "-B" flag.


% Information related to '188.125.64.0 - 188.125.71.255'


% Abuse contact for '188.125.64.0 - 188.125.71.255' is 'abuse@yahoo-inc.com'


inetnum:        188.125.64.0 - 188.125.71.255

netname:        IR-YAHOO

descr:          Yahoo! Europe

country:        IE

admin-c:        YEU-RIPE

tech-c:         YEU-RIPE

status:         ASSIGNED PA

mnt-by:         YAHOO-MNT

created:        2010-10-20T08:59:32Z

last-modified:  2013-08-06T22:50:27Z

source:         RIPE


role:           Yahoo Europe Operations Department

address:        Yahoo Europe Operations

address:        125 Shaftesbury Avenue

address:        Londo

address:        WC2H 8AD

remarks:        trouble: uk-abuse@cc.yahoo-inc.com

admin-c:        NA1231-RIPE

tech-c:         NA1231-RIPE

tech-c:         IG1154-RIPE

nic-hdl:        YEU-RIPE

mnt-by:         YAHOO-MNT

created:        2005-02-21T10:54:13Z

last-modified:  2014-03-25T20:11:11Z

source:         RIPE # Filtered



여기에 IP 주소 부분 만 추출 하는 간단한 방법은 
whois -i mnt-by YAHOO-MNT | grep inetnum


그 밖에 역방향 질의를 수행 할 수 있는 항목은 

  • -i admin-c [NIC 핸들 또는 사람]
  • -i person [NIC 핸들 또는 사람]
  • -i nsserver [도메인이나 주소의 프리픽스나 범위, 또는 단일 주소]
  • -i sub-dom [도메인]
  • -i udp-to [이메일]
  • -i local-as [자율 시스템 번호]




반응형
반응형

find는 간편하지만 강력한 방법으로 파일시스템의 내용을 검색하는 기술도 매우 중요합니다.

 

옵션 정리

  • -H : 심볼릭 링크를 따르지 않는다. 심볼릭 링크를 일반 파일로 취급해 대상 파일로 이동하지 않는다.
  • -L : 처리 중인 디렉토리의 심볼릭 링크를 따른다.
  • -P : 심볼릭 링크를 일반 파일로 취급한다. 심볼릭 링크가 가르키는 대상 파일이 아닌 심볼릭 링크 자체에 대한 속성을 철

디렉토리 탐색옵션

  • -maxdepth N : 현재 디렉토리에서 최대 N단계 까지의 항목들에게만 검사를 수행한다.
  • -mindepth N : 명시된 경로에서 최소 N단계까지의 검사를 수행한다.
  • -daystart : 시간과 관련된 검사를 수행할 때 기준 시간 값으로 기본값인 24시간 이내 대신에 현재일자의 00시 00분 이후의 값을 활요
  • -mount : 다른 파일시스템은 탐색하지 않는다.

파일검사 옵션 : 파일에 적용되며 검사 조건의 만족여부에 따라 참 또는 거짓을 반환

  • -amin N : 파일의 마지막 접근 시간이 N분 이전이어야 된다.
     (-amin 20 : 정확히 20분전에 접근된 파일 / -amin +35 : 최대 35분 이전까지 접근된 파일)
  • -atime N :  N*24시간, 즉 N일 전에 접근된 파일 (소수점 이하는 무시)
  • -mmin  N : 파일이 수정된 시간이 N분 이전이어야 한다.
  • -mtime N : -atime과 동일한 방법이지만 시간이 기준
  • -executable | -readable | - writable : 파일의 점근 권한이 각각 실행, 읽기, 쓰기 가능인지 검사
  • -perm : 접근 권한을 검사 조건으로 사용
  • -iname [이름] : 파일명이 이름과 일치해야 된다. (대소문자는 무시)
  • -regex [패턴] : 지정된 패턴을 정규 표현식으로 해석해서 파일의 경로명과 매칭 (단, 전체 경로명을 맵핑해야 한다)

    예제)
  1.  /etc 디렉토리 아래에 존재하는 파일중에 p로 시작하여 임의의 문자로 끝나는 파일을 모두 검색
     : find / -regex '^/etc/p[a-z]*$'
  2. 파일시스템에서 설정과 관련된 모든 파일을 찾는다. 대소문자의 차이는 무시한다.
     : find / -regex '^[/a-z_]*[cC]+[Oo]*[nN]+[fF]+[iI]*[gF]+$'

     

 파일동작 옵션

  • -delete : 지정된 검사를 만족하는 파일을 삭제한다.
  • -exec : 매칭되는 파일을 대상으로 임의의 명령어 실행. 이 인자는 실행할 명령을 생성하는 방식,
    즉 find의 검색 결과를 exec* 유형의 시스템 호출로 전달하는 식으로 동작
    find는 -exec 스위치 이후 부터 ';' 까지 모든 인자를 실행될 명령의 인자로 사용
    검색된 파일의 이름은 { } 로 표시
    ex) find /etc/ -maxdepth 1 -name passwd -exec stat {} \;


반응형
반응형

전반부 처리와 후반부 처리

  • 빠른 실행 속도와 대량 작업 실행이라는 인터럽트의 2가지 목표는 서로 충돌하는 점이다.
  • 이 목표를 달성하기 위해 인터럽트 처리는 두 부분으로 나눠져 있다.
    (전반부 처리 top half 와 후반부 처리 bottom half)
  • 전반부 처리(top half)는 인터럽트를 받은 즉시 실행되며 인터럽트 수신확인이나 하드웨어 재설정 처리시한이 중요한 작업만 처리
  • 나중에 할 수 있는 일들은 후반부 처리(bottom half)로 지연 시킨다.

인터럽트 핸들러 등록

  • 인터럽트 핸들러는 하드웨어를 관리하는 드라이버가 담당한다
  • 드라이버는 <linux/interrupt.h> 파일에 정의된 request_irq() 함수를 이용하여 인터럽트를 활성화시키고 인터럽트 핸들러를 등록
  • 첫번째 irq 인자를 통해 할당할 인터럽트를 저장하다. 기본장치의 경우 번호가 할당되어 있지만 다른 장비들은 탐색 작업이나 프로그램에 따라 동적으로 할당된다.
  • 두번째 handler 인자는 인터럽트를 처리할 실제 인터럽트 핸드러를 가르키는 함수 포인트이다
  • typedef irqreturn_t (*irq_handler_t)(int, void *); 

  • 세번째 flag 인자는 0또는 <linux/interrupt.h>에 정의된 플래그를 조합한 비트마스크 값을 사용한다.
  1. IRQF_DISABLED
  2. IRQF_SAMPLE_RANDOM
  3. IRQF_TIMER
  4. IRQF_SHARED
  • 네번째 name 인자는 인터럽트를 사용하는 장비의 ASCII 형식 이름이다
  • 다섯번째 dev 인자는 인터럽트를 공유할 때 사용한다. 인터럽트 핸들러를 해제할 때 dev에 고유한 쿠키값을 지정함으로써 해당 인터럽트 라인에서 원하는 인터럽트 핸들러만을 제거 할 수 있다.
  • 성공하면 request_irq()는 0을 리턴하고 오류가 발생할 때는 0이 아닌값을 사용한다.
  • request_irq()는 휴면상태를 허용하기 때문에 인터럽트 컨텍스트에 있을 때나 코드 실행이 중단되는 상황에서는 호출 불가하다

 

반응형
반응형

리눅스 계열에서 콘솔 명령어로 간단히 계정을 추가 변경 삭제하는 방법입니다.

 

useradd 의 도움말 화면 입니다.
useradd
명령은 새로운 사용자 계정을 추가 하는 명령어 입니다.

형식 
# useradd
옵션 계정명

옵션
-d
홈디렉토리 : 홈디렉토리의 경로를 지정해줍니다. 홈디렉토리를 생성할려면 -m 옵션을 같이 사용합니다.
-u uid : uid
를 지정합니다.
-g gid : gid
그룹을 지정합니다.
-G groups :
보조그룹을 지정합니다.
-s shell :
쉘을 지정합니다.
-c
주석 : 계정에 설명을 붙여 줍니다.
-D : useradd
의 기본 설정값을 확인합니다. 기본설정은 /etc/default/useradd 에 있습니다.

계정생성시 홈디렉토리에 복사될 파일 모음
/etc/skel
계정을 새로 생성하면 위에 경로에 저장되어 있는 파일이 자동으로 홈디렉토리에 복사됩니다.

 

 

rootblog 라는 계정을 생성해봤습니다.
-d
옵션으로 홈디렉토리 경로를 지정해주었지만 해당경로는 없는 경로이므로 
-m
옵션으로 디렉토리 생성을 하였습니다.

계정 정보 확인방법
# cat /etc/passwd | grep
계정명

/etc/passwd 안에 사용자 계정정보가 들어 있습니다.
cat
명령으로 열어보고 | grep 계정명으로 특정 단어만 검색해서 확인을 하면 됩니다.
나오는 정보는
[ID :
패스워드 : UID : GID : 주석 : 홈디렉토리 : ]
순서로 정보가 표시 됩니다.
패스 워드 정보는 x or 1! or 암호화된 상태 로 표시되게 됩니다.


 

 

 

usermod 의 도움말 화면입니다.
usermod
는 계정에 설정을 변경 할때 사용하는 명령어 입니다.

형식
# usermod
옵션 계정명

옵션
-u uid :
새로운 UID 를 지정합니다. -o 옵션과 같이 사용하면 강제설정이 가능합니다.(root로 가능)
-g gid :
새로운 GID 를 지정합니다.
-G groups :
새로운 보조그룹을 지정합니다.
-d 
홈디렉토리 : 새로운 홈디렉토리를 지정합니다. -m 옵션과 같이 사용해서 새로 생성도 가능합니다.
-s
: 새로운 쉘 을 지정합니다.
-c
주석 : 새로운 주석을 지정합니다.
-l ID :
로그인 ID를 바꾸는 옵션 입니다. 새로운 계정명으로 변경합니다.


 

 

계정에 gid를 변경을 해봤습니다.
root
계정의 gid로 변경한게 아니기 때문에 -o 옵션은 안해줘도 상관이 없습니다.
501 -> 505
로 변경이 된걸 확인할수 있습니다.


 

 

userdel 의 도움말입니다.
userdel
은 계정을 지우는 명령어 입니다.

형식
# userdel
옵션 계정명

옵션
-r :
홈디렉토리도 삭제를 합니다.
-f :
삭제중에 나는 에러를 무시하고 강제로 삭제 합니다.

 

 

 

roottest 란 계정을 만든후 삭제를 해봤습니다.
-r
-f 옵션으로 삭제하면 계정과 파일이 모두 지워지니 주의 해서 실행해야 합니다.

 

 

 

passwd 의 도움말 입니다.
passwd
명령어는 계정에 비밀번호를 지정해 줄때 사용합니다.
useradd
로 새로운 계정을 만들면 계정에 비밀번호가 없는 상태로 생성이 됩니다.
가능한 useradd 후에 바로 passwd로 비밀번호를 지정해주는걸 권장합니다.

형식
# passwd
옵션 계정명

옵션
-S :
계정에 상태를 표시합니다. (PS : 정상 , NP : 패스워드가 없음 , LK : Lock 상태거나 NP 상태)
-d :
계정에 패스워드를 삭제 합니다.
-l :
계정을 lock 상태로 변경합니다.
-u :
계정에 lock 상태를 해제 합니다.

 

 

 

rootblog 계정에 패스워드를 지정하고 삭제를 해봤습니다.

 

 

 

반응형

'리눅스 시스템 운영 ' 카테고리의 다른 글

네트워크 정보 수집 - whois  (0) 2018.07.05
FIND - 파일시스템 검색  (0) 2018.06.18
공개소프트웨어 라이센스 유형  (0) 2018.01.23
리눅스의 교과서 - man  (0) 2017.11.14
vim 설정파일  (0) 2017.11.14
반응형

 

   공개소프트웨어의 라이센스는 GPL을 시작으로 하여 많은 종류들이 있다. GPL, BSD라이센스, MPL라이센스등 환경과 필요에 의해서 만들어진 라이센스들이 있으며 이들 가운데 현재 주로 사용되고 있는 라이센스들과 국내의 실정에 맞는 라이센스들 위주로 살펴보자.


ㅇ GPL

  GPL라이센스는 GNU프로젝트에 가장 먼저 적용된 라이센스이며 리눅스에 적용되어 있고 또한 가장 널리 적용되고 가장 대표적인 공개소프트웨어의 라이센스이다. GPL은 리차드스톨만(Richard Stallman)에 의해 만들어졌고 자유소프트웨어 재단(FSF : Free Software Foundation)의 철학을 반영하고 있다. GPL이 적용되어 있는 공개소프트웨어의 복제와 유통에는 제약이 없다. 하지만 GPL라이센스가 적용되어 있는 소프트웨어는 다음과 같은 조건을 따라야 한다. 즉, 자유소프트웨어는 다음과 같은 조건하에서 소프트웨어의 복제와 개작, 배포가 자유롭게 허용되며, 프로그램의 사용(프로그램을 실행시키는 행위)에 대해서는 아무런 제한 없이 자유롭게 사용할 수 있다.


  ① 사용자가 소스코드를 쉽게 사용할 수 있어야 한다.

  ② 배포되는 소프트웨어에는 GNU GPL이 포함되어 있어야 한다. 배포된 소프트웨어를 사용하는 사람은 GPL상의 사용허가를 그대로 유지하는 조건하에 소스코드를 자유롭게 복제, 배포할 수 있다.
  ③ 쌍방향(interactive)프로그램의 경우, 프로그램이 시작될 때 이를 게시하여야 한다.

  ④ 프로그램을 수정할 경우에는 언제, 누구에 의해 수정되는지를 명시해야한다.  
  ⑤ 파생품을 만들수 있으며 만들어진 파생품에는 GPL이 적용되어야 한다. 즉, 소프트웨어를 양도받은 자는 소프트웨어를 자유롭게 개작할 수 있고, 개작된 소프트웨어는 GPL을 그대로 유지하는 조건에서 배포할 수 있다.

  ⑥ GPL소프트웨어를 결합하여 만든 소프트웨어에는 반드시 GPL이 적용되어야 한다.

  ⑦ 소프트웨어가 오브젝트 파일(object code)이나 실행파일 형태로 배포될 경우 반드시 소스코드를 함께 제공하여야 한다.

  ⑧ GPL하에서 배포되는 소프트웨어는 무상으로 제공되는 것이므로 소프트웨어에 대한 어떠한 보증도 제공되지 않는다.

  위의 ⑥번째 조건으로 인하여 GPL은 바이러스적인 효과를 가지고 있다. 즉, 기업에서 GPL이 적용된 소프트웨어의 일부를 사용하여 다른 소프트웨어를 개발하였을 경우에 기업은 그들이 개발한 소프트웨어의 소스코드를 공개해야만 한다.

 

  결과적으로 소프트웨어를 제작 판매하는 기업에서는 GPL이 적용된 소프트웨어를 기피하게 되었다.  이것이 GPL의 아킬레스건이되어 버렸다.

  1984년 FSF를 설립한 이후 1989년에 FSF에 의해 GPL 1.0이 만들어 졌으며 1991년 FSF에 의해 GPL 2.0이 만들어지고 현재까지 사용하고 있다. GPL은  현실을 반영하면서 계속 진화하고 있으며 초기 1.0버전과 2.0 버전, 그리고  2007년도 쯤에 GPL3버전이 나올 예정이다. 

  GPL라이센스에 있어 가장 핵심이 되는 부분은 소프트웨어를 소스코드의 형태로 복제, 수정, 배포가 가능한 자유가 보장되며 또한 수정된 소프트웨어에 대해서도 동일한 자유와 조건이 계속해서 순차적으로 보장되도록 하는 것이다.

  GPL은 저작권을 전제로 하고 있지만 저작권의 본래의 취지를 반대로 이용하여 소프트웨어를 사적인 재산권의 대상으로 삼는 대신에 자유롭게 이용, 복제, 배포, 수정될 수 있는 수단으로 삼은 것이다.

  즉, 일반적으로 프로그램의 개발자들이 ‘저작권’을 이용하여 재산적 권리를 취득하는 것과 마찬가지로 자유소프트웨어의 개발자들은 ‘저작권’을 이용하여 프로그램의 공유화를 가능하게 한 것이다. 그래서‘저작권(copyright)’을 기반으로 하면서도 이를 역이용하여 프로그램의 공유를 보장하려는 이러한 움직임을 ‘카피레프트(copyleft)’라고 부르게 된 것이다.

  따라서 카피레프트의 조건에 따라 배포된 프로그램에 어떠한 수정이 이루어지거나, 여기에 다른 프로그램이 결합되더라도 그 결과물로서의 소프트웨어에는 카피레프트가 적용되는 것이다.


ㅇ LGPL

  GPL의 바이러스적인 속성으로 인하여 소프트웨어를 개발하여 판매하는 기업들로 부터 호응을 얻지 못하기 때문에 자유소프트웨어재단(FSF)에서는 GPL의 이런 속성을 완화하여 LGPL(Lesser General Public License)이라는 라이센스를 새롭게 만들었다. 결론적으로 FSF에서 LGPL을 만든 궁극적인 목적은 GNU 프로젝트에 의해 개발된 소프트웨어와 사적 소프트웨어를 포함한 다른 소프트웨어와의 통합을 허용하기 위함이다. LGPL라이센스를 적용하여 개발된 소프트웨어는 GPL에 오염되지 않는다. LGPL라이센스를 만들게된 궁극적인 목적은 자유소프트웨어하에서 개발되는 소프트웨어 제품들이 널리 많이 사용되어 표준이 되도록 하는 것과 독점소프트웨어 제품들과 경쟁을 할 수 있도록 하기 위함이였다. 이렇게 하여 LGPL이 적용된 최초의 소프트웨어가 GNU C라이브러리였다.


ㅇ MPL

  MPL은 넷스케이프(Netscape)사가 개발한 모질라(Mozilla) 브라우즈의 소스코드를 공개하는데 사용한 라이센스로서 "Mozilla Public License"의 약어이다. MPL라이센스는 소스코드와 실행파일을 불리하여 이 둘을 보완하여 만든 것이다. 먼저 소스코드 측면에서는 소스코드는 반드시 공개되어야 하며 소스코드를 수정하였을 경우에는 최초의 저작자에게 수정한 내용을 통지해야 한다.

  실행파일 측면에서는 실행파일 자체를 독점라이센스로 배포할 수 있다.  즉, 저작자의 이익을 보호할 뿐 아니라, 수정, 보완된 소프트웨어의 배포를 통한 상업적인 이익을 보호할 수 있으며 또한 적정한 가격을 요구할 수 있고, 불법복제에 대해 제재를 가할 수도 있다. 결국 이 소프트웨어를 더욱 보완, 발전시키려는 개발자들의 이익을 보호할 수 있게 된다. 즉, 기술적으로 개선을 할 경우, 코드를 보고 수정한 후, 컴파일하여 새로운 독창적인 버전으로 재배포할 수 있다.


ㅇ BSD License (MIT X License)

  BSD(Berkeley software distribution)라이센스는 소프트웨어 산업과 관련하여 가장 다양하게 사용될 수 있는 라이센스이다. BSD라이센스가 적용되는 소프트웨어를 수정, 보완한 소프트웨어는 독점 소프트웨어가 될 수도 있고, BSD라이센스로 배포될 수도 있다. 또한 GPL로 배포될 수도 있다. 즉, BSD 라이센스는 사용자들에게 거의 제한을 가하지 않는 것이 특징이며 BSD 라이센스가 적용되어 있는 대표적인 공개소프트웨어로는 아파치(APACHE)웹서버가 있다.

  또 BSD 라이센스에는 copyleft 조항도 없기 때문에 사적 소프트웨어 벤더들도 BSD 라이센스로 배포되는 OSS 컴포넌트를 그들의 제품에 무제한으로 사용할 수 있다. 예컨대 X 라이센스는 소프트웨어를 사용, 복제, 변경, 통합, 발행, 배포 및 판매할 권리를 부여한다. 다만 때때로 저작권 표기를 요구하거나, 코드 변경의 날짜 저자 및 변경 목적을 요구하기도 한다.

  또한 BSD 라이센스에는 copyleft 조항이 없기 때문에 공개소프트웨어 컴포넌트를 그들의 사적소프트웨어내에 무제한으로 사용할 수 있다. 예를들어 X라이센스는 소프트웨어를 사용, 복제, 변경, 통합, 발행, 배포 및 판매할 권리를 부여하고 있다.

이상과 같이 공개소프트웨어에 관련된 주요 라이센스들에 대해서 살펴보았다.

반응형

+ Recent posts