리눅스 SSH 연결 IP 제한 방법

리눅스 firewalld는 기본적으로 ssh 서비스를 허용한다. 특정 ip에서만 ssh를 접속할 수 있게 하려면 ssh 포트에 특정 ip만 인바운드 연결할 수 있도록 설정하면 된다.

rich-rule을 사용하면 firewalld에서 세부적인 설정이 가능하다. 적용 형식은 아래와 같다.

firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="ipv4 주소" port protocol="tcp" port="포트번호" accept' --permanent

1. rich rule 추가

ssh가 사용하는 22번 포트에 192.168.91.1 ip만 접속할 수 있게 해보자.

[root@newhost zones]# firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.91.1" port protocol="tcp" port="22" accept' --permanent

2. ssh 서비스 삭제

그 다음은 기본으로 등록되어 있는 ssh 서비스를 삭제하는 것이다. 현상태에서 리치룰만 추가로 등록하면 여전히 여러 ip에서 ssh 연결이 가능하다.

작업 순서에 유의해야 된다. ssh 서비스 먼저 삭제하고 적용시켜버리면 rich rule 등록 전 세션이 끊어지는 참사가 벌어진다. 서버 환경에 따라 세션을 연결해놓는 방법이 소용 없을 수 있다. 그냥 실시간으로 끊어버린다.

[root@newhost zones]# firewall-cmd --zone=public --remove-service=ssh --permanent

3. firewall reload

이제 reload 하면 변경사항이 적용된다. 다시 한번 말한다. ssh 연결이 필요한 ip에 ssh를 rich rule에 잊지 않고 적용했는지 체크한다. 그래야 원격 세션이 유지된다.

[root@newhost zones]# firewall-cmd --reload

4. 적용 사항 확인

적용된 설정을 확인한다.

[root@newhost zones]# firewall-cmd --list-all

아래는 차례로 명령어를 입력한 결과다.

적용 결과

5. 세션 접속 확인

지정한 ip에서 22번 포트로 정상 접속되는 것이 확인된다.

ssh 접속

관련 글

댓글 남기기