반응형

Root 도메인 : 도메인의 중심!(ex: ns.kjj.kr. 에서 kr 뒤에 붙는 점(.)이 루트도메인을 의미)


도메인을 질의할때 뒤에서 부터 질의를 시작한다.

ex)www.kjj.kr. 이라면 .부터 시작해서 kr → kjj → www → www.kjj.kr 식으로 찾아나간다.


쿼리 과정

DNS의 변환은 크게 두가지 방식으로 할 수 있다.

1. 반복적 DNS 변환

2. 재귀적 DNS 변환


반복적 DNS 변환은 도메인을 가지고 끝에서부터 하나씩  질의를 해나가며 알아내는 것이고

재귀적 DNS 변환은  


TLD(Top Level domain) 최상위 도메인

- 일반 도메인(generic domain) gTLD

- 국가 도메인(country domain) ccTLD

- 인터넷 인프라 도메인(infrastructure domain) ARPA


SLD(Second level domain)2단계 도메인


<네임서버 유형>

네임서버에는 Primary 네임서버, Secondary 네임서버, Cache only Server로 구분할 수 있다.


-Primary Server (프라이머리 네임서버): 독자적으로 관리하는 zone 정보파일을 유지하면서 질의에 응답하고 정보를 갱신하는 서버를 프라이머리 네임서버라고 한다.


-Secondary server(세컨더리 네임서버): 프라이머리서버에 부하가 많이 걸릴 경우 분산하기 위해 사용하거나 프라이머리서버의 자료를 백업하여 두고 프라이머리서버에 장애가 발생하면 프라이머리서버의 역할을 위임 받아서 동작하는 서버


-Master Server(마스터 네임서버): 세컨더리서버의 관점에서 볼 때 도메인 설정 자료를 백업해 오는 원본서버를 지칭


-Slave Server(슬라이브 네임서버): 마스터서버의 관점에서 볼 때 자신의 설정자료를 백업하기 위해 가져가는 서버를 지칭


-Cache Only Server(캐시온리 네임서버): 스스로 관리하는 zone은 없고 단지 반복되는 질의만을 전문적으로 수행하는 서버이다.


-Forwarder Server(포워드 서버): 질의를 해석하기 위해 다른 DNS 서버로 다시 질의를 요청하는 서버를 말한다.


[root@kangtest php-5.2.1]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1      localhost localhost.localdomain localhost6 localhost6.localdomain6

127.0.0.1 kangtest kangtest


hosts 파일에 지정되지 않은 도메인은 resolv.conf를 참조한다.

[root@kangtest php-5.2.1]# cat /etc/resolv.conf

# Generated by NetworkManager

nameserver 168.126.63.1


<DNS 네임서버와 리졸버 개요>

DNS는 크게 다음의 3가지 요소로 구성된다.

1) 도메인네임 공간(Domain Name Space)과 리소스 레코드(Resource Record)

  • 도메인 네임 공간은 도메인네임의 구성과 그 구조를 정의하는 반면, 리소스 레코드는 하나의 도메인네임이 가질 수 있는 속성정보군을 정의한다.


2) 네임서버(Name Server)

  • 네임서버는 도메인 데이터베이스의 일정영역(zone)을 소유하고 있는 DNS서버이다. 도메인 데이터베이스는 DNS 체계에 따라 분산구조를 지니고 있다.

  • 네임서버는 두가지의 모드로 동작할 수 있다.

  1. 리커시브가 아닌 모드(non-recursive mode)

  • 네임서버가 기본적으로 동작하는 동작 모드

  1. 리커시브 모드(recursive mode)

  • 네임서버가 옵션기능으로 구현, 동작할 수 있는 동작 모드이다.


3) 리졸버(Resolver)

  • 리졸버는 도메인네임서버와 사용자 프로그램(user program)간의 인터페이스의 기능을 한다.


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

<설치되어있는 bind 패키지>

[root@kangtest ~]# rpm -qa|grep bind

bind-utils-9.8.2-0.30.rc1.el6_6.1.x86_64

ypbind-1.20.4-30.el6.x86_64

samba-winbind-clients-3.6.23-12.el6.x86_64

bind-9.8.2-0.30.rc1.el6_6.1.x86_64

samba-winbind-3.6.23-12.el6.x86_64

bind-libs-9.8.2-0.30.rc1.el6_6.1.x86_64

rpcbind-0.2.0-11.el6.x86_64

PackageKit-device-rebind-0.5.8-23.el6.x86_64

bind-chroot-9.8.2-0.30.rc1.el6_6.1.x86_64


<패키지 설치>

[root@kangtest ~]# yum install -y bind

Loaded plugins: fastestmirror, refresh-packagekit, security

Setting up Install Process

Loading mirror speeds from cached hostfile

* base: centos.tt.co.kr

* extras: centos.tt.co.kr

* rpmforge: ftp.riken.jp

* updates: centos.tt.co.kr

base                                                                                                                                                                                 | 3.7 kB 00:00

extras                                                                                                                                                                               | 3.4 kB 00:00

rpmforge                                                                                                                                                                             | 1.9 kB 00:00

updates                                                                                                                                                                              | 3.4 kB 00:00

Package 32:bind-9.8.2-0.30.rc1.el6_6.1.x86_64 already installed and latest version

Nothing to do


<네임서버 정보 검색 유틸리티>

  1. host

  2. dig

  3. nslookup


