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 |