iptables와 dhcp를 이용한 MAC 필터링...

pnspeed의 이미지

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 셋팅을 해봐도 계속 에러메세지만 나오네요...;;

저의 고민 좀 덜어주세요....^^

감사합니다.

visualplus의 이미지

iptables -A in_accept -i eth1 -m mac --mac 00:11:22:33:44:55 -s 192.168.6.100 -j ACCEPT

라고 하신건가요?
그럼 in_accept라는 체인이 만들어져있어야 합니다.

pnspeed의 이미지

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 스크립트를 막 짜집기해서 사용하다보니...영 개념이 없네요...;;

감사합니다..

열정...무엇일까요??...

열정...무엇일까요??...

visualplus의 이미지

네 거의 비슷합니다. 약간의 설명을 붙여 설명 드리자면..

일단 리눅스를 지나가는 패킷에는 input패킷이 있고, output패킷, forward패킷이 있습니다.
( 말 그대로 리눅스로 들어오는 input, 리눅스에서 나가는 output, 다른 노드에서 리눅스를 통해 나가는 forward패킷 )

님이 제어하실 패킷은 아마 forward패킷이겠지요?
그렇다면 패킷이 지나가는 통로는

1. mangle 테이블의 prerouting 체인
2. nat 테이블의 prerouting 체인
3. mangle테이블의 forward 체인
4. filter테이블의 forward 체인
5. [ routing ]
6. mangle 테이블의 postrouting 체인
7. nat 테이블의 postrouting 체인

이렇게 됩니다.

여기서 mangle테이블은 패킷에 마킹하는 곳, nat 테이블은 nat관련 동작 하는 곳, filter테이블은 패킷의 drop, accept여부를 결정하는 곳
이라고 할 수 있겠습니다.
고로 님은 filter테이블을 보시면 되겠지요.

그럼,

iptables -t filter -N in_accept

는 in_accept라는 체인을 만드는 것 입니다. 이 명령은 그냥 체인을 하나 만드는 것 이고 이것만 하면 이 체인으로는 어떤 패킷도 들어오지 않습니다.
그러므로

iptables -t filter -I forward -j in_accept

라는 명령으로 filter테이블의 forward체인을 지나가는 모든 패킷은 in_accept체인을 통과하라는 룰을 넣어 주셔야 합니다.

그다음

iptables -t filter -P in_accept DROP

라는 명령으로 in_accept의 기본 정책을 drop으로 변경하시고,

in_accept 체인에 이런저런 룰을 적용해주시면 됩니다.

iptables -t filter -A in_accept -i eth1 -m mac --mac 00:11:22:33:44:55 -s 192.168.6.100 -j 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를 얻어 갈 때 마다 특정 스크립트를 실행하게 하는 옵션이 있는 기억이 있는데
이것을 참조하시면 아마 좀 편리하게 할 수 있을것 같은 생각이 드네요^^;

pnspeed의 이미지

이해가 쏙..쏙 되는군요...
넘 감사드립니다...

사실 nat로 forward 시켜서 방화화벽단 아래에 각종 서버와 사내PC를 두고 사용하는 iptables 스크립트를
만들긴 만들었는데 정말 개념없이 만들었다는 생각이 팍팍...듭니다....^^

filter에 대한 개념이 좀 잡히는듯한 느낌입니다...

일단 iptables 수정해서 작업해봐야겠습니다.

다시 한번 감사드립니다...

열정...무엇일까요??...

열정...무엇일까요??...

obbaya의 이미지

iptables로 해야되는 게 아니시라면

dhcpd.conf 에 셋팅을 하는 건 어떨까요?

host laser-printer {
hardware ethernet 08:00:2b:4c:a3:82;
fixed-address 192.168.1.120;
}

이런식으로 맥이랑 아이피 픽스 시켜서...

pnspeed의 이미지

dhcp로 mac과 ip 고정시키면요...

사용자가 ip 자동으로 하지않고 직접 ip 입력해서 바꿔도 인터넷 잘되더군요...;;

이런 문제점이 있어서 iptables를 사용하는 방법이 없을까...하는 고민이 생겼답니다....

열정...무엇일까요??...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.