SSH (Secure Shell)
http://www.openssh.com/
- 원격머신에 로긴하여 그 안에 명령들을 실행하는 원격접속 서비스
- 패킷 전송시 암호화하여 전달
- 기본적으로 설치되어 있다.
- 즉, ssh는 rlogin, esh, telnet 명령의 보안대체로 원격 컴퓨터로 로그인시 패킷을 RSA 키를 이용하여 원격머신과 통신하기 때문에 안전하다.
SSH 패키지 확인 및 구동
[root@server2 ~]# rpm -qa | grep ssh openssh-server-4.3p2-26.el5 openssh-4.3p2-26.el5 openssh-clients-4.3p2-26.el5 openssh-askpass-4.3p2-26.el5 [root@server2 ~]# service sshd restart or /etc/rc.d/init.d/sshd start/stop/restart sshd 를 정지 중: [ OK ] sshd (을)를 시작 중: [ OK ] |
SSH 환경설정
[root@server3 ~]# pwd /root [root@server3 ~]# cd .ssh [root@server3 .ssh]# vi known_hosts - 지금까지 ssh접속을 통해 전달된 공개키들이 저장되어 있다. [root@server2 ~]# cd /etc/ssh [root@server2 ssh]# ls moduli ssh_host_dsa_key ssh_host_key ssh_host_rsa_key sshd_config ssh_config ssh_host_dsa_key.pub ssh_host_key.pub ssh_host_rsa_key.pub sshusers [root@server2 ssh]# vi ssh_host_dsa_key - DSA PRIVATE KEY [root@server2 ssh]# vi ssh_host_dsa_key.pub - 공개키 ------------------------------------------ - ssh 환경설정파일 [root@server2 ssh]# vi ssh_config - ssh_config,v 1.21 2005/12/06 22:38:27 [root@server2 ssh]# vi sshd_config - sshd_config,v 1.73 2005/12/06 22:38:28 #Port 22 - sshd 가 사용할 포트를 지정한다. 사용하지 않는 다른 포트로 지정할 수 있다. #Protocol 2,1 Protocol 2 - 프로토콜 버전을 지정한다. 기본값은 2이다. #ListenAddress 0.0.0.0 - sshd 데몬이 서비스할 네트워크 대역을 지정한다. #ServerKeyBits 768 - 서버키의 비트수를 정의한다. 최소값은 512 이고 기본값은 768이다. #LogLevel INFO - 로그레벨을 지정하는 옵션이다. #LoginGraceTime 2m - 사용자가 로그인에 실패하였을 경우 서버가 연결을 끊는 시간이다. #RSAAuthentication yes - RSA 인증을 사용한다는 옵션이다. #PermitEmptyPasswords no - 패스워드 인증시 서버가 비어있는 패스워드를 인정하는 옵션으로 기본값은 no이다. #AuthorizedKeysFile .ssh/authorized_keys - 패스워드를 입력하지 않고 ssh로 접속할 때 사용 #X11Forwarding no X11Forwarding yes - 원격에서 X11 포워딩을 허용하는 옵션으로 yes로 설정하면 xhost 보다 안전한 방법으로 원격 X 프로그램을 사용 할 수 있다. #PermitRootLogin yes PermitRootLogin no - root 사용자 접속을 허용하는 설정이다. no로 하면 root로 접근이 거부된다. #UsePAM no UsePAM yes - /etc/pam.d/sshd 를 사용하겠다는 의미 |
SSH 원격 접속 & 명령
- SSH 원격 접속 [root@server3 ~]# ssh 10.10.33.2 - 10.10.33.2 의 root 사용자로 로그인을 시도한다. [root@server3 ~]# ssh 10.10.33.2 -l test1 - 10.10.33.2 의 test1 사용자로 로그인을 시도한다. [root@server3 ~]# ssh test1@10.10.33.2 - 10.10.33.2 의 test1 사용자로 로그인을 시도한다. ------------------------------------------ - SSH 원격 명령 [root@server3 ~]# ssh 10.10.33.2 ls -l /root - 10.10.33.2 의 /root 디렉토리에 ls -l 명령을 출력한다. root@10.10.33.2's password: |
SSH 원격 복사
- SCP & SFTP 모두 SSH 포트를 이용한다.
- SCP 를 이용한 방법 [root@server3 ~]# scp 10.10.33.2:/root/Desktop/test.txt /root/Desktop - 10.10.33.2 의 /root/Desktop 디렉토리에 있는 test.txt 파일을 /root/Desktop 디렉토리에 복사한다. root@10.10.33.2's password: - 10.10.33.2 의 root 패스워드를 입력한다. ------------------------------------------ - SFTP 를 이용한 방법 [root@server3 ~]# sftp 10.10.33.2 Connecting to 10.10.33.2... root@10.10.33.2's password: sftp> ls Desktop anaconda-ks.cfg dump.txt install.log install.log.syslog john-1.7.0.2 john-1.7.0.2.tar.gz swapfile vmware vmware-distrib sftp> help Available commands: cd path Change remote directory to 'path' lcd path Change local directory to 'path' chgrp grp path Change group of file 'path' to 'grp' chmod mode path Change permissions of file 'path' to 'mode' chown own path Change owner of file 'path' to 'own' help Display this help text get remote-path [local-path] Download file - 중략 sftp> get dump.txt - 파일을 다운로드 할 때 사용하는 명령어 Fetching /root/dump.txt to dump.txt /root/dump.txt 100% 110MB 3.7MB/s 00:30 sftp> exit [root@server3 ~]# |
패스워드를 입력하지 않고 ssh로 접속
[root@server3 ssh]# pwd /etc/ssh [root@server3 ssh]# vi sshd_config #AuthorizedKeysFile .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys - 패스워드를 입력하지 않고 ssh로 접속할 때 사용하나 기본 설정이기 때문에 꼭 해줄 필요는 없다. [root@server3 ssh]# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): - 패스워드를 입력하지 않으면 패스워드 없이 접속이 가능하다. 하지만 패스워드를 입력하면 루트 패스워드가 아닌 여기서 입력한 패스워드로만 접속이 가능하다. Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: 6e:49:96:10:ff:d3:61:44:9d:2d:75:5c:7a:06:4e:0f root@server3.co.kr [root@server3 ssh]# cd /root/.ssh [root@server3 .ssh]# ll -rw------- 1 root root 1671 1월 30 16:33 id_rsa - 비밀키 -rw-r--r-- 1 root root 400 1월 30 16:33 id_rsa.pub - 공유키 -rw-r--r-- 1 root root 1574 1월 29 15:18 known_hosts [root@server3 .ssh]# scp id_rsa.pub 10.10.33.2:/root/.ssh/authorized_keys - id_rsa.pub 파일을 10.10.33.2의 /root/.ssh 디렉토리에 authorized_keys 라는 파일명으로 복사한다. - 2명 이상일 경우에는 authorized_keys의 파일명을 authorized_keys, authorized_keys1, authorized_keys2 등으로 해주면 된다. |
ssh 접속 제한
root 접속 제한 [root@server3 ~]# vi /etc/ssh/sshd_config #PermitRootLogin yes PermitRootLogin no - root 사용자 접속을 허용하는 설정이다. no로 하면 root로 접근이 거부된다. [root@server3 ~]# service sshd restart 일반사용자 접속제한 [root@server3 ~]# vi /etc/ssh/sshd_config DenyUsers test1 - test1 사용자만 접속을 거부한다. - 참고 - 기본적으로 ssh는 모든 사용자의 ssh접속을 허용한다. - 옵션 (해당 그룹, 유저는 space로 구분한다.) AllowGroups : 해당 그룹에 속한 사용자만 접속할 수 있다. AllowUsers : 열거한 사용자만 접속할 수 있다. DenyGroups : 전체 사용자의 접속을 허용하고 명시된 그룹은 접속에서 제외된다. DenyUsers : 전체 사용자의 접속을 허용하고 명시된 유저의 접속은 제외된다. - 적용 예 AllowUsers test1 test2 - test1, test2 이라는 유저만 접속을 허용 space bar로 구분 DenyUsers test1 - 모든 유저의 접속을 허락하고 test1 라는 유저의 접속을 막는다. [root@server3 ~]# service sshd restart |
'Linux > 보안' 카테고리의 다른 글
보안 체킹 프로그램 - rootkit hunter (0) | 2009.02.03 |
---|---|
보안 체킹 프로그램 - chkrootkit (0) | 2009.02.03 |
보안 체킹 프로그램 - sxid (0) | 2009.02.03 |
네트워크 서비스 보안 - tcpdump (0) | 2009.01.30 |
네트워크 서비스 보안 - TCP_Wrapper (0) | 2009.01.30 |
사용자 보안 - PAM (0) | 2009.01.29 |