본문으로 바로가기

리눅스 보안을 위한 기본설정

category 웹/웹.리눅스.SQL 2008. 11. 16. 03:51

2000년 12월 2일 (주)베스트한컴 www.besthan.net에서 발표하는 자료입니다.
다른 질문과 답은 www.koreaphp.co.kr에서 해주시기 바랍니다.


<보안관련및 기본명령>

1.chmod 700변경하기

본 권한변경 목적은 계정을 통하지 않은 불법적인 접근을 막기 위한 방법으로 가능한 필요하지 않은 파일들의 권한을 변경해 주시기 바랍니다. 특히 suid가 걸린 파일의 경우 절대적으로 권한 변경을 해주시기 바랍니다.

/usr/bin/finger
/usr/bin/nslookup
/usr/bin/whereis
/usr/bin/rlogin

/usr/bin/suidperl <--suid 걸린 파일
/usr/bin/sperl5.00503 <--- perl중에 suid걸린 파일임

/bin/ps
/usr/bin/pstree
/usr/bin/which
/usr/bin/who

/usr/bin/w
/bin/mail <-- 아웃룩익스프레스가 아닌 계정상에서 텔넷으로 메일을 확인하지 못하게 하십시요.

/etc/hosts
/etc/hosts.deny
/etc/hosts.allow

/usr/bin/top
/usr/bin/find

/usr/bin/lynx
/usr/bin/wget   --> 이 두 명령어는 일반적으로 해커들이 해킹툴을 가져올때 자주쓰는 명령어

/usr/bin/gcc
/usr/bin/cc
/usr/bin/c++
/usr/bin/make


기존 일반 사용자들의 컴파일을 위해 이 명령어를 사용할수 있는 그룹을 설정해 주면 준다.
(wheel이라는 그룹을 많이 사용함)

* find 명령어의 사용자를 제한 할 경우
# grep wheel /etc/group
wheel:x:10:root

/etc/group 화일에 wheel:x:10:root 이분에 wheel이라는 그룹에 user를 추가 한다.
(khsheen이라는 user가 있을경우임)
wheel:x:10:root,khsheen
이러면 wheel이라는 그룹에 khsheen 이라는 user가 등록된다.
# ls -la /usr/bin/find
-rwxr-xr-x 1 root root 54544 Feb 3
2000 /usr/bin/find*
# chgrp wheel find
# chmod 755 find
# ls -la /usr/bin/find
-rwxr-x--- 1 root wheel 54544 Feb 3 2000 find*

이런 식으로 설정하면 find 명령어는 root와 khsheen만 사용할수 있다. 이 명령어를 su 명령어에도 적용하는 것을 권장함, root로 전환할 유저 (su 명령어 사용자)를 제한할 수 있다.


2.anonymous ftp 막기


3.telnet 사용않기

현재 텔넷이 막힌 경우에는 해킹의 위험이 극히 줄어듭니다.
텔넷을 사용하시고자 하시는 분은 데이터 센터의 보안 서비스나 다른 방법을 사용하시기 바랍니다.

ip 거부

# vi /etc/hosts.deny

# vi /etc/hosts.allow
ALL:(IP 추가) <--- 텔넷으로 들어올 아이피만 적는다.
wq (저장후 종료)

# /etc/rc.d/init.d/inet restart


4.ping 막기

#echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all //ping 막기
#echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all //ping 열기


5.find 관련 명령

#find /dev -type f // /dev/MAKEDEV만떠야함 (백도어 찾기)
#find / -ctime -1 //하루동안 만들어진 화일 (해킹당한듯 싶으면 확인 )
#find / -perm -4000 // setuid 걸린 파일을 찾는 명령어

6./etc/inetd.conf 화일 수정

네트워크의 서비스를 정의하고 있는 화일로서, 정의되어 있는 서비스가 많이 있다.
보안사고를 피하기 위해서는 최대한 필요하지 않은 서비스는 차단하는게 바람직하다.
기본적으로 ,telnet,ftp,pop3외의것은 주석처리 하는것이 좋다. 닫아놨는데, 이외의 것이 열려있다면 해킹의 가능성이 있다.

이때는 다시 주석처리를 하고

#ps -ef | grep inetd //프로세스 확인
#kill -HUP PID //리셋
#vi inetd.conf (/etc 에 위치)
telnet
ftp
pop3
나머지는 주석처리
wq (저장후 종료)
tip> #kill -9 PID //프로세스 죽이기


7.find 관련 명령어

# find / -nouser (화일에 소유자가 없는 경우의 화일)
일반사용자의 사용 디렉토리에서 화일에 소유자가 없다는 것은 의심을 해볼필요가 있다.

# find /home/khsheen -user root
(일반사용자인데 root로 되어 있는 화일도 의심해볼 필요가 있다)


8.해킹이 확실한경우 대처법

a.우선 랜선을 제거한다.
b.프로세스 확인 후 의심 프로세서 확인 후 제거

# kill -9 이상한 프로세스 id


9.기타 보안에 관련된 내용

a.php , mysql db 지원하는 경우
-일반적으로 php로 mysql에 db에 접속하는 경우 php에서 connect하는 스크립트를 사용하는 화일을 일반적으로 Web상에 공개된 소스에는 화일명이 대부분 connect.inc 를 사용하는데 이것을 웹 브라우저에 불러오게 되면 바로 읽혀져서 mysql db접속 아이디와 패스워드를 알 수가 있게 된다.

이럴 경우는 웹서버의 설정화일(httpd.conf)에

AddType application/x-httpd-php .php .html .php3 .php3 .inc
~~~~~!!
AddType application/x-httpd-php-source .phps

추가하고 웹서버를 재구동한다. 그러면 .inc로 끝나는 화일도 php로 인식하므로 스크립트 노출을 막을수 있다

또 한가지 telnet ftp에 사용시 group을 같게 해주고 각 계정의 root Directory를 퍼미션을 705로 처리해주면 다른 유저가 다른 사용자의 계정에 들어 갈수가 없다.

만약 755로 한다면 다른 유저에게도 읽을 권한이 생겨서

connect 스크립트를 읽을 수 있어 db접속 아이디/passwd를 얻을수 있다.


c. shell이 필요없는 경우(메일 계정으로만 사용)의 유저에 대한 처리

# vipw
khsheen:x:500:502::/home/gdm:/bin/false
~~~~~~~~~~
khsheen이라는 유저에게 shell을 부여하지 않는다.