Certification/리눅스마스터

리눅스마스터 1급 2차 요약정리 - 8 (TCPwrapper / xinetd / Proxy)

2mukee 2021. 11. 14. 10:27
320x100
320x100

TCP wrapper 작성 규칙

※ TCP Wrapper

: 슈퍼데몬인 inetd에 의하여 수행되는 서비스들의 접근을 제어하는 TCP 연결 기반 프로그램

: sshd, vsftpd, rsh 등을 이용해 접속하는 호스트를 제어.

/etc/hosts.allow : 접근이 허가된 호스트의 목록 파일

/etc/hosts.deny : 접근이 거부된 호스트의 목록 파일

 

 

 

TCP wrapper 파일 형식

daemon_list : client_list [ : shell_command ]

- daemon_list : 서버 프로그램 혹은 예약어. in.telnetd와 같은 실행 데몬명으로 작성

- client_list : 접속을 제어할 호스트

- [ : shell_command] : spawn<자식 프로세스 생성>twist<프로세스 교체>로 실행

- 예약어

: ALL (모든 서비스 또는 호스트)

: LOCAL (같은 도메인에 있는 호스트. . 을 포함하지 않는 모든 호스트)

: KNOWN / UNKNOWN (이름이 KNOWN인 호스트 또는 이름을 알고 있는 호스트)

: PARANOID (호스트명과 주소가 일치되지 않는 호스트)

: EXCECPT (리스트 가에서 나를 제외한 모든 호스트)

- shell_command 확장옵션

%a (%A)                            클라이언트(서버)의 주소

%c                                    클라이언트의 정보 (user@host 또는 user@address)

%d                                    데몬 프로세스의 이름

%h (%H)                            클라이언트(서버)의 호스트명 또는 주소           

%n (%N)                            클라이언트(서버)의 호스트명 또는 unknown, paranoid

%p                                    데몬의 PID

%s                                    서버의 정보 (daemon@host 또는 daemon@address)

%u                                    클라이언트 사용자면 또는 unknown

 

/etc/hosts.allow 혹은 /etc/hosts/deny 예시 <쉘 명령어를 등록 하는 방식임>

ALL : cracker.aa.com : twist (finger -l @%h | mail -s %d -%h root)

in.telnetd : 192.168.5.13

in.telnetd@192.168.1.254 : 192.168.1.

sshd : .aa.com EXCEPT cracker.aa.com

ALL EXCEPT vsftpd : .comeve.kr EXCEPT bad_man.comeve.kr

 

 

xinetd (Extend Inetd)

※ xinetd : TCP wrapper를 사용하는 inetd를 대체. 환경설정 파일을 이용해 자체적 접근 제어 가능. IP 주소 당 접속 수 제한, 시간대별 서비스 제한, Dos 공격에 대비한 설정 등을 추가로 제공

- xinetd의 구성

/etc/xinetd.conf : xinetd의 전페적인 환경 설정을 담당하는 파일

/etc/xinetd.d : xinetd에 의해 관리 및 제어되는 서비스 파일들이 위치하는 디렉터리

/etc/rc.d/init.d/xinetd : xinetd 데몬스크립트 파일

 

/etc/xinetd.conf 주요 항목

log_type               = 어떠한 형태로 로그를 저장할 것인지 지정. SYSLOG (syslog에 기록), FILE (별도 파일 지정)

log_on_failure        = 접속에 실패 시 기록될 속성값 지정. HOST (원격 호스트의 IP 주소), USERID (원격 사용자 ID), ATTEMPT (실패한 시도)

log_on_success      = 접속 성공 시 기록될 속성 값 지정. PID (실행된 서버의 pid), HOST, USERID, EXIT (관련 서비스가 종료될 때 상태), DURATION (서비스의 세션 지속 상태), TRAFFIC (리다이렉트 서비스를 위한 전체 바이트수)

cps                      = 초당 요청 받은 수에 대한 제한 설정. 요청수, 제한시간

