최근에 IPv6 연결이 있는 일부 서버를 사용해야 했는데, fall2ban이 IPv6을 지원하지 않으며, 거부 호스트도 지원하지 않는다는 사실에 놀랐습니다. Google에서 검색해 보니 사람들이 일반적으로 다음을 추천하는 것으로 나타났습니다.
- IPv6을 통한 SSH 로그인 비활성화(나에게는 해결책이 아님)
- 서버에서는 비밀번호 인증이 아닌 개인/공개 키 인증만 사용합니다(작동하지만 대규모 공격으로 인해 서버의 처리 능력이 많이 소모되거나 DDoS 공격을 통해 서버를 사용할 수 없게 될 수도 있음)
- ip6tables를 사용하여 동일한 IP의 연속 공격 차단
- IPv6 지원과 함께 sshguard 사용
지금까지 수집한 내용에 따르면 IPv6의 금지된 주소는 IPv4의 주소와 약간 다릅니다. ISP가 사용자에게 단일 주소(/128)를 제공하지 않고 전체 서브넷(현재 /48이 있음)을 제공하기 때문입니다. 따라서 개별 IPv6 주소를 금지한다고 해서 공격으로부터 효과적으로 보호할 수는 없습니다. ip6tables 및 sshguard를 사용하여 공격 탐지를 위한 서브넷 차단 주제에 대해 여러 검색을 수행했지만 아무런 정보도 찾지 못했습니다.
sshguard가 IPv6 공격에 대해 서브넷을 비활성화하는지 아는 사람이 있습니까?
서브넷에서 IPv6 공격을 허용하지 않도록 ip6tables를 구성하는 방법을 아는 사람이 있습니까?
아니면 제가 발견한 것보다 공격을 완화하는 더 좋은 방법을 아는 사람이 있습니까?
추신: 저는 시스템에서 CentOS 7을 사용하고 있습니다.
답변1
서버를 공격하려면 공격자는 먼저 서버의 IP 주소를 알아야 합니다. IPv6를 사용하면 선택할 수 있는 주소가 너무 많아 올바른 주소를 찾기 위해 IP 범위를 검색하는 것이 불가능합니다.
즉, 두 개의 서로 다른 IPv6 주소만 인터페이스에 할당하면 됩니다. 사이트의 도메인 이름이 항상 동일한 IP 주소를 가리키도록 하고 sshd가 새로 할당된 IP 주소만 수신하도록 합니다.
일단 변경되면 사이트의 도메인 이름과 IP 주소를 알면 공격자가 SSHD에 액세스하는 것을 허용하지 않습니다.
SSH를 사용하여 연결할 때는 물론 보조 호스트 이름을 사용해야 합니다. 호스트 이름은 IPv6 주소보다 훨씬 더 큰 엔트로피를 가질 수 있습니다. 63개의 영숫자를 사용하면 누군가 SSH 호스트 이름을 추측하는 것이 불가능합니다.
누군가 sshd에서 사용하는 IPv6 주소를 발견하면 sshd를 새 IPv6 주소로 이동하고 AAAA 레코드를 업데이트하기만 하면 됩니다. 그런 다음 처음부터 시작해야 합니다.
합법적인 SSH 사용자가 호스트 이름 및/또는 IP 주소를 노출할 수 있다는 우려가 있는 경우 SSH를 사용하여 액세스할 각 사용자마다 다른 호스트 이름을 만들 수 있습니다. 처음에는 업데이트할 AAAA 레코드가 하나만 있도록 이러한 모든 CNAME을 하나의 호스트 이름으로 명명했습니다.