보안 운영: Linux 시스템 계 정과 로그 인 보안

8109 단어
1. Shell 역사 명령 기록 기능 을 합 리 적 으로 사용
Linux 에서 history 명령 을 통 해 사용자 의 모든 과거 기록 을 볼 수 있 으 며, 셸 명령 조작 기록 은 기본적으로 사용자 디 렉 터 리 에 저 장 된. bash 입 니 다.history 파일 에 서 는 이 파일 을 통 해 셸 명령 의 실행 역 사 를 조회 할 수 있 으 며, 운영 자 들 이 시스템 감사 와 문 제 를 조사 하 는 데 도움 이 된다. 또한 서버 가 해 킹 을 당 한 후에 도 이 명령 이나 파일 을 통 해 해 해 킹 이 서버 에 로그 인 한 역사 명령 조작 을 조회 할 수 있 지만, 때로는 해 킹 이 서버 를 해 킹 한 후에 흔적 을 없 애기 위해삭 제 될 수 있 습 니 다. bashhistory 파일, 합 리 적 인 보호 나 백업 이 필요 합 니 다. bashhistory 파일.history 로그 파일 의 보안 설정 방법 을 소개 합 니 다.
기본 history 명령 은 사용자 의 과거 기록 만 볼 수 있 고 모든 사용자 가 명령 을 수행 하 는 시간 을 구분 할 수 없습니다. 이 점 은 검사 문제 에 매우 불편 하지만 아래 방법 (4 줄 내용 추가) 을 통 해 history 명령 이 모든 셸 명령 의 실행 시간 을 자동 으로 기록 하고/etc/bashrc 파일 을 편집 할 수 있 습 니 다.
HISTFILESIZE=4000   HISTSIZE=4000   HISTTIMEFORMAT='%F %T' export HISTTIMEFORMAT

그 중에서 도 HISTFILESIZE 는. bashhistory 파일 에 저 장 된 명령 의 기록 총 수 는 기본 값 은 1000 이 며 4000 으로 설정 되 어 있 습 니 다.HISTSIZE 는 history 명령 출력의 기록 총 수 를 정의 합 니 다.HISTTIMEFORMAT 정의 시간 표시 형식 은 date 명령 후의 "+"% F% T "와 일치 합 니 다.hiSTTIMEFORMAT 는 history 의 시간 변수 로 history 명령 에 값 을 전달 합 니 다.
이러한 설정 을 통 해 history 명령 을 실행 하면 모든 역사 명령 의 상세 한 실행 시간 을 표시 합 니 다. 예 를 들 어:
[root@server ~]# history   247  2013-10-05 17:16:28 vi /etc/bashrc   248  2013-10-05 17:16:28 top 249  2013-10-05 17:04:18 vmstat   250  2013-10-05 17:04:24 ps -ef   251  2013-10-05 17:16:29 ls -al   252  2013-10-05 17:16:32 lsattr    253  2013-10-05 17:17:16 vi /etc/profile  254  2013-10-05 17:19:32 date +"%F %T" 255  2013-10-05 17:21:06 lsof  256  2013-10-05 17:21:21 history

서버 의 안전 을 확보 하기 위해 셸 명령 의 실행 역 사 를 유지 하 는 것 은 매우 유용 한 방법 이다.셸 은 역사적 인 기능 이 있 지만 이 기능 은 회계 감사 목적 을 위해 디자인 된 것 이 아니 기 때문에 해커 에 의 해 조작 되 거나 잃 어 버 리 기 쉽다.시스템 에 로그 인 한 사용자, IP 주소, 셸 명령 과 상세 한 조작 시간 등 을 상세 하 게 기록 하고 이 정 보 를 파일 형식 으로 안전 한 곳 에 저장 하여 시스템 감사 와 고장 검 사 를 할 수 있 는 방법 을 소개 한다.
아래 코드 를/etc/profile 파일 에 추가 하면 상기 기능 을 실현 할 수 있 습 니 다.
#history   USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`   HISTDIR=/usr/share/.history  if [ -z $USER_IP ]   then  USER_IP=`hostname`   fi  if [ ! -d $HISTDIR ]   then  mkdir -p $HISTDIR   chmod 777 $HISTDIR   fi  if [ ! -d $HISTDIR/${LOGNAME} ]   then  mkdir -p $HISTDIR/${LOGNAME}   chmod 300 $HISTDIR/${LOGNAME}   fi  export HISTSIZE=4000   DT=`date +%Y%m%d_%H%M%S`   export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT" export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]" chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null

