Ubuntu 12.04 방화벽을 작업 중입니다. 런타임 시 모든 IP를 거부하고 싶습니다. "ufw 거부 IP"를 사용하고 있습니다. 미래의 연결을 위해 노력하고 있습니다. 하지만 SSH와 같은 기존 연결을 취소하지는 않습니다.
특정 IP에서 현재 통신을 모두 취소하려면 어떻게 해야 합니까?
문안 인사,
답변1
내가 찾은 가장 좋은 옵션은 tcpkill
. 설치할 때 dsniff
패키지의 일부였기 때문에 먼저 설치해야 했습니다. 그런 다음 다음과 같이 사용합니다.
$ sudo tcpkill ip host 20.129.11.86 and port 22
tcpkill: listening on eth0 [ip host 20.129.11.86 and port 22]
10.206.22.202:42532 > 20.129.11.86:22: R 1785992582:1785992582(0) win 0
10.206.22.202:42532 > 20.129.11.86:22: R 1785992732:1785992732(0) win 0
10.206.22.202:42532 > 20.129.11.86:22: R 1785993032:1785993032(0) win 0
20.129.11.86:22 > 10.206.22.202:42532: R 4065251855:4065251855(0) win 0
20.129.11.86:22 > 10.206.22.202:42532: R 4065301087:4065301087(0) win 0
20.129.11.86:22 > 10.206.22.202:42532: R 4065399551:4065399551(0) win 0
tcpkill은 일치하는 트래픽을 감지하자마자 연결을 종료합니다.
IP가 시스템에 도달하는 다른 위치를 확인하려면 netstat -aunt
IP 주소에 대해 grep을 사용하면 됩니다. 예:
$ netstat -aunt | egrep 115.125.
tcp 0 0 10.20.22.25:56156 115.125.225.67:80 ESTABLISHED
tcp 0 0 10.20.22.25:42360 115.125.225.1:80 ESTABLISHED
tcp 0 0 10.20.22.25:35210 115.125.225.64:80 ESTABLISHED
필요한 경우 추가 ufw 규칙을 만듭니다.
SSH를 다시 시작하는 것이 옵션입니까?
sudo /etc/init.d/sshd stop
then 을 사용 sudo /etc/init.d/sshd start
하거나 서비스 메커니즘을 사용할 수 있습니다.
$ sudo service ssh stop
ssh stop/waiting
$ sudo service ssh start
ssh start/running, process 4427
옵션인 경우 인터페이스를 일시적으로 삭제할 수 있습니다.
IP 주소와 포트를 인수로 사용하여 작동하는 'cutter'라는 앱이 있습니다. 그러나 패키지를 올바르게 설치할 수 없었습니다.
$ sudo apt-get install cutter
다음과 같이 작동할 것으로 예상됩니다(Ssh의 표준 포트 22를 가정).
$ cutter 10.10.10.10 22
패키지 와 같은 것을 확인할 수도 있습니다 denyhosts
.
답변2
확실하지 않지만 다음을 시도해 볼 수 있습니다 iptables
.
sudo iptables -A INPUT -p tcp --dport 22 --source 192.168.1.1 -j REJECT
아니면 현명해지고 싶다면
sudo iptables -A INPUT -p tcp --dport 22 --source 192.168.1.1 REJECT --reject-with icmp-host-prohibited
이 튜토리얼을 확인하세요:https://help.ubuntu.com/community/IptablesHowTo
이게 도움이 되길 바란다.