비밀번호 변경 주기 설정하기


비밀번호 관리가 귀찬기도 하고 하지만 않할수도 없습니다.

그래도 쉽게 하는방법중에 효과가 좋은것이 주기적으로 비빌먼호를 변경하는것인데

자동으로 변경해야할때 알림을 주고 변경하도록 설정해보겠습니다.



$ su


우선 어떻게 설정되어잇는지 살펴보겠습니다.


$ chage -l 계정명


마지막으로 암호를 바꾼 날               : 10월 21, 2015

암호 만료                                 :   안함

암호가 비활성화 기간                    : 안함

계정 만료                                 : 안함

암호를 바꿀 수 있는 최소 날 수          : -1

암호를 바꿔야 하는 최대 날 수           : -1

암호 만료 예고를 하는 날 수             : -1


위상태라면 설정이 전혀 안되어있습니다.

이제 90일 마다 변경하고 변경해야된다는 알림을 10일로 설정해서 변경해보겠습니다.


$ chage  –M 90 –W 10 계정명

$ chage -l 계정명


마지막으로 암호를 바꾼 날               : 10월 21, 2015

암호 만료                                 :  1월 19, 2016

암호가 비활성화 기간                    : 안함

계정 만료                                 : 안함

암호를 바꿀 수 있는 최소 날 수          : 0

암호를 바꿔야 하는 최대 날 수           : 90

암호 만료 예고를 하는 날 수             : 10


정상적으로 바뀌었습니다.

리눅스에서 root에서만 변경가능한 파일을 만들고 싶을때 chattr을 사용합니다.

권한만 root로 바꾸고 다른 계정에 읽기 권한을 준다면 해당 파일은 vi에서 w!(강제저장)으로 파일이 변경됩니다.


chattr : 파일의 속성을 설정하는 명령어
lsattr : 파일을 속성을 확인하는 명령어



chattr의 간단한 사용방법


chattr [-RV] [-v] [+-속성] 대상파일들

[+-속성]

+ : 지정한 속성을 부여한다.
- : 지정한 속성을 제거한다.

[-RV]

-R : 서브디렉토리 그이하까지 일괄 변환합니다ㅣ.
-V: 자세한 출력모드를 제공합니다.

[-v]
-v : 지정된 파일에 버전을 설정할수있습니다.


속성의 종류

a: 파일에 추가만 할수있는 속성이빈다. 일반적으로 로그에 주로사용합니다. 삭제는 안되지만 추가는 가능합니다.
*아무나 삭제하면 안되지만 계속 기록은 되어야하는 로그파일 설정에 주로쓰입니다.


c: 커널에 의해서 압축된 상태로 저장이 된다. 파일을 읽을경우에는 해제된상태로 되고 저장하기전에는 다시압축하는 방법입니다. 


d: dump로 백업이 되지 않습니다.


i: 파일의 삭제 변경,이름변경, 파일추가 및 링크파일도 만들수없습니다.
*삭제가 되면 안되는 시스템 설정파일등에 주로 활용되빈다.


s: 파일삭제가 될경우 해당블럭을 모두 0으로 만들고 새로 디스크에 다시씁니다.


u: 파일이 삭제되었을경우 그내용이 저장이 되며 삭제되기전에 데이터로 복구가 가능해집니다.



예시


1. 특정 파일에 대하여 파일삭제 ,변경,추가등을 불가능하게 설정합니다.

$ lsattr test.test
-------------- test.test

일반적인 파일입니다.


$ chattr +i test.test
$ lsattr test.test
---i---------- test.test

i 속성이 지정 되었다.


