사전 정의된 포트가 아닌 소스 포트의 트래픽을 차단(ssh)하려면 어떻게 해야 합니까?

사전 정의된 포트가 아닌 소스 포트의 트래픽을 차단(ssh)하려면 어떻게 해야 합니까?

VPS는 SSH 공격을 많이 받습니다. 그 공격은 다양하다.원천포트:

sshd[76661]: Invalid user ts3server from 76.103.161.19 port 33062
sshd[76661]: Received disconnect from 76.103.161.19 port 33062:11: Bye Bye [preauth]
sshd[76661]: Disconnected from invalid user ts3server 76.103.161.19 port 33062 [preauth]
sshguard[61313]: Attack from "76.103.161.19" on service SSH with danger 10.
sshguard[61313]: Blocking "76.103.161.19/24" for 86400 secs (1 attacks in 0 secs, after 1 abuses over 0 secs.)
sshd[76821]: Invalid user tibaldi from 140.143.206.216 port 33936
sshd[76821]: Received disconnect from 140.143.206.216 port 33936:11: Bye Bye [preauth]
sshd[76821]: Disconnected from invalid user tibaldi 140.143.206.216 port 33936 [preauth]
sshguard[61313]: Attack from "140.143.206.216" on service SSH with danger 10.
sshguard[61313]: Blocking "140.143.206.216/24" for 86400 secs (1 attacks in 0 secs, after 1 abuses over 0 secs.)

보시다시피 저는 현재 이러한 공격을 차단하고 제한하기 위해 공격적인 방식으로 대응적 접근 방식(sshguard)을 사용하고 있습니다. (또한 비밀번호 SSH 로그인은 허용되지 않습니다.) 하지만 여전히 너무 많아서 로그가 넘칩니다. 로그에서 분명한 것은 이러한 모든 공격이 높은 번호의 무작위 포트에서 발생한다는 것입니다. 제가 하고 싶은 것은 방화벽 수준에서 모든 트래픽을 차단하여 로그가 오염되지 않도록 하는 것입니다.

나는 클라이언트를 제어하고 클라이언트가 사용할 소스 포트를 선택/정의할 수 있습니다.

그러므로,사전 정의된 포트(또는 범위)가 아닌 소스 포트의 트래픽을 차단(ssh)하려면 어떻게 해야 합니까??

저는 방화벽 관리 소프트웨어로 Firewalld를 사용하고 있으므로 Firewalld 기반 솔루션을 제공할 수 있다면 더욱 도움이 될 것입니다. 그러나 다른 솔루션도 환영합니다.

답변1

동안목적지SSH 연결의 포트는 일반적으로 22입니다.원천포트에는 (거의) 규칙이 없습니다. 이는 의 연결 140.143.206.216 port 33936자체가 의심스럽지 않다는 것을 의미합니다.

나는 이 문제를 알고 있기 때문에(Peak은 10G 서버에서 초당 백만 건 이상의 공격이었습니다) 사용을 권장합니다. fail2ban이것은 실제로 작동합니다.

편집하다

논의한 결과 귀하가 클라이언트를 제어한다는 것을 이해했습니다. 이 경우 다음 라인을 따라 뭔가를 할 수 있습니다.

iptables -A INPUT -m tcp -p tcp --dport 22 '!' --sport 1000 -j DROP 

(원격 포트 1000의 경우) 트릭을 수행합니다.

관련 정보