iptables 로그 로그파일 제어 범위 설정

리눅스/Network|2015. 1. 26. 17:40
반응형

iptables -A [chain] -d 111.111.111.111 -j LOG --log-prefix "log title:"

처럼 명령해 주면.. [chain] 에서 정해준 출은 목적지 111.111.111.111 가는 패킷은 /var/log/syslogd 파일에
log title: 라고 시작하면서 로그를 생성해 준다.

주의할점은.. 위 LOG 명령전에 DROP 규칙이 있으면.. 먼저 DROP되므로 로그가 생성될수 없다.

그리고..

--dport 1:1024               1~1024 포트 제어
--dport ~ 1:1024            1~1024 포트 이외의것

-d 222.111.100.0/24  식으로 222.11.199.1 ~ 255까지 차단된다.
A.B.C.0/24 클래스별 제어
A.B.0.0/16 그 이상
A.0.0.0/8 그 이상 범위 IP제어


[출처] ㅎㅓ준 http://cafe.naver.com/worldbest/98

반응형

댓글()

특정 아이피만 ssh, ftp 접근 허용하게 하려면

리눅스/Network|2015. 1. 26. 17:40
반응형

외부에서 특정 데몬으로 접근을 제한하는 설정 방법은 여러가지가 있습니다.

 1. iptables
 2. 각 데몬의 설정파일
 3. pam (access.conf)
 4. hosts.deny 

이중 hosts.deny 로 특정 아이피에서만 ssh, vsftp 접근을 허용하려 한다면 아래와 같이 설정합니다.
설정 후 저장과 동시에 적용되니 주의하셔야 합니다.
telnet 등 원격 접속 가능한 또 다른 데몬을 띄운 후 작업하시기 바랍니다. 

# vi /etc/hosts.deny
sshd : All     EXCEPT 192.168.100.100
vsftpd : All     EXCEPT 192.168.100.100

반응형

댓글()

iptables 특정 IP 차단과 해제

리눅스/Network|2015. 1. 26. 17:40
반응형

[차단]
 iptables -A INPUT -s 11.22.33.44 -j DROP


[해제]
 iptables -D INPUT -s 11.22.33.44 -j DROP

반응형

댓글()

특정 IP접근 거부 (초간단 테크닉)

리눅스/Network|2015. 1. 26. 17:39
반응형

어디선가 자신의 서버를 공격하고 있습니다. 그쪽 IP가 접근 못하게 막아야겠죠? 일반적으로 firewall이나 그밖의 다른 보안정책을 사용중이라면 쉽게막을수 있을 것입니다. 아니면 tcp_wrapper에 의한 hosts.allow, hosts.deny를 이용해도 쉽게 막히겠죠.
하지만 제가 여기서 설명하고자 하는것은 그런 것 보다 더욱 쉽고 간단하게막을 수 있는 방법입니다. 너무 간단하기 때문에 임시방편으로 사용하기 좋습니다.

# route add -host 192.168.1.35 reject 

자 이건 어떻습니까? 192.168.1.35에서는 이제 서버에 얼씬도 못하게 됩니다.
앗! IP가 다른 그 옆의 컴퓨터에서 불법접속을 재시도 한다구요?

그렇다면 아래와 같이
# route add -net 192.168.1.0 netmask 255.255.255.0 reject 하시던지

아니면 더 화끈하게
# route add -net 192.0.0.0 netmask 255.0.0.0 reject 해주시면 됩니다.

이것을 해제하고자 할때에는 'add' 부분만 'del'로 바꿔서 똑같이 명령을 내리면 원래대로 해제됩니다.

반응형

댓글()

netstat 를 이용하여 현재 포트를 감시

리눅스/Network|2015. 1. 26. 17:38
반응형

netstat 를 이용하여 간단하게 현재 포트를 감시할수 있습니다. 
(포트 스캐닝은 잘 알려져있듯이 크래커들이 쓰는 첫번째 방법입니다.) 


시스템에서 현재 열려져 있는 포트 보여주기 
#netstat -nlt 
n : numeric - 주소를 보여줍니다. 
l : listen - 열려진 포트 
t : tcp - tcp 연결 상태 

[user@mymachine /home/user]# netstat -ntl 
Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 

위와 같은 경우 
즉, 80번(웹) -> 3306 (mysql) -> 22(ssh) 포트가 열려져있다는 것을 보여줍니다. 

시스템에서 실제 활동중인 포트 보여주기 
#netstat -nat 
n : numeric - 주소를 보여줍니다. 
a : active - 활동중인 포트 
t : tcp - tcp 연결 상태 

