나는 프로젝트를 진행 중입니다. 네트워크 트래픽을 제어하기 위해 iptables 규칙을 작성하려고 합니다.
몇 가지 규칙을 썼습니다. 작업 중인 상자에 적용하려고 하면 잠기거나 오류가 발생합니다.
일부 규칙은 적용되지만 순서는 무작위로 보입니다.
저는 iptables 버전 1.3.5를 사용하여 centos 5를 작업하고 있습니다.
아래는 제가 사용하는 규칙입니다.
내가 받은 오류 중 일부는 다음과 같습니다.
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
계속해서 iptables
79행의 매개변수는 구문상 올바르지 않습니다.
$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