사용자 계정과 비밀번호 정책


# vi /etc/login.defs

-> 비밀번호 기한 설정을 포함한 쉐도우 파일의 설정을 결정한다.


비밀번호 만료 정보를 보기 위한 명령어

# chage -l [username]

ex) # chage -l parkhs



/etc/shadow 파일의 다음 필드를 변경할 수 있다.


{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:


1. Minimum_days : 비밀번호가 만료되는 최소일 수

2. Maximum_days : 비밀번호가 유효한 최대일 수, 즉 이 시기가 지난 후 사용자는

                          반드시 비밀번호를 변경해야 한다.

3. Warn : 비밀번호가 만료되기 전 사용자가 비밀번호를 반드시 변경하도록 경고하는 일 수

4. Expire : 계정이 더 이상 사용되지 않는 절대 일 수


/etc/shadow 직접 수정 보다는 chage 명령어를 사용하여 수정

 # chage -M 60 -m 7 -W 5 test




SetUID, SetGID 점검


 - 일반사용자도 직접 비밀번호를 변경하고자 했기 때문에 

   /usr/bin/passwd 파일소유자 root 권한을 잠깐 빌려주는 SetGID 속성이 부여됐다. 

   이러한 장점도 있지만 보안에 취약하다는 단점도 있기 때문에 SetGID, SetUID 점검이 필요하다.


   방법은 root 소유의 파일 중 퍼미션 4000(SetUID), 2000(SetGID) 부여된 파일들을 찾아 

   일반사용자에게는 굳이 필요하지 않다면 속성을 제거하면 된다.


*퍼미션 4000(SetUID)이 부여된 root 소유파일 찾기

 find / -user root -perm -4000 -print


*퍼미션 2000(SetGID)이 부여된 root 소유파일 찾기

 find / -user root -perm -2000 -print


*필요없는 파일 퍼미션 변경

 # chmod 100 /bin/ping

  

  /usr/bin/chsh

  /usr/bin/gpasswd

  /usr/bin/wall

  /usr/bin/write

  /usr/bin/chage

  /usr/bin/chfn

  /usr/bin/at

  /usr/bin/mount

  /usr/bin/umount

  /usr/bin/crontab

  /usr/bin/newgrp

  /usr/sbin/usernetctl

  /bin/ping


PING 테스트 응답차단



1. 

# vi /etc/sysctl.conf

net.ipv4.icmp_echo_ignore_all=1          <- 추가 입력 후에 재부팅


2.  방화벽 icmp 차단


시스템 중요파일 속성변경


*gcc, g++ 컴파일러

 # chmod 100 /usr/bin/gcc /usr/bin/g++

 # chattr +i /usr/bin/gcc /usr/bin/g++


*ps 명령(프로세스 관리)

 # chmod 100 /bin/ps

 # chattr +i /bin/ps


*ping 명령

 # chmod 100 /bin/ping

 # chmod 100 /bin/ping6


*그 이외의 관리자 명령어

 # chmod 750 /usr/sbin/useradd

 # chmod 750 /usr/sbin/userdel

 # chmod 750 /usr/sbin/usermod

 # chmod 750 /usr/bin/top

 # chmod 750 /sbin/fdisk

 # chmod 750 /sbin/mkfs*

 # chmod 750 /sbin/fsck*


 # chmod 100 /usr/bin/pstree 

 # chmod 100 /usr/bin/w 

 # chmod 100 /usr/bin/who 

 # chmod 100 /usr/bin/find 

 # chmod 100 /bin/df 

 # chmod 100 /bin/netstat 

 # chmod 100 /sbin/ifconfig 

 # chmod 100 /usr/bin/make


 # chmod 700 /usr/bin/wget 

 # chmod 700 /usr/bin/curl


 # chattr +i /usr/sbin/useradd

 # chattr +i /usr/sbin/userdel

 # chattr +i /usr/sbin/usermod

 # chattr +i /usr/bin/top

 # chattr +i /sbin/fdisk

 # chattr +i /sbin/mkfs*

 # chattr +i /sbin/fsck*



명령어 - chattr (파일 속성 변경) & lsattr (파일 속성 확인)


+- i : 파일을 수정 및 삭제 모든 것을 불가능하게 만든다. root 사용자라도 불가능하지만 

root 사용자만 I 옵션을 해제할 수 있다.

+ 속성은 파일의 속성을 추가하고 - 속성은 파일의 속성을 제거한다.


chattr -R +i [디렉토리/파일명]

 - 디렉토리와 그 하위 모든 파일들에게 부여할 수 있다.


a

해당 파일에 추가만 할 수 있다. root계정만 속성을 변경할 수 있다. 파일보안을 위해 사용

  







c

해당파일은 커널에 의해 디스크상에 자동으로 압축된 상태로 저장된다.


파일을 읽을 경우 압축을 해제한 상태로 되돌려주며 쓰기를 할때는 디스크에 압축되어 저장된다.

d

해당파일은 dump로 백업이 되지 않는다.

i

해당파일의 수정, 삭제, 이름변경, 파일추가, 링크파일 생성이 불가능하다. 변경추가가 거의 없는 파일에 a속성과 함께 사용한다.root계정만 속성을 변경할 수 있다.

s

파일삭제가 될 경우에 해당블럭이 모두 0으로 되고 디스크에 다시 쓰기가 발생한다.

S

변경이 일어날 경우 디스크동기화가 일어난다.

u

파일이 삭제가 되었을 경우 그 내용이 저장되며 삭제되기 이전의 데이터로 복구가 가능하다.



 특정 계정만 su 명령 사용하기


# vi /etc/group

wheel:x:10:root,parkhs            <- 추가



su 파일을 변경하지 못하도록 속성 변경

chmod 4750 /bin/su

chattr +i /bin/su



다음 글에서 "chattr" 명령어 확인


SSH 포트 변경


# vi /etc/ssh/sshd_conf



Port 8666     <- 원하는 Port 입력


service sshd restart


변경 후에 방화벽에서 변경한 Port ACCEPT

# vi /etc/sysconfig/iptables




SSH로 root 계정 직접 로그인 차단


# vi /etc/ssh/sshd_config



PermitRootLogin no     <-   주석제거 및 수정


service sshd restart

+ Recent posts