svnserve -d -r /home/svn/
Category Archives: Linux / Unix
Linux MD5 passwd hash analysis
이전 포스트에서 shadow 파일에대해 살펴봤는데
openssl로 다음과같이 shadow에 MD5로 생성되는 같은 단락(?)을 만들수 있다
openssl passwd -1 -salt salt testpasswd
$1$salt$GjASc4pDEk5p9FgnhQbfW/
salt 값이 어떻게 들어가는지 알아보기위해 openssl 라이브러리의 apps/passwd.c 를 살펴보았다. 살펴볼 함수는
static char *md5crypt(const char *passwd, const char *magic, const char *salt)
으로 인자로 패스워드, 매직값(1,apr1) , salt 값 을 받음을 알수있다.
먼저 “[PASSWD][SALT][PASSWD]” 로 MD5 로 해싱을 하고
“[PASSWD]$[MAGIC]$[SALT]”이랑 위 해시값이랑 적절하게 섞어서 그걸또 1000번 더 해싱하던데
자세한건 직접 소스 보는게 좋을꺼같다. (볼일도 없을거같지만)
으으 존더리퍼 만세 …
Linux passwd and shadow and group 에 대한 고찰 ?!
passwd 권한 644 (root:root)
root:x:0:0:root:/root:/bin/bash
test:x:1001:1002:,,,:/home/test:/bin/bash
[ID]:[PASSWD]:[UID]:[GID]:[GECOS]:[USERDIR]:[USERSHELL]
오래된 리눅스 or 유닉스는 PASSWD 칸이 직접 매겨져있다.
요즘은 PASSWD만 따로 shadow 파일로 만들어서 쓰는데
뭐 옛날에는 해싱을 못풀어서 패스워드파일이 공개되도 별 문제 없었다는데
이젠 개나소나 다푸니까 그거 자체도 보호해야된다 싶어서 일반유저는 읽을수도 없다나 뭐라나…
예를들어 test아이디는 암호가 shadow파일에 있으며 UID는 1001이며 GID는 1002이다 홈디렉토리는 /home/test 이며 쉘은 /bin/bash 를 쓴다 정도?
GECOS는 사용자 정보를 저장하는데
Full Name: Only
Room Number []: 105
Work Phone []: 010
Home Phone []: 055
뭐 이런거? 위대로 쓰니까 GECOS 에 Only,105,010,055 이렇게 들어가있네
passwd 파일을 변경시킬수있는 명령어들로는
adduser – 유저 생성시
deluser – 유저 제거시
usermod – 유저 변경시
chfn – GECOS 변경시
기타등등 (만들기나름이겠지뭐)
shadow 권한 640 (root:shadow)
root:!:14606:0:99999:7:::
test:$6$j9YC72KG$ysrTy/UpuPez62gWPp/P0.glzzGm9JnpKmQ3TDn1ab..uT8TvHEpv9.IISjdjhQut4CXgA.RieQtVAPtiLq0w.:14643:0:99999:7:::
– 아이디
– 해시된 패스워드
– 마지막 패스워드 바꾼날짜
– 패스워드 변경까지 남은기간 (최소)
– 패스워드 변경까지 남은기간 (최대)
– 패스워드 만료전 경고기간
– 패스워드 만료후 사용 가능한 기간
– 계정 만료일
– 사용치 않음
패스워드를 중점적으로 관리하기위해 따로 떨어져나온 파일이다 랄까 ..
해시된 패스워드에 대해 자세히 쓰자면
$6$j9YC72KG$ysrTy/UpuPez62gWPp/P0.glzzGm9JnpKmQ3TDn1ab..uT8TvHEpv9.IISjdjhQut4CXgA.RieQtVAPtiLq0w
으잌 매우길다 ㅋㅋ ($는 토큰이다)
첫번째는 해시방법 0-DES, 1-MD5, 2-Blowfish, 5-SHA-256, 6-SHA512 (6이므로 SHA512로 되어있음을 알수있다)
두번째는 SALT – 사전파일크랙을 방지하기위해 암호문에 추가하는 문자열.
세번째는 해시된 문자열 (MD5라고해서 MD5형식이 아니다… 위 해시방법을 Base 로 조금 다른 해시방법)
passwd 명령어를통해 조작할수있다.
group 권한 644 (root:root)
root:x:0:root,test
test:x:1002:
[GROUP_NAME]:[GPASSWD]:[GID]:[USER_LIST]
이런형태이며
USER_LIST 에는 여러명의 유저가 들어갈수있으며 , 콤마로 구분된다.
변경할수있는 명령어들은
groupadd groupdel groupmod 이런거 ?!
gshadow도 있는데 잘 안쓰이며 위 shadow와 비슷하므로 넘어간다
VirtualBox 컴퓨터 켤때 자동으로 머신 돌리기
/etc/init.d/wsv
#!/bin/sh
user=”wsv”
PATH=/home/only/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
DESC=”Virtual Box Wsv”
NAME=wsv
SCRIPTNAME=/etc/init.d/$NAME
VM_NAME=”Wsv”
USERNAME=only
do_start()
{
su $USERNAME -c “VBoxManage startvm ${VM_NAME} -type headless”
}
do_stop()
{
su $USERNAME -c “VBoxManage controlvm ${VM_NAME} acpipowerbutton && sleep 5”
}
case “$1” in
start)
echo -n “Starting $DESC: $NAME”
do_start
echo “.”
;;
stop)
echo -n “Stopping $DESC: $NAME”
do_stop
echo “.”
;;
restart|force-reload)
echo -n “not support”
;;
*)
echo “Usage: $SCRIPTNAME {start|stop|restart|force-reload}” >&2
exit 1
;;
esac
exit 0
뭐 이런식으로 ?
update-rc.d wsv defaults 99 1
맞나? (제일먼저 켜지고 제일먼저 꺼지게 )
뭐 하여튼 지금 이렇게 씀.
acpid 설치 필수 (안그러면 안꺼져 -_-)
ssh 키 가지고 로그인하기
ssh-keygen -t rsa
하면 저장위치묻고
그 키파일의 패스워드(로그인정보와 무관)
을 묻는다
fingerprint가 출력되면 제대로 생성된것.
아마 저장위치가 기본값으로 USER/.ssh/ 로 되어있을텐데
거기가보면
id_rsa
id_rsa.pub
가 생성되어있을텐데
간단하게 pub 이놈이 자물쇠 역할 (공개키) id_rsa가 열쇠역활(비밀키) 을 한다
id_rsa.pub를 authorized_keys로 이름을 변경하고
id_rsa를 클라이언트 부분으로 빼낸다. (아니면 거꾸로 authorized_keys이걸 서버에 업로드)
클라의 USER/.ssh/ 에 넣고
권한을 600 으로 준다음에
ssh-add 를 하게되면 패스워드를 묻는다.
위에 키 만들때 지정한 패스워드를 넣어주면 된다
이제 ssh host 로 패스워드 입력없이 접속할수 있다
(서버 설정에 따라 다르지만.. 일반적으로 키나 패스워드만 있으면 가능하다)