- 2014.12.08
1. xinetd
inet 서비스 데몬은 네트워크 슈퍼 데몬이라고 부른다. 이 방식은 inet 서버가 네트워크 관련 작업을 대리하도록 한다.
즉 네트워크 접속이 정상적으로 이루어진 뒤에는, 실제 서비스를 하는 프로그램에게 넘겨준다.
ex) 놀이공원 관객 수를 조절하는 매표소 역할
1) 장점
개발자의 경우 inet 규격에 맞게만 프로그래밍을 하면 socket 네트워크에 관련된 부분은 만들지 않아도 된다.
일반 사용자의 경우 관리하기 편하고 서비스를 사용하지 않을 때는 자원을 아낄 수 있다.
2) 단점
inet 서비스가 특정 서버 프로그램 대신 네트워크 접속을 만들고 나중에 프로그램을 실행시켜주기 때문에 약간의 시간차가 발생할 수 있다.
* inet은 취약점이 많아 현재 사용되지 않고 있으며 이 후 확장된 버전인 xinetd를 사용한다.
3) 서비스 설정
# service [데몬명] start/stop/restart
=> Linux 전용 명령어
# /etc/rc.d/init.d/데몬명 start/stop/restart
= Linux, Unix, Solaris 호환 명령어
* 데몬
원본 서비스를 구동시키기 위해 중간에서 활동하는 역할
2. telnet
[실습]
dvd1 vmware 넣고 dvd1을 마운트 한다.
Packages 에서 telnet* PKG 설치
# mkdir /dvd1/
# mount /dev/sr0 /dvd1
mount: block device /dev/sr0 is write-protected, mounting read-only
# cd /dvd1/Packages/
# ll |grep telnet
-r--r--r-- 2 root root 58120 2014-07-10 17:29 telnet-0.17-48.el6.i686.rpm
-r--r--r-- 2 root root 37384 2014-07-10 17:29 telnet-server-0.17-48.el6.i686.rpm
# rpm -ivh xinetd-2.3.14-39.el6_4.i686.rpm
# rpm -ivh telnet-0.17-48.el6.i686.rpm
# rpm -ivh telnet-server-0.17-48.el6.i686.rpm
설치 완료된 것 확인
# rpm -qa |grep telnet
telnet-server-0.17-48.el6.i686
telnet-0.17-48.el6.i686
텔넷 접속 위해 콘솔창 cmd 에서 telnet [linux_ip] 로 접속하려 했으나 23번 포트 거부당함
리눅스 안에 23번 포트 되는지 알아보려 했으나
# netstat -lntup | grep 23
#
아무것도 없다.
슈퍼데몬인 xinetd 서비스 시작 하자.
# /etc/rc.d/init.d/xinetd start
xinetd (을)를 시작 중: [ OK ]
새로 시작했지만 cmd 콘솔창에서의 접속 실패.
# netstat -lntup | grep xinetd
#
확인 해보니 여전히 xinetd 이 구동중이 아니다.
환경 설정 확인해보자.
보통 관리자용 명령어 및 중요 파일은 /etc/ 에 있으니 확인해보자.
# ll /etc/xinetd.d
합계 52
-rw------- 1 root root 1157 2013-10-08 02:34 chargen-dgram
-rw------- 1 root root 1159 2013-10-08 02:34 chargen-stream
-rw------- 1 root root 1157 2013-10-08 02:34 daytime-dgram
-rw------- 1 root root 1159 2013-10-08 02:34 daytime-stream
-rw------- 1 root root 1157 2013-10-08 02:34 discard-dgram
-rw------- 1 root root 1159 2013-10-08 02:34 discard-stream
-rw------- 1 root root 1148 2013-10-08 02:34 echo-dgram
-rw------- 1 root root 1150 2013-10-08 02:34 echo-stream
-rw-r--r--. 1 root root 332 2014-03-28 19:54 rsync
-rw------- 1 root root 1212 2013-10-08 02:34 tcpmux-server
-rw-r--r-- 1 root root 305 2014-05-05 20:22 telnet
-rw------- 1 root root 1149 2013-10-08 02:34 time-dgram
-rw------- 1 root root 1150 2013-10-08 02:34 time-stream
텔넷 관련 문서 있다. 확인해보자.
# vi /etc/xinetd.d/telnet
flags : 소켓이 작동될 때 사용하는 정보
= REUSE : 패킷 정보를 재사용하지 않도록 설정
(프로그램 종료 후 다시 실행 시 로그인 안됨)
socket_type : telnet 서비스의 소켓 적용 정보
= stream : tcp 소켓을 사용 (기본값)
= dgram : udp 소켓을 사용
wait : 대기 시간을 제공할 것인지의 여부
= no : 접속 시 프로세스를 추가하여 제공 (기본값)
(여러명 접속 가능)
= yes : 1개의 프로세스만 제공하여 1개만 연결 가능
(한버에 1명만 접속)
user = root : 서비스를 시작하는 권한자 (기본값)
server = /usr/sbin/in.telnetd : 서비스를 처리할 프로그램의 위치
(실행파일 명)
log_on_failure += USERID
: 로그인 실패에 대한 기록에서 USERID 부분을 추가로 기록
disable = yes : 서비스를 제공하지 않을 것인지 여부 (기본값)
= no : 서비스 사용 할 것이다.
마지막 disable 가 yes로 되어 있어서 접속이 안되었다. no 로 변경
# /etc/rc.d/init.d/xinetd restart
xinetd 를 정지 중: [ OK ]
xinetd (을)를 시작 중: [ OK ]
# netstat -lntup | grep xinetd
tcp 0 0 :::23 :::* LISTEN 30284/xinetd
작동 되는 것 확인 후 텔넷 접속 했지만 root 로는 접속 실패. samadal 로는 접속 성공
=> 보안이 약하기 때문에 root 접속 막았다고 한다.
하지만 텔넷은 패킷 탈취가 쉽기 때문에 사용하지 않는 것이 좋다.
실제 패킷 모니터링 프로그램인 WireShark 를 통해 보면 id 및 pw 전송이 그대로 노출되는 것 확인 가능하다.
이에 리눅스에서 자체적으로 보안을 강화시킨 krb5-telnet 이 있다.
물론 이 역시 보안이 많이 취약하여 사용하지 않길 권하지만 이와 연동되는 프로그램이 많아 한번 설치 해보려 한다.
[실습]
기존에 설치한 telnet* PKG 삭제 후 krb5* PKG 설치
# rpm -e telnet
# rpm -ed telnet-server
경고: /etc/xinetd.d/telnet(이)가 /etc/xinetd.d/telnet.rpmsave(으)로 저장되었습니다
=> 변경 된 환경설정이 있다면 자동으로 백업한다. 필요 없다면 삭제 해도 무방.
역시나 환경설정 들어가서 disable 항목을 변경해줘야 한다.
# vi /etc/xinetd.d/krb5-telnet
재시작 하여 텔넷 접속
# /etc/rc.d/init.d/xinetd restart
xinetd 를 정지 중: [ OK ]
xinetd (을)를 시작 중: [ OK ]
이제 cmd 콘솔 창에 들어가서 텔넷 들어가면 된다.
* Tip
일반 사용자로 접속 후 관리자 권한 얻기 위해선 su - 를 입력하여 접속한다.
su 로도 접속 가능하긴 하지만 최초 텔넷 로그인한 계정의 정보를 갖고 root로의 계정 전환으로 진행되기 때문에 정상 작동이 되지 않는다.
[문제]
p147, 148, 149 표 공부 후 다음 조건을 만족하도록 telnet server 구성
- 접근 허용할 주소 : 192.168.x.x
- 접근을 허용할 시간 - AM 09 ~ PM 10
- 총 접속 허용 수 : 100개
- Dos 공격에 대비하여 1초에 2회 이상의 접속 발생 시 60초 동안 새로운 접속 차단
- 접근 허용하지 않을 주소 : 192.168.1.10
# vi /etc/xinetd.conf
25 # max_load = 0
26 cps = 2 60 // 변경
27 instances = 100 // 변경
28 per_source = 10
=> /etc/xinetd.d/krb5-telnet 에 해당 사항을 추가 기재해도 된다.
=> xinetd.conf 를 변경시키면 xinetd와 관련된 모든 프로그램에 적용됨
# vi /etc/xinetd.d/krb5-telnet
11 log_on_failure += USERID
12 disable = no
13 only_from = 192.168.0.0/16 // 추가
# 192.168.1.0/24 (네트워크 구간)
# 192.168.1.10/255.255.255.0 (호스트구간)
# 네트워크 구간, 호스트 구간에 따라 netmask 표시 방법이 다름.
14 no_access = 192.168.1.10/255.255.255.0 // 추가
15 access_times = 9:00-22:00 // 추가
16 }
# /etc/rc.d/init.d/xinetd restart
* xinet.conf 설정
# vi /etc/xinet.conf
log_type = SYSLOG daemon info
: syslog 데몬에 의해서 /var/log 디렉터리에 로그를 기록
log_on_failure : login 실패 시 로그에 기록할 정보
= HOST
log_on_success = PID : processID HOST : 호스트정보(Domain or IP)
DURATION : 접속유지시간 EXIT : 접속 종료 시간
cps : 접속 횟수의 속도 제한
= 50 : 초당 연결 제한 수
10 : 서비스 이용제한이 걸린 뒤 재시작까지의 인터벌 (단위:초)
instances = 100 : 최대 서비스 갯수 설정(UNLIMITED : 무제한)
per_source = 10
: ip별 가질 수 있는 최고 프로세스 제한수 (UNLIMITED : 무제한)
includedir /etc/xinetd.d : xinetd 로 동작되는 서비스들이 정의된 경로
'Study > CentOS' 카테고리의 다른 글
[25] vnc(1) (0) | 2015.03.28 |
---|---|
[24] openSSH, system-config-firewall, scp, sftp (0) | 2015.03.28 |
[22] SELinux(소개), NIC, route, netstat, arp, nslookup, dig (0) | 2015.03.28 |
[21] 이론 - ip, subnetmask, prefix (0) | 2015.03.28 |
[20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file (0) | 2015.03.28 |