[user@mymachine /user]# netstat -nat 
Active Internet connections (servers and established) 
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 206.112.62.102:80 204.210.35.27:3467 ESTABLISHED 
tcp 0 0 206.112.62.102:80 208.229.189.4:2582 FIN_WAIT2 
tcp 0 7605 206.112.62.102:80 208.243.30.195:36957 CLOSING 
tcp 0 0 206.112.62.102:22 10.60.1.18:3150 ESTABLISHED 
tcp 0 0 206.112.62.102:22 10.60.1.18:3149 ESTABLISHED 
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 

3개의 웹 연결과 2개의 ssh 연결을 보여주고 있습니다. 

FIN_WAIT2와 CLOSING 및 netstat 의 또 다른 기능은 man netstat을 참조하세요.

반응형

댓글()

DDNS 구축하기 (PDNS 사용자)

리눅스/DNS|2015. 1. 26. 17:36
반응형

PDNS 에 DDNS 기능이 있는것 같은데, 아직 개발 단계에 있다는 말도 있고..

SSH 키를 이용해 인증하는것 같아 제 나름의 방법대로 구축 방법을 기술하였습니다.



1. Client 설정


Client 서버에서 네임서버로 IP 정보를 전송해야 하므로, Client 서버에 아래와 같은 명령을 이용하여 주기적으로 IP를 체크업데이트 할 수 있도록 해야합니다.

아래 인증 방법 두 가지 중 하나를 이용하면 됩니다.



인증 방법1

# lynx -source -auth=아이디:패스워드 'http://ns1.sysdocu.com/update.php?도메인'


인증 방법2

# wget -O - --http-user=아이디 --http-passwd=패스워드 'http://ns1.sysdocu.com/update.php?도메인'



위 스크립트가 5분마다 자동 실행될 수 있도록 자동 스케쥴러에 등록해 놓습니다.

아래 예에서는 아이디 및 패스워드갱신할 도메인 sysdocu.com 을 실제로 입력하였습니다.


# crontab -e


*/5 * * * * wget -O - --http-user=sysdocu --http-passwd=PassW0rD 'http://ns1.sysdocu.com/update.php?sysdocu.com'



2. Server 설정


네임서버에서는 Client 서버의 IP 정보를 수시로(1분 마다체크 하고 있다가 변경되어질 때업데이트 합니다.


그래서 Client 서버에서 보내오는 신호를 체크하고 DB에 저장된 IP값과 비교, IP 값이 다를 경우 업데이트 하는 스크립트를 만들어야 합니다.


우선 pdns DB에 users 테이블을 추가합니다. 아이디로 검색해 본인이 사용하는 도메인이 맞는지 확인하기 위해 사용됩니다.


# vi users.sql


CREATE TABLE users (

no INT PRIMARY KEY AUTO_INCREMENT,

id varchar(255),

domain varchar(255)

) Engine=InnoDB;


# mysql -p pdns < users.sql

Enter password:  (패스워드 입력)


추후에 사용할때는 users 테이블에 실제 사용하는 아이디랑 도메인이 들어가 있어야 작동을 합니다.

예) user1    sysdocu.com

      user1    www.sysdocu.com

      user2    system.sysdocu.com


# touch /usr/local/apache/htdocs/update.php    // ns1.sysdocu.com 의 기본 디렉토리 안에 빈페이지를 생성합니다.


# vi /root/ipcheck.sh


#!/bin/bash


cat /usr/local/apache/logs/ns1.sysdocu.com-access_log |grep 'update.php' |grep '200 -' |awk {'print $1" "$3" "$7'} |sed -e 's/\/update.php?//' > temp.txt

cat /dev/null > /usr/local/apache/logs/ns1.sysdocu.com-access_log


while read newIP USER Host trash

do


접속계정과 호스트를 이용해 DB의 저장값을 불러옵니다.

authuser=`mysql -updns -p12345678 pdns -e "SELECT COUNT(*) FROM users WHERE id='$USER' AND domain='$Host'" |tail -n 1`


저장값이 있으면 아이피값이 같은지 비교다를경우 업데이트합니다.

if [ "$authuser" = "1" ]; then

oldIP=`mysql -updns -p12345678 pdns -e "select content from records where name='$Host' and type='A'" |tail -n 1`


if [ "$oldIP" != "$newIP" ]; then

mysql -mysql -updns -p12345678 pdns -e "UPDATE records SET content='$newIP' where name='$Host' and type='A'"

fi


else

echo ""

fi


done < temp.txt


rm -f temp.txt



