linux class 1 페이지

본문 바로가기
사이트 내 전체검색


회원로그인

linux class

openssh / selinux

페이지 정보

작성자 admin 작성일16-01-07 18:39 조회544회 댓글0건

본문

공식사이트 : www.openssh.com
SSH는 공개키 암호화 기법에 기반을 두고 있다.
*. 공개키
누구나 받아서 사용할 수 있는 키

*. 개인키
공개키로 암호화해서 보낸 메세지를 해석할 수 있는
유일한 키


모든 암호체계는 기본적으로 두 단계가 있다.

1. 평문 (key 사용) -> 암호문 ; 암호화
2. 암호문 (key 사용) -> 평문 ; 복호화

공개호스트키
SSH 서버를 설치할때 만드는 키, 클라이언트가 다른 ssh 서버와
구별할수 있는 키.
다음에 접속할 때 이키를 가지고 그 서버가 지난번에 접속한 서버와
같은 서버라는것을 확인한다.
만약 클라이언트가 가지고 잇는 known-host list 에 서버가 보낸 공개키가
존재하지 않으면 클라이언트 프로그램은 사용자에게 ' 이런 호스트의 키가 도착했는데
현재 신뢰할수 있는 리스트에 없으니 know-host list 에 넣을까요? 라는 경고 메세지를 보여준다.

최초로 ssh 서버에 접속했다면 known-host list 에 없는것은 당연하므로 이 메세지는 뜨게된다.


클라이언트 인증방법은 비밀번호 기반 인증기법과 비비밀번호 기반 인증기법 이 두가지로 나눌수 있다.
SSH 를 사용하는경우는 일반적으로 비비밀번호 암호화 기법을 사용한다. 비비밀번호 암호화 기법은 인증방법에 따라 호스트 인증기법(잘 사용되지는 않는다)과 공개키 인증 기법이 있다.

1. 호스트 인증기법
SSH Client ---> 클라이언트 공개키 --> SSH 서버
known host list 확인.
<----- 인증 결과 --------

- 클라이언트는 서버에게 자신이 만든 public 키를 보내고 서버는 클라이어언트가 보낸 public 키가 신뢰할수 있는 host list 에 있는지를 찾게되고 host list 에 있다면 서버는 클라이언트를 신뢰하고 접속을 허용한다.

2. 공개키 인증기법

1.SSH Client --- 클라이언트 공개키 -----> SSH 서버
Authorized_keys 확인
2. <-- 공개키로 암호화된 랜덤값 --
3. --- 128비트 MD5 해쉬 ---->
4. <-- 사용자 인증 ---------

1. 클라이언트는 자신의 공개키를 서버에 보낸다.
2. 서버는 임의의 256비트 랜덤값을 하나 만든후 클라이언트로 부터 받은
공개키로 암호화해서 클라이언트로 전송
3.클라이언트는 해석된 랜덤값을 128bit MD5 해시값을 만들어서 서버에
보내고 서버는 다시 자신이 만든 랜덤값을 128bit MD5 해쉬값으로 만든후
클라이언트가 보낸값과 비교하여 일치하면 사용자 인증이 된다.

OpenSSH 설치
설치는 rpm 파일을 설치하거나 소스파일을 직접 컴파일하여 설치할 수 있다.
소스를 직접 컴파일하여 설치한다면 openssh 를 이해하는데 좀 더 도움이 될것이다.
최신버전을 다운르드 하여 설치한다.
[root@centos1 ~]# rpm -qa | grep ssh
openssh-4.3p2-29.el5 <== open ssh 설정파일, 문서파일, 도움말파일, 키생성파일
openssh-askpass-4.3p2-29.el5 <== (?)
[root@centos1 ~]# rpm -ql openssh-askpass
/etc/profile.d/gnome-ssh-askpass.csh
/etc/profile.d/gnome-ssh-askpass.sh
/usr/libexec/openssh/gnome-ssh-askpass
/usr/libexec/openssh/ssh-askpass
openssh-clients-4.3p2-29.el5
openssh-server-4.3p2-29.el5

기존에 설치된 패키지는 모두 삭제한 다음 새로운 버전의 패키지를 설치한다.
[root@centos1 ssh]# yum erase openssh-clients
[root@centos1 ssh]# yum erase openssh <= 의존성에 걸려있는 나머지 두가지 패키지도 삭제한다.

기존에 설치된 ssh를 다 제거한후 다운로드 받은 소스파일을 적당한 디렉토리에 압축을 풀고 컴파일한다.

#./configure --prefix=/usr/local/openssh-5.6p1 --sysconfdir=/etc/ssh --with-lastlog=/var/log/lastlog --with-md5-passwords
#make && make install

root /usr/local/openssh-5.6p1/bin]# ls
scp sftp slogin ssh ssh-add ssh-agent ssh-keygen ssh-keyscan

scp : 안전한 romote copy utility
ssh : ssh client
ssh-agent : RSA 형태의 인증방법을 수행한다.
ssh-keygen : ssh 를 위한 생성키, RSA 키를 생성한다.

ssh client 사용방법
ssh -l 계정명 접속할host주소