이 코드 는 모든 사용자 의 셸 명령 실행 역 사 를 파일 형식 으로/usr/share/history 디 렉 터 리 에 저장 합 니 다. 사용자 마다 폴 더 가 있 고 폴 더 아래 의 모든 파일 은 IP 주소 와 셸 명령 작업 시간의 형식 으로 명명 되 어 있 습 니 다.다음은 user 01 사용자 가 셸 명령 을 실행 한 기록 파일 입 니 다. 기본 효 과 는 다음 과 같 습 니 다.
[root@server user01]#  pwd   /usr/share/.history/user01  [root@server user01]# ls -al   -rw------- 1 user01 wheel  56 Jul  6 17:07 192.168.12.12.history.20130706_164512   -rw------- 1 user01 wheel  43 Jul  6 17:42 192.168.12.12.history.20130706_172800   -rw------- 1 user01 wheel  22 Jul  7 12:05 192.168.12.19.history.20130707_111123   -rw------- 1 user01 wheel  22 Jul  8 13:41 192.168.12.20.history.20130708_120053   -rw------- 1 user01 wheel  22 Jul  1 15:28 192.168.12.186.history.20130701_150941   -rw------- 1 user01 wheel  22 Jul  2 19:47 192.168.12.163.history.20130702_193645   -rw------- 1 user01 wheel  22 Jul  3 12:38 192.168.12.19.history.20130703_120948   -rw------- 1 user01 wheel  22 Jul  3 19:14 192.168.12.134.history.20130703_183150

과거 기록 명령 을 저장 하 는 폴 더 디 렉 터 리 는 해커 가 발견 한 후 삭제 되 지 않도록 최대한 은폐 해 야 한다.
2. su, sudo 명령 을 합 리 적 으로 사용 합 니 다.
su 명령 은 사용 자 를 전환 하 는 도구 로 일반 사용 자 를 슈퍼 사용자 로 전환 하 는 데 자주 사 용 됩 니 다. 물론 슈퍼 사용자 에서 일반 사용자 로 전환 할 수도 있 습 니 다.서버 의 안전 을 위해 거의 모든 서버 에서 슈퍼 유저 가 직접 시스템 에 로그 인 하 는 것 을 금지 하고 일반 사용 자 를 통 해 시스템 에 로그 인 한 다음 에 su 명령 을 통 해 슈퍼 유저 로 전환 하여 슈퍼 권한 이 필요 한 작업 을 수행 합 니 다.su 명령 을 통 해 시스템 관리 에 어느 정도 편 의 를 가 져 다 줄 수 있 지만 안전 하지 않 은 요소 도 존재 합 니 다. 예 를 들 어 시스템 에 10 명의 일반 사용자 가 있 고 모든 사용자 가 슈퍼 권한 이 있 는 조작 을 해 야 합 니 다. 반드시 슈퍼 사용자 의 비밀 번 호 를 이 10 명의 일반 사용자 에 게 건 네 주어 야 합 니 다. 예 를 들 어 이 10 명의 사용자 가 모두 슈퍼 권한 이 있 고 슈퍼 권한 을 통 해 모든 일 을 할 수 있 습 니 다.그러면 어느 정도 시스템 안전 에 위 협 을 초래 할 것 이다.따라서 su 명령 은 많은 사람들 이 참여 해 야 하 는 시스템 관리 에서 가장 좋 은 선택 이 아 닙 니 다. 슈퍼 사용자 비밀 번 호 는 소수의 손 에 쥐 어야 합 니 다. 이때 sudo 명령 은 도움 이 됩 니 다.
sudo 명령 은 시스템 관리자 가 일반 사용자 에 게 합 리 적 인 '권리' 를 할당 할 수 있 도록 합 니 다. 또한 일반 사용자 가 슈퍼 사용자 비밀 번 호 를 알 지 않 아 도 슈퍼 사용자 나 다른 특허 사용자 만 수행 할 수 있 는 임 무 를 수행 할 수 있 습 니 다. 예 를 들 어 시스템 서비스 재 부팅, 시스템 프로필 편집 등 입 니 다.이런 방식 을 통 해 슈퍼 유저 로그 인 횟수 와 관리 시간 을 줄 일 수 있 을 뿐만 아니 라 시스템 안전성 도 높 일 수 있다.따라서 sudo 명령 은 권한 이 제한 이 없 는 su 에 비해 안전 하기 때문에 sudo 는 제 한 된 su 라 고도 불 린 다. 또한 sudo 도 사전에 권한 수여 인증 을 해 야 하기 때문에 권한 수여 인증 의 su 라 고도 불 린 다.
sudo 명령 을 실행 하 는 절 차 는 현재 사용 자 를 슈퍼 사용자 로 전환 하거나 지정 한 사용자 로 전환 한 다음 에 슈퍼 사용자 나 지정 한 전환 사용자 로 명령 을 실행 하고 실행 이 완료 되면 현재 사용자 로 되 돌아 갑 니 다. 이 모든 완성 은 sudo 의 설정 파일/etc/sudoers 를 통 해 권한 을 부여 해 야 합 니 다.
예 를 들 어/etc/shadow 파일 은 일반 사용자 가 접근 할 수 없습니다.
[user01@unknown ~]$ more /etc/shadow  /etc/shadow: Permission denied

