강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
리눅스 파일검색 강좌 find 3편
조회 : 12,929  


리눅스 파일검색 강좌 find 3

 

 

-------------------                    ------------------------

 

1  : 리눅스의 파일검색 유틸리티 find 실무 개론

2  : 특정 UID 소유의 모든 파일찾기

3  : 특정 사용자의 ID 소유로된 모든 파일 찾기

4  : 특정 사용자의 홈디렉토리 내에서 특정 파일 찾기

5  : 시스템내의  특정파일들을 검색하여 자동삭제하는 방법

6  : 지정한 소유자의 모든 파일을 찾아서 확인하기

7  : 서버내부의 불필요한 파일들 모두 정리(삭제)하기

8  : 특정용량 이상되는 파일들 모두 찾기(용량단위로 파일검색)

9  : 특정 퍼미션을 가지고 있는 파일들 모두 찾기

10  : 지정된 일자 이후에 변경된 모든 파일 찾기(서버 보안점검시 사용)

11  : 지정된 파일보다 이후에 생성된 파일 찾기(서버 보안점검시 사용)

12  : 특정디렉토리내에 존재하는 모든 디렉토리 목록만 확인하기

13  : 서버내에 존재하는 모든 링크파일 검사하기(서버 보안점검시 사용)

14  : root소유의 SetUID파일 찾기 (서버 보안점검시 사용)

15  : 서버내의 백도어파일 찾기(서버 보안점검시 사용)

16  : 서버내부의 .rhosts 파일 찾아서 확인하기(서버 보안점검시 사용)

17  : 서버내부에서 .bash_history 파일을 모두 찾아서 확인하기(서버보안점검시 사용)

18  : 소유자가 없는 파일 또는 소유그룹이 없는 무적파일 찾기(서버 보안점검시 사용)

19  : 쓰기 권한이 있는 파일 디렉토리 찾기(서버 보안점검시 사용)

20  : 특정문자를 포함하는 파일찾기와 문자가 속한 찾기

 

 

 

 

ㅇ 제작자 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 성수

 

ㅇ 본강좌의 자세한 정보 : http://www.superuser.co.kr/linuxcommandbible/

 

 

 

 

 

 

 

 

 

 

 

 

 

14 : root소유의 SetUID파일 찾기 (서버 보안점검시 사용)

 

SetUID파일중 root소유의 SetUID파일은 매우 제한적인 용도로만 사용합니다. (SetUID에 대해서는 이 책의 chmod명령어편을 참조하시기 바랍니다.)  root소유의 SetUID파일은 실행시에 root권한으로 실행이 되므로 반드시 관리되어야 할 파일들입니다.  

 

아래는 현재 필자가 사용하고 있는 리눅스서버 내에서 root소유의 SetUID파일을 점검한 것입니다.

 

 

이렇게 점검된 root소유의 SetUID파일들은 모두 하나하나씩 그 용도와 목적을 확인한 이후에 불필요한 것들은 삭제해야 합니다.

 

또한 아래와 같은 방법으로도 root소유의 SetUID파일을 찾을 수 있습니다.

 

 

위의 예는 퍼미션에 SetUID가 있거나 SetGID가 있는 파일들을 모두 찾아서 보여주는 예입니다. 앞의 방법이 root소유의 SetUID만을 찾는다면 이번 예는 SetUID 또는 SetGID파일을  모두 찾는 예입니다. 

 

 

 

15 : 서버내의 백도어파일 찾기(서버 보안점검시 사용)

 

서버내에 백도어가 생성되는 위치는 거의 대부분 /dev입니다. /dev는 장치파일(device file)들이 존재하므로 일반적인 파일들이 존재하지는 않습니다. 따라서 /dev 내에서 일반파일을 검색하여 만약 존재한다면 거의 대부분 백도어로 사용되고 있는 파일이라고 볼 수 있습니다.

 

따라서 다음과 같이 find/dev내에 존재하는 파일들 중 일반적인 보통파일(-type f)을 찾아서 확인한 예입니다.

 

 

위의 예에서 /dev/MAKEDEV 파일은 장치파일을 만드는 용도로 사용되는 정상적인 파일입니다.

만약 위의결과 이외에 다른 결과가 추가적으로 나온다면 반드시 백도어로 사용되고 있는 파일이라고 볼 수 있습니다. 

 

 

 

16 :  서버내부의 .rhosts 파일 찾아서 확인하기(서버 보안점검시 사용)

 

.rhosts파일은 외부에서 아무런 제한없이 로그인할 수 있는 접근허용이 설정된 파일입니다. 이 파일이 존재한다면 반드시 확인해 보아야 합니다.

 

아래의 예는 시스템전체(/)를 대상으로 .rhosts파일이 존재하는가를 찾아서(find) 보여달라(ls -l {})는 의미입니다.  아래 결과에서는 현재 시스템에는 .rhosts파일이 검색되지 않았으므로 존재하지 않는다는 것을 알 수 있습니다.

 

 

따라서 위의 예와 같이 .rhosts파일을 모두 찾아서 만약 존재한다면 그 용도와 사용목적을 반드시 확인하시기 바랍니다.

 

 

 

17 : 서버내부에서 .bash_history 파일을 모두 찾아서 확인하기(서버보안점검시 사용)

 

