본문 바로가기

Linux/보안

보안 체킹 프로그램 - sxid


보안 체킹 프로그램 (Security Checking Program)

sxid

- 파일 시스템(퍼미션)을 감시하는 프로그램으로 해당 파일시스템의 suid, sgid 파일만을 체크한다.
- (suid, sgid 와 같이 s bit 가 설정된 디렉토리나 파일은 보안상 중요하다 - 실행시 root의 권한으로 작동하기 때문)
- 시스템에 무리를 주지 않고 사용할 수 있는 장점이 있다.

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

http://www.phunnypharm.org/pub/sxid/

sxid_4.0.4.tar.gz : (다운로드)

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



1. sxid 다운 및 압축해제

 
[root@server3 ~]# cd Desktop
[root@server3 Desktop]# ls
sxid_4.0.4.tar.gz
[root@server3 Desktop]# tar xvfz sxid_4.0.4.tar.gz
sxid-4.0.4/
sxid-4.0.4/source/
sxid-4.0.4/source/config.h.in
sxid-4.0.4/source/Makefile.in
sxid-4.0.4/source/getopt.c
sxid-4.0.4/source/getopt1.c
sxid-4.0.4/source/search.c
sxid-4.0.4/source/conffile.c
sxid-4.0.4/source/md5.c
sxid-4.0.4/source/logging.c
sxid-4.0.4/source/getopt.h
sxid-4.0.4/source/sxid.c
sxid-4.0.4/source/notify.c
sxid-4.0.4/source/md5sum.c
sxid-4.0.4/source/md5.h
sxid-4.0.4/source/sxid.h
sxid-4.0.4/acconfig.h
sxid-4.0.4/debian/
sxid-4.0.4/debian/cron.daily
sxid-4.0.4/debian/control
sxid-4.0.4/debian/changelog
sxid-4.0.4/debian/postinst
sxid-4.0.4/debian/prerm
sxid-4.0.4/debian/copyright
sxid-4.0.4/debian/conffiles
sxid-4.0.4/debian/rules
sxid-4.0.4/sxid.spec
sxid-4.0.4/configure
sxid-4.0.4/docs/
sxid-4.0.4/docs/TODO
sxid-4.0.4/docs/sxid.cron.example
sxid-4.0.4/docs/sxid.conf.5.in
sxid-4.0.4/docs/sxid.conf.example
sxid-4.0.4/docs/sxid.1.in
sxid-4.0.4/configure.in
sxid-4.0.4/aclocal.m4
sxid-4.0.4/Makefile
sxid-4.0.4/README
sxid-4.0.4/install-sh
[root@server3 Desktop]# ls
sxid-4.0.4
sxid_4.0.4.tar.gz
[root@server3 Desktop]# mv sxid-4.0.4/ /usr/local/src/




2. sxid 설치

 
[root@server3 Desktop]# cd /usr/local/src
[root@server3 src]# ls
sxid-4.0.4
[root@server3 src]# cd sxid-4.0.4/
[root@server3 sxid-4.0.4]# ls
Makefile  acconfig.h  configure     debian  install-sh  sxid.spec
README    aclocal.m4  configure.in  docs    source

[root@server3 sxid-4.0.4]# ./configure --help
Usage: configure [options] [host]
Options: [defaults in brackets after descriptions]
Configuration:
  --cache-file=FILE       cache test results in FILE
  --help                  print this message
  --no-create             do not create output files
  --quiet, --silent       do not print `checking...' messages
  --version               print the version of autoconf that created configure
Directory and file names:
  --prefix=PREFIX         install architecture-independent files in PREFIX  - 기본적으로 /usr/local/ 에 설치된다.
                          [/usr/local]

- 중략

[root@server3 sxid-4.0.4]# ./configure
creating cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking for a BSD compatible install... /usr/bin/install -c
checking for uname... uname
checking OS... Linux
checking for mail... /bin/mail
checking for getopt_long_only... yes
checking for strtok_r... yes
updating cache ./config.cache
creating ./config.status
creating source/Makefile
creating docs/sxid.1
creating docs/sxid.conf.5
creating source/config.h

[root@server3 sxid-4.0.4]# make
autoconf
cd source && make all
make[1]: Entering directory `/usr/local/src/sxid-4.0.4/source'
gcc -g -O2 -I. -c sxid.c -o sxid.o
gcc -g -O2 -I. -c md5.c -o md5.o
gcc -g -O2 -I. -c md5sum.c -o md5sum.o
gcc -g -O2 -I. -c logging.c -o logging.o
gcc -g -O2 -I. -c notify.c -o notify.o
gcc -g -O2 -I. -c conffile.c -o conffile.o
gcc -g -O2 -I. -c search.c -o search.o
gcc   sxid.o md5.o md5sum.o logging.o notify.o conffile.o search.o  -o sxid
make[1]: Leaving directory `/usr/local/src/sxid-4.0.4/source'

[root@server3 sxid-4.0.4]# make install
cd source && make all
make[1]: Entering directory `/usr/local/src/sxid-4.0.4/source'
make[1]: `all'를 위해 할 일이 없습니다
make[1]: Leaving directory `/usr/local/src/sxid-4.0.4/source'
cd source && make install DESTDIR=
make[1]: Entering directory `/usr/local/src/sxid-4.0.4/source'
/usr/bin/install -c -d -m 755 {/usr/local/etc,/usr/local/man/man{1,5},/usr/local/bin}
if ! test -e /usr/local/etc/sxid.conf; then \
                /usr/bin/install -c -m 644 ../docs/sxid.conf.example \
                /usr/local/etc/sxid.conf; \
        fi
/usr/bin/install -c -m 644 ../docs/sxid.1 /usr/local/man/man1/sxid.1
/usr/bin/install -c -m 644 ../docs/sxid.conf.5 /usr/local/man/man5/sxid.conf.5
/usr/bin/install -c -m 755 sxid /usr/local/bin/sxid

You now need to add a cron entry (see: docs/sxid.cron.example)

make[1]: Leaving directory `/usr/local/src/sxid-4.0.4/source'

