Security/리눅스

정보보안 스터디 - 7주차 5일 - SSH/SFTP

wonder12 2022. 11. 28. 21:54

 

 

 

네트워크 설정

 

리눅스에서는nm-connection-editor &이 기본적으로 깔려 있기 때문에

 ip설정을 그래픽기반으로 쉽게 편집할 수 있지만

직접 수동으로 설정할 수도 있습니다.

 

 

cat /etc/sysconfig/network-scripts/ifcfg-ens33에서

ip 설정, 게이트웨이, dns 설정을 확인할 수 있고

vi편집기를 통해 변경할 수 있습니다.

 

 

ip설정

nmcli connection modify ens33 \
ipv4.method manual \
ipv4.address 주소 \
ipv4.gateway 게이트웨이 \

~

 

 

적용

systemctl restart NetworkManager.service

nmcli connection up ens33

 

적용 확인

cat /etc/sysconfig/network-scripts/ifcfg-ens33

 

최근버전 예전버전
ip address(ip addr) ens33 ifconfig ens33
ip route/netstat -nr
라우팅테이블을 엽니다.
route -n
cat /etc/resolve.conf
dns확인
 

                    

 

netstat -nr
ip설정, 인터페이스연결 확인합니다.
netstat -nt(u)
tcp(udp)만 확인
netstat -ntl
tcp에서 리슨상태만 확인
netstat -ntlp
+프로세스

시스템 점검할 때 정보확인으로 많이 사용합니다.

 

 

정적경로설정
vi /etc/sysconfig/network-scripts/route-ens33 파일을 만들어
외부네트워크 via 게이트웨이로 설정합니다.

 

 

ip주소에대한 도메인 설정

vi /etc/hosts로 localhost처럼 주소 이름을 설정합니다.

주로 내부 네트워크에서 편하게 사용합니다.

(윈도우는 \system32\drivers\etc\hosts 에 위치합니다.)

 

 

 

 

 

arp -n
arp 테이블을 엽니다.
arp -d ~
해당 arp를 삭제합니다.

 

ps -f 
현재 명령어 내에서 프로세스를 상세하게 엽니다.
ps -ef | grep 
전체 유저의 프로세스를 엽니다.
동작중인 프로세스를 검색합니다.
ps -fU 유저
해당 유저의 프로세스를 엽니다.

 

rpm -qa 파일
파일이 설치된 패키지를 봅니다.
rpm -ql ping | egrep -v "/doc|/man|/usr/lib"
파일 관련되서 경로들을 확인합니다.
대부분 설치경로를 확인하기 위함이며 필요없는 부분들은 빼고 검색합니다. 
rpm -qf [설치파일]/usr/sbin/service
 패키지이름 확인

 

 

Service vs Socket

 

이전 centos 버전에서는 

service firewalld start로 적용시키지만

 

현재버전은 아래와 같습니다.

systemctl start firewalld
systemctl start firewalld
systemctl status firewalld
systemctl enable firewalld
systemctl enable --now telnet.socket
On, 설정적용 동시에

리눅스는 기본적으로 start만 했을 때 재부팅했을 때 설정이 다 초기화되고

enable로 설정을 해야 유지되도록 하는 알고리즘이 많습니다. 

 

 

가게에 불을 계속 켜놓고 있는 것처럼

지속적으로 메모리에 올려두고 프로세스가 잡히도록 하려면

service로 설정합니다.

 

일정 기간동안 별로 실행하지 않고 간헐적으로 실행하는 프로그램이 있으면

프로세스에 잡히도록 올려두는 것은 프로세스 낭비입니다.

그래서 그런 프로그램은 socket으로 설정하고 씁니다.

 

예전 버전에서는 standalone과 xinetd의 개념과 비슷합니다.

 

systemctl list-unit-files | grep [프로그램] 으로

service/socket인지 확인이 가능하고 

enable되었는지 disable되었는지 확인 가능합니다. 

 

 

 

 

 

