1) ssh 의 보안설정

음. ubuntu 의 sshd 는 root 접속을 허용한다.

바로 /etc/ssh/sshd_config 의 설정에서
PermitRootLogin yes

그런데, 보안상 권장하지 않는 방법이다. 일반적으로 no 로 설정해 놓는 것이 좋다.

또는 ssh 의 기본포트인 22 번 포트를 그냥 사용하는 것도 위험하다.

ssh brute force attack 이 끊이 없이 들어온다.
Port 22
의 기본포트를 다른 포트로 변경하는 것이 좋다.


2) root 로 로그인하고 싶을때는 방법이 없나?

간혹 root 로 로그인할 필요가 있다.(사실 거의 없다)
그런데, ssh 옵션에서 PermitRootLogin yes 로 해놓기는 좀 찜찜하다.
그런경우 ssh 접속을 특정 IP(clean IP?? )에서 접속이 가능하도록 해보자.
바로  /etc/hosts.allow 파일이다.
%주의% 잘못 만지면 접속을 못하는 수가 있으니, 원격작업은 가급적 하지 말자. ^^

파일을 열고 이렇게 입력해보자.
sshd: 127. : allow
sshd: 192. : allow
sshd: 210. : allow
sshd: ALL : deny
127, 192 등은 로컬IP 주소이다. 세번째 210. 은 210 으로 시작하는 IP 대역이다.
IP 주소 전체를 사용할 수도 있고, IP 주소를 class 단위로 정할 수도 있다.
(자신이 접속할 주소의 IP 를 적절하게 적어준다.)

또한 IP주소가 아닌 도메인주소로 적어줄 수도 있다.

허용한 대역의 IP 가 아닌경우 접속을 시도하면  다음처럼
ssh_exchange_identification: Connection closed by remote host
연결이 되지 않고 거부하게 된다.

/var/log/auth.log 에도 다음과 같이
sshd[5404]: refused connect from ::ffff:접속한IP주소 (::ffff: 접속한IP주소)
접속을 거부한 로그가 생긴다.


3) 다른 계정은 허용하고, root 계정만 특정IP 에서 접속하게 못하나?

사실 이것을 하기 위해 방법을 찾아보던 중이었다. 아직은 이 방법을 찾지 못하였다.
그래서 일단 2) 번으로 설정중. (방법이 있을 법 한데, 좀더 알아봐야 겠다.)

PermitRootLogin 의 몇가지 옵션으로 처리가 가능할 듯 싶다.
(바로 'force-commands-only'  root 로그인을 public key 인증으로는 허용하는 듯)