2012-09-12

FreeBSD]보안확인및 대처방법



퍼온글입니다.
  Posted: 2002-03-24 00:25



시스템을 관리하다 보면 많은 위험으로부터 공격을 받습니다.
이중에서 제일 관리자를 기분 나쁘게 하는 것이 바로 크래킹이죠.
지금 부터 서버에 백도어를 숨겨놓았나 확인하는 방법과 보안에 결함이 있나 확인하는 방법을 설명하겠습니다.

글은 모두 확인을해야 함으로 일정한 순서없이 진행하겠습니다.
물론 프비도 같은 방법으로 체크를합니다.


1. # grep -v "^#" /etc/inetd.conf --> 레드햇 7.1이전 버젼이 대부분이다.
하여 필요없는 서비스를 #로 주석처리하고 # killall -HUP inetd하여 데몬을 다시 실행한다.



2. #chattr +i /etc/inetd.conf

이것은 super-user만이 이 파일에대해 접근할 수 있도록 inetd.conf파일을 셋팅하는 것입니다. 셋팅이되면 수정,삭제 또는 리네임을 할 수 없습니다. 셋팅은 오직 super-suer만이 가능합니다.

이것을 풀기위하여는 -i 옵션을 주면 원상태로 됩니다.



3. 얼마나 많은 서비스들이 실행되는지 확인합니다.

#ps aux | wc -l

이것으로 서비스들을 확인하여 기록합니다.
이것을 다음에 예전 기록과 비교하여 이상한 서비스를 검출하기 위함입니다.



4. 스크립트 변경 후 확인

#netstat -na --ip



5. TCP Wrapper 사용

이것은 암호화는 지원하지 않지만 로그와 서버로의 접근을 제한 합니다.
이것은 telnet 또는 ftp와 같은 inetd서비스를 둘러싸는 실행화일입니다.

시스템 이름이나 도메인 이름을 사용하지말고 IP주소를 사용합니다.

/etc/hosts.deny 을 deny ALL로 설정한 후 접속을 허용할 주소만 /etc/hosts.allow파일에 기록합니다.

우선 순위는 allow가 먼저 입니다.


다음은 사용 예입니다.

  /etc/hosts.allow
    in.ftpd:192.168.0.1:ALLOW -->192.168.0.1으로 부터의 FTP만 허용
  /etc/hosts.deny
    ALL:ALL DENY -->모든 접근 불허


구성 후 #tcpdchk를 실행합니다.



6. 관리자의 history를 없앤다.
.bash_history에서  HISTFILESIZE=0으로한다.
그래도 HISTSIZE환경변수에 저장이됨으로 확인이 가능하다.



7. /etc/lilo.conf파일에 password=123 와 같이 암호부분을 넣어준다.
설정을한다음에 lilo -v한다.
그럼 재시동시 lilo에서 암호를 물어본다.



8. ipchains 나 iptables를 사용한다.
이것을 설정은 맨페이지나 관련 홈피를 참조하라..



9. /var/log및의 파일을 점검한다.

  acct 또는 pacct --> 사용자별로 실행되는 모든 명령어를 기록
  actlog --> 다이얼 -아웃 모뎀 관련 기록(자동 호출 장치)
  lastlog --> 각 사용자의 가장 최근 로그인 시간을 기록
  loginlog --> 실패한 로그인 시도를 기록
  messages --> 부트 메세지 등 시스템의 콘솔에서 출력된 결과를 기록하고
  syslog에 의하여 생성된 메시지도 기록
  sulog --> su 명령 사용 내역 기록
  utmp --> 현재 로그인한 각 사용자 기록
  utmpx --> utmp 기능을 확장, 원격 호스트 관련 정보 등 자료구조 확장
  wtmp --> 사용자의 로그인, 로그아웃 시간과 시스템의 종료 시간, 시스템 시작 시간 등을 기록
  wtmpx --> wtmp기능 확장
  vold.log --> 플로피 디스크나 cd - drom과 같은 외부 매체의 사용에서 발생하는 에러를 기록
  xferlog --> ftp 접근을 기록
  secure -->보안에 관련된 로그


