메뉴 닫기

ISMS 인증을 준비하면서.. 리눅스 보안 설정해보자~

 

스마일서브도 개나소나 다 받는 ISMS 인증을 준비하고 있다.

 

리눅스 서버에 대한 보안 설정을 해보자~

 

1. 디폴트 계정 및 불필요한 계정 삭제

 

cat /etc/passwd 로 확인

 

계정은 시스템에 필요한 시스템 계정

프로그램 설치시 생성되는 계정

 

그중 OS가 설치될때 디폴트로 생성되는 계정은 패스워드 또한 디폴트 설정이 되어 있는 경우가 많으며 무작위 및 추측성 공격에 악용 가능성 존재

 

불필요한 디폴트 계정 삭제 (뭔지는 모르겠으나 삭제하였음)

 

[root@localhost ~]# userdel lp

[root@localhost ~]# userdel uucp 

[root@localhost ~]# userdel nuucp

userdel: ‘nuucp’ 사용자가 없습니다

 

로그인 쉘에서 계정을 삭제하지 않고 /etc/passwd 에서 /bin/false 로 수정하는 경우 보안상 문제 발생 가능성 → 삭제해준다

 

2. 관리자 권한 계정 확인 (root 권한은 UID = 0, GID = 0)

 

root 와 UID 가 중복되는 계정 확인

root 이외에 계정이 /etc/passwd 에서 0:0의 값을 가지지는 확인 

 

계정간에 UID 중복시 발생 가능한 문제점

 

1. 사용자간 감사 추적의 어려움

2. 사용자 권한의 중복성 

 

UID 의 값이 root 를 제외한 값이 0일경우 해당 계정 삭제 혹은 100 이상의 UID 지정

GID가 0인 계정이 나오면 적절한 권한의 GID 할당 (시스템 계정은 제외 : daemon, bin, adm, uucp, nuucp, lp, hpdb, sync, shutdown, halt, operator)

 

UID가 0인 경우는 root 를 제외하고 출력되지 않음

[root@localhost home]# cat /etc/passwd | grep :0:

root:x:0:0:root:/root:/bin/bash

 

GID가 0인 경우는 sync, shutdown, halt, operator 4계가 있는 시스템 계정인듯 함

sync:x:5:0:sync:/sbin:/bin/sync

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

halt:x:7:0:halt:/sbin:/sbin/halt

operator:x:11:0:operator:/root:/sbin/nologin

 

usermod 명령어 (유저의 권한등을 변경할수 있는 명령어 인 듯)

 

[root@localhost ~]# usermod

Usage: usermod [options] LOGIN

 

Options:

  -c, –comment COMMENT         new value of the GECOS field

  -d, –home HOME_DIR           new home directory for the user account

  -e, –expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE

  -f, –inactive INACTIVE       set password inactive after expiration

                                to INACTIVE

  -g, –gid GROUP               force use GROUP as new primary group

  -G, –groups GROUPS           new list of supplementary GROUPS

  -a, –append                  append the user to the supplemental GROUPS

                                mentioned by the -G option without removing

                                him/her from other groups

  -h, –help                    display this help message and exit

  -l, –login NEW_LOGIN         new value of the login name

  -L, –lock                    lock the user account

  -m, –move-home               move contents of the home directory to the

                                new location (use only with -d)

  -o, –non-unique              allow using duplicate (non-unique) UID

  -p, –password PASSWORD       use encrypted password for the new password

  -s, –shell SHELL             new login shell for the user account

  -u, –uid UID                 new UID for the user account

  -U, –unlock                  unlock the user account

  -Z, –selinux-user            new SELinux user mapping for the user account 

 

usermod -u [UID번호] [계정명]

usermod -g [GID번호] [계정명]

 

3. passwd 파일 권한 설정

 

 

chmod 644 /etc/passwd

chown root /etc/passwd

 

[root@localhost ~]# ll /etc/passwd

-rw-r–r– 1 root root 1530 2014-01-10 13:29 /etc/passwd

 

 

4. group 파일 권한 설정

 

[root@localhost ~]# chmod 644 /etc/group

[root@localhost ~]# chown root /etc/group