이제 위 스크립트가 1분마다 자동으로 실행될 수 있도록 자동 스케쥴러에 등록해 놓습니다.


# crontab -e


* * * * * sh /root/ipcheck.sh



또한 인증 받은 사람만(아이디패스워드로 확인업데이트가 가능하도록 아파치 웹인증 암호를 걸어 놓습니다.


# cd /usr/local/apache/htdocs    // ns1.sysdocu.com 의 기본 디렉토리


# vi .htaccess


AuthName "User Authorization"

AuthType Basic

AuthUserFile /usr/local/apache/htdocs/.htpasswd

AuthGroupFile /dev/null

<Limit GET>

require valid-user

</Limit>



# /usr/local/apache/bin/htpasswd -c .htpasswd sysdocu

New password : ********

Re-type new password : ********


위와 같이 아이디 sysdocu 와 그에 해당하는 패스워드를 설정했습니다이제 생성한 아이디패스워드 사용자만 update.php 파일에 접근이 가능합니다.


여기에 아이디패스워드를 추가 할때는 -c 옵션을 빼고 동일하게 명령을 수행하면 됩니다.

그리고 .htpasswd 파일의 위치를 잘 입력해주어야 합니다현재 디렉토리에서는 파일명만 적되다른 디렉토리에 위치한 상태에서 명령을 내릴 때는 절대경로또는 상대경로를 이용하여 위치를 정확히 입력합니다.


# /usr/local/apache/bin/htpasswd .htpasswd UserID


-c 옵션은 초기 사용자를 생성 할때만 사용됩니다여러개의 아이디를 만든 후 -c 옵션을 잘못 주었다면 기존의 아이디가 모두 사라져버리므로 주의를 해야 합니다. (주기적으로 인증 파일 백업 권장)


참고 이용자 삭제

# /usr/local/apache/bin/htpasswd -D .htpassd UserID


반응형

댓글()

wireshark 로 DNS 쿼리 모니터링 하기

리눅스/DNS|2015. 1. 26. 17:36
반응형
1. 설치
# yum -i install wireshark


2. 사용
# tshark -nni eth0 -f 'udp port 53' -t a -w result.txt

-f 'udp port 53'    // UDP PORT 53번에 대해서만 캡쳐
-t a                // 시간 출력 (절대값)
-w result.txt       // 출력 내용 저장 (result.txt 라는 이름의 바이너리 파일 생성)

아래는 결과 인데, 쿼리 하나에 라인이 두 개 출력됩니다.
윗줄은 요청, 아랫줄은 응답(response)입니다.

0.000000 192.168.10.100 -> 192.168.10.2 DNS Standard query A ns1.sysdocu.com
0.000365 192.168.10.2 -> 192.168.10.100 DNS Standard query response A 192.168.10.2

위 예제처럼 result.txt 로 저장한 데이타는 바이너리로 저장되기 때문에 vi 에디터로 열면 글자가 깨져서 보입니다.
출력 내용을 보려면 -r 옵션을 이용하면 됩니다.

# tshark -r result.txt


반응형

댓글()

dnstop 설치 (DNS 쿼리량 순서로 모니터링)

리눅스/DNS|2015. 1. 26. 17:35
반응형
1. 환경 구성
사전 설치 패키지 (필수 요소 : libpcap, libpcap-devel)
# yum -y install libpcap*


2. 설치
이제 dnstop 을 설치해봅니다.

# cd /usr/local/src
# tar xvzf dnstop-20121017.tar.gz
# cd dnstop-20121017
# ./configure
# make
# make install

다른 버전이 있나 살펴볼 때에는 위 URL에서 파일명만 빼고 접속을 해보면 됩니다.


3. 사용 방법

쿼리 요청 Source IP 순서대로 출력합니다.
# dnstop


요청 도메인이 많은 순서로 출력합니다.
- 이때 옵션이 사용되는데, 도메인의 점(.)을 기준으로 몇개의 자리까지 출력할것인지 정합니다. 
  (아래 -l9 와 같이 옵션을 사용할 경우에는 9.8.7.6.5.4.3.sysdocu.com 까지 출력)

# dnstop eth0 -l9

실행 후 9 를 눌러야 원하는 결과를 얻을 수 있습니다. (또는 shift + 9)

* 옵션값을 -l2 로 했을경우 질의를 www.sysdocu.com 으로 하면, sysdocu.com 만 출력 됩니다.
  그러므로 잘못 표기되는 도메인이 없도록 최대값 -l9 를 쓰도록 합니다.
* shift + 9 를 누르게 되면 질의 요청한 Client IP 도 리스트에 같이 출력됩니다.


반응형

댓글()

PDNS의 다양한 에러 로그 및 해결책

리눅스/DNS|2015. 1. 26. 17:35
반응형
제가 운영하며 겪었던 오류 메세지 및 해결책입니다.
국내 문서는 거의 희박하여 해결하는데 고생했습니다...
같은 오류가 출력되는 분을 위해 기록해둡니다.


[에러]
Jan 20 10:23:10 ns1 pdns[18253]: AXFR of domain 'sysdocu.com' failed: not authoritative

[해결]
pdns.conf 파일에 disable-axfr=no 설정

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

[에러]
Jan 20 10:56:32 ns1 pdns[12973]: Received a malformed qdomain from 27.102.207.197, 'http://sysdocu.com': sending servfail

[해결]
설정상의 특별한 문제가 있는것이 아니므로 무시해도 됩니다.
쿼리를 도메인으로 하지 않고 잘못된 쿼리를 요청해서 응답할 수 없다고 나타나는 메세지 입니다.

예)
nslookup http://sysdocu.com ns1.sysdocu.com    // 잘못된 쿼리
nslookup sysdocu.com ns1.sysdocu.com          : // 정상 쿼리

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

