본문 바로가기

Solaris/기술과 팁

[팁] Solaris10에서 TCP/Wrapper 설정

Solaris10 부터는 TCP/Wrapper 가 기본으로 설치되어 있다.

따라서, 이전 버전과 달리 TCP/Wrapper 구동하는 방법이 달라졌다.

아래와 같이 설정하여 사용하도록 한다.

1. 현재 TCP/Wrapper 설정 확인
# inetadm -p
NAME=VALUE
bind_addr=""
bind_fail_max=-1
bind_fail_interval=-1
max_con_rate=-1
max_copies=-1
con_rate_offline=-1
failrate_cnt=40
failrate_interval=60
inherit_env=TRUE
tcp_trace=TRUE
tcp_wrappers=FALSE     <- 현재 정지된 상태임
connection_backlog=10


2. 접근 허가 또는 접근 불가 host list를 작성한다.
  (1) 접근허가 : hosts.allow
   # vi /etc/hosts.allow
   in.telnetd:100.100.100.111
   in.ftpd:100.100.100.111
   ALL:localhost           <- 자기 자신에 대해 모든 접근 허가

  (2) 접근불가 : hosts.deny
   ALL:ALL   <- 어떤 host든 접근 불가


3. TCP/Wrapper를 사용가능하게 한다.
# inetadm -M tcp_wrappers=true

* 사용불가로 하고 싶을 경우에는 아래와 같이 한다.
# inetadm -M tcp_wrappers=false



추가로, tcp wrapper에 대한 상세 설명은 아래와 같다.
출처 : http://boanin.tistory.com/112

- 유닉스(솔라리스)에서 접근 제어를 하기 위해 TCPWrapper를 사용합니다.

 - TCPWrapper를 이용한 접근 제어를 하기 전에 inetd(수퍼 데몬)의 대한 이해가 필요합니다. 그래서 먼저 inetd에대해 살펴보고 그 후 TCPWrapper를 이용한 설정에 대해 알아보겠습니다.

 1. inetd 데몬

                                                                  <inetd 데몬의 구성>

   (1). 그림과 같이 텔넷과 FTP 클라이언트가 서버에 접속을 요구하면 inetd 데몬이 이를 확인

   (2). /etc/inetd.conf 파일에 데몬에 대한 설정을 읽음

   (3). /etc/services 파일에서 설정된 포트 번호에 대해 클라이언트의 요청이 있을 때  텔넷 데몬을 실행

   - /etc/inetd.conf 파일을 vi를 통해 열면 아래 그림과 같다. 파일에는 여러 데몬에 대한 설정이 7개 부분으로 나와 있는데 각 부분에 대해 알아보자.


     ①. telnet -> 서비스

       - 서비스 이름을 정의하며, /etc/services에 정의되어 있어야 한다.



     ②. stream -> 소켓 타입
    
       - tcp의 경우 stream, udp의 경우 dgram

     ③. tcp6 -> 프로토콜

       - /etc/protocols에 정의된 프로토콜의 종류와 번호


     ④. nowait -> 대기설정

       - inetd가 서비스 요청을 받은 경우 즉시 처리할 것인가의 여부에 따라 nowait or wait

     ⑤. root -> 로그인 이름

       - 데몬을 어떤 사용자의 권한으로 수행할 것인가 명시

     ⑥. /usr/sbin/in.telnetd -> 서버

       - 해당 서비스를 수행하기 위해 어떤 프로그램을 실행시킬 것인가를 절대경로로 표시

     ⑦. in.telnetd -> 인자

       - 데몬을 실행하는데 필요한 인자 값

2. TCPWrapper Tool

 - 솔라리스 9에는 /usr/sfw/sbin에 기본적으로 설치되어 있다.

 - 위에서 inetd 데몬에 대해 알아보았습니다. 여기에 TCPWrapper가 설치되면 데몬의 동작이 아래와 같이 바뀝니다.


   ①. inetd 데몬은 클라이언트의 요청을 tcpd 데몬에게 넘겨준다.

   ②. tcpd 데몬은 클라이언트의 요청이 적절한 접근 권한이 있는지 확인

 - TCPWrapper의 설정(telnet의 경우)

   ①. /etc/inetd.conf 파일의 telnet  stream  tcp6  nowait  root  /usr/sbin/in.telnetd  in.telnetd