[root@localhost ~]# ll /etc/group

-rw-r–r– 1 root root 773 2014-01-10 13:06 /etc/group

 

 

5. 패스워드 사용규칙

 

1. 패스워드 최소 길이 : 9자 이상 (패스워드 추측성 공격 예방)

2. 패스워드 최대 사용기간 : 90일 이하 (패스워드 유출시에 대한 대비 방안)

3. 패스워드 최소 사용기간 : 1주 이상 (패스워드 유출시에 대한 대비 방안)

 

설정

vim /etc/login.defs

 

PASS_MIN_LEN          9 : 패스워드 최소 길이 8자

PASS_MAX_DAYS     90 : 패스워드 최대 사용기간 90일

PASS_MIN_DAYS      7 : 패스워드를 변경할 최소 주기 

PASS_WARN_AGE     10 : 패스워드 완료일 몇일전에 경고를 띠울지에 대한 설정

 

6. shell (쉘) 제한

 

 로그인이 불필요한 계정에 대해서는 “/bin/sh”등과 같은 shell 제한

 – “nologin” “/bin/false” 를 부여하여 로그인 금지해야 함

 

 

cat /etc/passwd

 

root:x:0:0:root:/root:/bin/bash (관리자 계정)

ta-cap:x:500:500::/home/takakocap:/bin/bash (일반계정)

xe:x:501:501::/home/xe:/bin/bash (제로보드 XE 설치할때 만들었던 일반계정)

 → xe:x:501:501::/home/xe:/sbin/nologin 요렇게 바꿔보았음

xe 계정을 삭제하거나 /bin/false 혹은 nologin 으로 설정

 

※. UID 100이하 60000 아래에 계정들은 시스템 계정으로 로그인이 필요없음

daemon, bin, sys, adm, listen, nobody, nobody4, noaccess, diag, listen, operator, games, gopher 

 

 

쉘 로그인이 필요없는 계정 생성

useradd kek18 -c 테스트용 -d /home/kek18 -m -s /bin/false

 

7. su 제한

 

 일반 사용자가 su – 명령어를 통해 root 권한을 획득할수 있는 명령어 제한

 

 

vim /etc/pam.d/su (디폴트 상태는 어떤 일반 계정이라도 su – 명령어를 통해 root 로 로그인)

 

auth           sufficient      pam_wheel.so trust use_uid

 – wheel 그룹에 있는 ID는 su – 명령어를 통해 패스워드 입력없이 root 로 로그인

 

auth           required        pam_wheel.so use_uid (권장)

 – wheel 그룹에 있는 ID 는 su – 명령어를 통해 root 패스워드를 정상적으로 입력했을때 root 로 로그인

 

 

특정 일반 계정을 wheel 그룹에 넣기

 

wheel 그룹 생성 (요즘은 기본으로 다 생성되어 있는듯함)

groupadd wheel

 

su 명령어를 wheel 그룹에서만 실행할수 있도록 소유자 변경

chgrp wheel /bin/su

 

su 명령어 접근 권한 변경

chmod 4750 /bin/su

 

일반 계정에 wheel 그룹 추가

usermod -G wheel “일반계정ID”

 

or 

 

vim /etc/group (아래 라인 수정) takakocap 은 일반 계정 이름

wheel:x:10:takakocap

 

 

ssh 에서 root 로 바로 로그인 금지 (일반계정 → su – 명령후 root 접근)

 

vim /etc/ssh/sshd_config

PermitRootLogin no

SSH 재시작후 적용

 

ssh 에서 최대접근 시도 횟수 설정 

vim /etc/ssh/sshd_config

MaxAuthTries 3

SSH 재시작후 적용

 

 

8. shadow 파일 권한 설정

 

패스워드가 암호화 되어 저장되어 있는 파일

root 계정만 읽기 가능하도록 설정 퍼미션 (400) or (000)

 

[root@localhost ~]# ll /etc/shadow

———- 1 root root 1096 2014-01-10 16:40 /etc/shadow

 

cat /etc/shadow (2번째 필드가 x로 되어 있다는것은 패스워드가 shadow 파일에 암호화로 저장되었다는것을 의미)

root:x:0:0:root:/root:/bin/bash

 

