YesYo.com MintState Forums
뒤로    YesYo.com MintState BBS > Tech > Linux
검색
멤버이름    오토
비밀번호 
 

해킹을 막아봅시다

페이지 정보

작성자 MintState 댓글 0건 조회 10,021회 작성일 08-11-17 15:48

본문

해킹을 막아봅시다

어제 제 서버에 해킹흔적이 발견되어 외부로부터의 모든 텔렛 등의 접속을 막았답니다.

하지만 막는것으로는 직성이 풀리지 않아 간단한 스크립트을 제작하기에 이르렀죠.

내용인 즉슨, 외부에서 접근을 시도할 경우 특정 서비스 (telnet, ftp, imap, finger 등)를 원초적으로 막는 대신에 접속시도자의 접속정보를 화면에 보여주고 (일종의 경고 내지 안내목적이 되겠죠) 운영자에겐 메일로 세부 내역이 발송되도록 하였습니다.

이것은 tcp_wrapper에 의해 서비스를 제한하는 것으로서도 이미 보안의 효과가 있지만, 일반적으로 해킹타겟을 정하면 여러 서비스를 뒤지다 구멍이 있는 부분을 파고드는 해커들의 습성을 고려해볼 때 허용되지 않는 서비스에 한번이라도 접근을 시도한 경우 시간, 시도 서비스, 시도 서버 ip 또는 도메인, 시도 서버의 finger 정보 등을 운영자에게 알려 사전에 경계할 수 있도록하는데 목적이 있습니다. (오늘 이 스크립트를 짜면서 제 서버의 로그파일을 분석해보니까 텔렛으로 접근을 시도해보고, ftp, pop, imap, finger 등을 차례로 접근해보는 형태가 더러 눈에 띄더군요. 이는 서버의 구멍을 찾기 위해서겠죠.  --; )

레드햇과 같은 배포본에서는 tcp_wrapper를 이용해 inet 슈퍼서버를 통하는 각종 서비스에 대해 접근제한을 둘수 있습니다.

식상한감이 없진 않지만 제가 작성한 스크립트을 이용하기 위해서는 이부분이 선행되어야 하기 때문에 간략하게나마 설명하겠습니다.

/etc/hosts.allow <- 접속을 허용할 조건을 지정하는 파일
/etc/hosts.deny  <- 접속을 거부할 조건을 지정하는 파일


/etc/hosts.allow
in.telnetd: LOCAL 210.100.100.1
위 내용은 텔렛 접속에 있어 local과 210.100.100.1만을 허용한다는 것이죠.

/etc/hosts.deny
in.telnetd: ALL:
위 내용은 텔렛 접속에 있어 모든 서버로부터의 접속을 거부한다는 것이죠.


하지만 위와 같은 경우 hosts.allow가 우선하기 때문에 local, 210.100.100.1 은 접속이 허용되고 그 외에는 모두 거절한다는 것으로 해석할 수 있겠습니다. (실은 저도 예전부터 위 내용은 알고 있었지만 오늘 처음 적용한거라 혹시 틀릴 수도 있겠지만, 저는 위와 같이 했는데 원하는대로 작동하고 있죠. ^^)

자세한 것은 man hosts.allow 해보시면 됩니다.

hosts.deny에는 hosts.allow에 없는 한가지 특수한 옵션이 있는데, 이는 접속을 거절함과 동시에 특정 명령을 실행하도록 지정할 수 있다는 것입니다. (현재 제가 설명하고 있는 버전은 알짜 5.2 삽입분인 tcp_wrappers-7.6-5입니다. 그 이전 버전은 잘 모르겠습니다. 써보지 않아서... --; )

또 명령 실행 방법도 약간 특이하답니다.

아무튼 제 /etc/hosts.deny 파일을 보여드리죠.(실제와는 약간 차이가 있답니다 ^^)


설명하자면 모든 접속을(위에서 설명했듯이 hosts.allow에서 지정한것을 제외한) 거부하며, 거부시 /etc/hosts.denyck 라는 스크립트을 실행하라는 겁니다. 그 우측에 Y Y %a %c %d %h %n %p %s %u 라고 되어 있는 부분은 실행될 스크립트에 인자를 전달하는 것(argument)으로서, 이 값은 거부시에 접속시도자의 정보를 tcp_wrapper가 습득한 것인데 이를 그대로 스크립트로 전달하기 위해 순서대로 인자값으로 나열한 것입니다.

순서대로 보면, 제일 앞의 Y는 접속거부에 대한 아래와 같은 메세지를 화면에 나타내주는 것으로서 경고의 의미가 내포되어 있다고 볼 수 있습니다. 다른 안내메세지 등을 추가하고 싶거나 일부 항목을 지우고 싶을 때도 제공되는 스크립트를 약간 변형하는것으로 가능합니다. 만약 아래 메세지를 보이지 않으려면 N이라고 입력해야합니다.


두번째 Y는 상세한 접속시도 내용을 운영자에게 메일로 전달할것인지를 지정하는
인자로서 Y로 지정할 경우 메일로 아래와 같이 전달됩니다.


나머지 인자 %a %c %d %h %n %p %s %u 은 man hosts.allow 페이지의 EXPANSIONS 부분에 기록되어 있는 내용입니다.

주의할 점은 아래 실행될 스크립트에서 순서대로 인자를 볼러서 활용하므로 인자들의 나열순서를 바꾸거나 일부 인자를 빼버리게 되면 오작동을 일으킬 수 있다는 겁니다.



마지막으로 접근 거부시 hosts.deny로 부터 인자를 넘겨받아 실행될 /etc/hosts.denyck 스크립트입니다.

댓글목록

등록된 댓글이 없습니다.

Total 360건 17 페이지
게시물 검색
모바일 버전으로 보기
CopyRight ©2004 - 2021, YesYo.com MintState. ™