host : 네임서버에 질의하여 호스트의 IP를 얻을 수 있는 가장 기본적이며 간단한 유틸리티

"host [찾고자 하는 호스트이름]"의 형태로 질의한다.

→ google 검색 결과

[root@kangtest ~]# host www.google.com

www.google.com has address 74.125.203.99

www.google.com has address 74.125.203.106

www.google.com has address 74.125.203.104

www.google.com has address 74.125.203.103

www.google.com has address 74.125.203.147

www.google.com has address 74.125.203.105

www.google.com has IPv6 address 2404:6800:4008:c02::63


dig :  최근에 많이 사용하고 있는 네임서버 검색 유틸리티이며, 기본형식으로 "dig[찾고자 하는 호스트이름]"형식을 사용한다.

→ google 검색 결과

[root@kangtest ~]# dig www.google.com


; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6_6.1 <<>> www.google.com

;; global options: +cmd

;; Got answer:

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

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


;; QUESTION SECTION:

;www.google.com.    IN    A


;; ANSWER SECTION:

www.google.com.    274    IN    A    74.125.203.105

www.google.com.    274    IN    A    74.125.203.106

www.google.com.    274    IN    A    74.125.203.147

www.google.com.    274    IN    A    74.125.203.99

www.google.com.    274    IN    A    74.125.203.103

www.google.com.    274    IN    A    74.125.203.104


;; AUTHORITY SECTION:

google.com.    68434    IN    NS    ns2.google.com.

google.com.    68434    IN    NS    ns3.google.com.

google.com.    68434    IN    NS    ns1.google.com.

google.com.    68434    IN    NS    ns4.google.com.


;; ADDITIONAL SECTION:

ns1.google.com.    235371    IN    A    216.239.32.10

ns2.google.com.    236039    IN    A    216.239.34.10

ns3.google.com.    236411    IN    A    216.239.36.10

ns4.google.com.    236441    IN    A    216.239.38.10


;; Query time: 11 msec

;; SERVER: 168.126.63.1#53(168.126.63.1)

;; WHEN: Tue Dec 30 15:39:09 2014

;; MSG SIZE  rcvd: 264


nslookup : 네임서버 질의시 가장 많이 사용하는 유틸리티이며, "nslookup [찾고자 하는 호스트이름][질의할 네임서버]"의 형식을 사용한다.

질의할 네임서버를 지정하지 않으면  /etc/resolv.conf에 지정된 네임서버에게 질의한다.


[root@kangtest ~]# nslookup www.google.com

Server:    168.126.63.1

Address:    168.126.63.1#53


Non-authoritative answer:

Name:    www.google.com

Address: 74.125.203.99

Name:    www.google.com

Address: 74.125.203.103

Name:    www.google.com

Address: 74.125.203.104

Name:    www.google.com

Address: 74.125.203.105

Name:    www.google.com

Address: 74.125.203.106

Name:    www.google.com

Address: 74.125.203.147


nslookup은 실행 후 대화형 프롬프트 >를 표시하고 /etc/resolver.conf에 정의된 첫번째 네임서버를 기본 질의 서버로 설정한다.


nslookup은 기본적으로 입력된 도메인에 대해 A레코드를 검색하고, IP주소(in-addr.arpa)에 대해서는 PTR레코드를 검색한다.


<네임서버 운영을 위한 설정파일>

bind-9.2 버전까지는 /etc/named.conf 파일을 사용하였으나 bind-9.3 버전부터(CentOS 5.X RPM)는 named.caching-nameserver.conf파일을 사용하고 있다.

이 파일은 named.rfc1912.zones 파일의 존파일 설정파일을 include 하고 있다.


named.conf 내부