[에러]
Jan 20 10:27:23 ns1 pdns[3077]: Recursive query for remote 176.31.191.182:25345 with internal id 65 was not answered by backend within timeout, reusing id

[해결]
recursor=168.126.63.1 이와 같이 ISP 업체 네임서버를 사용하더라도 정보를 받아오는데 시간이 걸리기 때문에 발생한 문제입니다.
이를 해결하려면 자체 네임서버(pdns 구동 서버)의 pdns-recursion 설정을 통해 해결하면 됩니다.

# vi /etc/pdns-reursor/recursor.conf
setuid=pdns-recursor
setgid=pdns-recursor
config-dir=/etc/pdns-recursor/
daemon=yes
local-port=54
socket-dir=/var/run/

version-string=ns1.sysdocu.com 


pdns-recursor 를 54번 포트로 구동합니다.
# /etc/init.d/pdns-recursor start

그리고 pdns.conf 파일 옵션중 recursor 만 아래 내용으로 수정합니다.
recursor=127.0.0.1:54

끝으로 pdns 를 재시작 해줍니다.
# /etc/init.d/pdns restart

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

[에러]
Jan 20 13:57:52 ns9 pdns[18384]: Discarding packet from recursor backend with id 18397, qname or qtype mismatch

[해결]
질의 응답은 정상적이나 messages 로그에 대량의 로그가 쌓입니다.
이는 /etc/resolv.conf 의 네임서버와 pdns.conf 의 recursor 설정 IP가 맞지 않아서 발생하는 문제이므로
recursor 에 설정한 IP를 /etc/resolv.conf 에 설정한 IP와 동일하게 맞추어 주면 됩니다.


반응형

댓글()

BIND9를 위한 로그 설정

리눅스/DNS|2015. 1. 26. 17:35
반응형

BIND는 오픈 소스의 성격에 맞게 다양한 로그와 디버거 정보를 제공하고 있습니다.

특히 로그는 성격에 맞게 Category로 나누어져 있으며, Category별로 다양하게 저장이 가능합니다.

 

시스템의 부하와 디스크의 공간이 있다면 로그를 많이 남겨두는 것이 장애시 분석을 가능하게 하는 방법입니다. 가급적이면 로그를 많이 남겨두는 것이 좋습니다.

 

로그는 named.conf에 적용을 하면 되며, 카테고리별 설명은 아래와 같습니다.

 

default

The default category defines the logging options for those categories where no specific configuration has been defined.

general

The catch-all. Many things still aren't classified into categories, and they all end up here.

database

Messages relating to the databases used internally by the name server to store zone and cache data.

security

Approval and denial of requests.

config

Configuration file parsing and processing.

resolver

DNS resolution, such as the recursive lookups performed on behalf of clients by a caching name server.

xfer-in

Zone transfers the server is receiving.

xfer-out

Zone transfers the server is sending.

notify

The NOTIFY protocol.

client

Processing of client requests.

unmatched

Messages that named was unable to determine the class of or for which there was no matching view. A one line summary is also logged to the clientcategory. This category is best sent to a file or stderr, by default it is sent to thenull channel.

network

Network operations.

update

Dynamic updates.

update-security

Approval and denial of update requests.

queries

Specify where queries should be logged to.

At startup, specifying the category queries will also enable query logging unlessquerylog option has been specified.