[root@server3 etc]# whereis sxid
sxid: /usr/local/bin/sxid /usr/local/etc/sxid.conf




3. sxid 환경 설정 파일

 
[root@server3 etc]# pwd
/usr/local/etc
[root@server3 etc]# ls
pear.conf  sxid.conf
[root@server3 etc]# vi sxid.conf
      1 # Configuration file for sXid
      2 # Note that all directories must be absolute with no trailing /'s
      3
      4 # Where to begin our file search
      5 SEARCH = "/" - 파일을 찾을 경로 설정
      6
      7 # Which subdirectories to exclude from searching
      8 EXCLUDE = "/proc /mnt /cdrom /floppy" - 검색에서 제외할 디렉토리 설정
      9
     10 # Who to send reports to
     11 EMAIL = "root" - 작성된 보고서를 수신할 e-mail 주소
     12
     13 # Always send reports, even when there are no changes?
     14 ALWAYS_NOTIFY = "no" - 변경할 내용이 없더라도 메일을 보낼 것인지 설정
     15
     16 # Where to keep interim logs. This will rotate 'x' number of
     17 # times based on KEEP_LOGS below
     18 LOG_FILE = "/var/log/sxid.log"
     19
     20 # How many logs to keep
     21 KEEP_LOGS = "5" - 얼마나 많은 로그파일을 만들 것인지 설정
     22
     23 # Rotate the logs even when there are no changes?
     24 ALWAYS_ROTATE = "no" - 변화가 없을 때도 로그를 순환할 것인지 설정
     25
     26 # Directories where +s is forbidden (these are searched
     27 # even if not explicitly in SEARCH), EXCLUDE rules apply
     28 FORBIDDEN = "/home /tmp" - +s 가 금지된 디렉토리 설정
     29
     30 # Remove (-s) files found in forbidden directories?
     31 ENFORCE = "no" - 금지된 디렉토리에서 발견시 s비트 제거 설정
     32
     33 # This implies ALWAYS_NOTIFY. It will send a full list of
     34 # entries along with the changes
     35 LISTALL = "no" - 변경된 것과 함께 모든 항목의 리스트를 발송
     36
     37 # Ignore entries for directories in these paths
     38 # (this means that only files will be recorded, you
     39 # can effectively ignore all directory entries by
     40 # setting this to "/"). The default is /home since
     41 # some systems have /home g+s.
     42 IGNORE_DIRS = "/home" - 이 경로에서의 디렉토리 항목을 무시하고 파일만 기록한다.
     43
     44 # File that contains a list of (each on it's own line)
     45 # other files that sxid should monitor. This is useful
     46 # for files that aren't +s, but relate to system
     47 # integrity (tcpd, inetd, apache...).
     48 # EXTRA_LIST = "/etc/sxid.list" - sxid 가 모니터링 해야할 파일 목록이 정의된 파일 설
     49
     50 # Mail program. This changes the default compiled in
     51 # mailer for reports. You only need this if you have changed
     52 # it's location and don't want to recompile sxid.
     53 # MAIL_PROG = "/usr/bin/mail"  - 메일 프로그램




4. sxid 실행

 
[root@server3 ~]# mkdir test1
[root@server3 ~]# sxid -k - sxid를 수작업으로 실행한다. 현재 디렉토리 및 하위디렉토리의 변경 여부를 체크한다.
sXid Vers  : 4.0.4
Check run  : Tue Feb  3 10:15:50 2009
This host  : server3.co.kr
Spotcheck  : /root - 현재 폴더에서 하위폴더까지만 검색한다. 즉 /root이하 폴더만 검색
Excluding  : /proc /mnt /cdrom /floppy
Ignore Dirs: /home
Forbidden  : /home /tmp


No changes found

[root@server3 ~]# chmod 4777 test1 - test1의 퍼미션을 변경해 본다.
[root@server3 ~]# sxid -k
sXid Vers  : 4.0.4
Check run  : Tue Feb  3 10:22:11 2009
This host  : server3.co.kr
Spotcheck  : /root
Excluding  : /proc /mnt /cdrom /floppy
Ignore Dirs: /home
Forbidden  : /home /tmp


Checking for any additions or removals:
 + /root/test1/                    *root:root          4777 - 변경된 디렉토리가 검출되었다.


Checking for changed attributes or sums/inodes:


Checking for no user/group matches:


Checking for forbidden s[ug]id items:


[root@server3 ~]# sxid
- sxid -k 로 검색해서 나온 파일들이 이상없는 파일들이라면 이 파일들을 저장해준다. 그래서 다시 sxid -k 를 하게되면 여기서 저장된 이상없는 파일들은 skip한다.


[root@server3 ~]# sxid -k
sXid Vers  : 4.0.4
Check run  : Tue Feb  3 10:57:39 2009
This host  : server3.co.kr
Spotcheck  : /root
Excluding  : /proc /mnt /cdrom /floppy
Ignore Dirs: /home
Forbidden  : /home /tmp


No changes found

[root@server3 ~]#