options {

11      listen-on port 53 { 127.0.0.1; };  

네임서버의 포트번호와 접근할 수 있는 IP를 설정하는 지시자(외부에서 네임서버로 접근을 허용해야 한다면 포트 지시자에 허용 ip 부분에 any를 입력하여 외부와의 연결을 허용

12      listen-on-v6 port 53 { ::1; };

이 지시자는 ipv6 하의 네임서버 운영을 설정하는 것으로 현재는 필요하지 않다.

13      directory    "/var/named";

이 지시자는 DNS 의 zone파일의 위치를 지정하는 곳 zone파일의 기본 설정파일들은 /var/named 디렉토리에 모두 위치해 있다.

14     dump-file    "/var/named/data/cache_dump.db";

캐시 덤프 파일이 생성되는 파일의 절대경로 위치를 지정하는 지시자

15     statistics-file "/var/named/data/named_stats.txt";

통계파일이 생서되는 절대경로와 파일이름을 지정하는 지시자

16      memstatistics-file "/var/named/data/named_mem_stats.txt";

메모리 관련 통계파일이 생성되는 절대경로와 파일이름을 지정하는 지시자

17      allow-query { localhost; }; → any

네임서버 쿼리를 허용할 IP 혹은 IP 대역을 설정하는 지시자이다. 여기서는 외부와의 쿼리 허용을 위해서 any를 입력한다.

18      recursion yes;

외부에서 현재의 네임서버를 지정하여 사용할 수 있게 하느냐, 사용할 수 없게 하느냐를 설정하는 지시자이다. 네임서버 쿼리시에도 이 지시자의 설정에 따라 쿼리결과를 얻을 수 없도록 설정 할 수 있다. 기본은 yes로 되어있으나, 네임서버 보안을 위하여 no로 설정하도록 한다.

19

20      dnssec-enable yes;

21      dnssec-validation yes;

22      dnssec-lookaside auto;

23

24      /* Path to ISC DLV key */

25      bindkeys-file "/etc/named.iscdlv.key";

26

27      managed-keys-directory "/var/named/dynamic";

28 };

29

30 logging {

31      channel default_debug {

32              file "data/named.run";

33              severity dynamic;

34      };

35 };

이 부분은 네임서버 실행에 있어서 디버깅시 참고 할 수 있는 로그파일생성 위치를 지정하는 지시자이다. 네임서버에 에러가 발생하면 이 파일을 참고하여 디버깅하면 될 것이다.

36

37 zone "." IN {

38      type hint;

39      file "named.ca";

40 };

존파일에 정의되어 있는 (닷).의 의미는 루트 도메인이라는 뜻이며, 루트 도메인의 내용이 named.ca파일에 정의되어 있다고 알려주고 있다. type설정에서 hint라고 설정하면 루트도메인을 지정한다는 의미이며, master 라고 입력하면 1차 네임서버를 의미하고, slave 라고 입력하면 2차 네임서버를 지정한다는 의미이다.

41

42 include "/etc/named.rfc1912.zones";

43 include "/etc/named.root.key";

44


<네임서버 시작>

[root@kangtest ~]# /etc/rc.d/init.d/named start

Generating /etc/rndc.key:                               [  OK  ]

named 시작 중:                                          [  OK  ]


루트네임서버의 내용

[root@kangtest ~]# cat /var/named/named.ca

; <<>> DiG 9.9.4-P2-RedHat-9.9.4-12.P2 <<>> +norec NS . @a.root-servers.net

;; global options: +cmd

;; Got answer:

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

;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 24


;; OPT PSEUDOSECTION:

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

;; QUESTION SECTION:

;.    IN    NS


;; ANSWER SECTION:

.    518400    IN    NS    a.root-servers.net.

.    518400    IN    NS    b.root-servers.net.

.    518400    IN    NS    c.root-servers.net.

.    518400    IN    NS    d.root-servers.net.

.    518400    IN    NS    e.root-servers.net.

.    518400    IN    NS    f.root-servers.net.

.    518400    IN    NS    g.root-servers.net.

.    518400    IN    NS    h.root-servers.net.

.    518400    IN    NS    i.root-servers.net.

.    518400    IN    NS    j.root-servers.net.

.    518400    IN    NS    k.root-servers.net.

.    518400    IN    NS    l.root-servers.net.

.    518400    IN    NS    m.root-servers.net.


;; ADDITIONAL SECTION:

a.root-servers.net.    518400    IN    A    198.41.0.4

b.root-servers.net.    518400    IN    A    192.228.79.201

c.root-servers.net.    518400    IN    A    192.33.4.12

d.root-servers.net.    518400    IN    A    199.7.91.13

e.root-servers.net.    518400    IN    A    192.203.230.10

f.root-servers.net.    518400    IN    A    192.5.5.241

g.root-servers.net.    518400    IN    A    192.112.36.4

h.root-servers.net.    518400    IN    A    128.63.2.53

i.root-servers.net.    518400    IN    A    192.36.148.17

j.root-servers.net.    518400    IN    A    192.58.128.30

k.root-servers.net.    518400    IN    A    193.0.14.129

l.root-servers.net.    518400    IN    A    199.7.83.42

m.root-servers.net.    518400    IN    A    202.12.27.33

a.root-servers.net.    518400    IN    AAAA    2001:503:ba3e::2:30

c.root-servers.net.    518400    IN    AAAA    2001:500:2::c

d.root-servers.net.    518400    IN    AAAA    2001:500:2d::d

f.root-servers.net.    518400    IN    AAAA    2001:500:2f::f

h.root-servers.net.    518400    IN    AAAA    2001:500:1::803f:235

i.root-servers.net.    518400    IN    AAAA    2001:7fe::53

j.root-servers.net.    518400    IN    AAAA    2001:503:c27::2:30

k.root-servers.net.    518400    IN    AAAA    2001:7fd::1

l.root-servers.net.    518400    IN    AAAA    2001:500:3::42

m.root-servers.net.    518400    IN    AAAA    2001:dc3::35


;; Query time: 58 msec

;; SERVER: 198.41.0.4#53(198.41.0.4)

;; WHEN: Wed Apr 23 14:52:37 CEST 2014

;; MSG SIZE  rcvd: 727


<네임서버 존파일 작성법>

(/var/named 디렉토리)

네임서버를 운영하기 위해서는 존(zone)파일 설정이 가장 중요하다고 볼 수 있다. 도메인에 대한 존파일의 위치는 기본적으로  /var/named/ 디렉토리이다.

[root@kangtest ~]# vi /var/named/named.localhost(예시)

 1 $TTL 1D

 2 @    IN SOA  @ rname.invalid. (

 3                                      0    ; serial

 4                                      1D   ; refresh

 5                                      1H   ; retry

 6                                      1W   ; expire

 7                                      3H ) ; minimum

 8      NS   @

 9      A    127.0.0.1

10      AAAA ::1


위와 같은 존파일은 네임서버 관리자가 빈번히 수정하는 파일로써 각각의 의미를 충분히 이해하고 있어야 한다.

$TTL

$TTL항목은 Time To Live의 약자로써 이곳에 설정한 도메인에 대한 정보를 다른 네임서버에서 읽어간 다음 읽어간 네임서버측에 얼마동안 보관하고 있을 것인가를 설정하는 항목

설정값은 초단위로 설정 예로 $ TTL 86400의 의미는 86400초 즉, 하루 24시간을 의미한다.


@

존파일내의 @의 의미는 ORIGIN을 의미하는 특수문자로 public domain을 의미한다.


IN

IN 다음으로 나오는 우측 설정을 사용한다는 의미이다.


SOA

SOA는 start of authority의 약어로써 도메인네임서버에 대한 모든 정보를 가지고 있으며, 여기서 주의할 점은 도메인이름을 적은 다음에는 항상 닷(.) 루트 도메인을 표시하여야 한다는 점이다.


    0    ;serial

  1D   ; refresh

  1H   ; retry

  1W   ; expire

  3H ) ; minimum

