외부에 SSH오픈이 필요한 경우 필수보안설정.

외부에 SSH오픈이 필요한 경우 필수보안설정.

안녕하세요. 달소입니다.


이번글은 혹혹혹시나..외부에 SSH를 오픈할 필요가 생긴다면 반드시 해야할 보안 관련 설정입니다.


기본적으로 SSH와 같은 원격 터미널 포트는 오픈하지않는편이 가장좋지만 피치못하게 오픈해야하는 경우라면 우리가 오라클 클라우드를 접근하듯이 설정해주시는게 가장 좋습니다.


일반적인 홈 네트워크 환경이라면 단순히 포트포워딩으로 ssh만 오픈해주셔도 되지만 이럴경우 스캔성 공격이나 brute force 공격에 매우 위험하게 노출되기때문에 아래와같은 설정을 반드시 진행해주시는게 좋습니다.

**VPN으로 내부서버에 접속 후 연결하시는게 가장 좋습니다

1. SSH를 Key값으로만 접속가능하게하기.

SSH를 일반 id/pw가 아닌 key값으로 로그인할 수 있도록 설정해주신다면 안전한 방법중 하나입니다..
GCP나 오라클클라우드등에서 사용하는 방식이 이러한 key인증 방식입니다.

https://svrforum.com/os/369753

서버포럼 - Linux SSH PW가 아닌 Key로만 접근하게하기.(.ppk로변환하기)svrforum.com안녕하세요. 달소입니다. 이번글은 피치못하게 외부로 ssh를 오픈해야할 경우 필수 설정이라고 보시면 되겠습니다. 클라우드서비스

2. 외부 노출되는 SSH 포트변경하기.

포트포워딩을하실때 정직하게 22:22 이렇게 포트포워딩을 하시지 마시고 9898:22와 같이 포트를 변경해주시는게 좋습니다.

아예 서비스하는 ssh포트를 바꿔도 무방합니다. vi /etc/ssh/sshd.conf 의 ports 설정


22번은 well known 포트라고 알려진 포트에 속하기때문에 공격자들의 가장 손쉬운 먹잇감입니다.

image.png.jpg

3. IP로 통제하기.

Source IP를 통제하는 방법입니다. 원천적으로 접근하고자하는 ip를 알고계시고 해당 ip만 iptables나 pfsense/opnsense 와 같은 방화벽에서 source ip로 통제해주시면됩니다.

*불특정 ip에서 접속하셔야하는 환경이라면.. 설정하시면안됩니다


iptables -I INPUT -p tcp -s [SourceIP] --dport 22[SSH포트번호] -j ACCEPT


iptables -L 로 정책 확인 후
service iptables save로 정책 저장.

pfsense/opnsense나 기타 방화벽/라우터를 쓰신다면 아예 포트포워딩 설정시에도 Source ip 필터링이 가능합니다.

source port는 어떤 포트에서 접속할지모르니 any로 두셔야합니다.

image.png.jpg


이정도의 보안설정이 귀찮으시다면,,, 외부로 SSH노출은 가급적 안하시는게좋습니다