.bash_history파일은 root를 포함하여 각 사용자들의 홈디렉토리에 존재하는 파일로서 각 사용자들이 사용했던 명령어가 저장되어있는 매우 중요한 파일입니다. 만약 이 파일들 중 파일용량이 0인 파일이 있다면 해킹가능성을 의심해 보아야합니다.

 

특히 root소유의 .bash_history파일의 용량이 0라면 이는 매우 심각한 경우로서 거의 99%이상은 해킹되었다고 보셔도 무방합니다.

 

 

위의 예는 시스템전체(/)를 대상으로 .bash_history파일을 찾아서(find) 보여달라(-exec ls -l {})는 의미입니다.  그 결과 모두 5개의 .bash_history파일이 검색되었음을 볼 수 있습니다.  이렇게 검색된 .bash_history파일을 가능한 모두 확인하셔서 정상적으로 사용되고 있는가를 확인해 보셔야합니다.

 

 

 

 

18 : 소유자가 없는 파일 또는 소유그룹이 없는 무적파일 찾기(서버 보안점검시 사용)

 

무적파일, 즉 소유자 또는 소유그룹이 존재하지않는 파일을 찾는 것 또한 서버보안과 관리에 매우 중요합니다.

 

지금까지의 예와 좀 다른 것은 논리연산개념이 들어간다는 것입니다. 즉 아래의 예에서 사용한 -o또는이라는 논리연산자인 “OR”를 의미합니다. (OR의 의미는 잘 아시죠.)  , -nouser가 의미하는 소유자가 없는 파일이거나, -nogroup이 의미하는 소유그룹이 존재하지않는 두가지 경우중 하나에 해당할 경우의 파일을 찾아줍니다.

 

이 의미 또한 정확하게 이해하셔야합니다.

 

 

위의 결과 소유자가 없는 파일이나 소유그룹이 없는 파일은 하나도 존재하지 않습니다.

하지만, 실제 호스팅서버를 관리하시다 보면 가끔씩 무적파일을 보게 됩니다.  이런 파일을 확인하시면 반드시 그 용도와 목적을 확인해 보셔야 합니다.

 

 

 

19 : 쓰기 권한이 있는 파일 및 디렉토리 찾기(서버 보안점검시 사용)

 

일반사용자들에게 쓰기권한의 퍼미션을 가진 파일과 디렉토리를 확인하는 것 또한 매우 중요한 서버관리자의 업무입니다.

 

쓰기가 가능하다라는 의미는 파일의 변경이 가능하다라는 의미가 됩니다. , 보안에 매우 취약한 파일과 디렉토리라는 의미가 되겠지요.  따라서 아래 예를 참고로하여 주기적으로 점검하시기 바랍니다.

 

아래의 예는 일반사용자들에게 쓰기 권한이 있는 파일을 모두 찾은 예입니다.

 

 

 

 

그리고 아래의 예는 일반사용자들에게 쓰기 권한의 퍼미션이 있는 디렉토리를 찾은 예입니다.

 

 

이들 디렉토리들은 반드시 용도를 확인하고 불필요하게 쓰기 권한이 주어져 있다면 모두 쓰기 권한을 회수하고 정상적인 목적으로만 사용될 수 있도록 조치하시기 바랍니다.

 

 

 

 

20 : 특정문자를 포함하는 파일찾기와 그 문자가 속한 행 찾기

 

특정문자가 속한 파일을 찾을 수 있다는 것은 매우 흥미로운 일입니다. 윈도우에서 검색이라는 유틸리티에서 특정 문자가 속한 파일을 찾는 것도 옵션으로 제공하고 있듯이  리눅스에서 find명령어를 이용하여 특정문자가 속한 파일을 찾을 수 있다는 것은 리눅스관리자뿐아니라 일반사용자들에게도 매우 큰 무기가 될 수 있습니다.

 

형식 : find 찾을위치 type f -exec egrep -i “포함하는문자”/dev/null {} ;

 

위와 같은 형식으로 find명령문을 사용하시면 포함하는문자가 포함된 파일을 모두 찾을 수 있습니다.

 

아래는 /home/bible이라는 디렉토리이하에서 “doc”라는 문자를 포함하고 있는 파일을 찾아서 파일의 위치와 파일명을 표시하고 doc문자가 포함된 행을 출력해 줍니다.

 

 

 

이상과 같이 find명령어에 대한 실무적인 예들을 설명하였습니다. 한가지 당부드리고 싶은 것은 find의 사용법을 열심히 공부하는 것 보다는 find의 결과로 검색된 파일들에 대한 정확한 판단을 할 수 있어야한다는 점입니다. , 정상적인 것인가 또는 해킹에 의해 악용된 것인가를 스스로 판단할 수 있어야하며, 무엇보다 중요한 것은 해킹에 사용된 파일이라는 것으로 판단되었을 경우에 이런 파일들을 처리하는 방법에 대한 것입니다. 이에 대한 처리방법은 이 책에서 거의 대부분 다루고 있으므로 스스로 해답을 찾으시기 바랍니다. 여러분들의 어깨가 한층 무거워짐을 느끼셔야 합니다.

 

 

ㅇ 제작자 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 성수

 

ㅇ 본강좌의 자세한 정보 : http://www.superuser.co.kr/linuxcommandbible/

 

 

 


[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1355


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
박성수
파파
헐렁고수