위의 파일들을 확인하여 이상한 접근이나 사용자가 있는가를 점검한다.
이것은 시스템에 문제가 있을적에 제일 먼저 확인을 해야하는 로그들이다.



10. # w 명령으로 현재 로그인한 사용자를 확인한다.
이상한 유저가 로그인시 접속을 끊거나 활동상황을 감시한다.



11. # last 명령으로 기존 로그인한 사용자를 확인한다.
수상한 사용자가 있음 의심을 하자


특정한 ip를 제외하고 검색을 할려면
# last | grep -v 192.168.0.1 | grep -v www.linuxfreebsd.com

이것은 내부 ip가 192.168.0.1 이고 도메인이 www.linuxfreebsd.com  이란 말이다.
이런식으로 검출을 하면 많은부분을 쉽게 찾을수 있다.



12. secure를 확인하여 사용자 인증 관련 로그등을 확인한다.



13. access_log, error_log
파일에도 어느 사이트에서 어느 파일에 접근을 했는지를 확인한다.



14. 가장 상위 / 디렉토리에 .profile .history 파일들이 있나 확인을한다.
이런것들이 있으면 침입을 당한것이다.

# ls -al 으로 확인한다.



15. crontab -l 로 cron에 관리자가 이외의 사용자가 설정한 파일이있나 확인한다.



16. # find / -ctime -ndays -ls 로 ndays 이전 시점부터 현재까지 ctime 이 변경된

모든 파일을 찾아준다. 하지만 이는 파일의 접근시간(atime)을 변경시킨다.

따라서 침입자가 어떠한 파일에 접근했는지 알고 싶은 경우에는 사용하지 말자.



17.
nmap -sT -p 1-65535 www.linuxfreebsd.com
nmap -sU -p 1-65535 www.linuxfreebsd.com

이것으로 어떤 포트가 열려있는지를 확인한다.
nmap프로그램은 www.nmap.org에서 다운받아 설치한다.



18.
# find / -type -f -perm -04000 -ls --> SUID 파일을 찾기
# find / -type -f -perm -02000 -ls --> SGID 파일을 찾기



19.
# rpm -V -a --> 모든 설치된 패키지의 변화에 대하여 검사
# rpm -V 패키지 이름 --> 특정 패키지에 대해서만 변화여부 검사
# rpm -V fileutils --> 트로이잔 ls 프로그램을 확인한다.

예) S.5....T /bin/ls

S - 프로그램의 사이즈가 변경
5 - md5 cheksum 값이 변경
T - 파일의 mtime 값이 변경



20.
ps - sniffer 또는 취약점 스캔 프로그램등 공격 프로그램이 실행되고 있는지 살펴본다.
주로 평소에 보지 못했던 프로세스를 확인한다.
lsof - 시스템상의 모든 프로세스가 이용하는 열려진 파일 정보를 보여준다. 이는 ps 명령을 이용한 정보를 대체할 수 있다.
netstat - 서비스하지 않는 포트가 열려 있는지 또는 이상한 사이트에서 접속이 있는지 확인한다.
who - 누가 접속해 있는지 확인한다.



21.
/etc/passwd 파일에서 이상한 사용자를 검사한다.



22.
# find / -name "..*" -print 또는
# find / -name ".*" -print

이것으로 숨겨진 디렉토리를 찾아낸다.

# find /dev -type f -print

이것을 이용하여 /dev및에의 루트킷, 백도어 설정 파일을 찾아낸다.



23.
사용자 홈디렉토리의 ".rhosts", ".forward" 파일 내용을 점검한다.





무엇보다 중요한것은 초기 O/S인스톨이 끝난다음에나 설정이 완료된시점에서 모든 디렉토리를 백업하는것이다.
그래서 침입이 확인되었을적에 기존 파일을 지우고 백업파일을 올리는것이다.



이상으로 보안확인 및 대처 방법을 끝낸다.
리눅스 뿐만 아니라 프비도 위와 거의 같은 체크를한다.
그럼 본인의 시스템을 한번 확인해보자.

댓글 없음:

댓글 쓰기