내 홈 네트워크에서 교육 목적으로 약 12여 년 동안 사용될 CentOS 서버를 설정하고 있습니다. 예를 들어 Linux 쉘을 사용하고 웹 사이트를 호스팅하는 방법 등을 배우십시오. 라우터에 포트 22와 포트 80이 있으므로 인터넷을 통해 SSH를 통해 로그인 할 수 있습니다.
이 사용자를 완전히 신뢰할 수 없으므로 현재 서버를 통해 가능한 한 많은 서버를 잠그려고합니다 (권한 확인, 급류 차단 등). 서버를 통해 네트워크의 나머지 컴퓨터를 조사하는 사람들을 원하지 않기 때문에 인터넷에 대한 트래픽을 허용하면서 로컬 LAN의 컴퓨터에 대한 트래픽을 차단하고 싶습니다.
iptables에 익숙하지는 않지만 몇 가지 iptables 규칙을 설정하려고 시도했습니다. 먼저 트래픽을 192.168.1.1 (라우터) 및 192.168.1.2 (서버를 구성하는 데 사용하는 컴퓨터)로 트래픽을 허용 한 다음 차단합니다. 192.168.1.0/24로 트래픽을 보내고 해당 트래픽을 기록합니다. 나머지 트래픽은 허용되어야합니다. 그러나 문제는 서버가 인터넷에 연결할 수 없다는 것입니다.
내 현재 iptables 구성은 다음과 같습니다.
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 192.168.1.2
2 ACCEPT all -- 0.0.0.0/0 192.168.1.1
3 LOGGING all -- 0.0.0.0/0 0.0.0.0/0
4 DROP all -- 0.0.0.0/0 192.168.1.0/24
5 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain LOGGING (1 references)
num target prot opt source destination
1 LOG all -- 0.0.0.0/0 0.0.0.0/0 limit: avg 10/min burst 5 LOG flags 0 level 7 prefix `DROP: '
2 DROP all -- 0.0.0.0/0 0.0.0.0/0
허용 된 IP 핑 (192.168.1.1 및 192.168.1.2)은 작동하지만 (좋은) Google에 핑 (ping)해도 좋지 않습니다.
[root@server ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
ping: sendmsg: Operation not permitted
ping: sendmsg: Operation not permitted
^C
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1950ms
[root@server ~]# ping 192.168.1.2
PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data.
64 bytes from 192.168.1.2: icmp_seq=1 ttl=128 time=0.294 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=128 time=0.270 ms
물론 사람들에게 네트워크의 서버에 대한 액세스 권한을 부여하는 것과 관련하여 어느 정도의 신뢰가 있다는 것을 알고 있지만 가능한 한 많이 강화하고 싶습니다. 누구든지 내가 할 수있는 다른 일에 대해 의견을 말할 수 있다면 그 점에 대해서도 감사하겠습니다.
미리 감사드립니다!
답변
OK 나는 문제를 스스로 알아 냈으므로 참조를 위해 내 자신의 질문에 대답 할 것입니다. 문제는 모든 트래픽이 LOGGING 체인을 통과하고 있었고 LOGGING 체인의 두 번째 규칙이 모든 트래픽을 삭제한다는 것입니다. LOGGING 체인에서 규칙 2를 제거하고 모든 것이 작동했습니다.
답변
비슷한 과제를 겪고 있습니다. LAN에서 분리하려는 여러 가지 취약점이있는 IOT 장치가 있지만 분리하고 싶지 않은 다른 장치와 스위치를 통해 연결되어 있습니다. 별도의 체인을 만들고 입력 체인의 시작 부분에 IOT 장치의 소스 또는 IOT 장치의 대상이있는 모든 항목에 대한 참조를 입력 한 다음 소스가 LAN 및 대상은 IoT 다음 DROP이거나 소스가 IoT이고 대상이 LAN 인 경우 DROP이지만 패킷을 삭제하지 못하고 장치를 ping하고 액세스 할 수는 없습니다. 심지어 다른 규칙의 시작 부분에 규칙을 추가하여 차이가 있었지만 운이 없는지 확인했습니다. 어떤 아이디어?
b1tphr34k@RT-AC87U-C598:/tmp/home/root# iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
TIVOFILTER all -- 192.168.10.8 anywhere
TIVOFILTER all -- anywhere 192.168.10.8
logdrop icmp -- anywhere anywhere icmp echo-request
logaccept all -- anywhere anywhere state RELATED,ESTABLISHED
logdrop all -- anywhere anywhere state INVALID
PTCSRVWAN all -- anywhere anywhere
PTCSRVLAN all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state NEW
ACCEPT all -- anywhere anywhere state NEW
logaccept udp -- anywhere anywhere udp spt:bootps dpt:bootpc
INPUT_ICMP icmp -- anywhere anywhere
logdrop all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
DROP all -- 192.168.10.8 192.168.10.0/24
DROP all -- 192.168.10.0/24 192.168.10.8
logaccept all -- anywhere anywhere state RELATED,ESTABLISHED
logdrop all -- anywhere anywhere
logdrop all -- anywhere anywhere state INVALID
logaccept all -- anywhere anywhere
SECURITY all -- anywhere anywhere
NSFW all -- anywhere anywhere
logaccept all -- anywhere anywhere ctstate DNAT
logaccept all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 192.168.10.0/24 192.168.10.8
DROP all -- 192.168.10.8 192.168.10.0/24
Chain ACCESS_RESTRICTION (0 references)
target prot opt source destination
Chain FUPNP (0 references)
target prot opt source destination
ACCEPT udp -- anywhere 192.168.10.5 udp dpt:54927
ACCEPT tcp -- anywhere 192.168.10.7 tcp dpt:32400
Chain INPUT_ICMP (1 references)
target prot opt source destination
RETURN icmp -- anywhere anywhere icmp echo-request
RETURN icmp -- anywhere anywhere icmp timestamp-request
logaccept icmp -- anywhere anywhere
Chain NSFW (1 references)
target prot opt source destination
logdrop udp -- anywhere anywhere udp spt:https
logdrop udp -- anywhere anywhere udp dpt:https
logdrop udp -- anywhere anywhere udp spt:www
logdrop udp -- anywhere anywhere udp dpt:www
logdrop icmp -- anywhere anywhere icmp timestamp-request
logdrop icmp -- anywhere anywhere icmp timestamp-reply
RETURN all -- anywhere anywhere
Chain PControls (0 references)
target prot opt source destination
logaccept all -- anywhere anywhere
Chain PTCSRVLAN (1 references)
target prot opt source destination
Chain PTCSRVWAN (1 references)
target prot opt source destination
Chain SECURITY (1 references)
target prot opt source destination
RETURN tcp -- anywhere anywhere tcpflags: FIN,SYN,RST,ACK/SYN limit: avg 1/sec burst 5
logdrop tcp -- anywhere anywhere tcpflags: FIN,SYN,RST,ACK/SYN
RETURN tcp -- anywhere anywhere tcpflags: FIN,SYN,RST,ACK/RST limit: avg 1/sec burst 5
logdrop tcp -- anywhere anywhere tcpflags: FIN,SYN,RST,ACK/RST
RETURN icmp -- anywhere anywhere icmp echo-request limit: avg 1/sec burst 5
logdrop icmp -- anywhere anywhere icmp echo-request
RETURN all -- anywhere anywhere
Chain TIVOFILTER (2 references)
target prot opt source destination
DROP all -- 192.168.10.0/24 192.168.10.8
DROP all -- 192.168.10.8 192.168.10.0/24
Chain logaccept (8 references)
target prot opt source destination
LOG all -- anywhere anywhere state NEW LOG level warning tcp-sequence tcp-options ip-options prefix "ACCEPT "
ACCEPT all -- anywhere anywhere
Chain logdrop (14 references)
target prot opt source destination
LOG all -- anywhere anywhere state NEW LOG level warning tcp-sequence tcp-options ip-options prefix "DROP "
DROP all -- anywhere anywhere