사용자 분리를 위한 IPTABLES 규칙

사용자 분리를 위한 IPTABLES 규칙

DHCP 서버 풀: 192.168.1.0/24가 있는 OpenWrt 10.03 라우터 [IP: 192.168.1.1]가 있습니다. 클라이언트는 무선/유선 연결을 통해 이를 사용합니다. 좋아요!

문제는 사용자를 서로 분리해야 한다는 것입니다.

이를 수행하는 방법: IPTABLES 규칙 [/etc/firewall.user]을 통해.
좋아요!
"소리내어 생각하기": 따라서 [OpenWrt 라우터에서] 다음과 같은 규칙이 필요합니다.

- DROP 여기서 SOURCE: 192.168.1.2-192.168.1.255이고 DESTINATION은 192.168.1.2-192.168.1.255

아이디어는 다음과 같습니다. 좋아요!

질문!
- 이 방화벽 규칙을 적용하면 나 자신이 잠길 수 있나요?
- 이게 안전한 방법인가요? [이거 쉽나요? : 안녕하세요. 저는 고객입니다. 제 IP 주소는 192.168.1.1입니다! - 이제 암호화되지 않은 트래픽을 스니핑할 수 있습니다! :( - 모든 클라이언트가 동일한 서브넷에 있기 때문입니다!]
- 중복된 IP 주소를 찾아/감사할 수 있는 좋은 방법이 있나요?
- 중복된 MAC 주소를 찾아/감사할 수 있는 좋은 방법이 있나요?
- 뭔가 좋은 방법이 있나요? Layer2에서 이 IPTALBES 규칙을 구현하려면 어떻게 해야 합니까?
$ wget -q "http://downloads.openwrt.org/backfire/10.03/ar71xx/packages/" -O - | grep -i ebtables $


ps: 규칙은 [좋은 체인에 있습니까? ]: iptables -A FORWARD -m iprange --src-range 192.168.1.2-192.168.1.255 --dst-range 192.168.1.2-192.168.1.255 -j DROP
감사합니다!

답변1

무선 사용자와 유선 사용자를 분리하고 싶다면 인터페이스를 맞춰보면 어떨까요? ppp0이 인터넷에 연결되어 있고 eth0이 로컬 LAN이고 wlan0이 무선이라고 가정합니다.

iptables -P FORWARD DROP                                 # Drop everything except:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED # Accept already accepted connections
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT            # Accept outgoing connections from local LAN
iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT           # Accept outgonig connnections from wlan

이것을 사용하는 경우:

  • 인터넷에서 어떤 것에도 연결할 수 없습니다
  • 무선 사용자는 인터넷에만 연결할 수 있습니다.
  • 케이블 사용자는 인터넷에만 연결할 수 있습니다.
  • 다음을 추가하면 별도의 IP 범위를 적용할 수 있습니다.--src-range

DHCP 서버가 OpenWrt 장치에서 실행 중인 경우 FORWARD 체인은 어떤 방식으로도 영향을 미치지 않습니다. DHCP 서버가 사용하도록 허용

iptables -P INPUT DROP                                   # Drop everything except:
iptables -A INPUT -m state --state RELATED,ESTABLISHED   # Accept already accepted connections
iptables -A INPUT ! -i ppp0 -p tcp --dport 22 -j ACCEPT  # Don't forget SSH
iptables -A INPUT ! -i ppp0 -p udp --sport 68 --dport 67 # Accept DHCP requests from any local network

나는 일반적으로 몇 가지 유형의 ICMP 및 스팸을 제외하고 OUTPUT의 모든 것을 허용합니다. 그러나 더 안전한 기본 DROP을 선호할 수 있으므로 구체적인 규칙은 다음과 같습니다.

iptables -P OUTPUT DROP                                             # Drop everything except:
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT ! -o ppp0 -p udp --sport 67 --dport 68 -j ACCEPT # Allow DHCP to the local network

이는 모든 것에 연결되어서는 안 되는 라우터의 경우 더 의미가 있습니다.

내 경험에 따르면 MAC 필터링을 사용하지 않는 것이 좋습니다. 보안을 추가하지 않고 불편을 끼칠 뿐입니다. 하지만 보고 싶다면:

iptables -m mac --help

MAC 주소를 기록하는 것이 유용할 수 있지만 쉽게 위조될 수 있습니다. ACCEPT 규칙 앞에 -j LOG또는 을 추가하면 -j NFLOG일치 규칙은 동일합니다.

네트워크를 통해서만 액세스할 수 있는 컴퓨터를 구성하고 있으므로 자신이 잠기지 않도록 매우 주의해야 합니다. 그냥 다가가서 규칙을 수동으로 삭제할 수는 없습니다. 특히, iptables -P INPUT DROP빈 INPUT 체인을 사용하면 SSH 세션이 종료됩니다. 구성 파일에서 규칙을 사용 iptables-save하고 작성하는 것이 좋습니다 . iptables-restore라우터에서 규칙을 시도하기 전에 키보드와 모니터가 있는 컴퓨터에서 규칙을 테스트할 수 있다면 도움이 될 것입니다.

관련 정보