You cannot see this page without javascript.

진주성 블로그 방문하기

기술문서 보안점검 툴

2017.08.25 18:21

gupy1004 조회 수:456

공공기업에서 보안점검대비하여 많은 서버들의 일일이 직접 접속하여

보안조치를 취할수 있는 방법이 어렵기 때문에 아래와 같은 스크립트를 작성하여

손쉽게 조치를 할수 있습니다.

 

적용 서버는 HPUX 11.31, 11.23,

                Linux

 

그외 OS 는 테스트 해보지 않았지만 비슷할거 같네요

직접 만들어 보시기 바랍니다.

 

아래 압축 파일을 압축을 해제하면 여러게의 파일이 나옵니다.

 

대략 보시면 뭘 수행해야 될지 감이 잡히실 겁니다.

 

 

 

#!/bin/sh
# HP-UX System weekpoint check
#edit by guppy

echo "########################"
echo "######## step 1 ########"
echo "########################"
echo ""
echo "cat /etc/passwd"
echo ""
echo "## Visual Check ##"
echo ""
echo ""
cat /etc/passwd
echo ""
echo "########################"
echo "######## step 2 ########"
echo "########################"
echo ""
RO=`cat /etc/passwd | grep -v root | awk -F":" '{print $3}'`
for check in $RO
do
        if [ $check -eq 0 ]
        then
                echo " passwd file check root roll "
                cat /etc/passwd | grep :0:
        fi
done
echo ""
echo "Empty is OK"
echo ""
echo "########################"
echo "######## step 3 ########"
echo "########################"
echo ""
Def_ID="adm lp uucp nuucp hpdb smbnull iwww owww tftp "
for check in $Def_ID
do
        if [ `cat /etc/passwd | awk -F: '{print $1}' | grep ^$check | wc -l ` -gt 0 ]
        then
        echo " Default ID exist : $check"
        userdel $check
        echo " $check delete "
        fi
done
echo ""
echo "########################"
echo "######## step 4 ########"
echo "########################"
echo "Securv TOS"
echo "########################"
echo "######## step 5 ########"
echo "########################"
echo ""
if [ -f /etc/hosts ]
        then
                if [ `ls -alL /etc/hosts | grep "...-.--.--.*.*" | wc -l` -eq 1 ]
                then
                echo "/etc/hosts perm ok "
                else
                echo "/etc/hosts perm reset "
                chmod 644 /etc/hosts
                fi
        else
                echo "/etc/hosts NOT Found"
fi
echo ""
echo "########################"
echo "######## step 6 ########"
echo "########################"
echo ""
if [ -f /etc/syslog.conf ]
        then
                if [ `ls -alL /etc/syslog.conf | grep "...-.--.--" | wc -l` -eq 1 ]
                then
                echo "/etc/syslog.conf perm ok"
                else
                echo "/etc/syslog.conf perm reset"
                chown 644 /etc/syslog.conf
                fi

        else
                echo "/etc/syslog.conf Not Found"
fi
echo ""
if [ `cat  /sbin/init.d/syslogd | grep MV | grep date | wc -l ` -eq 0 ] ; then
        if [ -f /sbin/init.d/syslogd.org ] ; then
                mv /sbin/init.d/syslogd.org /sbin/init.d/syslogd.bak
        fi
        mv /sbin/init.d/syslogd /sbin/init.d/syslogd.org
        cp $1/syslogd11.23 /sbin/init.d/syslogd
        chmod 555 /sbin/init.d/syslogd
        chown bin:bin /sbin/init.d/syslogd
        echo " syslog rotate configured "
        /sbin/init.d/syslogd stop
        /sbin/init.d/syslogd start
        echo ""
        echo ""
        ls -la /var/adm/syslog
        else
        echo " syslog rotate ok (6Month) "

fi
echo ""
echo ""


if [ `cat /etc/syslog.conf  | grep notice | wc -l` -eq 1 ] ; then
        echo " syslog notice setting ok "
 echo ""
 cat /etc/syslog.conf  | grep notice
        else
 if [ ! -d /var/adm/sulogd ] ; then
 mkdir -p /var/adm/sulogd
 fi
 echo ""
        echo "*.notice                 /var/adm/sulogd/syslog.log" >> /etc/syslog.conf
 echo ""
 /sbin/init.d/syslogd stop
 /sbin/init.d/syslogd start
        echo " notice syslog reconfigured "