위의 설정들은 모두 마스터 네임서버와 슬레이브 네임서버간의 연동설정을 위한 내용들이다.

NS   @

NS 레코드는 해당 도메인의 네임서버를 지정하는 레코드이다. NS 레코드 다음에 네임서버의 도메인(닷(.) 루트도메인 포함)을 입력한다.


MX

MX 레코드는 Mail Exchanger의 약어로 해당 도메인에 대한 메일서버를 지정하는 레코드 이다.

일반적으로 메일서버 여러개 사용할 때 MX 레코드 다음에 우선순위 번호를 지정하여 메일을 수신할 수 있다.


A    127.0.0.1

A 레코드는 해당 도메인의 실제 IP 주소를 설정하는 레코드이다.



반응형
반응형

유닉스 & 리눅스 파일시스템 종류

유닉스의 파일시스템에서 슈퍼블럭(Superblock)은 디스크의 크기와 같은 파일시스템에 관한 일반적인 정보를 저장하는 곳을 말한다. 이곳의 정확한 정보는 파일시스템에 영향을 미친다.

아이노드(Inode)는 파일 이름을 제외한 파일에 관한 모든 정보를 저장하는 곳을 말한다.


1. EXT2 파일시스템 : 리눅스를 위한 확장성있고 강력한 파일시스템으로 ext의 상위버전으로

파일에 들어 있는 데이터의 데이터 블록에 저장되며 데이터 블록의 크기는 같고 ext2 파일시스템의 크기는 mke2fs 명령을 통하여 파일시스템이 만들어질 때 결정된다.


<ext2 파일시스템의 특징>

* 파일시스템의 모든 정보를 슈퍼블럭과 Group Descriptor Table에 저장한다.


* ext2는 Boot Sector와 Block Group으로 구성되며 Block Group은 파일시스템 손상시 데이터를 복원한다.


* Block은 윈도우 클러스터와 같은 개념으로 1k-4k로 설정이 가능하며 파일시스템 생성시 그 크기를 정할 수 있다.


파일시스템이 효율과 퍼포먼스에 중점을 두고 디자인된 파일시스템으로 예기치 않은 시스템 상의 재난으로부터 FSCK(File System Check)라는 파일시스템 복구 기능을 제공한다.


2. EXT3 파일시스템 : 데이터의 신뢰성이 강화되었고 사용자가 직접 데이터 보호 유형과 수준을 결정할 수 있는 파일시스템을 말한다. 특히 저널링(Journaling) 기술은 데이터를 디스크에 쓰기 전에 로그에 데이터를 남겨 시스템의 비정상적인 셧다운에도 로그를 사용해 FSCK 보다 빠르고 안정적인 복구기능을 제공하는 기술이다.


2. EXT4 파일시스템 : 리눅스의 저널링 파일시스템 중 하나로 ext3 파일시스템의 향상된 버전이다.

<ext4 파일시스템의 특징>

* 대형 파일 시스템 : 최대 1엑사바이트의 볼륨과 최대 16테라바이트의 파일을 지원한다. 현재 e2fsprogs는 16테라바이트의 파일 시스템만 다룰 수 있지만, 보다 큰 드라이브를 지원하기 위한 개발이 진행 중이다.


* Extent : Extent는 ext2와 ext3에 쓰이던 전통적인 블록 매핑(Block mapping) 방식을 대체하기 위한 것이다. Extent는 인접한 물리적 블록의 묶음으로, 대용량 파일 접근 성능을 향상시키고 단편화를 줄인다.


* 하위 호환성 : ext3와 ext2에 대한 하위 호환성이 있어서 ext3와 ext2 파일 시스템을 ext4로 마운트 하는 것이 가능하다. 이는 성능을 조금 향상시킬 수 있는데, ext4의 새 기능 중 새로운 블록 할당 알고리즘 같은 것은 ext3와 ext2에서도 사용될 수 있기 때문이다. ext3는 ext4 파일 시스템을 마운트할 수 있는 ext4에 대한 부분적인 상위 호환성이 있지만 ext4 파티션이 ext4의 중요한 새 특징인 Extents를 사용한다면,  ext3로 마운트는 불가능하다.


* 지연된 할당 : ext는 지연된 할당이라고도 알려진, allocate-on-flush 라는 파일 시스템 성능 기술을 사용한다. 이는 데이터가 디스크에 쓰여지기도 전에 블록을 할당하는 다른 파일 시스템과는 다르게 데이터가 디스크에 쓰여지기 전까지 블록 할당을 지연시킨다.

따라서 실제 파일 크기에 기반하여 블록 할당을 결정함으로 인해 향상된 블록 할당이 가능하게 되어 하나의 파일에 대한 블록이 여러 곳으로 분산되는 현상을 막는다.

