두 개의 네트워크 카드가 있는 Linux 상자(Turnkey Core 14.2)가 있습니다.
eth0
공용 IP, WAN(우리가 부르는 이름 123.123.123.123
)입니다.
eth1
그것은 내 네트워크, LAN입니다.
SSH
WAN을 통해 차단 하고 싶습니다 iptables
.
나는 명령을 사용한다
sudo iptables -A INPUT -p tcp -s 123.123.123.123 --dport 22 -j DROP
내가 그때 글을 쓴다면
sudo iptables -L
나는 답을 얻었다
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- 123.123.123.123 anywhere tcp dpt:ssh
PuTTY
문제는 123.123.123.123에 연결하는 데 사용하면 차단되지 않는다는 것입니다.
내가 뭘 잘못하고 있는지 아시나요?
답변1
-s
대상 주소(옵션)가 아닌 소스 주소(옵션)를 기준으로 트래픽을 일치시키므로 -d
규칙이 다른 호스트의 트래픽을 삭제하지 않습니다.
주소 대신 인터페이스를 입력하여 -i
옵션을 일치시킬 수도 있습니다. 예를 들어 모든 수신 포트 트래픽을 삭제합니다.번호 22~을 위한이더넷 0:
iptables -A INPUT -i eth0 -p tcp --dport 22 -j DROP
답변2
@sebasth가 대답했듯이 공용 IP에 연결하려는 트래픽을 차단하고 싶기 때문에 123.123.123.123
다음 아키텍처가 됩니다.
source `INTERNET`
destination `123.123.123.123`
따라서 -s
(소스)를 -d
(대상) 으로 변경할 수 있습니다.
회선 과 관련하여 (추가) 대신 (삽입) iptables
을 사용하여 추가하는 것이 좋습니다. 왜냐하면 어떤 이유로든 들어오는 모든 트래픽을 허용하는 이전 규칙이 있는 경우 해당 규칙이 회선 끝에 추가되고 첫 번째 규칙이 발견됩니다.-I
-A
port 22
-A
iptables
iptables -I INPUT -p tcp -d 123.123.123.123/32 --dport 22 -j DROP
~에서man iptables
-A, --append chain 규칙 사양은 선택한 체인의 끝에 하나 이상의 규칙을 추가합니다. 소스 및/또는 대상 이름이 여러 주소로 확인되면 가능한 각 주소 조합에 대한 규칙이 추가됩니다.
-I, --insert chain [rulenum] 규칙 사양은 선택한 체인에 하나 이상의 규칙을 주어진 규칙 번호로 삽입합니다. 따라서 규칙 번호가 1이면 체인의 선두에 하나 이상의 규칙이 삽입됩니다. 규칙 번호가 지정되지 않은 경우에도 이는 기본값입니다.