fi
echo ""
echo "########################"
echo "######## step 7 ########"
echo "########################"
echo ""
if [ `ls -la /sbin/init.d/* | grep ".....w..w..*.*" | wc -l` -eq 0 ]
        then
        echo " Network Daemon Perm 555 ok "
        else
        echo " Network Daemon Perm reset  "
        ls -la /sbin/init.d/* | grep ".....w..w..*.*"
        chmod 555 /sbin/init.d/*
fi
echo ""
echo "########################"
echo "######## step 8 ########"
echo "########################"
echo ""
echo "OTP"
echo ""
echo "########################"
echo "######## step 9 ########"
echo "########################"
echo ""
if [ `ls -alL /etc/passwd | grep "...-.--.--.*root.*" | wc -l` -eq 1 ]
        then
                echo "passwd file perm ok"
        else
                chmod 444 /etc/passwd
  chown root:sys /etc/passwd
                echo "passwd file perm 444 set"
fi

if [ `ls -alL /etc/group | grep "...-.--.--.*.*" | wc -l` -eq 1 ]
        then
                echo "group file perm ok"
        else
                chmod 444 /etc/group
                echo "group file perm 444 set"
fi
if [ -f /etc/shadow ]
        then
                if [ `ls -alL /etc/shadow | grep ".r.-------.*root.*" | wc -l` -eq 1 ]
                        then
                        echo "/etc/shadow perm ok "
                        else
                        echo "/etc/shadow perm reset"
                        chmod 400 /etc/shadow
   chown root:sys /etc/shadow
                fi
        else
                echo "/etc/shadow file not found"
fi

echo ""
echo "########################"
echo "######## step 10 #######"
echo "########################"
echo ""
echo ""
echo "## Visual Check ##"
echo ""
ls -la /etc/passwd
ls -la /etc/shadow
echo ""
echo "########################"
echo "######## step 11 #######"
echo "########################"
echo ""
if [ -f /etc/hosts.equiv ]
then
                if [ `ls -alL /etc/hosts.equiv | grep ".r.-------.*root.*" | wc -l` -eq 1 ]
                        then
                                echo "/etc/hosts.equiv perm ok"
                        else
                                echo "/etc/hosts.equiv perm reset"
                                chown root:root /etc/hosts.equiv
                                chmod 400 /etc/hosts.equiv
                fi

else
        echo "/etc/hosts.equiv file Not Found is ok"
fi

HOMEDIRS=`cat /etc/passwd | awk -F":" 'length($6) > 0 {print $6}' | sort -u`
for dir in $HOMEDIRS
do

if [ -f $dir/.rhosts ]
        then
        ls -la $dir/.rhosts
        echo " Delete file $dir/.rhosts "
        rm -rf $dir/.rhosts
#       else
#       echo " .rhosts file not found "
fi
if [ -f $dir/.netrc ]
        then
        ls -la $dir/.netrc
        echo " Delete file $dir/.netrc "
        rm -rf $dir/.netrc
#       else
#       echo " .netrc file not found "
fi

done
echo ""
echo "r-service Listen is ..."
echo ""


netstat -na | grep LISTEN | grep "\.512 "
netstat -na | grep LISTEN | grep "\.513 "
netstat -na | grep LISTEN | grep "\.514 "

echo " "
echo "########################"
echo "######## step 12 #######"
echo "########################"
echo " "
SERVICE_INETD="rsh|rlogin|rexec"

if [ -f /etc/inetd.conf ]
  then
    if [ `cat /etc/inetd.conf | grep -v '^ *#' | egrep $SERVICE_INETD | wc -l ` -eq 0 ]; then
    echo " rsh|rlogin|rexec Not Found "
    fi
  else
    echo "/etc/inetd.conf file NOT Found"
fi
echo " "
echo ""
echo "rpcinfo is ..."
rpcinfo -p 127.0.0.1 2>&1

echo ""

echo "########################"
echo "######## step 13 #######"
echo "########################"
if [ -f /etc/services ]
        then
                if [ `ls -alL /etc/services | grep "...-.--.--.*.*" | wc -l` -eq 1 ]
                then
                echo "/etc/services file perm ok"
                else
                echo "/etc/services file perm reset"
                chmod 444 /etc/services
                fi


        else
                echo "/etc/services not found" >> $HOSTNAME.txt 2>&1
fi

echo " "
echo "telnet services is .. "
grep telnet /etc/services
echo " "
echo "telnet Listen is .. "
netstat -na | grep *.23
echo " "
echo "ftp services is .. "
grep ^ftp /etc/services
echo " "
echo "ftp Listen is .. "
netstat -na | grep *.23
netstat -na | grep *.21

echo "########################"
echo "######## step 14 #######"
echo "########################"
echo " "
cat /etc/passwd | grep ftp | grep -v tftp
echo " "
if [ -f /etc/ftpd/ftpaccess ] ; then
 if [ `cat /etc/ftpd/ftpaccess | grep -v ^\# | grep anonymous | wc -l ` -eq 0 ]
         then
         echo " Anonymous FTP NO Setting"
         else
         echo " Setting requiore Anonymous FTP Delete at /etc/ftpd/ftpaccess "
         echo " #mv /etc/ftpd/ftpaccess /etc/ftpd/ftpaccess.org "
  #mv /etc/ftpd/ftpaccess /etc/ftpd/ftpaccess.org
 fi
else
 echo " /etc/ftpd/ftpaccess file not found "
fi
echo " "
echo "########################"
echo "######## step 15 #######"
echo "########################"
echo " "
echo " step 11 same"
echo " "
echo "########################"
echo "######## step 16 #######"
echo "########################"
echo " "
echo " inetd service is ... "
cat /etc/inetd.conf | grep -v ^\#
echo " "
echo "########################"
echo "######## step 17 #######"
echo "########################"
echo " "
echo ""
echo "## Visual Check ##"
echo " "
echo " "
if [ -f /var/adm/inetd.sec ]
        then
                echo "#ls -la /var/adm/inetd.sec"
                cat  /var/adm/inetd.sec  | grep -v ^\#
        else
                echo "/var/adm/inetd.sec net found"
fi

echo " "
if [ -f /etc/hosts.allow ]
        then
                echo "#ls -la /etc/hosts.allow"
                cat /etc/hosts.allow  | grep -v ^\#
        else
                echo "/etc/hosts.allow net found"
fi
echo " "

if [ -f /etc/hosts.deny ]
        then
                echo "#ls -la /etc/hosts.deny"
                cat /etc/hosts.deny  | grep -v ^\#
        else
                echo "/etc/hosts.deny net found"
fi

echo " "
echo "########################"
echo "######## step 18 #######"
echo "########################"
echo " "
echo " ## cron file perm check "
ls -la /var/spool/cron/crontabs

echo " "
echo " ## cron file roll check "
cat /var/adm/cron/cron.allow

echo " "
echo "########################"
echo "######## step 19 #######"
echo "########################"
echo " "
if [ `cat /etc/rc.config.d/Snmp* | grep -v ^\# | grep -v export | grep  =1 | wc -l ` -eq 0 ] ; then
        echo " Snmp stoped setting is ok"
        else
        echo " Snmp started setting "
        echo " Require stop setting "
fi

echo " "
echo "Snmp service is ... "
ps -ef | grep snmp | grep -v grep
echo " "
if [ -f /etc/snmpd.conf ] ; then
if [ `cat /etc/snmpd.conf | grep community-name | grep public | wc -l ` -eq 0 ] ; then
        echo " Snmpd.conf community-name: public Not Found is ok"
        else
        echo " Snmpd.conf community-name: public Found and renamed Snmpd.conf.org"
 mv /etc/snmpd.conf /etc/snmpd.conf.org
fi
else
 echo " /etc/snmpd.conf file not found "
fi
echo " "
echo "########################"
echo "######## step 20 #######"
echo "########################"
echo " "

if [ `grep finger /etc/inetd.conf | grep -v "^#" | wc -l` -eq 0 ]
        then
                echo "finger service not used  "
        else
                grep finger /etc/inetd.conf
                echo "Require finger service delete it "
fi
echo " "
echo " Finger Listen is ..."
netstat -na | grep tcp | grep 79 | grep LISTEN

echo " "
echo " "
echo " "

echo "########################"
echo "####### bye bye ########"
echo "########################"
echo " "
echo " "
echo " "
echo "#########################"
echo "#  root remote access check"
echo "#########################"
echo ""
if [ -f /etc/securetty ] ; then
        if [ `grep console /etc/securetty  | wc -l` -eq 1 ] ; then
                echo "/etc/securetty set ok "
  else
  cat "console" >> /etc/securetty
        fi
        else
        touch /etc/securetty
        cat "console" > /etc/securetty
        echo "/etc/securetty create ok "
fi
echo ""
echo ""
if [ `grep "PermitRootLogin" /opt/ssh/etc/sshd_config | grep -v \# | grep yes | wc -l`  -eq 1 ]
        then
        echo "sshd_config NO PermitRootLogin set require and sshd restart"
        else
        echo "sshd_config NO PermitRootLogin set ok"
fi
echo ""
echo ""

echo "#########################"
echo "# umask check"
echo "#########################"

umask
if [ `umask` -eq  022 ] ; then
        echo " UMASK set ok "
        else
        echo "umask 022" >> /etc/profile
        echo "UMASK=0022" >> /etc/default/security
        echo " UMASK 0022 Set"
fi

echo ""
echo ""


echo "#########################"
echo "# SUID SGID check "
echo "#########################"

find / -user root -type f \( -perm -04000 -o -perm -02000 \) -xdev -exec ls -al  {}  \;

#FILECHECK="/opt/perf/bin/glance /usr/dt/bin/dtprintinfo /usr/sbin/swreg /opt/perf/bin/gpm /usr/sbin/arp /usr/sbin/swremove /opt/video/lbin/camServer /usr/sbin/lanadmin /usr/contrib/bin/traceroute /usr/bin/at /usr/sbin/landiag /usr/dt/bin/dtappgather /usr/bin/lpalt /usr/sbin/lpsched /usr/sbin/swmodify /usr/bin/mediainit /usr/sbin/swacl /usr/sbin/swpackage /usr/bin/newgrp /usr/sbin/swconfig /usr/bin/rdist /usr/sbin/swinstall"

#for check in $FILECHECK
#do

#if [ -f $check ]
#        then
#                ls -la $check
#
#        else
#                echo "$check no exist"
#fi
#done

echo ""
echo ""


echo "#########################"
echo "# NFS service check"
echo "#########################"

echo " "
echo " IF Not USED NFS service stop AND mountd daemon stop "
echo " "
ps -ef | grep mountd | grep -v grep
ps -ef | grep nfs | grep -v grep


echo "#########################"
echo "# automountd service check"
echo "#########################"

echo " "
echo " Must Be stop automount daemon ..."

echo " "
ps -ef | grep automount | grep -v grep
echo " "
echo " "

echo "#########################"
echo "# PATH secure check "
echo "#########################"


cat /.profile | grep PATH=
cat /etc/profile | grep PATH=

echo " ## . findout . delete "

 
echo "#########################"
echo "# netstat -na"
echo "#########################"
netstat -na | grep *.

rm -rf  hpux.sh linux2632.sh runme.sh syslogd11.23 hpux.sh11.23 linux269.sh syslogd ../script*.tar

 

번호 제목 날짜 조회 수
80 TCP 프로토콜 Header 구조 2017.11.01 1554
79 TCP 상태전이 2017.11.01 614
78 전자우편 보안 2017.11.01 280
77 부팅(Booting) 과정 2017.11.01 317
76 디지털 컨텐츠 보호 2017.11.01 113
75 윈도우 보안 2017.11.01 186
74 보안솔류션 2017.11.01 218
73 AD(Active Directory) 2017.11.01 18594
72 DNS (Domain Name Service) file 2017.11.01 129
71 포트스켄 2017.11.01 148
70 SSL, IPSEC 2017.11.01 99
69 보안관제 file 2017.11.01 4767
68 VPN 2017.11.01 5139
67 개인정보 2017.11.01 75
66 암호학 2017.11.01 816
진주성 블로그 방문하기
CLOSE