로컬 네트워크의 사용자가 포트 22를 사용하지 못하도록 하고 싶습니다. 내 Linux 서버가 트래픽을 제어합니다.iptables
. 어떤 규칙이 가장 적절합니까?
iptables -A INPUT -i $LAN -p tcp --sport 22 -j DROP
또는
iptables -A INPUT -i $LAN -p tcp --dport 22 -j DROP
중요: 이 규칙은 단지 예일 뿐입니다. 답변에서 예시 포트를 선택할 수 있습니다.
dport
나는 체인의 합계가 sport
어떤 시나리오에서 사용되는지 알고 싶습니다 INPUT
. 대답은 다른 예를 사용할 수 있습니다
추신: 질문의 목적은 로컬 LAN 네트워크 사용자가 이 포트(또는 다른 포트)에 액세스하지 못하도록 방지하는 것입니다. 따라서 규칙은 로컬 LAN 네트워크(WAN이 아님)의 인터페이스만 대상으로 해야 합니다. $LAN
LAN 인터페이스의 변수입니다(예 enp2s1
: eth1
등).
답변1
dport
나는 체인의 합계가sport
어떤 시나리오에서 사용되는지 알고 싶습니다INPUT
.
컴퓨터의 서비스에 대한 액세스를 제한하려는 경우가 많습니다. TCP 핸드셰이크의 초기 패킷은 클라이언트에서 서버로 이루어지기 때문에 체인 dport
에서 INPUT
로컬 서비스에 대한 액세스를 제어하거나 dport
체인에서 OUTPUT
제거된 서비스(로컬 호스트에서)에 대한 액세스를 제어하는 데 더 일반적으로 사용됩니다. ).
iptables -A INPUT -p tcp --dport 22 -j DROP // prevents access to a local SSH server
iptables -A OUTPUT -p tcp --dport 22 -j DROP // prevents access to a remote SSH server
대부분의 TCP 기반 프로토콜은 클라이언트가 바인딩된 포트에 관심이 없습니다. 관리자는 특정 클라이언트 포트에서만 로컬 서비스에 대한 액세스를 허용할 수 있지만(기본적으로 Linux에서는 1024 미만의 포트 번호에 바인딩하려면 추가 권한이 필요하다는 점을 기억하세요) 이는 일반적이지 않습니다.
답변2
iptables -A INPUT -p tcp --sport 22 -j DROP
SSH 서버의 INPUT 프레임이 차단됩니다. 그러면 외부 SSH 서버에 액세스할 수 없습니다.
iptables -A INPUT -p tcp --dport 22 -j DROP
SSH 클라이언트의 INPUT 데이터 프레임이 차단됩니다. 그러면 누구도 귀하의 SSH 서버에 접근할 수 없습니다. 나는 이것이 당신이 원하는 것이라고 생각합니다.
참고: 호스트를 보호하는 일반적인 방법은 모든 것을 차단하고 필요한 것을 허용하는 것입니다. 아마도 ufw
당신을 보호하는 데 도움이 될 것입니다. 대부분의 요구 사항을 충족하는 더 높은 수준의 방화벽입니다. ( ufw
연결 방향을 처리합니다. iptable
데이터 프레임의 방향은 낮은 수준에 있습니다.)