리눅스해킹

게시글 '유닉스 상에서 흔적 지우기'에 대한 정보
유닉스 상에서 흔적 지우기
등록일 2010-02-17 조회 3,043
.bash_history 파일에 흔적을 남기지 않는 방법
------------------------------------------------------------------------------

 

유닉스&리눅스에서 중요한 것은 bash 를 쓰게 되면 .bash_history 라는 파일이 생깁니다.
.bash_history 파일의 특징은 우선 bash 쉘을 실행시킨후의 모든 명령을 그 파일에 저장시킵니다.
그리고 저장되는 파일의 위치는 쉘을 실행시킨 사람의 uid 를 따릅니다.
euid 가 더 우선권이 있슴..

즉.루트쉘을 실행시키면 루트 디렉토리에 .bash_history파일이 생기고(원래 존재하면 덧붙여 써짐..)
그 파일에 저장이 되요~
또한 한가지 특징은 사용자가 그 쉘을 끝냈을때 전부 저장이 되죠.
실행중에는 저장이 안됨.
즉.우리가 로그아웃하면 그때 저장이 되요. 웃기죠? 황당하고.

그래서 우리는 루트쉘을 실행시킨후 루트 디렉토리로 가야 합니다.
그후에 .bash_History 라는 디렉토리를 만들어 놓아요.
그러면 파일이 않 만들어지겠죠..디렉토리 우선이니까.

또하나의 방법은 .bash_history  파일을 /dev/null 이라는 파일에 링크를 시키는 방법입니다.
즉.. ln -s /dev/null /root/.bash_history 라고 명령을 내리면 .bash_history파일이 /dev/null 파일에 링크가 되요.
그렇게 되면 .bash_hisroty 파일에 덧붙여 쓰기를 하면 /dev/null
즉 널포인터(쓰레기처리장  ^^;)으로 보내지게 되죠.
사라져요..내용이..히히

하지만 더 좋은 방법이 있습니다.

바로.. set  설정..즉 환경 설정을 바꾸면 되죠.
한번 유닉스 상태에서 (리눅스) set 를 쳐보세요.

LS_OPTIONS=--8bit --color=tty -F -b -T 0
MACHTYPE=i386
MAIL=/var/spool/mail/loveyou
MAILCHECK=60
GROUP=users
HISTFILE=/home/loveyou/.bash_history
HISTFILESIZE=500
HISTSIZE=500
HOME=/home/loveyou
........
(이하 생략)

이런 형식으로 나오죠.
여기서 유심히 볼것은 HISTFILE=/home/loveyou/.bash_history 입니다.
이것은 바로 .bash_history  라는 파일의 위치를 가르키는 변수이기 때문이죠.
그럼..이렇게 함으로써 해결이 되겠죠.
export HISTFILE=/dev/null

자.. 이제 초보적인 백도어 설치와 그에 대한 안전한 조치를 강좌했습니다.
이번엔 관리자의 입장에서 방지하고 막는 방법을 말하죠.

관리자는 언제나 끊임없이 호스트를 살펴야겠죠.
나쁜짓 하는 사람이 있을까하고요..
우선 setuid 걸린 프로그램의 대부분은 퍼미션이 4755 입니다.

보통 퍼미션은 777 퍼미션을 쓰지만
ex) chmod 777 /bin/bash
하지만 앞에 한자리 더 쓰게 되면 특수한 퍼미션을 만들수있죠.
1 은 스틱키 설정 4는 setuid 설정..

ex) chmod 1777 /tmp  <= 일반적인 /tmp디렉토리 설정
      chmod 4755 rootshell <= 바로 루트쉘 설정중 한 단계죠.

즉..이것을 이용해서 find 명령으로 찾습니다.
find . -user root -perm 4755 -print 정도의 명령어를 쓰면 됩니다.
4755 퍼미션이 아니면 문제가 생기겠죠?

이때는

ls -alR / |grep rws
ls -alR / | grep r-s
ls -alR / |grep -- --s 입니다. -- --s 가 정상입

위에서 grep --s 를 왜 grep -- --s 라고 했는지는 스스로 알아내세요.
한번 grep --s 랑 grep -- --s 라고 해보시면 알아요.