이는 다시 디스크 이동을 최소화 시킴으로써 성능을 향상 시킨다.


* 32,000개의 하위 디렉터리 제한 없음 : ext3에서 하위 디렉터리의 수는 32,000개로 제한되어 있다. 이 제한은 ext4에서 64,000개로 늘어났으며 ‘dir_nlink’기능은 이보다 더 큰 개수도 허용한다.


EXT2,3,4 파일시스템의 장단점


구분

EXT2

EXT3

EXT4

장점

* 시스템이 손상될 경우 FSCK 기능을 이용 복구 가능


* 다른 리눅스 파일시스템 대비 비교적 간단 명료함

* 사용자가 직접 데이터 보호 유형과 수준 결정 가능


* EXT2에 비해 빠른 속도의 작업 가능


* 저널링 기능을 사용해 더 빠르고, 안정적인 복구 가능


* 자동 압축 및 안정성


* 향상된 파일 이름 저장 및 길이 지원

* ext3 보다 더욱 큰 용량을 지원


* 대용량 파일 접근 성능을 강화한 Extent 기능 제공


* ext2, ext3 파일시스템에 대한 하위 호환성이 있음


* 하위 디렉터리 수가 64,000개로 증가

단점

* /var 디렉토리와 같이 새로운 자료가 쌓이는 곳에 취약

* Jfs, ext4, XFs와 같이 extents 기능 지원 불가


* Checksum 검사하지 않음

* 지연된 할당과 데이터 유실 가능성




반응형

'운영체제(OS) > 리눅스(Linux)' 카테고리의 다른 글

칼리리눅스 한글 언어 설정 방법  (0) 2017.07.28
네임서버(DNS) 서버  (0) 2017.07.26
리눅스 스케쥴러 cron  (0) 2017.07.16
리눅스 원격파일 전송 명령어 scp  (0) 2017.07.14
리눅스 TCP Wrapper  (0) 2017.07.14
반응형

TCP-Wrapper는 네트워크 서비스에 관한 트래픽을 제어하고 모니터링 할 수 있는 UNIX 기반의 방화벽 툴이다.


임의의 호스트가 서비스를 요청해 오면 실제 데몬을 구동하기 전에 접속을 허용한 시스템인지 여부를 확인하여 호스트명 및 서비스명을 남긴 후 허가된 시스템은 서비스를 제공하고 허가되지 않은 시스템은 서비스를 차단한다.


기존의 설정파일이나 소스코드에 별다른 수정이 필요치 않고, 정상적인 사용자들에게는 불편을 주지 않으면서도 허가되지 않은 접근의 제한 및 탐지가 가능하기 때문에 많은 서버 관리자들이 이 툴을 사용하고 있다.


TCP wrapper는 두 파일에 의해 제어가 된다

접근 제어 리스트

- hosts.allow : 접근 허용 리스트

- hosts.deny : 접근 제어 리스트


접근 제어 형식

접근 제어 리스트 파일에 아래와 같은 형식으로 데몬, 사용자 등의 리스트를 등록한다.

daemon_list : 하나 이상의 데몬 프로세스 이름

client_list : 하나 또는 그 이상의 호스트 이름, 호스트 어드레스, 패턴/와일드카드

shell_command : 규칙이 매칭될 때 수행되는 shell 명령으로 주로 허가되지 않은 접속 요청이 있을 경우 접속을 요청한 클라이언트의 단말기에 에러 메시지를 출력하거나 특정인에게 메일을 발송하는 형태로 주로 사용함.


와일드카드

지원 기능

와일드카드

ALL

모든 호스트나 모든 서비스에 대해 허가 또는 제한 설정시 사용

ex)hosts.deny 파일에 ALL:ALL 이면 모든 호스들은 어떠한 서비스에도 접근 할 수 없다.

KNOWN

hosts.allow나 hosts.deny 설정에서 알 수 없는 IP의 경우

LOCAL

local 호스트

PARANOID

IP 주소와 일치하지 않는 호스트

UNKNOWN

hosts.allow나 hosts.deny 설정에서 알 수 없는 IP의 경우

연산자

EXCEPT

데몬,클라이언트 둘다 사용할 수 있고 특정한 예외를 두고자 할때 사용

쉘 커맨드 특수문자

%a(%A)

client (server) 호스트 어드레스

%c

Client 정보 : user@host, user@address, 호스트명 또는 주소

%d

데몬 프로세스 이름 (argv[0] value)

%p

데몬 프로세스 id

%u

클라이언트 사용자 이름 또는 unknown

%h(H)

유용하지 않은 client (server) 호스트명 또는 어드레스


접근제어 방법


먼저 hosts.deny에서 모든 호스트들에 대한 접근을 막아놓고 허용할 호스트들은 hosts.allow에 추가시킨다.

반응형

'운영체제(OS) > 리눅스(Linux)' 카테고리의 다른 글

리눅스 스케쥴러 cron  (0) 2017.07.16
리눅스 원격파일 전송 명령어 scp  (0) 2017.07.14
리눅스 레드마인 설치  (0) 2017.07.13
리눅스 파일 속성  (0) 2017.07.13
커널버전 별 OS 버전  (0) 2017.07.13
반응형

레드마인 이란?

레드마인이란 중소규모의 프로젝트를 진행할 때 프로젝트 관리를 위해 사용하는 웹기반 이슈트래커의 한 종류


