Operating System/Linux2007/06/20 13:28

실제로 공부(?)할 때는 아래 내용보다 더 많은 부분에 대해 Permission을 설정해봤고 Test를 해봤습니다만 제 느낌(?)으로는 아무리 해도 Patch만큼은 못하다(?)라고 생각합니다.

Patch를 할 수 없을 환경일 경우이거나 기타 사항이라면 아래 내용을 잘 살펴보는 것도 도움이 되리라 생각되어 가져온 글입니다.

표준 보안 Permission 설정

출처: http://blog.naver.com/iloview012/40002012459

흔히들 Linux를 설치하고 그냥 외부에 공개해버리는 Server들이 간혹 있습니다. 이에 따른 Bug조차도 Patch를 안하고 기본적으로 사용을 하는 분들이 많이 있는데 이는 잘못된 생각이며, Version별로 Bug Patch를 꼭 해주셔야 합니다.

또한 각종 remote bug가 허용되는 것들은 조심을 하셔야 한다고 생각되며 아래에 보안 Linux Default Permission을 공개합니다. 마음대로 설정은 하셔도 되며 저에게는 어떠한 책임이 없음을 여기서 밝혀드립니다.

▶ 표준 보안 Permission 설정

/bin/ root.root 711
/boot/ root.root 700
/dev/ root.root 711
/dev/audio* root.audio 600
/dev/dsp* root.audio 600
/etc/ root.adm 711
/etc/conf.modules root.adm 640
/etc/cron.daily/ root.adm 750
/etc/cron.hourly/ root.adm 750
/etc/cron.monthly/ root.adm 750
/etc/cron.weekly/ root.adm 750
/etc/crontab root.adm 640
/etc/dhcpcd/ root.adm 750
/etc/dhcpcd/* root.adm 640
/etc/esd.conf root.audio 640
/etc/ftpaccess root.adm 640
/etc/ftpconversions root.adm 640
/etc/ftpgroups root.adm 640
/etc/ftphosts root.adm 640
/etc/ftpusers root.adm 640
/etc/gettydefs root.adm 640
/etc/hosts.allow root.adm 640
/etc/hosts.deny root.adm 640
/etc/hosts.equiv root.adm 640
/etc/inetd.conf root.adm 640
/etc/rc.d/init.d/ root.adm 750
/etc/rc.d/init.d/syslog root.adm 740
/etc/inittab root.adm 640
/etc/ld.so.conf root.adm 640
/etc/lilo.conf root.adm 600
/etc/modules.conf root.adm 640
/etc/motd root.adm 644
/etc/printcap root.lp 640
/etc/profile root.root 644
/etc/rc.d/ root.adm 640
/etc/securetty root.adm 640
/etc/sendmail.cf root.adm 640
/etc/shutdown.allow root.root 600
/etc/ssh_config root.root 644
/etc/ssh_host_key root.adm 640
/etc/ssh_host_key.pub root.adm 644
/etc/sshd_config root.adm 640
/etc/syslog.conf root.adm 640
/etc/updatedb.conf root.adm 640
/home/ root.adm 751
/home/* current 700
/lib/ root.adm 751
/mnt/ root.adm 750
/root/ root.root 700
/sbin/ root.adm 751
/tmp/ root.root 1777
/usr/ root.adm 751
/usr/* root.adm 751
/usr/X11R6/ root.xgrp 751
/usr/bin/ root.adm 751
/usr/bin/* root.root 755
/usr/sbin/ root.adm 751
/usr/sbin/* root.root 755
/var/ root.root 755
/var/log/ root.root 711
/var/log/* root.root 600
/var/spool/mail/ root.mail 771

▶Tool들에 대한 Permission 설정

1. Compile Tool들의 Permission 설정

chmod 0700 /usr/bin/gcc
chmod 0700 /usr/bin/g++
chmod 0700 /usr/bin/cc
chmod 0700 /usr/bin/colorgcc

2. System Tool들의 Permission 설정

chmod 0700 /usr/bin/w
chmod 0700 /usr/bin/who
chmod 0700 /usr/bin/finger

3. Network Tool들의 Permission 설정

chmod 0700 /bin/ping
chmod 0700 /usr/bin/telnet (이나 아마 /bin/telnet일겁니다.)
chmod 0700 /usr/bin/ssh (만일 여러분이 ssh를 설치하였다면)
chmod 0700 /usr/sbin/traceroute

▶물리적 보안

보통 Server가 외부 사람이 많이 오는 곳에 설치되어있다면 그 사람들 중에 물리적 Cracking을 하기 위하여 다가오는 분들이 많이 있습니다. 이에 방어 할 수 있는 것은 바로 lilo와 root로 Join을 못하게 설정하는 것 입니다.

1. lilo.conf의 설정

/etc/lilo.conf 의 맨 위에다가 아래와 같이 설정을 합니다.

#My LILO password

password=foobar <-- 비번입니다.

저장을 하고 나서,

chmod a-r /etc/lilo.conf

아무도 못 보게 설정을 합니다. 그 다음 /sbin/lilo를 구동시켜 새로운 설정을 적용시킵니다.

2. /etc/inittab 의 설정

Local에서는 root로도 접근이 가능합니다. 허나 이를 막기 위하여 이 File을 수정하셔야 합니다.

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

이라고 보이실 겁니다. 이것을 아래와 같이 변경을 합니다.

ca::ctrlaltdel:/sbin/shutdown -a -t3 -r now

저장을 하시고 나서 아래와 같이 명령어를 수행합니다.

#telinit q

#

위와 같이 한 후에 보시게 되면 /etc/에 shadow.allow가 만들어 질것입니다. 그것이 있다면 아무나 Reboot을 못하는 것이죠.

3./etc/securetty 의 설정

/etc/securetty File을 열게 되면 아마도 아래와 같이 있을 것입니다.

# /etc/securetty

tty1
tty2
tty3
tty4
tty5
tty6

이것은 Local에서 root로 들어올 수 있는 것이죠. 그래서 이것을 막게 하는 것입니다. 그래야 공개된 석상에서 아무도 root를

뚫고 들어오지를 못 할테니까여... 설령 linux single로도... 그래서 아래와 같이 설정을 합니다.

# /etc/securetty

#tty1
#tty2
#tty3
#tty4
#tty5
#tty6

이후에 telinit q를 실행하여 지금 방금 설정한 것에 대한 적용을 시킵니다. 그 후 Login을 해봅니다.

Kernel 2.2.13-pre3 on an i686 / tty3

H4cker login: root
Password:

Login incorrect

login: root
Password:

Login incorrect

Done, root is not allowed login.

위와 같이 떨어지겠죠? 그렇다면 아무리 공개된 석상에 Server를 가져다 놓아도 Cracking 당할 염려가 없답니다. 그 사람이 암호를 알지 못하는 이상...

Creative Commons License
Posted by BLUEDAY™