해킹당한 명령어들 rpm 명령으로 (강제) 재설치하기
해킹을 당하게 되면 주로 root가 시스템관리를 위해서 자주사용하는 아래와 같은 명령어들이 동일한 이름의 다른 명령어로 대체되는 경우가 허다하다.
"/usr/bin"
"/usr/bin/find"
"/usr/bin/last"
"/usr/bin/top"
"/usr/bin/uptime"
"/usr/bin/w"
"/usr/bin/who"
따라서 이런 경우에 이런 명령어들을 재설치해야하는데, 가장 쉬운 방법이 신뢰성있는 ftp등의 사이트에서 rpm 패키지소스를 다시 가져와서 재설치해야 할 것이다.
그런데, rpm -Uvh등으로 재설치를 하려면 패키지의존성 때문에 재설치가 불가한 경우가 많다.
물론, 의존성있는 모든 패키지들을 하나씩 찾아서 재설치해주면 되지만, 보통작업이 아니므로 여기서는 필요한 패키지만을 강제적으로 재설치하는 방법(옵션)을 알아보도록 하겠다.
아래의 예를 보자.
[root@kebia_1 sspark]# rpm -Uvh procps-2.0.7-3.i386.rpm
package procps-2.0.7-3 is already installed
[root@kebia_1 sspark]#
위의 예처럼, ps라는 명령어를 재설치하기 위해서 Uvh라는 옵션으로 재설치하려했더니 이미 설치되어 있다고 나왔다.
그래서 rpm -qa라는 명령어로 ps와 관련된 패키지를 찾아서 패키지를 삭제하려 하였다.
[root@kebia_1 sspark]#
[root@kebia_1 sspark]# rpm -qa | grep ps
pspell-0.11.2-1
tetex-dvips-1.0.7-7
ypserv-1.3.11-9
procps-2.0.7-3
psmisc-19-4
psgml-1.2.1-8
[root@kebia_1 sspark]#
[root@kebia_1 sspark]# rpm -e procps-2.0.7-3
error: removing these packages would break dependencies:
procps >= 2.0.6-5 is needed by initscripts-5.49-1
libproc.so.2.0.7 is needed by rusers-server-0.17-6
[root@kebia_1 sspark]#
그랬더니, 위와 같이 패키지 의존성에러가 발생한다.
물론, 이 패키지들을 모두 찾아서 재설치할 수도 있으나, 너무 번거로운 작업이다.
이런 경우에 다음의 예와 같이 --force라는 옵션으로 원하는 패키지를 강제적으로 재설치할 수 있다.
[root@kebia_2 /root]# rpm -Uvh --force procps-2.0.7-3.i386.rpm
procps ##################################################
[root@kebia_2 /root]#
참고로 해당 명령어와 관련된 패키지를 찾는 rpm명령어는 다음과 같습니다.
예를 들어 ps라는 명령어와 관련된 패키지를 찾으려면 다음과 같습니다.
[root@kebia_1 sspark]# rpm -qf /bin/ps
procps-2.0.7-3
[root@kebia_1 sspark]#
이를 점검했다면 이 패키지가 설치했던 파일들을 알아볼 필요가 있겠지요..
다음과 같은 옵션을 사용하면 간단히 볼 수 있죠..
[root@kebia_2 report]# rpm -ql procps-2.0.7-3
/bin/ps
/etc/X11/applnk/Utilities/top.desktop
/lib/libproc.so.2.0.7
/sbin/sysctl
/usr/bin/free
/usr/bin/oldps
/usr/bin/pgrep
/usr/bin/pkill
/usr/bin/skill
/usr/bin/snice
/usr/bin/tload
/usr/bin/top
/usr/bin/uptime
/usr/bin/vmstat
/usr/bin/w
/usr/bin/watch
/usr/share/doc/procps-2.0.7
/usr/share/doc/procps-2.0.7/BUGS
/usr/share/doc/procps-2.0.7/NEWS
/usr/share/doc/procps-2.0.7/TODO
/usr/share/man/man1/free.1.gz
/usr/share/man/man1/oldps.1.gz
/usr/share/man/man1/pgrep.1.gz
/usr/share/man/man1/pkill.1.gz
/usr/share/man/man1/ps.1.gz
/usr/share/man/man1/skill.1.gz
/usr/share/man/man1/snice.1.gz
/usr/share/man/man1/tload.1.gz
/usr/share/man/man1/top.1.gz
/usr/share/man/man1/uptime.1.gz
/usr/share/man/man1/w.1.gz
/usr/share/man/man1/watch.1.gz
/usr/share/man/man5/sysctl.conf.5.gz
/usr/share/man/man8/sysctl.8.gz
/usr/share/man/man8/vmstat.8.gz
[root@kebia_2 report]#
해킹을 당하게 되면 주로 root가 시스템관리를 위해서 자주사용하는 아래와 같은 명령어들이 동일한 이름의 다른 명령어로 대체되는 경우가 허다하다.
"/usr/bin"
"/usr/bin/find"
"/usr/bin/last"
"/usr/bin/top"
"/usr/bin/uptime"
"/usr/bin/w"
"/usr/bin/who"
따라서 이런 경우에 이런 명령어들을 재설치해야하는데, 가장 쉬운 방법이 신뢰성있는 ftp등의 사이트에서 rpm 패키지소스를 다시 가져와서 재설치해야 할 것이다.
그런데, rpm -Uvh등으로 재설치를 하려면 패키지의존성 때문에 재설치가 불가한 경우가 많다.
물론, 의존성있는 모든 패키지들을 하나씩 찾아서 재설치해주면 되지만, 보통작업이 아니므로 여기서는 필요한 패키지만을 강제적으로 재설치하는 방법(옵션)을 알아보도록 하겠다.
아래의 예를 보자.
[root@kebia_1 sspark]# rpm -Uvh procps-2.0.7-3.i386.rpm
package procps-2.0.7-3 is already installed
[root@kebia_1 sspark]#
위의 예처럼, ps라는 명령어를 재설치하기 위해서 Uvh라는 옵션으로 재설치하려했더니 이미 설치되어 있다고 나왔다.
그래서 rpm -qa라는 명령어로 ps와 관련된 패키지를 찾아서 패키지를 삭제하려 하였다.
[root@kebia_1 sspark]#
[root@kebia_1 sspark]# rpm -qa | grep ps
pspell-0.11.2-1
tetex-dvips-1.0.7-7
ypserv-1.3.11-9
procps-2.0.7-3
psmisc-19-4
psgml-1.2.1-8
[root@kebia_1 sspark]#
[root@kebia_1 sspark]# rpm -e procps-2.0.7-3
error: removing these packages would break dependencies:
procps >= 2.0.6-5 is needed by initscripts-5.49-1
libproc.so.2.0.7 is needed by rusers-server-0.17-6
[root@kebia_1 sspark]#
그랬더니, 위와 같이 패키지 의존성에러가 발생한다.
물론, 이 패키지들을 모두 찾아서 재설치할 수도 있으나, 너무 번거로운 작업이다.
이런 경우에 다음의 예와 같이 --force라는 옵션으로 원하는 패키지를 강제적으로 재설치할 수 있다.
[root@kebia_2 /root]# rpm -Uvh --force procps-2.0.7-3.i386.rpm
procps ##################################################
[root@kebia_2 /root]#
참고로 해당 명령어와 관련된 패키지를 찾는 rpm명령어는 다음과 같습니다.
예를 들어 ps라는 명령어와 관련된 패키지를 찾으려면 다음과 같습니다.
[root@kebia_1 sspark]# rpm -qf /bin/ps
procps-2.0.7-3
[root@kebia_1 sspark]#
이를 점검했다면 이 패키지가 설치했던 파일들을 알아볼 필요가 있겠지요..
다음과 같은 옵션을 사용하면 간단히 볼 수 있죠..
[root@kebia_2 report]# rpm -ql procps-2.0.7-3
/bin/ps
/etc/X11/applnk/Utilities/top.desktop
/lib/libproc.so.2.0.7
/sbin/sysctl
/usr/bin/free
/usr/bin/oldps
/usr/bin/pgrep
/usr/bin/pkill
/usr/bin/skill
/usr/bin/snice
/usr/bin/tload
/usr/bin/top
/usr/bin/uptime
/usr/bin/vmstat
/usr/bin/w
/usr/bin/watch
/usr/share/doc/procps-2.0.7
/usr/share/doc/procps-2.0.7/BUGS
/usr/share/doc/procps-2.0.7/NEWS
/usr/share/doc/procps-2.0.7/TODO
/usr/share/man/man1/free.1.gz
/usr/share/man/man1/oldps.1.gz
/usr/share/man/man1/pgrep.1.gz
/usr/share/man/man1/pkill.1.gz
/usr/share/man/man1/ps.1.gz
/usr/share/man/man1/skill.1.gz
/usr/share/man/man1/snice.1.gz
/usr/share/man/man1/tload.1.gz
/usr/share/man/man1/top.1.gz
/usr/share/man/man1/uptime.1.gz
/usr/share/man/man1/w.1.gz
/usr/share/man/man1/watch.1.gz
/usr/share/man/man5/sysctl.conf.5.gz
/usr/share/man/man8/sysctl.8.gz
/usr/share/man/man8/vmstat.8.gz
[root@kebia_2 report]#