Solaris 보안
1. o/s 설치
1-1 초기 install의 중요성
- 보안과 app의 호환성을 위해 최신의 o/s와 patch설치를 권장합니다.
- o/s를 update를 하는 것 보다는 새로 install하는 것이 낫다.
- 설치시에는 항상 정품 o/s를 사용한다.
- o/s 파티션은 분할 하여 설치하는 것을 권장합니다.
2. openboot PROM 보안
Command security – PROM 레벨에서 eeprom변경이나 명령어를 실행할 수 없습니다.
Full security – command security와 같은 기능을 하며 추가적으로 password없이는 booting이 되지 않습니다.
2-1 설정방법
# eeprom security-mode=full Changing PROM password: New password: Retype new password: |
è 설정 해제시 ‘security-mode=none’ 값으로 변경
2-2 passwd 변경 방법
# eeprom security-password= Changing PROM password: New password: Retype new password: |
è 반드시 “=” 를 하셔야 합니다.
- 주의 -
만약 PROM password를 분실 하면 EEPROM을 교체해야 합니다. 신중히 사용하기를 권장합니다.
만약 시스템을 리부팅 했을 때 부팅이 안된다면 openboot PROM의 보안 파라미터값을 확인하십시요. root권한을 취득한 해커에 의해 이 값은 언제든지 변경될 수 있습니다.
3. 파일시스템 보안
3-1 setUID와 setGID
- 실행 권한을 가진 파일이나 프로그램들은 일반적으로 해당 퍼미션을 가진 user에 의해서만 실행됩니다.
그러나 setUID로 설정된 프로그램은 해당 프로그램의 퍼미션으로 실행되기 때문에 해킹에 자주 이용되는 부분입니다. 만약 어떤 해커에 의해 format이라는 root권한의 실행 파일이 setUID가 설정된다면 해커는 해당 시스템의 disk의 정보를 삭제 할 수 있게 됩니다. 또한 setUID를 이용해 보이지 않는 path에 backdoor를 숨겨 언제든 시스템으로 침입을 시도할 수 있습니다.
따라서 해킹이 의심되는 시스템은 반드시 setUID설정 파일들을 먼저 확인해야 합니다.
# find / -type f \( -perm -u+s -o -perm -g+s \) -ls 시스템의 모든 setUID와 setGID를 검색하여 보여줍니다. |
3-2 마운트 옵션
- 앞에서 언급한 되로 setUID는 해커들이 가장 즐겨 사용하는 해킹방법중 하나입니다.
이러한 해킹파일(프로그램)들은 파일시스템의 어딘가에 존재하여 언제든 시스템을 손상 시킬 수 있습니다. 따라서 이러한 상황을 미연해 방지 할 필요가 있습니다.
파일시스템 마운트 옵션중에 nosuid라는 옵션으로 이러한 문제를 해결 할 수 있습니다.
/dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0 / ufs 1 no - /dev/dsk/c0t3d0s4 /dev/rdsk/c0t3d0s4 /usr ufs 1 no ro /dev/dsk/c0t3d0s5 /dev/rdsk/c0t3d0s5 /var ufs 1 no nosuid /dev/dsk/c0t3d0s6 /dev/rdsk/c0t3d0s6 /opt ufs 2 yes nosuid |
è /, /usr은 ‘nosuid’ 옵션이 적용되지 않습니다.
4. vold(volume management) 보안
- cdrom, floppy는 vold데몬에 의해 자동으로 마운트됩니다. 또한, 어떤 user에 의해서도 실행권한이 주워집니다. vold데몬에 의해 관리되는 파일시스템에 대한 nosuid옵션 설정을 권장합니다.
# /etc/rmmount.conf mount hsfs -o nosuid mount ufs -o nosuid |
è Solaris7 이상의 버전에서는 default로 옵션이 정의 되어있습니다.
cdrom마운트 후 mount명령어로 확인하십시요.
5. user계정 보안
- o/s가 설치 되면 기본적으로 시스템은 특정 user(uucp,smmp)를 생성합니다.
보안을 위해 불필요한 user들은 삭제하기를 권장합니다.
5-1 계정에 대한 보안설정
# passmgmt -d smmsp |
è /etc/passwd, /etc/shadow에서 smmp에 대한 entry를 삭제합니다.
# passwd -l uucp |
è uucp계정에 lock을 설정합니다.
6. cron,at 보안
- 미래의 어떤 시점에 jobs을 실행 시킬 수 있는 명령어가 cron,at 입니다.
이러한 명령어의 접근 권한은 /usr/lib/cron 디렉토리에서 관리가 됩니다.
어떤 user가 위 명령어를 실행하려 할 때 시스템은 cron.allow파일을 가장먼저 확인하여 등록되어 있으면 실행권한이 주어지고 없으면, cron.deny파일을 확인하여 등록되어 있으면 권한이 거부되고 없으면 허용됩니다.
모든 user의 cron사용을 방지하기 위해서는 cron.allow파일을 생성합니다.
따라서 cron,at이 해킹에 이용되는 것을 최소화 하기위해 cron.allow를 생성하여 필요한 user만 등록하기를 권장합니다.
# touch /usr/lib/cron/cron.allow |
è 기본적으로 생성되지 않음
7. rc.d(init스크립트)의 서비스 관리
디렉토리 | 관련 서비스 |
/etc/rcS.d /etc/rc0.d /etc/rc1.d /etc/rc2.d /etc/rc3.d /etc/rc4.d /etc/rc5.d /etc/rc6.d | single user shutdown start multi-user multi-user (default) multi-user (unused) shutdown and power off shutdown and reboot |
7-1
보안상 취약한 서비스 목록 | ||
서비스 | 내용 | 포트/protocol |
RPC | rpc/rwalld/sun/format_string | 111/tcp |
RPC | rpc/cmsd/running | 111/tcp |
RPC | rpc/tooltalk/running | 111/tcp |
RPC | rpc/sadmind/running | 111/tcp |
SMTP | smtp/sendmail/dns_map_txt_record/bof | 25/tcp |
SMTP | smtp/sendmail/addr_fields/bof | 25/tcp |
SMTP | smtp/sendmail/prescan/typeconv_bof | 25/tcp |
SMTP | smtp/sendmail/prescan/ruleset_bof | 25/tcp |
RPC | rpc/solaris_sadmind/remote_exec | 32772/udp |
RPC | rpc/solaris_snmpXdmid/running | 32779/tcp |
SNMP | snmp/solaris_mibiisa/running | 32790/udp |
RPC | rexec/anycommands | 512/tcp |
RPC | rexec/anycommands | 512/tcp |
RPC | rlogin/loginto | 513/tcp |
RPC | rsh/anycommands | 514/tcp |
LPD | lpd/solaris/bof | 515/tcp |
RPC | rpc/rwalld/sun/format_string | 111/tcp |
RPC | rpc/cmsd/running | 111/tcp |
RPC | rpc/tooltalk/running | 111/tcp |
RPC | rpc/sadmind/running | 111/tcp |
SMTP | smtp/sendmail/dns_map_txt_record/bof | 25/tcp |
SMTP | smtp/sendmail/addr_fields/bof | 25/tcp |
SMTP | smtp/sendmail/prescan/typeconv_bof | 25/tcp |
SMTP | smtp/sendmail/prescan/ruleset_bof | 25/tcp |
RPC | rpc/solaris_sadmind/remote_exec | 32773/udp |
RPC | rpc/solaris_snmpXdmid/running | 32779/tcp |
SNMP | snmp/solaris_mibiisa/running | 32780/udp |
RPC | rexec/anycommands | 512/tcp |
RPC | rlogin/loginto | 513/tcp |
LPD | lpd/solaris/bof | 515/tcp |
X11 | X11/CDE/dtspcd_running | 6112/tcp |
X11 | xfsd/solaris/running | 7100/tcp |
7-2 일반적인 서비스 보안 설정
- 위의 표에서와 같이 RPC, SMTP, X11, SNMP, LP등의 서비스는 보안상 취약점을 가지고 있어 해당 포트를 disable 해 놓는 것이 바람직 합니다.
- 해결 방법( 사용자 환경에 따라 달라 질 수 있습니다.)
1. # cp /etc/inet/inetd.conf{,.old}
2. # vi /etc/inet/inetd.cnof
telnet, ftp제외한 모든 네트웍 서비스를 주석처리 or 삭제
3. # /etc/rc2.d , /etc/rc3.d의 해당 서비스 스크립트 move
(예)- # mv S71rpc{,.old}
8. log 파일
8-1 시스템 log파일
/var/adm/message – 중요한 시스템 log를 기록합니다.
/var/log/syslog - mail관련 log를 기록합니다.
/var/log/authlog – 인증과 관련된 log를 기록합니다. Default로 /etc/syslog.conf파일에 주석처리 되어 있습니다.
8-2 application log 파일
/var/adm/sulog /var/adm/vold.log /var/adm/wtmpx /var/cron/log | /usr/bin/su 에 의한 log파일 /usr/sbin/vold 에 의한 log파일 /usr/bin/login 에 의한 log파일 (last에 의해 보여집니다.) /usr/sbin/cron 에 의한 log파일 |
8-3 기타
- /etc/issue
로그인시 터미널에 보여지는 메시지 보통 경고 메시지 입력할 때 사용합니다.
- /etc/motd
/etc/issue파일과 비슷한 용도의 파일입니다. 보통 두 파일중 어떤 것을 사용해도 무관 합니다만, 이 파일은 default로 생성되지 않습니다.
- /etc/default/login
9. 네트워크 서비스
9-1 Telnet
아시는 바와같이 telnet은 네트웍을 통해 원격지 시스템으로 접속을 하기 위한 protocol입니다.
그러나 telnet은 id와 password가 네트웍을 통할 때 어떠한 암호화 인증을 거치지 않기 때문에 해킹이나 네트웍 스니핑에 이용될 수 있습니다. 따라서 부득이 하게 telnet을 사용하셔야 한다면, tcpwrapper나 암호화 인증 알고리즘을 사용하는 ssh를 사용할 것을 적극 권장합니다.
9-1 Remote Access Services(rsh, rlogin, rcp)
이러한 서비스는 시스템보안에 가장 취약한 약점을 가지고 있습니다. 대부분의 critical한 사이트는 상기 서비스를 사용하지 않고 있습니다.
9-2 Remote Execution Service(rexec)
네트웍을 통해 인증 과정없이 명령어를 실행할 수 있습니다.
Telnet과 마찬가지로 암호하 되지 않아서 해킹이나 스니핑에 이용될 수있습니다.
보통 /etc/inetd.conf 파일에서 삭제 됩니다.
9-3 inetd 서비스
- /etc/inet/inetd.conf파일의 network 서비스 목록
In.tnamed | DARAP 네임서버 protocol을 지원합니다. |
In.uucpd | 네트웍상의 Uucp connections을 지원합니다. |
In.fingerd | 로컬시스템의 계정정보를 제공합니다. |
Systat | Ps –ef의 출력과 함께 시스템에 연결되어 있는 계정정보 제공 |
Netstat | 현재 network에 연결되어 있는 서비스 목록을 제공합니다. |
Time | 현재의 날짜와 시간을 동기화 시켜주는 서비스 입니다. xntp를 사용할 것을 권장합니다. |
Echo | input되는 데이터 스트림을 추적해주는 서비스 |
Discard | input되는 데이터 스트림을 처리하는 서비스 |
Chargen | 연속적인 문자 스트림을 발생시키는 서비스 |
è 상기 서비스는 /etc/inet/inetd.conf파일에서 제거 시키기를 권장합니다.
10. rpc 서비스
10-1. /etc/inet/inetd.conf파일의 rpc 서비스 목록
testsvc
sadmind
rquotad
rpc.rusersd
rpc.sprayd
rpc.rwalld
rpc.rstatd
rpc.rexd
ufsd
kcms.server
fs
cachefsd
kerbd
in.lpd
dtspcd
xaudio
rpc.cmsd
rpc.ttdbserver
10-2. /etc/rc2.d/S71rpc 스크립트의 rpc서비스
rpcbind : CDE를 사용한다면 enable 되어 있어야 한다.
keyserv
rpc.nisd
nis_cachemgr
rpc.nispasswdd
10-3. /etc/rc3.d/S15nfs.server 스크립트의 rpc서비스
rpc.bootparamd
10-4 서비스 제거
- 상기 rpc서비스들은 보안상 대부분 제거하는 것을 권장합니다.
- /etc/inet/ient.conf : 해당 서비스 목록을 찾어 주석처리 후 inetd데몬을 다시 시작한다.
- /etc/rc2.d/S71rpc, /etc/rc3.d/S15nfs.server : 파일 이름을 remove시킨다. Nfs server를 사용한다면 S15nfs.server 스크립트는 remove시켜서는 안된다.
10-5 네트웍 서비스 banner
- telnet,ftp접속시 시스템의 기본 정보를 출력하지 않게 하기 위한 방법
/etc/default/telnetd, /etc/default/ftpd 파일 편집
BANNER= ”Unlistend OS” |
- sendmail 기본 정보 변경
/etc/mail/sendmail.cf
SmtpGreetingMessage=$j Sendmail $v/$Z; $b 변경 -> SmtpGreetingMessage=Mail Server Ready |
'OS > SOLARIS' 카테고리의 다른 글
Solaris Resource Manager (SRM) (0) | 2007.08.02 |
---|---|
dumpadm (0) | 2007.08.02 |
Solaris 설치 후 기본적인 설정 (0) | 2007.07.25 |
Solaris,HP-UX 에서 패치 (0) | 2007.07.20 |
SOLARIS PATCH ERROR CODE (0) | 2007.07.20 |