일반 사용자 user 01 이 파일 에 접근 할 수 있 도록 하려 면/etc/sudoers 에 다음 과 같은 내용 을 추가 할 수 있 습 니 다.
user01     ALL = /bin/more /etc/shadow    ,      user01      /etc/shadow  :   [user01@unknown ~]$ sudo more /etc/shadow  [sudo] password for user01:

이 명령 을 실행 한 후 user 01 사용자 의 비밀 번 호 를 입력 해 야 파일 내용 에 접근 할 수 있 습 니 다.여기 서 sudo 는 타임 스탬프 파일 을 사용 하여 '검표' 와 같은 시스템 을 완성 합 니 다. 사용자 가 비밀 번 호 를 입력 하면 기본 생존 기간 이 5 분 인 '입장권' 을 얻 을 수 있 습 니 다. (기본 값 은 컴 파일 할 때 변경 할 수 있 습 니 다)시간 이 초과 되면 사용 자 는 비밀 번 호 를 다시 입력 해 야 파일 내용 을 볼 수 있 습 니 다.
매번 비밀 번 호 를 입력 해 야 한다 면 슈퍼 권한 을 자동 으로 호출 하 는 프로그램 에 문제 가 생 길 수 있 습 니 다. 이 때 는 아래 설정 을 통 해 일반 사용자 가 비밀 번 호 를 입력 하지 않 아 도 슈퍼 권한 을 가 진 프로그램 을 실행 할 수 있 습 니 다.예 를 들 어 일반 사용자 centreon 이/etc/init. d/nagios 스 크 립 트 를 다시 시작 할 수 있 는 권한 을 가 지 려 면/etc/sudoers 에 다음 설정 을 추가 할 수 있 습 니 다.
CENTREON   ALL = NOPASSWD: /etc/init.d/nagios restart

이렇게 하면 일반 사용자 centreon 은 비밀 번 호 를 입력 하지 않 고 nagios 가 다시 시작 하 는 스 크 립 트 를 실행 할 수 있 습 니 다.일반 사용자 user 02 가 슈퍼 사용자 의 모든 권한 을 가지 고 슈퍼 사용자 의 비밀 번 호 를 입력 하지 않 으 려 면/etc/sudoers 에 다음 과 같은 내용 을 추가 하면 됩 니 다.
user02 ALL=(ALL) NOPASSWD: ALL