The query log entry reports the client's IP address and port number, and the query name, class and type. It also reports whether the Recursion Desired flag was set (+ if set, - if not set), EDNS was in use (E) or if the query was signed (S).

client 127.0.0.1#62536: query: www.example.com IN AAAA +SE

client ::1#62537: query: www.example.net IN AAAA -SE

dispatch

Dispatching of incoming packets to the server modules where they are to be processed.

dnssec

DNSSEC and TSIG protocol processing.

lame-servers

Lame servers. These are misconfigurations in remote servers, discovered by BIND 9 when trying to query those servers during resolution.

delegation-only

Delegation only. Logs queries that have have been forced to NXDOMAIN as the result of a delegation-only zone or a delegation-only in a hint or stub zone declaration.

 

아래는 BIND9에서 제공하는 모든 Category를 적용한 샘플입니다. 

logging {
	channel "default_syslog" {
		// Send most of the named messages to syslog.
		syslog local2;
		severity debug;
	};
	channel "default_syslog" {
		file "log/default.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "general_syslog" {
		file "log/general.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "database_syslog" {
		file "log/database.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "security_syslog" {
		file "log/security.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "config_syslog" {
		file "log/config.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "resolver_syslog" {
		file "log/resolver.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "xfer-in_syslog" {
		file "log/xfer-in.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "xfer-out_syslog" {
		file "log/xfer-out.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "notify_syslog" {
		file "log/notify.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "client_syslog" {
		file "log/client.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "unmatched_syslog" {
		file "log/unmatched.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "network_syslog" {
		file "log/network.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "update_syslog" {
		file "log/update.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "update_security_syslog" {
		file "log/update_security.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "queries_syslog" {
		file "log/queries.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "dispatch_syslog" {
		file "log/dispatch.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "dnssec_syslog" {
		file "log/dnssec.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "lame-servers_syslog" {
		file "log/lame-servers.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};
	channel "delegation-only_syslog" {
		file "log/delegation-only.log" versions 3 size 20m;
		severity debug;
		print-category yes;
		print-severity yes;
		print-time yes;
	};

	category default { default_syslog; };
	category general { default_syslog; };
	category database { database_syslog; };
	category security { security_syslog; };
	category config { config_syslog; };
	category resolver { resolver_syslog; };
	category xfer-in { xfer-in_syslog; };
	category xfer-out { xfer-out_syslog; };
	category notify { notify_syslog; };
	category client { client_syslog; };
	category unmatched { unmatched_syslog; };
	category network { network_syslog; };
	category update { update_syslog; };
	category update-security { update_security_syslog; };
	category queries { queries_syslog; };
	category dispatch { dispatch_syslog; };
	category dnssec { dnssec_syslog; };
	category lame-servers { lame-servers_syslog; };
	category delegation-only { delegation-only_syslog; };	
};

[출처] BIND9를 위한 로그 설정|작성자 네임서버

네임서버 이야기 | 네임서버 (http://blog.naver.com/netpiadns/50021687725)


[출처] 네임서버 이야기 | 네임서버 (http://blog.naver.com/netpiadns/50021687725)



반응형

댓글()

queryperf 설치 및 사용방법 (DNS 스트레스 테스트)

리눅스/DNS|2015. 1. 26. 17:34
반응형

1. 설치

# cd /usr/local/src

# wget http://ftp.isc.org/isc/bind9/9.3.6/bind-9.3.6.tar.gz
# tar xvzf bind-9.3.6.tar.gz
# cd bind-9.3.6/contrib/queryperf
# ./configure
# make
 

2. 사용 방법

우선 테스트 할 도메인 리스트를 만듭니다.

# cd utils

# chmod 755 gen-data-queryperf.py

# ./gen-data-queryperf.py -n 1000 -p 100 -t com > domains.txt

-n : 도메인 갯수

-p : 도메인 중복률 (100 은 100% 다른 도메인을 만들어냅니다)

-t : 도메인 종류 (.com 만 만듭니다)

 

# cd ..

# ./queryperf  -d utils/domains.txt -s dns1.sysdocu.tistory.com -q 1000

-d: 질의할 도메인 리스트

-s : 네임서버 (IP로도 질의 가능)

-q : 1초당 쿼리 갯수

반응형

'리눅스 > DNS' 카테고리의 다른 글

PDNS의 다양한 에러 로그 및 해결책  (0) 2015.01.26
BIND9를 위한 로그 설정  (0) 2015.01.26
네임서버 도메인 위임  (0) 2015.01.26
PowerDNS (PDNS) 설치 및 설정  (0) 2015.01.26
srv 레코드 등록 방법  (0) 2015.01.26

댓글()