본문 바로가기
모의해킹 침해대응 과정/Liunx 관리

SSH server / day 22

by 알거음슴 2021. 4. 26.

Open SSH

기본적으로 내장되어있는 암호화 통신, SSH 관련 명령어들은 모두 영향을 받는다 ( ssh, scp, sftp )

sshv1 의 겨우 크랙이 될 수 있음으로 sshv2 로 이용해야한다.

 

작동원리

client --> server 접속요청

server --> client public 키 전송

client --> server public키로 private 키를 잠궈서 전송

server <--> client public 와 private키가 전송됫음으로 내용을 확인했으니 이후 암호화하여 통신진행 

 * client -> server로 키를 전송한다는 방향성이 있다는 부분이 중요.

 

sshd / ssh

sshd(22/TCP) : 서버용 패키지

/etc/ssh/sshd_config : 데몬 설정 파일
ssh CMD : 클라이언트 용 패키지
/etc/ssh/ssh_config : CMD 설정 파일, CMD 수행 시 참조됨.

 

 

ssh server 구성

 프로그램: openssh, openssh-clients, openssh-askpass, openssh-server

 데몬 & 포트 & 프로토콜: sshd, 22, TCP

 주설정 파일: /etc/ssh/sshd_config(sshd), /etc/ssh/ssh_config(ssh CMD)

 시작 스크립트: /etc/init.d/sshd

 sshd(22) : ssh/scp/sftp

 

1. /etc/ssh 디렉토리

sshd_config : 서버용 데몬 설정파일
ssh_config : 클라이언트용 설정파일
ssh_host_[암호종류] : 암호의 Private키
ssh_host_[암호종류].pub : 암호의 Public 키

 

2. 설정 파일들의 구성

 /etc/ssh/sshd_config : 서버용 데몬 설정파일.

 /etc/ssh/ssh_config : 클라이언트 용 설정파일.

/etc/ssh/sshd_config 주요 지시자
port 22 
* ssh가 사용할 기본 포트, 변경가능하다

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
* 해당 암호에 이용되는 Private 키

AllowUsers / DenyUsers 
* 선언된 사용자들을 접속 허용 또는 접속 제한. (사용자가 많을경우 Groups로도 가능)
ex)
AllowUsers fedora user01 : fedora, user01 사용자만 ssh 사용가능
DenyUsers user02 : user02 사용자만 ssh 사용 불가능


PermitRootLogin yes
 * 루트 사용자의 로그인 가능여부 일부 OS에 따라 기본값은 다르다.

AuthorizedKeysFile .ssh/authorized_keys
* ssh에서 제공하는 인증에는 공개키 인증과 암호 인증법 이렇게 두가지가 있는데, 공개키 인증을 사용할
것인지에 대해 설정하는 것이다. 공개키 인증 사용시 공개키가 있어야 하므로 더욱 안전하다.



* /etc/ssh/ssh_config 의 경우 별도 추가 설정없이 기본값으로 이용하는게 좋다.

 

[실습] ssh 인증 키 실습

 ~/.ssh : server에서 받은 키가 저장되는곳.

<server1 (192.168.10.30)  /  server2 (192.168.10.20)>
<server2>
[root@server2 ~]# ssh 192.168.10.20
The authenticity of host '192.168.10.20 (192.168.10.20)' can't be established. ECDSA key fingerprint is SHA256:qaG2oKh8ey6Jo1FI0nlKXe/D8NHq6BhiTxR46pyjcZ4. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes  ( 키를 받을것인지 물음 )
Warning: Permanently added '192.168.10.20' (ECDSA) to the list of known hosts. root@192.168.10.20's password: Activate the web console with: systemctl enable --now cockpit.socket
[root@server2 ~] ls ~/.ssh 
known_hosts
[root@server2 ~/.ssh]# cat known_hosts 192.168.10.20 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMXsBz9t9w0zMgcZAe4vMKGr7Zn747zfXWJCajJEecnJzNokqdugw7MOrAAhjhc7YlkDCXuT33kaWKgjgmlphGY=

<server1> 
[root@server1 ~/.ssh]# cd /etc/ssh
[root@server1 /etc/ssh]# cat ssh_host_ecdsa_key.pub ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBMXsBz9t9w0zMgcZAe4vMKGr7Zn747zfXWJCajJEecnJzNokqdugw7MOrAAhjhc7YlkDCXuT33kaWKgjgmlphGY=

* 동일한 키값을 확인할 수 있다.
* 이후 server2 의 사용자들은 known_hosts 파일이 있기 때문에 추가적인 인증을 거치지 않고 접속 할 수 있다.

 

[실습] 인증없이 ssh/sftp/scp CMD 수행하기 .

<client> 
ssh-keygen  * 키 생성 암호X
ssh-copy-id root@server  * 서버에 생성된 키를 전달 (서버에 authorized_keys 생성)
ssh server
 <server> 접속이 잘 됨을 확인할 수 있다.
이후 server 에 sshCMD 적용 시 암호 없이 처리 가능함을 확인할 수 있다.

* 방향성이 있음으로 client 측에서 server 로 키를 전달하는 단방향적임을 이해해야한다.

[실습] 명령어 입력 시 인증된 서버들에 모두적용하는 cmd.sh 파일 제작

 

 

사용자의 접근 제어 / 포트변경

sshd 설정 파일을 통해 root 사용자 및 일반사용자들 중 ssh 를 통하여 접근시도를 제어 및 포트변경 또한 가능하다 상단의 주요 지시자를 참고하자.

 * AllowUsers / DenyUsers / PermitRootLogin 등의 값을 활용하여 적용한다 ( sshd 재기동 필수 )

[실습] 사용자의 접근을 제어 및 root 의 접근을 제어

 * Port 의 값을 활용하여 포트를 변경하자

[실습] 포트 변경하여 변경된 포트로 접속

 

 

'모의해킹 침해대응 과정 > Liunx 관리' 카테고리의 다른 글

DHCP server / day 23  (0) 2021.04.27
NTP server / day 22  (0) 2021.04.26
Log server / day 21  (0) 2021.04.23
SAMBA server / day 21  (0) 2021.04.23
NFS server / day 20  (0) 2021.04.22