ssh 실습환경을 위해 server 가상환경과 client 가상환경 만들기
복제를 눌러줍니다
새로운 가상머신을 만들기위해 '모든 네트워크 어댑터의 새 MAC 주소 생성'을 선택해줍니다
다음
복제
두번 복제해서 server와 client를 만들어줍니다
서버생성
[root@localhost ~]# hostnamectl set-hostname server.encore.class4
[root@localhost ~]# nmcli con add con-name static9 ifname enp0s9 type ethernet ip4 *.*.*.150/24 gw4 *.*.*.1
연결 'static9' (a675ccef-5e08-4a24-8d45-b5f9b46ab6a9)이 성공적으로 추가되었습니
다.
[root@localhost ~]# nmcli con up static9
연결이 성공적으로 활성화되었습니다 (D-Bus 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/6)
[root@localhost ~]# ip addr show enp0s9
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:34:8b:89 brd ff:ff:ff:ff:ff:ff
inet *.*.*.150/24 brd 192.168.56.255 scope global noprefixroute enp0s9
valid_lft forever preferred_lft forever
inet6 fe80::330c:c123:5a6d:e55b/64 scope link noprefixroute
valid_lft forever preferred_lft forever
클라이언트 생성
[root@localhost ~]# hostnamectl set-hostname client.encore.class4
[root@localhost ~]# nmcli con add con-name static9 ifname enp0s9 type ethernet ip4 *.*.*.200/24 gw4 *.*.*.1
연결 'static9' (8c2d161d-4f05-41bd-b7c5-f2f5ac71ac7c)이 성공적으로 추가되었습니
다.
[root@localhost ~]# nmcli con up static9
연결이 성공적으로 활성화되었습니다 (D-Bus 활성 경로: /org/freedesktop/NetworkManager/ActiveConnection/6)
secure shell
원격지 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜
과거에는 telnet을 사용했지만 암호화가 되지 않아 평문전송만 가능함 -> 암호화 기능이 있는 ssh 사용
비대칭키 암호화 방식과 대칭키 암호화 방식을 동시에 사용
- 대칭키 : 데이터 암호화/복호화에 사용하는 키가 같은 알고리즘 (정보 자체에 대한 암호화가 필요할 때)
- 비대칭키 : 데이터 암호화/복호화에 사용하는 키가 다른 알고리즘 (정보를 송신한 사람에 대한 정보가 필요할 때 사용)
공개키 - 공개키로 암호화 시, 개인키로 복호화 가능
개인키 - 개인키로 암호화 시, 공개키로 복호화 가능
1. 클라이언트가 서버에게 접속 요청을 보냄
ㅤ1.1 최초 접속시, 클라이언트에 .ssh/known_hosts파일(서버에서 넘겨준 공개키 파일)이 추가됨, 서버에서는 /etc/ssh/ssh_host_ecdsa_key.pub에 저장되어 있음 -> 끝쪽 내용이 일치하는 걸 확인할 수 있음 -> 파일의 내용이 달라지면 접속 요청이 거부 됨 -> 기존 키를 다시 삭제하고 접속하면 새로 저장 됨
2. 서버는 클라이언트에게 서버의 공개키를 전송
3. 클라이언트는 암호화를 위한 비밀키를 생성
4. 클라이언트는 생성된 비밀키를 서버의 공개키로 암호화하여 서버에 전송
5. 서버는 서버의 개인키로 비밀키를 복호화하여 일치하면 접속 허가
클라이언트에서 ssh root@*.*.*.150 [명령어] => 접속 후 명령어 실행하고 빠져나오기
[root@client ~]# ssh-keygen
[root@client ~]# ls .ssh/
id_rsa id_rsa.pub <-파일 생성 됨 known_hosts
별도의 비밀번호 없이 키를 등록
[root@client ~]# ssh-copy-id root@*.*.*.150
위 과정 진행 후
[root@server ~]# ls .ssh
authorized_keys<- 파일 생성 됨 known_hosts
클라이언트 가진키를 서버에 등록한 것
새로 생성된 두 파일을 확인해보면 내용이 같은 부분이 있는걸 확인할 수 있음
서버의 /etc/ssh/sshd_config에는 PermitRootLogin이라는 항목이 있음, 수정 시 반드시 systemctl restart sshd.service로 재시작 해주어야함
- 주석처리나 yes가 되어 있으면 root 로그인을 허가
- without-password 라면 키기반 인증만 로그인을 허가
PasswordAuthentication 항목을 설정하면 공개키 방식으로만 인증하므로 보안이 더 강화 됨
외부에서 시스템으로 접근하는 패킷을 차단하는 서비스
사용자가 요구하는 정책 허용, 특정 허용, 거부, 특정 거부 등등에 맞게 그룹으로 관리되며, 처음 설정 시 위 명령어를 실행하였을 경우 기본적으로 내장되어 있는 정책들
나가는 패킷은 모두 허용
iptables의 단점을 보완. 동적으로 방화벽 설정 변경 가능
# firewalld-cmd [option]
[root@server ~]# firewall-cmd --state
running
[root@client ~]# firewall-cmd --get-default-zone
public
[root@client ~]# firewall-cmd --set-default-zone=home
success
[root@client ~]# firewall-cmd --get-default-zone
home
[root@client ~]# firewall-cmd --remove-service=http --permanent
success
#현재영역
[root@client ~]# firewall-cmd --list-all
#해당영역
[root@client ~]# firewall-cmd --list-all --zone=work
# 실시간일때만 적용
[root@client ~]# firewall-cmd --add-service=http
success
[root@client ~]# firewall-cmd --list-services
ssh mdns samba-client dhcpv6-client http
# 영구저장은 되지 않는 모습
[root@client ~]# firewall-cmd --list-services --permanent
ssh mdns samba-client dhcpv6-client
# 재시작시 사라짐
[root@client ~]# firewall-cmd --reload
success
[root@client ~]# firewall-cmd --list-services
ssh mdns samba-client dhcpv6-client
영구저장 하는 법
[root@client ~]# firewall-cmd --add-service=http --permanent success [root@client ~]# firewall-cmd --reload success
or
# 해당 서비스에 대해 포트를 열어줌 [root@client ~]# firewall-cmd --add-port=23/tcp --permanent success [root@client ~]# firewall-cmd --reload success [root@client ~]# firewall-cmd --list-ports 23/tcp
패키지를 설치, 실행, 방화벽(포트열어주기)설정은 한 세트❗
# yum –y install httpd # systemctl start httpd # systemctl enable httpd # firewall-cmd —add-service=http —permanet # firewall-cmd —reload
그래픽 모드로 방화벽을 설정