$ rm -rf test.test
rm: cannot remove `test.test': Operation not permitted

삭제가 불가능합니다.


2. i 속성을 제가해서 파일삭제,변경,추가가 가능하게 합니다.


$ chattr -i test.test
$ lsattr test.test
-------------- test.test

i 속성을 제거하였다.

$ rm -rf test.test

삭제가 가능합니다.


3. 삭제는 안되지만 추가는 할수있는 속성 설정


$ chattr -i test.test


4. 폴더내에 모든 파일들을 일괄 설정 및 제거


$ chattr -R +i folder

$ lsattr -R folder | more
..

$ chattr -R -i folder

$ lsattr -R folder | more
..



패킷을 캡처하는 방법에는 여러가지 방법이 있습니다.

그중 wireshark를 사용해서 많이 사용합니다.

wireshark는 gui환경에서 동작하는데 tshark라는 gui 없는 버전도 있습니다.



이 포스팅에서는 리눅스에서 tshark를 사용하여 패킷 캡쳐하는 방법을 알아보겠습니다.


제가 현재 사용하는 우분투 기준으로 설명을 하겠습니다.


1. tshark 설치하기

  - ubuntu에는 wireshark와 tshark를 별도로 설치해야합니다.


$ sudo apt-get install tshark


2. 사용하기


$ sudo tshark -i eth0 -w /home/yulgang/pcap/eth0.pcap -b filesize:102400 -a files:50 -a duration:3000 -n


설명 : eth0 인터페이스에 /home/yulgang/pcap/eth0.pcap 파일에 파일사이즈 100mb마다 다른파일을 생성하면서

파일갯수가 50개가 넘거나 동작한지 시간이 3000초가 넘어가면 패킷캡쳐를 멈추도록 세팅한다.


간단한 예시와 함께 사용방법을 알아봤습니다. 

tshark의 상세한 옵션은 https://www.wireshark.org/docs/man-pages/tshark.html  에서 더 확인해보시면 됩니다.



추가

특정시간에 해당 캡처를 백그라운드로 실행하고싶을때


$ vi packet.sh

tshark -i eth0 -w /home/yulgang/pcap/eth0.pcap -b filesize:102400 -a files:50 -a duration:3000 -n


$ chmod 755 packet.sh


$ su

$ crontab -e

아래를 맨아래 추가합니다.

1 1 * * * nohup /home/yulgang/sysstat/packetcap.sh > /dev/hull 2>&1 

설명 : 매일 1시 1분에 해당 스크립트를 백그라운드로 실행한다.


% root권한으로 실행해야합니다.

  


Ghost버그는 무었인가?


미국 US-CERT는 리눅스 GNU C 라이브러리(glibc)에서 임의코드를 실행할 수 있는 취약점(CVE-2015-0235)이 발견되었다고 발표하였습니다.


- CVE-2015-0235는glibc의 gethostbyname(), gethostbyname2() 처리 과정에서 발생하는 버퍼오버플로우에의해 취약점발생합니다.




리눅스에서 glibc 버전 확인하기?

$ ldd --version


영향을 받는 lib는 라이브러리는 2.2 ~ 2.17버전의 모든 리눅스 시스템으로 알려져있다.


알려진 영향받는 리눅스 버전

RHEL (Red Hat Enterprise Linux) version 5.x, 6.x and 7.x
CentOS Linux version 5.x, 6.x & 7.x
Ubuntu Linux version 10.04, 12.04 LTS
Debian Linux version 7.x
Linux Mint version 13.0
Fedora Linux version 19 or older
SUSE Linux Enterprise 11 and older (also OpenSuse Linux 11 or older versions).
SUSE Linux Enterprise Software Development Kit 11 SP3
SUSE Linux Enterprise Server 11 SP3 for VMware
SUSE Linux Enterprise Server 11 SP3
SUSE Linux Enterprise Server 11 SP2 LTSS
SUSE Linux Enterprise Server 11 SP1 LTSS
SUSE Linux Enterprise Server 10 SP4 LTSS
SUSE Linux Enterprise Desktop 11 SP3
Arch Linux glibc version <= 2.18-1



취약점에 노출되어있는지 확인하는 방법


$vi ghosttest.c


/* ghosttest.c:  GHOST vulnerability tester */

/* Credit: http://www.openwall.com/lists/oss-security/2015/01/27/9 */

#include <netdb.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

 

#define CANARY "in_the_coal_mine"

 

struct {

  char buffer[1024];

  char canary[sizeof(CANARY)];

} temp = { "buffer", CANARY };

 

int main(void) {CentOS http://lists.centos.org/pipermail/centos/2015-January/149413.html

Debian https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776391

Redhat https://access.redhat.com/articles/1332213

Ubuntu http://www.ubuntu.com/usn/usn-2485-1/

  struct hostent resbuf;

  struct hostent *result;

  int herrno;

  int retval;

 

  /*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/

  size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;

  char name[sizeof(temp.buffer)];

  memset(name, '0', len);

  name[len] = '\0';

 

  retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);

 

  if (strcmp(temp.canary, CANARY) != 0) {

    puts("vulnerable");

    exit(EXIT_SUCCESS);

  }

  if (retval == ERANGE) {

    puts("not vulnerable");

    exit(EXIT_SUCCESS);

  }

  puts("should not happen");

  exit(EXIT_FAILURE);

}



$ gcc ghosttest.c -o ghosttest

$ ./ghosttest



패치를 해야한다면 vulnerable 패치하지 않아도 된다면 not vulnerable 출력된다.



패치를 하는 방법


ubuntu의 경우

# sudo apt-get clean

# sudo apt-get update

# sudo apt-get upgrade

# sudo reboot


기타 os는 아래 웹을 참고

CentOS http://lists.centos.org/pipermail/centos/2015-January/149413.html

Debian https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776391

Redhat https://access.redhat.com/articles/1332213

Ubuntu http://www.ubuntu.com/usn/usn-2485-1/



출처 및 참고사이트

http://www.cyberciti.biz/faq/cve-2015-0235-patch-ghost-on-debian-ubuntu-fedora-centos-rhel-linux/


설치된 패키지 확인 방법


$ dpkg --get-selections



설치된 패키지의 설치경로 확인방법


$ dpkg -L 패키지 이름



설치된 패키지의 버전 확인방법


$ dpkg -l 패키지이름



+ Recent posts