* 이슈트래커란

  • 이슈트래커는 오류를 추적하는 것이라는 뜻. 여럿이서 프로젝트를 진행할 때 각각의 역할이 분업 되어있기 마련인데 이 프로젝트를 진행할 때 변동사항, 새로운 기능 추가, 오류 발생 같은 것들을 웹에 올리고 공유하는 것이라고 할 수 있다.


설치방법

1. redmine을 직접 다운받아서 설치

2. bitnami에서 제공하는 bitnami-redmine을 설치


1. redmine을 직접 다운받아서 설치

설치하기에 앞서 설치 테스트 환경은 다음과 같다.


커널 : 2.6.32-573.7.1.el6.x86_64

APM : rpm 패키지로 설치(Apache : 2.2.15, PHP : PHP 5.3.3, mysql : 5.1.73)

Ruby 버전 : ruby 2.0.0p647

redmine : redmine-2.5.0


또한 redmine 공식 홈페이지 설치 가이드를 참고하였음(영문)


1) 전체적인 패키지 업데이트 후 리부팅

   # yum update

   # reboot


2) 레드마인 설치에 필요한 패키지 설치

  # yum -y install zip unzip libyaml-devel zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel gcc ruby-devel gcc-c++ make postgresql-devel ImageMagick-devel sqlite-devel perl-LDAP mod_perl perl-Digest-SHA


3) Apache와 mysql 설치

  # yum -y install httpd mysql mysql-server


3-1) 서비스 등록 및 실행

  # chkconfig httpd on
  # chkconfig mysqld on
  # service httpd start
  # service mysqld start


3-2) mysql 패스워드 설정

  # /usr/bin/mysql_secure_installation

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

Enter current password for root (enter for none):

Set root password? [Y/n] y

Remove anonymous users? [Y/n] y

Disallow root login remotely? [Y/n] n

Remove test database and access to it? [Y/n] y

Reload privilege tables now? [Y/n] y

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


4) SELinux 설정

 # vi /etc/sysconfig/selinux

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

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=disabled  → disabled로 변경

# SELINUXTYPE= can take one of these two values:

# targeted - Targeted processes are protected,

# mls - Multi Level Security protection.

SELINUXTYPE=targeted

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


5) hostname 설정

 # vi /etc/hosts

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

127.0.0.1  kjjback localhost localhost.localdomain localhost4 localhost4.localdomain4 kjjback

::1     kjjback localhost localhost.localdomain localhost6 localhost6.localdomain6

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


6) iptables 설정

# vi /etc/sysconfig/iptables

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

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT  → 허용

-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT → 허용

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

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

# /etc/init.d/iptables restart


7) PHP ,  phpMyAdmin 설치 및 설정 (phpMyAdmin은 선택)


<PHP>

# yum -y install php php-mysql php-gd php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-soap


# /etc/init.d/httpd restart


8) Ruby 설치

# \curl -L https://get.rvm.io | bash


# source /etc/profile.d/rvm.sh


# rvm list known 입력하면 ruby 버전들이 출력된다.

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

[ruby-]1.8.6[-p420]

[ruby-]1.8.7[-head] # security released on head

[ruby-]1.9.1[-p431]

[ruby-]1.9.2[-p330]

[ruby-]1.9.3[-p551]

[ruby-]2.0.0[-p647]

[ruby-]2.1[.7]

[ruby-]2.2[.3]

[ruby-]2.2-head

ruby-head

....

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

# rvm install 2.0.0 (문서상에서는 1.9.3버전을 설치하지만 bundle install할때 생기는 rake-cache 때문에 2.0.0으로 설치한다)


인스톨 후 ruby -v 명령어를 입력하면 ruby 버전이 출력된다.

# ruby -v

ruby 2.0.0p647 (2015-08-18 revision 51631) [x86_64-linux]


9) Rubygems 설치

# yum -y install rubygems


10) Passenger 설치 (아피치 연동을 위해)

# gem install passenger

# passenger-install-apache2-module


< passenger.conf 생성>

vi /etc/httpd/conf.d/passenger.conf

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

LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p647/gems/passenger-5.0.20/buildout/apache2/mod_passenger.so

<IfModule mod_passenger.c>

  PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p647/gems/passenger-5.0.20

  PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.0.0-p647/wrappers/ruby

</IfModule>

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

위의 내용을 추가해주고 아파치를 리스타트 한다.


11) Redmine 데이터베이스 생성

# mysql --user=root --password=root_password_mysql

> create database redmine_db character set utf8;
> create user 'redmine_admin'@'localhost' identified by '패스워드';
> grant all privileges on redmine_db.* to 'redmine_admin'@'localhost';
> quit;


12) Redmine 설치

# cd /var/www

# wget http://www.redmine.org/releases/redmine-2.5.0.tar.gz

# tar xvfz redmine-2.5.0.tar.gz (압축해제)
# mv redmine-2.5.0 redmine (디렉토리 이름 변경)
# rm -rf redmine-2.5.0.tar.gz (압축파일 제거)


< database.yml 파일 수정>

# cd /var/www/redmine/config (디렉토리 이동)
# cp database.yml.example database.yml (샘플파일 복사)
# vi database.yml
---------------------------------------------------------------------------------------

production:

 adapter: mysql2

 database: redmine_db → 변경

 host: localhost

 username: redmine_admin → 변경

 password: "redmine_admin 패스워드" → 변경

 encoding: utf8

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

