최근에 회사의 서버에 확인되지 않은 무수한 IP들로 ssh 접근을 시도한 로그들을 확인하게 되었다. 불행 중 다행히(?)도 .pem
key 파일이 있어야 접속 가능했기 때문에, 별 문제는 없었지만 이것도 혹시나 불안하여 보안을 강화할 방법을 찾아보다가 ssh 접속 연결을 제한하는 linux 설정 기능이 있었다.
linux 에서 /etc/
경로를 확인해보면 hosts.allow, hosts.deny 파일이 존재할 것이며, vi 모드로 열어보면 내부에 주석으로 설명이 적혀있다.
(/etc/...
경로에서 수정하려면 sudo
관리자 권한으로 명령어를 실행해야 한다.)
hosts.allow
해당 서버에서 특정 서비스에 대한 접근을 허용할 IP를 정의하는 설정 파일이다.
# /etc/hosts.allow
sshd: 192.168.15.201 # 192.168.15.201 만 ssh 방식 접속 연결을 허가.
sshd: 220.150. #220.150.x.x 범위에 포함되는 IP 들의 ssh 방식 접속 연결을 허가.
sshd: ALL # ssh 접근 방식에 대해 모든 IP 접근을 허용함.
vsftpd: .linux.or.kr #vsftpd 서비스에 대해 linux.or.kr 도메인에 속한 호스트만 허가.
ALL: ALL # 모든 서비스(vsftpd, sshd 등)에 대해 모든 IP 접근을 허용함.
ALL: ALL EXCEPT 127.0.0.1 : 80 # 모든 서비스(vsftpd, sshd 등)에 대해 127.0.0.1:80 을 제외한 모든 IP 접근을 허용함.
hosts.deny
해당 서버에서 특정 서비스에 대한 접근을 차단할 IP를 정의하는 설정 파일이다.
(hosts.allow 에 정의된 IP 들은 아래 제한 설정 대상에서 제외됨)
# /etc/hosts.deny
sshd: 192.168.15.201 # 192.168.15.201 만 ssh 방식 접속 연결을 제한.
sshd: 220.150. #220.150.x.x 범위에 포함되는 IP 들의 ssh 방식 접속 연결을 제한.
sshd: ALL # ssh 접속 연결에 대해 hosts.allow 에 정의된 IP 외 모든 IP를 제한함.
vsftpd: .linux.or.kr #vsftpd 서비스에 대해 linux.or.kr 도메인에 속한 호스트만 제한.
ALL: ALL # 모든 서비스(vsftpd, sshd 등)에 대해 모든 IP 접근을 제한함.
ALL: ALL EXCEPT 127.0.0.1 : 80 # 모든 서비스(vsftpd, sshd 등)에 대해 127.0.0.1:80 을 제외한 모든 IP 접근을 제한함.
우선순위 비교
hosts.allow 가 hosts.deny 보다 우선순위가 높다.
즉, hosts.deny
에 sshd:192.168.0.0 가 정의되어 있더라도 hosts.allow
에 sshd:192.168.0.0 가 정의되어 있으면 192.168.0.0 IP로 해당 서버에 ssh 접속이 허용된다.
sshd 서버 재시작
변경된 환경설정 값들을 적용하기 위해 sshd 서비스를 재시작한다.
service sshd restart
그리고 다시 서버로 ssh 접속을 시도해보면 아래와 같은 결과가 출력된다.
ssh_exchange_identification: Connection closed by remote host
💡 보안 구축하는 것이 복잡하고 번거로워도 괜히 소 잃고 방앗간 고치지 말고, 미리 해킹을 예방하자.
💡 리눅스 기능의 범위는 바다와도 같다. 완벽 그 자체 OS 인가?