telnet  stream  tcp6  nowait  root  /usr/sfw/sbin/tcpd  in.telnetd로 바꿔줍니다.

   ②. 접근 제어 설정 시 /etc/hosts.allow/etc/hotst.deny를 사용 

     -> 두파일에 기록하는 접근 통제 규칙

데몬 목록 : 클라이언트 목록 [:쉘 명령]

   ③. 설정 확인

/usr/sfw/sbin/tcpdck

05. 파일 및 디렉터리 관리

 - PATH에 현재 디렉터리를 의미하는 '.'를 포함시키지 않는다.

 - umask값을 022 또는 027로 지정

 - /etc 디렉터리
   ▷ 여러가지 시스템에 대한 설정 파일을 담고 있는 디렉터리
   ▷ 기본은 755이나 751로 주는 것이 좋다.

 - /bin
   ▷ 명령에 대한 실행 파일을 담고 있는 디릭터리
   ▷ 기본은 777이나 771로 주는 것이 좋다.

 - /usr/bin
   ▷ 기본은 755이나 751로 주는 것이 좋다.

 - /sbin


 - /tmp, /var/tmp
   ▷ 임의의 사용자가 모두 사용할 수 있는 디렉터리
   ▷ 이 디렉터리에는 스티키 비트가 설정되어 있다.

 - /var/log
   ▷ 여러가지 로그 정보를 담고 있는 파일
   ▷ 755 -> 751

 - /etc/ssh
   ▷ ssh 연결 시 필요한 공개키 등의 정보를 담고 있다.
   ▷ 755 -> 750

 - /etc/crontab
   ▷ cron 데몬에 의한 자동 실행을 설정할 수 있는 파일

 - /etc/syslog.conf
   ▷ 시스템 로그에 대한 설정을 담고 있는 파일
   ▷ 640이하로 권한 설정

 - /var/log/wtmp
   ▷ 시스템 접속에 대한 로깅
   ▷ 640이하로 권한 설정

 - /var/log/lastlog
   ▷ 시스템에 로그인한 사용자에 대한 로그 정보
   ▷ 640이하로 권한 설정

 - /etc/ftpusers
   ▷ 관리자나 특정 계정에 대해 ftp 로그인이 불가능하도록 설정하는 파일
   ▷ 644 -> 600

 - /etc/passwd
   ▷ 계정에 대한 기본적인 정보를 제공
   ▷ 444 -> 400

 - /etc/shadow
   ▷ 암호화된 패스워드가 있는 파일

 - /etc/hosts.equiv
   ▷ 시스템에 대한 신뢰(trust)를 설정할 수 있는 파일
   ▷ 권한을 600이하로 설정

 - /etc/hosts.allow, /etc/hosts.deny
   ▷ 기본적으로 존재하는 파일이 아니므로 생성 후 권한 변경
   ▷ TCPWrapper에서 접근 권한을 설정하는 파일
   ▷ 권한을 600이하로 설정

 - /etc/securetty
   ▷ 텔넷 등에 대한 접근 제어 설정
   ▷ 권한을 600이하로 설정

 - /etc/rc.d/init.d, /etc/init.d
   ▷ 시스템을 부팅할 때의 설정 파일
   ▷ 755 -> 750

 - /etc/initd.conf
   ▷ 시스템이 제공하는 서비스에 대한 정보를 담고 있다.
   ▷ 777 -> 600

 - /etc/cron.allow, /etc/cron.deny
   ▷ cron 데몬에 대한 접근 제어 파일
   ▷ 기본적으로 존재하는 파일이 아니므로 생성 후 권한 변경
   ▷ 권한을 400으로 준다.

 - /etc/hosts
   ▷ 시스템에 접근하는 호스트들에 대한 IP와 호스트 이름을 확인할 수 있는 정보를 제공
   ▷ 권한을 644 이하로 준다.