안전한 통신을 위한 조건.

1. 보내고자 하는 내용을 특정 사람만 읽을수 있어야 한다.
2. 받는 사람은 보낸 사람에 대해서 신뢰를 할 수 있어야 한다.
3. 주고받는 데이터가 변형되지 않아야 한다.

암호화 방법은 크게 비밀키 암호화 방법과 공개키 암호화 방법으로
나눌 수 있다.

비밀키를 사용해서 암호화를 하는경우에는 보내는 사람과 받는 사람 둘다
암호 해독키를 가지고 있어야 한다.
원래데이터 --- 대칭키 ---> 암호화된 데이터 ----- 대칭키 ---> 원래데이터
(encryption) (decryption)
데이터 송신측과 수신측에서는 똑 같은 해독키를 가지고 있어야 하므로
적어도 한번은 키를 전송해줘야 하는것이 단점이다.
키를 전송하는 키가 해커에 의해 노출되게 되면 안전한 데이터전송을 보장 받을 수
없다.

공개키암호화 방법은
두사람이 다른 키를 가지고 메시지를 주고 받기때문에 비대칭적 암호화라고 한다.
공개키는 여러 사람이 모두 공유할 수 있는 키이다.
공개키에 기반한 암호화 구조를 PKI 라고 한다.

1. 개인키와 공개키를 만든다.
2. 공개키를 공개한다. -----------------> 3. 공개키로 데이터를 암호화 한다.
5. 개인키로 데이터를 해석한다. <---------------- 4. 공개키로 암호화된 데이터를 보낸다.

컴파일해서 설치하게 되면 필요한 키가 아래처럼 /etc/ssh 디렉토리에 자동으로 생성이 된다.
[root /usr/local/openssh-5.6p1/bin]# ls /etc/ssh
moduli ssh_host_dsa_key.pub ssh_host_rsa_key
ssh_config ssh_host_key ssh_host_rsa_key.pub
ssh_host_dsa_key ssh_host_key.pub sshd_config
You have new mail in /var/spool/mail/root
[root /usr/local/openssh-5.6p1/bin]#

rpm 패키지를 설치한 경우에는 /etc/init.d/sshd 데몬스크립트를 실행시키면 키가 자동으로 생성이 된다.

*. 키를 수동으로 생성하려면
RSA 키와 DSA키 둘다 생성해야 한다. (클라이언트가 어떤것을 사용할지 모르므로.)

*. 암호없이 로그인
$ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/chulsoo/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): xxxxxx
Enter same passphrase again: xxxxxx
Your identification has been saved in /home/chulsoo/.ssh/id_rsa.
Your public key has been saved in /home/chulsoo/.ssh/id_rsa.pub.
The key fingerprint is:
65:ac:e5:70:9a:b2:4f:25:c4:d3:0270:9a:b2:4f:25 chulsoo@localhost

id_rsa 개인키
id_rsa.pub 공개키

생성된 파일을 서버의 자기계정으로 복사 (~/.ssh/authorized_keys 또는 authorized_keys2)


====================================================================

SELinux

설정파일 : /etc/sysconfig/selinux

SELINUX = value

value 는 세가지 값이 허용된다.
enforcing - SELinux 모듈이 보안관련기능을 감지하고 제한하며 로그를 남긴다.
permissive - SELinux 모듈이 시스템 보안관련 기능을 감지하면 허용하며 로그를 남긴다.
disable - SELinux를 사용하지 않는다.

SELINUXTYPE = value
value 는 두가지 값이 허용된다.

trageted - target 으로 설정된 네트워크 데몬만 SELinux 를 적용한다.
strict - Full SELinux protection.

이 파일 설정을 변경한 경우 rebooting 을 해야 바뀐 설정이 적용된다.


selinux 관련 utility.

[root /etc/selinux]# sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
[root /etc/selinux]#

setenfoce - SELinux 설정 변경. reboot 없이 바로 적용된다.

형식)
setenforce [ Enforcing | Permissive | 1 | 0 ]

ex) setenforce 1 <== SELinux enforcing 모드로 사용
setenforce 0 <= SELinux premisive 모드로 사용
SELinux boolean 설정
ftp_home_dir : 사용자 홈 디렉토리에 읽기/쓰기 권한설정
allow-ftpd_full_acess : ftp 서버에 로그인/읽기/쓰기 모든 access 허용
allow_ftpd_use_nfs : ftp 버서에 nfs 파일 접근 허용
allow_ftpd_anon_write : 공개 ftp에 쓰기를 허용

설정방법

setsebool -P allow_ftpd_full_access=1 ; <== ftp 서비스에 대해서 읽기/쓰기 등 모든권한 부여.
값이 0 이면 권한을 주지 않음을 의미한다.

설정값을 확인하는것은
getsebool 로 확인한다.
ex) getsebool -a
getsebool ftp_home_dir

댓글목록

등록된 댓글이 없습니다.


접속자집계

오늘
52
어제
34
최대
611
전체
448,027
개인정보취급방침 서비스이용약관 twoseven.kr All rights reserved.
상단으로