암호화/인증

 

암호화는 기본적으로 암호화 키가 있어서 복호화가 필수적으로 가능해야합니다.
그렇기 때문에 공격자들이 키를 찾는다면 복호화를 쉽게 할 수 있습니다.
보안에 취약해서 많이 안쓰는 추세입니다.

인증은 복호화가 안되는 단방향이며 
공개키가 있고 정보교환을 하기 전에 공개키를 주고받습니다.
또한 정보교환을 할 때 알고리즘이 맞는지 들어갑니다.
공개키가 서로 맞다면
해시함수 암호화로 된 정보를 교환합니다.
무결성 보장

 


대칭키 
동일한 공개키 이용

비대칭키

RSA공개키 / Diffie-Hellman 키
여기서 공개키는 유출되도 상관없지만

 

RSA보다는 Diffie-Hellman이 더 보안에 좋으며
공인인증서같은 RSA는 사용자에게 키를 관리하게 하므로
오히려 더 보안에 취약합니다.

SSL도 마찬가지입니다.
그래서 쇼핑몰에 SSL이 있으면
보안처리가 되는 것이기 때문에
카드번호를 입력해도 안전한 것입니다.

 

 

 

☞ 원격접속과 파일전송

 

SSH

SSH는 원격으로 하기 해당 서버를 제어하기 위해 사용합니다.

telnet : 23번포트

ssh : 22번포트

telnet은 암호화가 안되어 명령어/패스워드 등 패킷이 전송되는 것을 잡아서 볼 수 있기 때문에 안쓰는 추세입니다.

ssh는 aes암호화가 되어 사용합니다.

 

클라이언트 > 서버 ssh연결

ssh -l root 192.168.2.200


연결을 하고나면 서버로부터 공개키와 개인키로 서명한 해시값을 받습니다.
 cat /.ssh/known_hosts 에서 확인 가능합니다.

 

 SSH에서 root계정 접속 차단
vi /etc/ssh/sshd_config
밖에서 원격으로 내부명령어
ssh root@192.168.2.200 ls /test

 

 

 

SCP

ftp : 21, 20번 포트

scp: SSH를 설치하면 같이 설치되며

ftp를 설치하지 않아도 간단하게 파일전송을 할 수 있습니다.

암호화를 해서 전송하므로 이것을 사용합니다.

 

파일 송/수신을 하며

 

서버 > 클라이언트 송신

파일만
scp /test/file1.txt root@192.168.2.201:/tmp  
여러파일 전송
scp /test/file1.txt /test/file2.txt root@192.168.2.201:/tmp 
포트지정(22번 포트가 기본값)
scp -P 22 /test/file1.txt /test/file2.txt root@192.168.2.201:/tmp 
디렉토리 모두
scp -r /test root@192.168.2.201:/tmp 

 

 

클라이언트 > 서버 수신

서버에서 그냥 빼오는 느낌입니다.

파일만
scp root@192.168.2.200:/server/file.txt /tmp 
여러개
scp -T root@192.168.2.200:"/server/file1.txt /server/file2.txt" /tmp
디렉토리 모두
scp -r root@192.168.2.200:/server /tmp

 

 

SFTP

ftp가 보안에 취약하다보니 

secure ftp로 

1. ftp처럼 원격 접속을해서 get/mget, put/mput 명령어를 입력하여 파일을 넣고 다운받을 수 있고

2. scp처럼 밖에서 파일을 송/수신을 할 수도 있습니다. 

sftp root@192.168.2.200
> put ~
sftp root@192.168.2.200:/test /tmp

 

 

winSCP는 scp나 sftp 연결 프로그램입니다.

기본적으로 윈도우에서<서버 파일 수신가능
원격접속가능> 명령어 사용가능

putty 처럼 ssh 도 연결가능

일반 사용자가 접근하기에는 위험하고 시스템 관리자끼리 정보교환에 사용합니다.