13) Rails 세팅

# cd /var/www/redmine

# gem install bundle

# bundle install

 → rack-cache -v ‘1.3.0’은 ruby-2.0.0 부터 지원하기 때문에 ruby버전이 2.0.0 밑이라면 rack-cache부분에서 에러가 발생한다.

 → 그 외 에러나는 부분은 에러에서 설명하는 바와 같이 gem install 패키지명 -v ‘버전’과 같이 설치하면 된다.


# rake generate_secret_token


14) 테이블 생성 작업

(redmine 디렉토리에서 작업할 것)

# RAILS_ENV=production rake db:migrate (입력했을때 이상이 없다면 아무런 메시지가 출력되지 않는다.)

# RAILS_ENV=production rake redmine:load_default_data

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

Select language: ar, az, bg, bs, ca, cs, da, de, el, en, en-GB, es, et, eu, fa, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, lv, mk, mn, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sq, sr, sr-YU, sv, th, tr, uk, vi, zh, zh-TW [en]

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

언어 선택창이 나오며 사용할 언어를 선택 바로 enter치면 기본 en로 됨


15) FCGI 활성

# cd /var/www/redmine/public

# mkdir plugin_assets
# cp dispatch.fcgi.example dispatch.fcgi
# cp htaccess.fcgi.example .htaccess


16) FastCGI, Apache 설정

#cd /var/www/

#rpm --import https://fedoraproject.org/static/0608B895.txt

#wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

#rpm -ivh epel-release-6-8.noarch.rpm

#yum -y install mod_fcgid

#rm -rf epel-release-6-8.noarch.rpm


17) 데이터 디렉토리 설정
# mkdir -p /opt/redmine/files

# chown -R apache:apache /opt/redmine
# cd /var/www/redmine/config

# cp configuration.yml.example configuration.yml

# vi configuration.yml

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

# Absolute path to the directory where attachments are stored.

 # The default is the 'files' directory in your Redmine instance.

 # Your Redmine instance needs to have write permission on this

 # directory.

 # Examples:

 # attachments_storage_path: /var/redmine/files

 # attachments_storage_path: D:/redmine/files

 attachments_storage_path: /opt/redmine/files → 해당부분을 추가

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


18) redmine virtualhost 생성 및 설정

# vi /etc/httpd/conf.d/redmine.conf

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

<VirtualHost *:80>
       ServerName your_domain
       ServerAdmin your_domain@domain.com
       DocumentRoot /var/www/redmine/public/
       ErrorLog logs/redmine_error_log
       <Directory "/var/www/redmine/public/">
               Options Indexes ExecCGI FollowSymLinks
               Order allow,deny
               Allow from all
               AllowOverride all
       </Directory>
</VirtualHost>
--------------------------------------------------------------------------

위의 내용을 추가 해준다.


19) 레드마인 실행

# cd /var/www
# chown -R apache:apache redmine

# chmod -R 755 redmine

# /etc/init.d/ httpd restart


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

브라우저에서 http:// IP주소를 입력해서 redmine 초기 페이지가 나오는지 확인 해본다.


초기 관리자계정은 admin/admin 이다.


20) Subversion 설치

# mkdir -p /opt/repositories/svn

# chown -R apache:apache /opt/repositories/

# chmod 0755 /opt/repositories

# yum install mod_dav_svn subversion subversion-ruby

# mkdir /usr/lib64/perl5/vendor_perl/Apache
# ln -s /var/www/redmine/extra/svn/Redmine.pm /usr/lib64/perl5/vendor_perl/Apache/Redmine.pm


# vi /etc/httpd/conf.d/subversion.conf

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

PerlLoadModule Apache::Redmine
<Location /svn>
       DAV svn
       SVNParentPath "/opt/repositories/svn"
       SVNListParentPath on
       Order deny,allow
       Deny from all
       Satisfy any
       LimitXMLRequestBody 0
       SVNPathAuthz off
       PerlAccessHandler Apache::Authn::Redmine::access_handler
       PerlAuthenHandler Apache::Authn::Redmine::authen_handler
       AuthType Basic
       AuthName "Subversion Repository"
       Require valid-user
       RedmineDSN "DBI:mysql:database=redmine_db;host=localhost:3306"
       RedmineDbUser "redmine_admin"
       RedmineDbPass "redmine_admin계정 패스워드"
</Location>
-----------------------------------------------------------------------------------------------------------

위의 내용을 추가해준다.



2.  bitnami-redmine 패키지로 설치 (알아서 apache, mysql, php를 설치해줌)

1) https://bitnami.com/stack/redmine/installer 사이트로 가서 OS 버전(Windows, MAC OS, Linux) 중  linux 버전을 선택해서 다운받는다. (32비트, 64비트 선택)

2) wget https://bitnami.com/redirect/to/73667/bitnami-redmine-2.6.7-1-linux-x64-installer.run

3) 받은 bitnami-redmine-2.6.7-0-linux-x64-installer.run 파일의 실행권한을 700으로 준다.

             # chmod 700 bitnami-redmine-2.6.7-0-linux-x64-installer.run

      

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

Redmine version Supported Ruby versions    Rails version used

current trunk ruby 1.9.33, 2.0.02, 2.1, 2.21             Rails 4.20

      3.0 ruby 1.9.33, 2.0.02, 2.1, 2.21             Rails 4.20

      2.6 ruby 1.8.74, 1.9.2, 1.9.33, 2.0.02, 2.1, 2.2, jruby-1.7.6 Rails 3.2

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


