Linux/보안장비 운용

history 변수 조작을 막는 방법

GGkeeper 2022. 3. 4. 22:02

실습> 히스토리 변수 조작을 막는 방법

이 실습을 진행하기 위해서는 아래와 같은 내용을 알고 있어야 한다.
bash에서 history의 역할
/etc/profile 의 역할
히스토리에 대한 내용
/dev/null 에 대한 내용
readonly 에 대한 내용

실습 진행은 일반 유저와 관리자 모두 가능하다.

# echo $HISTSIZE
1000
# HISTSIZE=0  <-- 메모리에 명령어를 저장하지 않는다는 의미이다.
#  <-- 방향키 위로 올리면 안올라간다.
# pwd
# ls
# echo $HISTFILE
/root/.bash_history
# HISTFILE=/dev/null
# set | grep HIST
HISTCONTROL=ignoredups
HISTFILE=/dev/null
HISTFILESIZE=1000
HISTSIZE=0

# exit

다시 로그인해서 이전 로그인시 명령어를 확인한다.
# tail .bash_history
   <-- 결론 : 변조가 되었으므로 명령어가 기록이 안된다.


환경변수 조작을 막는 방법은 읽기 전용으로 변수를 변경하면 된다.
형식 : readonly 환경변수
/etc/profile : 시스템에 모든 사용자가 로그인을 하면 실행되는 스크립트 파일로
이 파일 안에 넣어야 한다.

# vi /etc/profile
  :
  :(생략)
HISTFILESIZE=50000
HISTSIZE=50000
readonly HISTFILE
readonly HISTFILESIZE
readonly HISTSIZE


login as: user1
user1@192.168.101.101's password:

$ set | grep HIST
HISTCONTROL=ignoredups
HISTFILE=/home/user1/.bash_history
HISTFILESIZE=50000
HISTSIZE=50000

HISTSIZE 변수를 삭제해보면 readonly 이므로 삭제가 안된다.
$ unset HISTSIZE
-bash: unset: HISTSIZE: cannot unset: readonly variable

HISTSIZE 변수를 0으로 변경하면 readonly 이므로 값 변경이 안된다.
$ HISTSIZE=0
-bash: HISTSIZE: readonly variable

HISTFILE 변수를 /dev/null로 변경하면 readonly 이므로 값 변경이 안된다.
$ HISTFILE=/dev/null
-bash: HISTFILE: readonly variable

이 방법의 문제점은 .bash_history 파일을 삭제하는 것이다.
$ ls -a
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
$ rm -f .bash_history
$ ls -a
.  ..  .bash_logout  .bash_profile  .bashrc
$ exit

파일 삭제를 막기 위해서는 파일에 속성을 변경하면 된다.
-a : 파일의 내용을 추가하는 것은 가능하지만 파일 삭제는 못한다.
# rm -f ~user1/.bash_history
# install -m 644 -o user1 -g user1 /dev/null  ~user1/.bash_history
# chattr +a ~user1/.bash_history
# lsattr ~user1/.bash_history
-----a---------- /home/user1/.bash_history

$ rm -f .bash_history
rm: cannot remove `.bash_history': 명령을 허용하지 않음
$ ln -sf /dev/null .bash_history
ln: cannot remove `.bash_history': 명령을 허용하지 않음

$ chattr -a .bash_history
chattr: 명령을 허용하지 않음 while setting flags on .bash_history

'Linux > 보안장비 운용' 카테고리의 다른 글

/etc/rsyslog.conf  (0) 2022.03.04
rsyslog 데몬  (0) 2022.03.04
history  (0) 2022.03.04
/var/log/btmp  (0) 2022.03.04
로그 삭제 툴 Zap3 사용하기  (0) 2022.03.04