감사에서는 2번째 필드가 x 로 표기되어 있는지 확인

 

원격 세션 접속시 idle 시 원격 세션 끊기

 

 

export TMOUT=300

echo TMOUT=300 >> /root/.bash_profile

 

각 계정마다 설정을 해야한다.

 

 

 

umask 설정

 

 

새로 생성하는 파일의 접근 권한은 umask에 따라 달라짐

 

현재 유저로 로그인하여 umask 명령어를 통해 umask 값을 알 수 있음 

 

보안상으로 “022” 를 권장하여 파일권한은 “rw-r–r–” 으로 생성

 

일시적으로 umask 값 변경 (로그아웃이나 리부팅하면 디폴트 값으로 돌아옴)

 

 

[takakocap@localhost ~]$ umask

0022

 

[takakocap@localhost ~]$ umask 111

 

[takakocap@localhost ~]$ umask

0111

 

 

 

 

아래 두개파일을 열어서

vim /etc/profile

vim /etc/bashrc

 

umask 022 로 모두 수정

 

리부팅후 적용되지만 아래 명령어 날려서 바로 적용

source /etc/profile

source /etc/bashrc

 

어느 계정에서든지 umask 명령어로 확인시 0022 로 출력되면 권고되는 보안설정임

 

 

 

su 로그 설정

 

일반 사용자 → 슈퍼유저로 사용되는 로그를 남김

일반적으로 가용성 및 무결성을 침해하기 위해서는 Super User 권한이 필요함

 

 

/etc/syslog.conf

authpriv.info /var/log/sulog

 

 

/etc/init.d/syslog restart 하면 아래와 같이 sulog 가 남게 됨

 

 

Jan 16 15:14:29 localhost su: pam_unix(su-l:session): session closed for user root

Jan 16 15:14:31 localhost su: pam_unix(su-l:session): session opened for user root by takakocap(uid=500) 

 

 

syslog 설정

시스템 운영중 발생하는 정보나 경고에 대한 로그를 남기기 위한 보안 설정

 

 /etc/syslog.conf

 

*.notice/var/log/messages

*.alert/dev/consile

*.emerg*

 

 

/etc/init.d/syslog restart

 

history 파일 권한 설정

 

 

모든 사용자의 history 파일 권한 600 으로 소유자는 자기자신으로 변경

chmod 600 /root/.bash_history

 

ll .bash_history

-rw——- 1 root root 33038 2014-07-04 16:33 .bash_history

 

 

 

홈디렉토리 접근 권한

 

 

기본적으로 계정이 생성되면 소유자 및 권한은 문제 없는듯 하다

ls -ald /home/smileserv/

drwx—— 3 smileserv smileserv 4096 2014-04-28 16:54 /home/smileserv/

 

User별 홈디렉토리 타사용자 쓰기 권한 제거

chmod o-w /home/smileserv/

 

 

 

PATH 환경 변수 설정

 

PATH 경로 확인

 

export $PATH

-bash: export: `/usr/loca/openssh/bin:/usr/local/openssh/sbin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin‘: not a valid identifier

 

 

 

root 계정의 환경변수에 “.” 리눅스에서 “.”은 자기자신을 의미함

“.” 이 “/usr/bon” “/bin” “/sbin” 등의 명령어들이 위치한 디렉토리 보다 우선할 경우

해커가 의도적으로 심어놓은 파일을 실행시킬수 있음

 

“.” 를 삭제하거나 제일 뒤로 이동시킨다

 

PATH 경로 변경 (OS별로 경로는 약간 틀릴수 있음)

 

 

vi /etc/profile

vi /홈디렉토리/.bash_profile

 

 

FTP UMASK 설정

 

ftp.conf 파일 (FTP 프로그램 마다 설정파일 다 틀림)

 

umask=077 

 

SNMP 서비스 설정

vi /etc/snmp/snmpd.conf

com2sec mynetwork 192.168.0.0/24 takakocap

 

SNMP를 사용하지 않거나 snmpd.conf 에 community 값이 디폴트값인 “public, private” 이 아니면 된다.

 

 isms

 

END

[polldaddy rating=”7739789″] 

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x