hann-blume
Linux - SSH (Secure Shell) 본문
SSH (Secure Shell)
- Linux 기본 원격 접속 서비스
(대부분의 Linux 배포판에서 기본지원하며, 방화벽 규칙 또한 자동으로 등록된다)
- 데이터 전송시 데이터를 암호화하여 전달
기본지원이기 때문에 확인만 해주면 된다.
# rpm -qa | grep openssh
방화벽을 확인해보면
# firewall-cmd --list-all
방화벽에 ssh가 자동으로 등록되어있다.
# netstat -antp | grep sshd
으로도 확인해보면 자동 등록되어있다.
내가 등록한것이아닌 시스템이 설치될때 자동으로 등록되는 정보를 확인하고자 할때는
# systemctl list-unit-files (| grep sshd)
sshd.service enabled
sshd 설정파일
설정파일 만지기전에 백업먼저.
# mkdir /backup
# mkdir /backup/ssh
# cp -p /etc/ssh/sshd_config /backup/ssh
(이런 설정파일을 백업해서 보관할 때는 p옵션을 사용해서
허가,소유권을 그대로 이전시켜준다)
# vi /etc/ssh/sshd_config
줄번호 표시
:set nu
17번째 줄
SSH는 기본으로 22번 포트사용
포트번호를 변경하고 싶으면 주석 해제하고 변경해주면된다.
ex) 2222
:wq
변경 후
# systemctl restart sshd
# firewall-cmd --permanent --add-port=2222/tcp
# firewall-cmd --reload
# firewall-cmd --list-all
완료 후 기존의 푸티 설정으로 접속을 시도하면 접속이 되지않는다.
푸티에서 SSH 포트를 2222로 변경해 주고 접속한다.
37번째 줄 #LoginGraceTime 2m
2분동안 아무 작업을 하지않으면 연결을 해제한다.(로그인 대기시간)
38번째 줄 #PermitRootLogin yes
원격에서 root의 직접적인 접속을 허용한다. 주석을 해제하고 no로 변경하고 root계정의 직접적인 접속이 불가능해진다.
PermitRootLogin no
# systemctl restart sshd
이후 같은연결로 푸티를 열고 root계정으로 접속을 시도하면
Access denied
접속이 거부된 것을 확인 할 수 있다.
따라서 일반 사용자로 접속 후 su root 명령으로 root로 접근하고 사용을 한다.
이 작업이 SSH의 기본적인 보안작업 중 하나이다.
root의 직접적인 접속을 차단하는 이유는 Linux는 Windows Server와는 다르게 관리자의 계정명이
root로 고정되어있고 변경이 불가능하다. 즉, Windows Server는 관리자 계정명을 변경할 수 있으므로
공격자는 관리자계정의 이름부터 알아내야하지만, Linux는 root 라는 고정된 관리자계정명의 암호만 알아내면
접속이 가능하다. 따라서 공격자가 이미 관리자의 계정명을 알고있기 때문에 root계정의 직접적인 접속을 차단한다.
123번째 줄 #Banner none
주석해제하고 Banner /backup/message
라고 경로설정을 해주고,
:wq
backup에 message라는 파일을 새로 만들어보자
# vi /backup/message
Wellcome HANN
# systemctl restart sshd
같은연결로 푸티창을 열고 로그인 계정명을 입력하면
message에 입력해준 메세지가 나타난다.
[Linux System에서 SSH 접속 하기]
a. ssh [server-IP] (현재 접속 된 계정을 갖고 SSH 접근 시도)
b. ssh -l [user-name] [server-IP] (지정한 사용자로 SSH 접속)
c. ssh [user-name]@[server-IP] (지정한 사용자로 SSH 접속)
a방식일 경우 현재 내가 접속하는 Client에 로그인한 계정이 기준
b,c방식일 경우 내가 직접 접속할 SSH Server에 존재하는 사용자 계정을 지정하여 접속하는 방식,
# ssh 192.168.131.100
yes
단, 현재 접속된 계정이 root인데 ssh서버가 root계정을 막아놨다면 접속이 불가능하다.
방법 : su [일반사용자계정]
로 일반 사용자계정으로 접근한 후에 다시 시도하면 정상적으로 가능하다.
여기서 알 수 있는 것은 root를 막아놨지만 root가 su로 일반사용자화 되어 접근하면 접근이 가능해지는
단점이 나타난다. 때문에 a 방식은 잘 사용하지 않는다.
$ exit로 ssh나가고
다시 $ exit로 일반사용자 나가기.
# ssh -l hann 192.168.131.100
정상적인 접근이 된다.
# ssh hann@192.168.131.100
[SCP (SSH + CP)]
- 원격지(시스템간) 데이터 복사
- 기준설정 (Client - server) 역할
<Client가 Server에서 데이터를 복사해 가져올 때> : Client에서 작업을 실행
scp [접속할계정명]@[Server-IP]:[복사할Data] [복사된 Data를 저장 할 위치]
ex)
scp hann@192.168.131.100:/tmp/A /test
<Server가 Client 로 데이터를 복사해서 보낼 때> : Server에서 작업을 실행
scp [복사할Data] [접속할계정명]@[Client-IP]:[복사된 Data를 저장 할 위치]
ex)
scp /tmp/B hann@192.168.131.150:/test
chown .hann /test
chmod 775 /test
ls -ld
소유권을 안바꿔주는 작업이 아닌 단순히 other에게 퍼미션 7을 주게되면 보안적으로 문제가 되기때문에
/test의 GID를 hann로 변경해서 hann를 그룹으로 묶어주고 그룹권한만 높여준후에 가져온다.
여기까지 SSH 에 대한 설명이 끝났다.
'Linux' 카테고리의 다른 글
Linux - FTP (File Transfer Protocol) (0) | 2020.03.21 |
---|---|
Linux - VNC (Virtual Network Computing) (0) | 2020.03.21 |
Linux - Telnet (0) | 2020.03.21 |
Linux - DCHP FailOver (0) | 2020.03.21 |
Linux - DHCP (Dynamic Host Configuration Protocol) (0) | 2020.03.21 |