[보안] identd 에 대하여..
우리가 서비스 제공시 삭제하는 identd 에 대해 알아보도록 하자..
identd 는 inetd 에서 작동하는 데몬으로 113번 포트에서 리슨한다. 서버
에서 작동하는 다른 서비스들도 클라이언트 머신들에게 요청한 유저에 대
한 신원 확인을 위해 identd 를 사용할 수 있다. telnet 이나 sendmail 등
의 서비스를 하는 서버에 요청이 들어왔을때 인증클라이언트는 high 포트
에서 클라이언트의 identd 포트에 “이 서비스를 요청한 프로세스의 소유자가
누구인가”라고 물어보게 된다.
만약 클라이언트의 인증데몬이 username@nodename 으로 응답했다면 이 응
답은 서버의 syslog 등에 전달되고 연결요청은 telnetd 에게 전달된다. 만
약 응답이 null 또는 클라이언트에서 인증 데몬이 없을 경우 서버의 auth
데몬은 timeout 이 될 때까지 기다린후 연결을 받아들인다.
이때의 delay 는 레드햇 7.0의 경우 대략 2분정도 소요된다.
이때 중요한 것은 응답을 받을때 유효성을 체크하지 않고 또 응답은 전적
으로 클라이언트의 머신에게 달려 있으므로 username@nodename 는 충분히
위조될 수 있다.
(물론 root 만이 이를 위조할수 있는 권한이 있다.)
또한 FreeBSD 나 Windows 와 같은 많은 시스템에서는 root가 아닌 일반 유
저도 그들이 원하는 어떠한 identd 도 명시할 수 있다.
이 프로토콜은 멀티유저환경에서 문제가 있는 유저를 찾아내는데, 유용하
게 사용될 수 있다.
만약 여러분 시스템에 있는 한 유저가 다른 시스템에 문제를 일으켰을때
상대방 시스템 관리자는 여러분에게 문제를 유발한 유저를 찾아 알려줄
수 있다. 그렇다면 identd 를 작동하여야 하나? 이는 전적으로 자신의 판
단에 달려 있다.
많은 유저가 있는 시스템에서는 매우 유용하지만 소수의 유저일경우에는
별로 도움을 주지는 않는다. 때로 어떤 IRC 나 FTP 서버는 identd 가 작동
하지 않는 접속을 허용하지 않을 수도 있다.
그러나 identd 를 운영할 경우 시스템의 각종 정보를 제공하게 되는데, 예
를 들면 “root 로 작동하고 있는 프로세스는 무엇이 있는가? “, “어떤 OS
가 작동하고 있는가?”, “어떤 username 이 있는가?”등이다.
만약 identd 에 -n 옵션을 줄 경우에는 username 대신 username id 를 보
내게 된다.
기타 더 많은 설정은 /etc/identd.conf 에서 설정가능하다.
identd 는 이 프로세스를 죽이거나 tcp wrapper 를 사용하여 차단하거나
또는 방화벽을 아용해 차단가능하다. 만약 방화벽을 이용시 deny 를 사용
하지 말고 reject로 차단하는 것이 좋다. 만약 deny 를 이용시 서버에 접
속시 매우 많은 시간을 소요하게 된다.