IP 테이블 오류

IP 테이블 오류

나는 프로젝트를 진행 중입니다. 네트워크 트래픽을 제어하기 위해 iptables 규칙을 작성하려고 합니다.

몇 가지 규칙을 썼습니다. 작업 중인 상자에 적용하려고 하면 잠기거나 오류가 발생합니다.

일부 규칙은 적용되지만 순서는 무작위로 보입니다.

저는 iptables 버전 1.3.5를 사용하여 centos 5를 작업하고 있습니다.

아래는 제가 사용하는 규칙입니다.

http://pastebin.com/gjhAmBLm

내가 받은 오류 중 일부는 다음과 같습니다.

Starting firewall:
Dropped all existing rules
Set Policy to drop all traffic

Added SSH rules
./firewall.sh: line 64: -A: command not found
./firewall.sh: line 65: -A: command not found
Added HTTP traffic
allow bidirectional sql traffic
iptables v1.3.5: host/network `eth3' not found
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.5: host/network `eth3' not found
Try `iptables -h' or 'iptables --help' for more information.
allow ICMP in and out
./firewall.sh: line 84: -A: command not found
./firewall.sh: line 85: $,iptables: command not found

완벽한.

이것은 ifconfig의 출력물입니다:

eth0      Link encap:Ethernet  HWaddr 00:15:17:57:C1:30
          inet addr:10.1.3.2  Bcast:10.1.3.255  Mask:255.255.255.0
          inet6 addr: fe80::215:17ff:fe57:c130/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:21 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5290 (5.1 KiB)  TX bytes:5348 (5.2 KiB)
          Interrupt:169 Memory:fe9e0000-fea00000

eth2      Link encap:Ethernet  HWaddr 00:04:23:9F:0C:C6
          inet addr:192.168.1.34  Bcast:192.168.3.255  Mask:255.255.252.0
          inet6 addr: fe80::204:23ff:fe9f:cc6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1285 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1079 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:166472 (162.5 KiB)  TX bytes:141002 (137.6 KiB)

eth3      Link encap:Ethernet  HWaddr 00:15:17:57:C1:32
          inet addr:10.1.2.3  Bcast:10.1.2.255  Mask:255.255.255.0
          inet6 addr: fe80::215:17ff:fe57:c132/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:19 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5203 (5.0 KiB)  TX bytes:5962 (5.8 KiB)
          Interrupt:90 Memory:fe7e0000-fe800000

eth4      Link encap:Ethernet  HWaddr 00:15:17:57:C1:33
          inet addr:10.1.1.2  Bcast:10.1.1.255  Mask:255.255.255.0
          inet6 addr: fe80::215:17ff:fe57:c133/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:20 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:5250 (5.1 KiB)  TX bytes:5747 (5.6 KiB)
          Interrupt:122 Memory:fe7a0000-fe7c0000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:55 errors:0 dropped:0 overruns:0 frame:0
          TX packets:55 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4902 (4.7 KiB)  TX bytes:4902 (4.7 KiB)

ETH2를 망칠 수는 없습니다. 항상 상승해야합니다. 연결을 차단하면 SSH 세션이 종료됩니다. 저는 deterlab이라는 시스템을 사용하고 있습니다. 저는 대학생이고 이 시스템을 사용하여 프로젝트를 테스트할 수 있습니다. ETH2는 시스템 제어 네트워크입니다.

도와주셔서 감사합니다. 궁금하신 점은 댓글로 남겨주시면 답변해드리겠습니다.

답변1

이것은 간단한 스크립트 디버깅입니다. 스크립트를 실행하면 -x변수가 확장되는 것을 볼 수 있습니다.

bash -x testcode.sh(filename )을 실행 testcode.sh하면 아래와 같이 64번째 줄이 표시됩니다.

-A INPUT -i eth3 -p tcp  --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

그 이유는 이 줄이 대소문자를 구분하기 위해 .(Unix/Linux CLI의 대부분의 항목처럼) $iptables대신 .variables를 작업으로 사용하기 때문입니다.$IPTABLES

계속해서 iptables79행의 매개변수는 구문상 올바르지 않습니다.

$IPTABLES -A INPUT -s $ETH -p tcp --dport 3306 -j ACCEPT

-s표시는 예상됩니다.소스 주소/서브넷$ETH3당신은 그것을 주었다인터페이스 이름. 아마도 -i $ETH요?

이제 85번째 줄입니다. 줄의 시작 부분이 완전히 손상되었습니다(초기 문자, 변수의 대문자 사용이 잘못됨).

$,iptables -A OUTPUT -p icmp --icmp-type 0 -s $ETH -d 10.1.2.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT

답변2

먼저 표시된 오류를 확인해 보세요. 어떤 줄에서 오류가 발생했는지 알려주며, 귀하의 경우 몇 가지 이유가 분명합니다. 바라보다:

./firewall.sh: line 85: $,iptables: command not found

$과 사이에 쉼표를 추가하여 오타가 발생했습니다 iptables.

그런 다음 변수 이름은 대소문자를 구분한다는 점에 유의해야 합니다. 그러므로 .$IPTABLES$iptables

이러한 문제를 해결하고 나면 SSH 지원 라인이 꽤 좋아질 것입니다(출력 규칙에 유의하세요. -o대신 출력 인터페이스를 지정해야 합니다 -i).

$IPTABLES -A INPUT -i $ETH2 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPTABLES -A OUTPUT -o $ETH2 -p tcp  --sport 22 -m state --state ESTABLISHED -j ACCEPT

관련 정보