< 선택사항 >

※ phpMyAdmin

#rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
#yum install #http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
#yum -y install phpmyadmin


<phpmyadmin.conf 설정>

# vi /etc/httpd/conf.d/phpmyadmin.conf

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

#

#  Web application to manage MySQL

#


<Directory "/usr/share/phpmyadmin">

 Order Deny,Allow

 Deny from all

 Allow from all  → 변경

</Directory>


Alias /phpmyadmin /usr/share/phpmyadmin

Alias /phpMyAdmin /usr/share/phpmyadmin

Alias /mysqladmin /usr/share/phpmyadmin

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


# vi /usr/share/phpmyadmin/config.inc.php 설정

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

/* Authentication type */

$cfg['Servers'][$i]['auth_type'] = 'http';

/* Server parameters */

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['connect_type'] = 'tcp';

$cfg['Servers'][$i]['compress'] = false;

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

$cfg['Servers'][$i]['auth_type'] = 'cookie'; → $cfg['Servers'][$i]['auth_type'] = 'http';

로 변경


# /etc/init.d/httpd restart


# 브라우저에서 IP 주소/phpmyadmin 입력 후 인증창이 나오면 ID: root / mysql root 패스워드 입력

 접속 확인


phpMyAdmin 을 8080 포트로 사용하기

redmine이 80포트를 사용하기 때문에 8080포트로 변경해서 사용하는 방법


1. iptables 에서 8080 포트 허용


2. httpd.conf 파일 수정 (vhost 추가)

   # vi /etc/httpd/conf/httpd.conf

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

Listen 80

→ Listen 8080 추가

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

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

<VirtualHost *:8080> → 8080포트 설정

DocumentRoot /usr/share/phpmyadmin/  → phpmyadmin 경로

ServerName rm.kjj.kr  → 도메인 이름

</VirtualHost>

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


3. 아파치 재시작

  # /etc/init.d/httpd restart



※ SMTP 설정

# vi /var/www/redmine/config/configuration.yml

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

email_delivery:
  delivery_method: :sendmail

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

email_delivery:
  delivery_method: :smtp
  smtp_settings:
       enable_starttls_auto: true
       address: "smtp.gmail.com"
       port: 587
       domain: "smtp.gmail.com"
       authentication: :plain
       user_name: "your_email@gmail.com"
       password: "your_password"



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

반응형

'운영체제(OS) > 리눅스(Linux)' 카테고리의 다른 글

리눅스 스케쥴러 cron  (0) 2017.07.16
리눅스 원격파일 전송 명령어 scp  (0) 2017.07.14
리눅스 TCP Wrapper  (0) 2017.07.14
리눅스 파일 속성  (0) 2017.07.13
커널버전 별 OS 버전  (0) 2017.07.13
반응형

커널 버전별 의미

2.6.32-504.16.2.el6.x86_64

2 : Majer Number

6 : Minor Number로 홀수,짝수에 따라 버전이 틀리다. (짝수:안정버전, 홀수:개발버전)

32 : patch된 횟수

- 504 : 컴파일 횟수

16.2 : 필요한 정보를 지정

el6 : redhat 6(CentOS 6) 기반

x86_64 : 아키텍쳐 버전 64비트


Red Hat Enterprise Linux 4


Kernel Version

Release / Update

2.6.9-5

REHL 4 GA

2.6.9-11

REHL 4 Update 1

2.6.9-22

REHL 4 Update 2

2.6.9-34

REHL 4 Update 3

2.6.9-42

REHL 4 Update 4

2.6.9-55

REHL 4 Update 5

2.6.9-67

REHL 4 Update 6

2.6.9-78

REHL 4 Update 7

2.6.9-89

REHL 4 Update 8

2.6.9-100

REHL 4 Update 9


Red Hat Enterprise Linux 5


Kernel Version

Release / Update

2.6.18-8

REHL 5 GA

2.6.18-53

REHL 5 Update 1

2.6.18-92

REHL 5 Update 2

2.6.18-128

REHL 5 Update 3

2.6.18-164

REHL 5 Update 4

2.6.18-194

REHL 5 Update 5

2.6.18-238

REHL 5 Update 6

2.6.18-274

REHL 5 Update 7

2.6.18-308

REHL 5 Update 8

2.6.18-348

REHL 5 Update 9

2.6.18-371

REHL 5 Update 10

TBA

REHL 5 Update 11


Red Hat Enterprise Linux 6


Kernel Version

Release / Update

2.6.32-71

REHL 6 GA

2.6.32-131.0.15

REHL 6 Update 1

2.6.32-220

REHL 6 Update 2

2.6.32-279

REHL 6 Update 3

2.6.32-358

REHL 6 Update 4

2.6.32-431

REHL 6 Update 5

2.6.32-504

REHL 6 Update 6


Red Hat Enterprise Linux 7


Kernel Version

Release / Update

3.10.0-54.0.1

REHL 7 Beta

3.10.0-121

REHL 7 RC


반응형

'운영체제(OS) > 리눅스(Linux)' 카테고리의 다른 글

리눅스 스케쥴러 cron  (0) 2017.07.16
리눅스 원격파일 전송 명령어 scp  (0) 2017.07.14
리눅스 TCP Wrapper  (0) 2017.07.14
리눅스 레드마인 설치  (0) 2017.07.13
리눅스 파일 속성  (0) 2017.07.13

+ Recent posts