달력

112024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

Process : /usr/sbin/tcpd

 

CONFIGURATION FILE

접근허용 설정 : /etc/hosts.allow

접근거부 설정 : /etc/hosts.deny

 

1. 특정 아이피, 특정 네트워크, 특정 서비스에 한하여 허용 설정

 

/etc/hosts.allow

 

1) 모든 서비스에 대하여 192.168.0.10, 192.168.0.11 아이피만 허용

ALL:192.168.0.10, 192.168.0.11

 

2) 모든 서비스에 대하여 172.16.0.0, 192.168.0.0 네트워크만 허용

ALL :192.168.0.0/255.255.255.0, 172.16.0.0/255.255.0.0

 

3) 특정 서비스(in.telnetd)에 대하여 192.168.0.10, 192.168.0.11 아이피만 허용

in.telnetd:192.168.0.10, 192.168.0.11

sshd:192.168.100.0/255.255.255.0

 

/etc/hosts.deny

1) 모든서비스 및 모든 아이피 거부

ALL:ALL

 

2. 특정 아이피, 특정 네트워크, 특정 서비스에 한하여 거부 설정

 

/etc/hosts.deny

 

1) 모든 서비스에 대하여 192.168.0.10, 192.168.0.11 아이피만 거부

ALL:192.168.0.10, 192.168.0.11

 

2) 모든 서비스에 대하여 172.16.0.0, 192.168.0.0 네트워크만 거부

ALL :192.168.0.0/255.255.255.0, 172.16.0.0/255.255.0.0

 

3) 특정 서비스(in.telnetd)에 대하여 192.168.0.10, 192.168.0.11 아이피만 거부

in.telnetd:192.168.0.10, 192.168.0.11

 

sshd : ALL 

 

/etc/hosts.allow

 

1) 모든서비스 및 모든 아이피 허용

ALL:ALL

 

3. 원하는 설정을 한 후

/usr/sbin/tcpd 실행

 

 

4. TCP Wrapper 사용 여부 확인 방법 (libwrap.so)

처음 TCP Wrapper 개념을 접했을 때는 외부에서 접근하는 모든 TCP 관련 connection 들을 제어하는 것으로 오해하였다.

TCP Wrapper libwrap.so 을 사용하여 구현된 service 에서만 적용되는 사항이다.

TCP Wrapper 를 지원하는지 여부는 다음과 같이 확인이 가능하다.

sshd 를 예를 들면 먼저 which를 통해 sshd의 위치를 확인하고 ldd를 통해 libwrap.so 사용 여부를 확인하면 된다.

        $ which sshd

        /usr/sbin/sshd

        $ ldd /usr/sbin/sshd

        linux-vdso.so.1 =>  (0x00007fff0a153000)

        libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007ff9af732000)

        libaudit.so.1 => /lib/x86_64-linux-gnu/libaudit.so.1 (0x00007ff9af50b000)

        libpam.so.0 => /lib/x86_64-linux-gnu/libpam.so.0 (0x00007ff9af2fd000)

        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007ff9af0db000)

        libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007ff9afd9c000)

        libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007ff9aec96000)

        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007ff9aea93000)

        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff9ae879000)

        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007ff9ae641000)

        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007ff9ae3f7000)

        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007ff9ae125000)

        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007ff9adf21000)

        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff9adb57000)

        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007ff9ad93e000)

        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff9ad73a000)

        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff9ad4ca000)

        /lib64/ld-linux-x86-64.so.2 (0x00007ff9afc06000)

        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff9ad2c2000)

        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007ff9ad0a0000)

        libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007ff9acdbf000)

        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff9acba2000)

        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007ff9ac973000)

        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007ff9ac768000)

        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007ff9ac564000)

        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007ff9ac349000)

        libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007ff9ac135000)

 

아래 예를 참조하면 libwrap.so 를 사용하는 명령어 리스트 확인도 가능하다.

 

    $ for file in /usr/sbin/*; do ldd $file 2>/dev/null | grep -q libwrap.so && echo $file; done

    /usr/sbin/mysqld

    /usr/sbin/pptpd

    /usr/sbin/sshd

    /usr/sbin/tcpd

    /usr/sbin/tcpdchk

    /usr/sbin/tcpdmatch

    /usr/sbin/try-from

 

 

 

Posted by 짜꾸미의골골몽
|