1. /etc/ssh/sshd_config 파일 수정 (SSH 설정)
SSH 서버의 설정 파일을 수정하여 특정 IP 대역에서만 접속을 허용할 수 있습니다.
- SSH 설정 파일을 엽니다:
sudo nano /etc/ssh/sshd_config
- 파일 끝부분에 다음 내용을 추가합니다:
AllowUsers user@192.168.1.*
user
는 SSH 접속을 허용할 사용자 이름입니다.192.168.1.*
은 허용하고자 하는 IP 대역입니다. 예를 들어, 192.168.1.0/24 대역의 IP들만 접속을 허용하게 됩니다.
- 파일을 저장하고 닫은 후 SSH 서비스를 재시작합니다:
sudo systemctl restart sshd
2. iptables
를 이용한 방화벽 설정
더 강력한 보안을 위해 방화벽에서 IP 대역을 제한할 수 있습니다.
- 특정 IP 대역에서만 SSH 접속을 허용하는 규칙 추가: 예를 들어,
192.168.1.0/24
대역만 SSH 접속을 허용하려면 다음 명령어를 사용합니다:
sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
- 나머지 IP에서의 SSH 접속을 차단: 다음 명령어를 통해 나머지 모든 IP 대역에서 SSH 접속을 차단할 수 있습니다:
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
- 방화벽 규칙을 저장: 방화벽 규칙을 시스템 재부팅 후에도 유지하려면, 운영체제에 따라 방화벽 규칙 저장 방법이 다릅니다.
sudo netfilter-persistent save
3. TCP Wrappers를 이용하여 IP 기반 접속 제어
/etc/hosts.allow
파일은 허용할 IP 주소나 호스트를 지정하는 파일입니다. 먼저 SSH 접속을 허용할 IP를 이 파일에 추가합니다.
- hosts.allow 설정
- 파일 열기:
sudo nano /etc/hosts.allow
- SSH 접속 허용할 IP 대역 추가: 다음과 같은 형식으로 SSH 접속을 허용할 IP 대역을 설정할 수 있습니다.
sshd: 192.168.1.0/255.255.255.0
sshd
는 SSH 서비스를 나타냅니다.192.168.1.0/255.255.255.0
은 허용할 IP 대역을 의미합니다. 이를 통해 192.168.1.x
범위의 IP에서만 SSH 접속을 허용합니다.
여러 IP를 허용하고 싶다면, 쉼표로 구분하여 추가할 수 있습니다:
sshd: 192.168.1.100, 10.0.0.5
- hosts.deny 설정
/etc/hosts.deny
파일은 차단할 IP 주소나 호스트를 지정하는 파일입니다. 모든 다른 IP에서의 접속을 차단하려면 이 파일에서 기본적으로 차단 규칙을 설정할 수 있습니다.
- 파일 열기:
sudo nano /etc/hosts.deny
- 모든 SSH 접속 차단 추가: 다음과 같이 설정하여 허용되지 않은 모든 IP에서의 SSH 접속을 차단할 수 있습니다.
sshd: ALL
이 설정은 /etc/hosts.allow
에서 명시적으로 허용된 IP를 제외한 모든 IP에서의 SSH 접속을 차단합니다.
- 설정 적용
설정을 완료한 후에는 SSH 서비스가 해당 설정을 읽어들이며, 시스템 재부팅 없이도 바로 적용됩니다. 그러나 SSH 접속이 끊어지지 않도록 주의해야 합니다.
- 설정 예시
다음은 SSH 접속을 특정 IP 대역에서만 허용하고 나머지를 모두 차단하는 예시입니다:
/etc/hosts.allow
sshd: 192.168.1.0/255.255.255.0
sshd: 10.0.0.5
/etc/hosts.deny
sshd: ALL
이 설정을 통해 192.168.1.x
대역과 10.0.0.5
IP에서만 SSH 접속이 허용되고, 그 외의 모든 IP에서는 접속이 차단됩니다.
이렇게 하면 TCP Wrappers를 이용하여 SSH 접속에 대한 기본적인 IP 필터링을 설정할 수 있습니다.
『 출처 – ChatGPT 』