http://www.chiark.greenend.org.uk/
텔넷 클라이언트 설치
#yum install telnet
텔넷 서버 설치
#yum install telnet-server
텔넷 데몬 활성화
xinetd.d폴더에서 telnet 파일을 찾아서 disable에 yes를 no로 변경
#vi /etc/xinetd.d/telnet
[telnet 파일 내용]
# default: on
# description: The telnet server serves telnet sessions; it uses
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = yes
|
xinetd 재시작
#service xinetd restart
텔넷 접속 해본다.
#telnet localhost
login :
Password :
1. 서버와 클라이언트 타입을 설치합니다.
# yum -y install openssh-server openssh-clients openssh-server-sysvinit
2. SSH 데몬을 시작프로그램으로 등록하고 실행합니다.
# chkconfig sshd on
# service sshd start
3. 22번 포트를 개방해줍니다.
# netstat -tulpn | grep :22
4. 방화벽 세팅
# vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT // 추가해줍니다.
# service iptables restart
5. OpenSSH 서버 환경설정 / 특별히 필요한 경우에만 설정하시면 됩니다.
# vi /etc/ssh/sshd_config
PermitRootLogin no // root 계정으로 로그인 금지
AllowUsers tom jerry // 톰과 제리만 접속시키고자 할 경우
Port 1235 // 포트를 변경하여 사용 할 경우
# service sshd restart
Putty같은 터미널 접속 프로그램으로 본인의 아이피 또는 도메인으로 테스트를 해봅니다.
잘 된다면 이제 서버컴은 모니터를 떼어버리구 구석에 잘 모셔둡니다...ㅎ
OpenSSH 의 설치방법(소스설치)
|
openssh 설치를 위해서는 zlib 와 openssl를 설치 해야 한다.
① 최신 버전 다운로드 openssh - http://www.openssh.com openssl – http://www.openssl.org zlib – http://zlib.net
② zlib 설치
sudo apt-get install libc6-dev
#tar xvfz zlib-xxxx.tar.gz #cd zlib-xxxx #./configure #make #make test #make install
③ openssl 설치
(바) #tar xvfz openssl-xxxx.tar.gz #./config #make #make test #make install
④ openssh 설치 (사) #tar xvfz openssh-xxxx.tar.gz #cd openssh-xxxx #./configure --prefix=/usr/local/openssh --with-ssl-dir=/usr/local/ssl #make #make install [실행] #/usr/local/openssh/sbin/sshd #cp /usr/local/src/openssh-xxxx/contrib/sshd.pam.generic /etc/pam.d/sshd [bin]디렉토리 복사 #cp -p /usr/local/openssh/bin/* /usr/bin/ $ssh-keygen -d. $HOME/.ssh $ cat identity.pub >>authorized_keys $ cat id_dsa.pub >>authorized_keys
inetd 방식으로 데몬이 서비스 될 수 있도록 /etc/xinetd.d/ 디렉토리에 다음과 같은 파일을 작성한다.
(아) # vi /etc/xinetd.d/ssh -------------------------------------------------------------------------- service ssh { disable = no flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/sshd server_args = -i log_on_failure += USERID }
inetd 방식으로 앞으로 데몬이 실행될 수 있도록 xinetd를 실행시킴
(자) #/etc/rc.d/init.d/xinetd restart
SSH2 의 설치방법(소스설치)
1 . SSH2 설치 전에리눅스 배포판을 everithing으로 설치를 했다면 openSSH가 설치 되어 있어서 SSH2를 설치 하기 전에 먼저 rpm 파일로 설치된openSSH를 제거해 줘야 한다 ssh2설치시에 openSSH와 충돌이 일어 나지는 않는데 설치 후 사용할 때 충돌을 일으킬 수 있기 때문에 반드시 깔끔하게 제거해 줘야한다. 자신의 시스템에 openSSH가 설치 되어 있는지 확인하기위해서 아래처럼 해본다 (차) # rpm -qa|grep ssh (카) openssh-clients-3.6.1p2-34 (타) openssh-askpass-gnome-3.6.1p2-34 (파) openssh-3.6.1p2-34 (하) openssh-askpass-3.6.1p2-34 (거) openssh-server-3.6.1p2-34 (너) (더) # rpm -e `rpm -qa|grep ssh` 위와 같은 방식으로 검색된 모든 패키지를 삭제한다. openssh 패키지를 삭제하면 /etc/ssh 디렉토리가 빈 디렉토리가 아니라서 제거할 수 없다는 에러가 나기 때문에 /etc/ssh를 "rm -rf" 명령으로 삭제를 해 줘야 한다.
2. ssh2 설치SSH2는 http://www.ssh.fi 에서 다운 받을 수 있다. configure (러) # ./configure --with-tcp-wrappers (머) # make (버) # make install (서) SSH2가 설치 완료되면 /etc/ssh2, /usr/local/bin, /usr/local/sbin, /usr/local/man 디렉토리들에 SSH2관련 파일들이 생긴다. ssh2가 설치 됨과 동시에 ssh2의 명령어들이 포함되어 있는 /usr/local/bin과 /usr/local/sbin이 명령어 PATH에 자동추가 된다.
3. ssh2를 위한 xinetd 설정ssh2를 xinetd로 제어하고 inetd 모드로 작동시키기 위해서는 간단한 작업을 해줘야 된다./etc/xinetd.d 디렉토리에 ssh 라는 이름으로 아래와 같이 작성하자
. 위와 같이 작성하고 저정했다면 ssh2의 가동을 위해서 xinetd를 재 실행해야 된다.(어) (저) # /etc/rc.d/init.d/xinetd restart 그럼 ssh2 서버가 제대로 작동하는지 테스트 해 보기 위해서 다음과 같이 접속을 해 보자.(처) (커) # ssh -l 사용자명 localhost '-l' 사용자명으로 지정하지 않으면 현재 접속해 있는 사용자로 로그인 시도 한다. ssh2는 기본적으로 root 로 접속할 수있게끔 설정되어 있다.
|
SSH 클라이언트의 기본적인 사용 방법
|
openSSH 클라이언트는 ssh1,ssh2 프로토콜을 모두 지원하므로, 서버가 지원하는 ssh 프로토콜에 상관없이 접속할수 있다. 예를 들어, 접속할 ssh서버가 ostsc.homelinux.net 이고 계정명이 chaeya 라면 (터) [rot@tsc13 ~] # ssh -l chaeya ostsc.homelinux.net
또는 (퍼) [root@tsc13 ~] # ssh chaeya@ostsc.homelinux.net
이제 다음과 같은 메세지와 함께 접속이 진행될 것이다. The authenticity of host 'ostsc.homelinux.net (210.183.235.13)' can't be established. RSA key fingerprint is 4b:9e:5a:fb:5a:5a:f4:2e:8c:70:69:d3:c8:65:6e:ff.Are you sure you want to continue connecting (yes/no)? yes
위 메세지는 ssh로 해당 서버에 처음 접속할때만 나오는 메세지이며, 접속할 서버의 호스트 키가 ~/.ssh/known_hosts (ssh2의 경우 known_hosts2) 파일에 저장된다. yes로 대답해주면, 다음과 같이 계정 암호를 물어오고, 이제 텔넷과 동일한 작업을 할수 있다. (허) Warning: Permanently added 'ostsc.homelinux.net,210.183.235.13' (RSA) to the list of known hosts.chaeya@ostsc.homelinux.net's password:
####################### 2. 소스설치 #######################
참고: 기타 설치시 문제는 http://www.openssh.org/faq.html#3.2 참고할것.
1) 최근 파일 다운로드 #> wget http://openbsd.md5.com.ar/pub/OpenBSD/OpenSSH/portable/http://openbsd.md5.com.ar/pub/OpenBSD/OpenSSH/portable/openssh-4.0p1.tar.gz
2) 컴파일 및 설치 #> ./configure --prefix=/usr/local/ssh --sysconfdir=/etc/ssh --with-md5-passwords
#> make
#> make install
#> vi /etc/rc.d/rc.local # ------------ ssh-server Daemon 자동시작 ----------- # (ssh-Server 프로세스 중지방법: killall sshd ) /usr/local/ssh/sbin/sshd
################################### 3. ssh-Server 설정파일 수정방법 ###################################
1) ROOT로 ssh 접속 막는 방법 #>vi /etc/ssh/sshd/sshd_config -> PermitRootLogin no #>/etc/init.d/sshd restart
2) 사용자의 상위디렉토리 이동 방지 상위디렉토리관련은 현재 openssh에서는 없고, 패치형태로 존재하는데 http://chrootssh.sourceforge.net/를 이용.
3) sshd 접속 유지 #>vi /etc/ssh/sshd_config 적당한 위치에 ClientAliveInterval 삽입
4). telnet xxxx 22 시 ssh버전 뜨는 것 방지 -> 소스 설치시 컴파일전에 version.h 파일을 적당히 수정.
5). ssh 접속 포트 변경 #>vi /etc/ssh/sshd/sshd_config Port 22 ---> Port 2222 #>/etc/init.d/sshd restart
6). ssh로 다른곳 접속 가능하게 하기 접속하려는 곳을 전에 접속할때 도메인네임으로 혹은 로컬 네트웍에서 호스트네임으로 접속해서 생긴 현상으로 ssh의 설정파일에 동일한 호스트의 정보가 겹쳐서 일어나는 현상이므로, known_hosts안의 내용을 삭제하고 다시 접속하면 됨. 7). ssh1이 동작하는지 ssh2가 동작는지 알수 있는 방법 /etc/ssh/sshd_config파일에 Protocol 2 이면 ssh2 임. 또는 telnet localhost 22 로 연결해보면 알수 있음.
8). 웹으로 ssh 사용 방법 다운: http://javassh.org/ 에서 접속하여 다운로드 데모: http://webssh.decf.berkeley.edu/ http://hopper.mathcs.wilkes.edu/~mcsclub/ssh/ 다운: http://www.appgate.com/mindterm/ 컴파일: http://mindterm.appgate.com/pipermail/mindterm-users/2002q1/000489.html
9). root를 제외한 다른 사용자의 ssh접속을 막기 - root에게 원격접속을 허용하지 않는 것은 보안의 제 1원칙 - /etc/pam.d/sshd 이 파일을 수정 #> vi /etc/pam.d/sshd #%PAM-1.0 auth required /lib/security/pam_listfile.so item=user sense=allow file=/etc/sshusers onerr=succeed 위의 내용을 맨 윗줄에 추가하신 후 #> vi /etc/sshusers ( 접속을 허용할 계정을 한줄에 하나씩 기입) linuxer
10) iptables 를 이용한 방화벽 설정 방법
가. ssh의 취약점을 통한 root 권한 획득을 위해 불량접근 IP 잠금처리 #> iptables -A INPUT -s 204.60.81.110 -p tcp --dport 22 -j DROP
나. ssh의 취약점을 통한 외부로의 접근 봉쇄(로컬 --22-->외부) #> vi /etc/rc.d/rc.local [Enter] # ssh의 취약점을 통한 외부로의 접근 봉쇄(로컬 --22-->외부) /sbin/iptables -A OUTPUT -s 210.118.118.118 -p tcp --dport 22 -j DROP #>reboot
다. 설정 내역 열람 #> iptables -l [Enter]
11) ssh에서 자기계정 내용외에는 볼수 없게 하는 방법 ( for 웹서버운영시) #> cd /home [enter] #> chmod 750 계정명 [enter] #> chown 계정명.nobody 계정명 [enter]
12. ssh 접속 사용자별 제한 설정 #> vi /etc/ssh/sshd_config
가. AllowGroups :ssh 로그인을 해당 그룹으로 제한한다. 각각의 그룹명은 공백으로 구분한다. 와일드 카드(* 와 ?)를 사용할수 있다.
나. AllowUsers :ssh 로그인을 해당 유저로 제한한다. 사용법은 AllowGroups과 같다.
다. DenyGroups :AllowGroups의 반대 역할을 한다. 지정된 그룹은 로그인이 거부된다.
라. DenyUsers :AllowUsers의 반대 역할을 한다. 지정된 사용자는 로그인이 거부된다. 예) DenyUsers admin testman invain
#> /etc/init.d/sshd restart
|