이렇게 user 02 사용자 가 시스템 에 로그 인 하면 다음 명령 을 실행 하여 슈퍼 사용자 로 전환 할 수 있 습 니 다.
[user02@unknown ~]$ sudo su -   [root@unknown ~]# pwd   /root

sudo 디자인 의 취 지 는 사용자 에 게 가능 한 한 적은 권한 을 부여 하지만 자신의 업 무 를 완성 할 수 있 도록 하 는 것 입 니 다. 이러한 디자인 은 안전성 과 용이 성 을 동시에 고려 하기 때문에 sudo 를 통 해 시스템 계 정의 안전 을 관리 하 는 것 을 강력 히 추천 합 니 다. 일반 사용자 만 시스템 에 로그 인 할 수 있 습 니 다. 만약 에 이 사용자 가 특별한 권한 이 필요 하 다 면 설정/etc/sudoers 를 통 해 완성 하 는 것 을 추천 합 니 다.다 중 사용자 시스템 에서 계 정 보안 관 리 를 위 한 기본 방식 이기 도 하 다.
3. 시스템 로그 인 환영 정보 삭제
시스템 의 일부 환영 정보 나 버 전 정 보 는 시스템 관리자 에 게 어느 정도 편 의 를 가 져 다 줄 수 있 지만 이런 정 보 는 가끔 해 킹 에 의 해 이용 되 어 서버 를 공격 하 는 하수인 이 될 수 있 습 니 다. 시스템 의 안전 을 위해 일부 시스템 파일 을 수정 하거나 삭제 할 수 있 습 니 다. 수정 하거나 삭제 해 야 할 파일 은 4 개 입 니 다. 각각/etc/issue,/etc/issue. net 입 니 다./etc/redhat - release 와/etc/motd.
/etc/issue 와/etc/issue. net 파일 은 모두 운영 체제 의 이름과 버 전 번 호 를 기록 하고 있 습 니 다. 사용자 가 로 컬 터미널 이나 로 컬 가상 콘 솔 등 을 통 해 시스템 에 로그 인 할 때/etc/issue 의 파일 내용 이 표 시 됩 니 다. 사용자 가 ssh 나 telnet 등 원 격 로그 인 시스템 을 통 해/etc/issue. net 파일 내용 은 로그 인 후 표 시 됩 니 다.기본 적 인 상황 에서/etc/issue. net 파일 의 내용 은 ssh 로그 인 후에 표시 되 지 않 습 니 다. 이 정 보 를 표시 하려 면/etc/ssh/sshd 를 수정 할 수 있 습 니 다.config 파일, 이 파일 에 다음 과 같은 내용 을 추가 하면 됩 니 다.
Banner /etc/issue.net

사실 이러한 로그 인 알림 은 시스템 정 보 를 뚜렷하게 누 출 했 기 때문에 안전 을 위해 이 파일 의 내용 을 삭제 하거나 수정 하 는 것 을 권장 합 니 다.
/etc/redhat - relase 파일 도 운영 체제 의 이름과 버 전 번 호 를 기록 하 였 으 며, 안전 을 위해 이 파일 의 내용 을 삭제 할 수 있 습 니 다.
/etc/motd 파일 은 시스템 의 공고 정보 입 니 다.사용자 가 로그 인 할 때마다/etc/motd 파일 의 내용 이 사용자 의 터미널 에 표 시 됩 니 다.이 파일 시스템 관리 자 를 통 해 소프트웨어 나 하드웨어 의 업그레이드, 시스템 유지 등 알림 정 보 를 발표 할 수 있 지만 이 파일 의 가장 큰 역할 은 경고 정 보 를 발표 할 수 있 는 것 이다. 해 킹 이 시스템 에 로그 인 한 후에 이런 경고 정 보 를 발견 하여 충격 적 인 역할 을 할 수 있다.외국 의 한 보 도 를 보고 해커 가 서버 를 해 킹 했 지만 이 서버 는 로그 인 을 환영 하 는 메 시 지 를 보 내 법원 은 아무런 판결 도 하지 않 았 다.
박문 주소:http://ixdba.blog.51cto.com/2895551/1552907

좋은 웹페이지 즐겨찾기