iptables와 dhcp를 이용한 MAC 필터링...
글쓴이: pnspeed / 작성시간: 목, 2010/01/14 - 9:40오전
iptables를 사용하여 방화벽으로 잘 활용하고 있습니다.
nat를 이용하여 방화벽을 셋팅하였구요...
다름 아니라 사내 PC사용자가 대략 80여명 됩니다.
근데 문제점이 자기들 맘대로 ip주소를 바꾸고...ip 충돌 생기고...
그런 문제점들이 계속해서 발생합니다.
하여 dhcp를 이용하여 자동으로 ip 뿌려주는 방식을 이용하려고 했는데
dhcp를 이용하더라도 개인이 수동으로 ip 설정해서 맘대로 바꿔서 사용해도 사실상 제재(?)할 방법이 없더라구요..
방법은...
1. 해당 ip 192.168.1.100 는 mac aa:aa:aa:..... 으로 고정시키는겁니다.
해당 mac은 지정된 ip 외에는 통신을 할 수 없도록 셋팅하는것인데...
검색 끝에 비슷한 생각을 하신 분의 질문을 찾았습니다..
우선 INPUT DROP으로 모든 입력을 DROP하고 in_accept라는 lable을 주는겁니다. 앞에 ':'가 그 의미입니다. 그후 in_accept라는 lable을 달아준 규칙으로 적용을 하겠다는 의미입니다. -A in_accept -i eth1 -m mac --mac 00:11:22:33:44:55 -s 192.168.6.100 -j ACCEPT 끝에 ACCEPT가 있으니 만약 위의 설정만 있으면 이 리눅스와는 위의 IP 주소와 MAC을 가진 장비만 통신이 가능하게 되는겁니다. 그외 추가적인 DHCP 클라이언트들이 더 있으면 그 장비의 MAC하고 IP를 위와같이 더 추가 하시면 될 것 같습니다. FOWARD하고 OUTPUT 설정에 관한 내용들은 그대로 두고요...
위의 내용대로 iptables 셋팅을 해봐도 계속 에러메세지만 나오네요...;;
저의 고민 좀 덜어주세요....^^
감사합니다.
Forums:
iptables -A in_accept -i
라고 하신건가요?
그럼 in_accept라는 체인이 만들어져있어야 합니다.
자세히 설명해주시면 감사하겠습니다..^^
iptables -N in_accept
iptables -P in_accept ACCEPT
iptables -A in_accept -i eth1 -m mac --mac 00:11:22:33:44:55 -s 192.168.6.100 -j ACCEPT
이렇게 하면 되는것인가요??
iptables 스크립트를 막 짜집기해서 사용하다보니...영 개념이 없네요...;;
감사합니다..
열정...무엇일까요??...
열정...무엇일까요??...
네 거의 비슷합니다.
네 거의 비슷합니다. 약간의 설명을 붙여 설명 드리자면..
일단 리눅스를 지나가는 패킷에는 input패킷이 있고, output패킷, forward패킷이 있습니다.
( 말 그대로 리눅스로 들어오는 input, 리눅스에서 나가는 output, 다른 노드에서 리눅스를 통해 나가는 forward패킷 )
님이 제어하실 패킷은 아마 forward패킷이겠지요?
그렇다면 패킷이 지나가는 통로는
이렇게 됩니다.
여기서 mangle테이블은 패킷에 마킹하는 곳, nat 테이블은 nat관련 동작 하는 곳, filter테이블은 패킷의 drop, accept여부를 결정하는 곳
이라고 할 수 있겠습니다.
고로 님은 filter테이블을 보시면 되겠지요.
그럼,
는 in_accept라는 체인을 만드는 것 입니다. 이 명령은 그냥 체인을 하나 만드는 것 이고 이것만 하면 이 체인으로는 어떤 패킷도 들어오지 않습니다.
그러므로
라는 명령으로 filter테이블의 forward체인을 지나가는 모든 패킷은 in_accept체인을 통과하라는 룰을 넣어 주셔야 합니다.
그다음
라는 명령으로 in_accept의 기본 정책을 drop으로 변경하시고,
in_accept 체인에 이런저런 룰을 적용해주시면 됩니다.
이와 같은것들이 되겠지요.
그럼 룰을 말로 풀어보면
filter테이블의 forward체인으로 들어온 패킷은 모두 in_accept체인을 통과하는데,
in_accept체인을 보니 출발지 mac이 00:11:22:33:44:55이고, 192.168.6.100을 출발지 ip로 가지는 패킷은 통과, 그 외의 패킷은 모두 drop.
이해가 가셨는지요^^?
참고로 위에 -t filter는 아마 생략해도 될겁니다.
그냥 filter테이블이란것을 강조하고싶어서 넣었습니다.
아.. 그리고 위의 방법은 80명의 MAC주소를 모두 알 고 있어야 가능한 방법 이지만 간단한 스크립트를 만들면
좀 쉽게 될 수 있을 것 같습니다.
dhcpd 설정파일에 보면 ip를 얻어 갈 때 마다 특정 스크립트를 실행하게 하는 옵션이 있는 기억이 있는데
이것을 참조하시면 아마 좀 편리하게 할 수 있을것 같은 생각이 드네요^^;
헉..넘 친절한 설명 감사드립니다...
이해가 쏙..쏙 되는군요...
넘 감사드립니다...
사실 nat로 forward 시켜서 방화화벽단 아래에 각종 서버와 사내PC를 두고 사용하는 iptables 스크립트를
만들긴 만들었는데 정말 개념없이 만들었다는 생각이 팍팍...듭니다....^^
filter에 대한 개념이 좀 잡히는듯한 느낌입니다...
일단 iptables 수정해서 작업해봐야겠습니다.
다시 한번 감사드립니다...
열정...무엇일까요??...
열정...무엇일까요??...
iptables로 해야되는 게
iptables로 해야되는 게 아니시라면
dhcpd.conf 에 셋팅을 하는 건 어떨까요?
host laser-printer {
hardware ethernet 08:00:2b:4c:a3:82;
fixed-address 192.168.1.120;
}
이런식으로 맥이랑 아이피 픽스 시켜서...
dhcp로 고정시키면요...
dhcp로 mac과 ip 고정시키면요...
사용자가 ip 자동으로 하지않고 직접 ip 입력해서 바꿔도 인터넷 잘되더군요...;;
이런 문제점이 있어서 iptables를 사용하는 방법이 없을까...하는 고민이 생겼답니다....
열정...무엇일까요??...
댓글 달기