instances              = 동시에 서비스 할 수 있는 서버의 최대 개수. 개수, UNLIMITED

per_source            = 특정 IP 주소에서 접속할 수 있는 최대 개수. 개수

only_from             = 서비스를 이용할 수 있는 원격 호스트. 서버에 접속을 허가할 호스트의 IP주소, 네트워크 대역 주소 등 사용 가능. IP주소, [네트워크 대역주소]

no_access             = 서비스를 이용할 수 없는 원격 호스트 주소 지정. only_from과 옵션 동일

enabled                = 사용 가능한 서비스 목록을 지정

disabled               = 사용 불가한 서비스 목록 지정

includedir             각 서비스 파일에서 사용되는 주요 속성과 속성값

 

 

 

/etc/xinetd.conf 예시

defaults

{

             log_type               = SYSLOG daemon info                     # FILE /ver/log/xinetd.log

             log_on_failure        = HOST

             log_on_success      = PID HOST DURATION EXIT

             cps                      = 50 10                                           # 초당 요청수가 50이상이면 10초간 연결 중단

             instances              = 50

             per_source            = 10

             enabled                = telnet  rlogin

             includedir /etc/xinet.d

}

 

/etc/xinetd.d/서비스명 주요 항목

: /etc/xinetd.conf의 설정 항목과 동일

flags                    = 서비스 운영 관련 설정. REUSE (지속적 재사용)

socket_type           = 네트워크 소켓 타입. steam <stream>, dgram <datagram>, raw <ip 직접 접근 필요>, seqpacket <신뢰성 있는 연속적인 데이터그램 전송>

wait                     = 서비스의 스레드 여부. yes <단일 스레드>, no <다중 스레드>

user                     = 서버 프로세스의 UID 지정. root

server                  = 서비스를 실행하는 데몬 파일의 경로. /usr/sbin/in.telnetd

log_on_failure        += 로그 관련 설정. /etc/xinetd.conf에 지정된 설정에 추가하거나 뺄 옵션 지정

access_times         = 서비스 이용가능 시간 설정. 01:00-07:00

redirect                = 해당 서비스를 다른 서버로 포워딩 할 경우 지정

port                     = 서비스의 포트번호 지정

nice                     = 서버의 우선순위

 

 

/etc/xinetd.d/서비스명의 예시 (telnet)

service telnet

{

             disable                 = no

             flags                    = REUSE

             socket_type           = stream

             wait                     = no

             user                     = root

             access_times         = 09:00-17:00 21:00-23:59

             per_source            = 3

             only_from             = 192.168.12.22      192.168.5.0/24

             no_access             = 192.168.5.13

             log_type               = FILE /ver/log/telnet.log

             server                  = /usr/sbin/in.telnetd

             log_on_failure        += USERID

}

 

Squid (프록시 서버 프로그램) 설정 (/etc/squid/squid.conf)

http_port                                                     프록시 서버의 포트 번호 지정. 기본 3128

cache_dir ufs /var/spool/squid 100 16 256         캐시 정보 저장 경로 설정. ufs <squid 저장 포맷>, 100 <저장되는 캐시 정보의 크기>, 16 <캐시가 저장되는 첫 번째 하위 디렉터리의 개수>, 256 <두 번째 하위 디렉터리 개수>

 

/etc/squid/squid.confACL 설정

acl 별칭 src IP주소/넷마스크 값

acl 별칭 dst IP주소/넷마스크 값

acl 별칭 srcdomain .foo.com

acl 별칭 dstdomain .foo.com

http_access allow / http_access deny  

 

/etc/squid/squid.conf 예시

http_port 3128

cache_dir ufs /var/spool/squid 100 16 256

 

acl deragon src 192.168.4.0/255.255.255.0

acl 2mukee ssrcdomain .example.com

acl exploit dstdomain .exploit-db.com

 

http_access allow deragon

http_access allow 2mukee

http_access deny exploit

http_access deny all

300x250
728x90