[정통HOWTO] Cron 을 이용한 타임 서버 구축
작성자 : http://www.onabus.info
: http://blog.naver.com/couplewith.do
[정통 노하우 : 타임 서버 설정 요약]
- 타임을 세팅하는 것은 rdate 라는 유틸을 이용하며
타임 서버와 접속하여 서버에 반영 하는 방법은 아래 와 같이 간단하다.
Usage: rdate [-s] [-p] [-u] [-l] <host> ...
### Time Server의 시간받아오기 ###
> rdate -s time.boranet.net
> hwclock --systohc # 하드웨어 클럭을 조정한다.
# 시스템 마다 다르므로 이걸 조정해주면 자주 타임을 세팅 안해도 된다.
# 필자는 거의 한달 두달에 한번 가져 와도 문제가 없었다.
> date ; hwclock --show
[정통 노하우 :타임 서버 설정 하기]
문제는 모든 서버들을 외부 타임 서버와 접속 하게 한다는 것에는 문제가 있을수 있다.
외부 서버의 구동이 안되면 타임은 싱크가 맞지 않는다.
1. 내부 타임 서버 만들기
따라서 한대 정도만 외부에 서 정확한 시간을 가져 오고
나머지 서버들은 내부의 Time 서버를 통해서 가져온다면 보다 효율성이 있어보인다.
2. UDP 통신 이용 하기
타임 서버의 통신은 두가지 프로토콜을 지원 한다.
일반적으로 TCP를 디폴트로 이용 하여 사용하고 있다.
따라서 우리는 보안적인 측면을 따져서 UDP를 사용하여 외부의 접근을 감추도록 하자
타임서버는 xinetd에 연동되어 서비스 되고 있다.
다음 두 환경 파일을 이용하여 구동한다.
/etc/xinetd.d/time-udp # UDP 타임서비스
/etc/xinetd.d/time # TCP 타임서비스
다음과 같이 파일을 수정하고
[root@ xinetd.d]# cat time-udp
# default: off
service time
{
disable = no # UDP 타임서버를 구동 한다.
type = INTERNAL UNLISTED
id = time-dgram # UDP 프로토콜을 이용한다.
socket_type = dgram
protocol = udp
user = root
wait = yes
port = 37
}
다음명령으로 타임 서버를 구동 하자
/etc/rc.d/init.d/xinetd restart 또는 condrestart 를 해보
그리고 hosts.allow
time : 123.xx.xx.xx 이런 식으로 클라이언트들을 등록을 하면 된다.
그리고 접속 하고자 하는 클라이언트들은 다음과 같이 테스트를 해서
#>rdate -p -u time.internal.net
rdate: [time.internal.net] Wed Dec 15 15:55:54 2004
그리고 crontab를 정의 하면된다.
##Cron Tab 에 다음과 같이 등록 한다.
## 내부 타임 서버는 4시간 마다 한번씩 외부의 표준 시간을 가져오고,
## 내부 클라이언트는 내부 서버에서 한시간마다 시간을 업데이트 한다.
[[메인 내부 타임 서버용 : time.internal.net]
############################################################
# Min(0-59) Hour(0-23) Day(1-31) Mon(1-12) Week(0-6)
############################################################
MAILTO=""
1 0-23/4 * * * /usr/bin/rdate -s time.bora.net; /sbin/hwclock --systohc
[[내부 클라이언트용] :( 한시간 마다 가져 온다.)
############################################################
# Min(0-59) Hour(0-23) Day(1-31) Mon(1-12) Week(0-6)
############################################################
MAILTO=""
1 0-23/1 * * * /usr/bin/rdate -s -u time.internal.net; /sbin/hwclock --systohc
마지막으로
3. IPTABLES 이용한 내부 방화벽 / 스위치 Accesslist 를 활용하라.
보안이라면 내부와 외부의 불필요한 접근과 권한을 제한하는데 있다.
리눅스를 이용한다면 iptables 를 이용하여 내부 서버의 임의 접근을 방지 하도록 해야한다.
hosts.allow를 이용해도 되겠지만 이것만으로 부족함이 있으리라 생각 한다.
다음과 같이 iptables 명령을 작성 해서 실행 해보자.
INTERNAL_ZONE="192.168.x.0/24"
iptables -A INPUT -p UDP -s ${INTERNAL_ZONE} --dport 37 -j ACCEPT
iptables -A INPUT -p TCP -s time.bora.net --sport 37 -j ACCEPT
/etc/rc.d/init.d/iptables save 를 실행해서 반영된 iptables 의 추가 사항을 확인하자
vi /etc/sysconfig/iptables
[0:0] -A INPUT -s 192.168.x.0/255.255.255.0 -p udp -m udp --dport 37 -j ACCEPT
[0:0] -A INPUT -s 203.248.240.103 -p tcp -m tcp --sport 37 -j ACCEPT
이제 이 파일이 부팅 때마다 실행되는 일종을 캐쉬이다.
iptables 설정은 각자의 능력을 믿는다.
일단 백업을 하든지 메뉴얼을 보고 잘 정돈하면 되겠다.
추후에 iptables 관련 [정통 HOW- TO] 를 기대하라..
See you later !
and see you again at http://blog.naver.com/couplewith.do
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
☞자세히보기 |
|
|