iptables로 특정 포트를 차단하려고 합니다.

CoffeeDust의 이미지

현재 리눅스 서버로 구축된 내용은 웹, 메일, 마스커래이딩, 삼바 등을 사용하고 있습니다.
그러나 삼바의 보안이 취약한 것 같아서 내부망에서만 접근하고 외부망에서는 차단하려고 하는데 잘 안되네요.

내부 = eth0
외부 = eth1

iptables의 설정은 다음과 같습니다.

[root@www root]# more</etc/sysconfig/iptables
# Firewall configuration written by lokkit
# Manual customization of this file is not recommended.
# Note: ifup-post will punch the current nameservers through the
#       firewall; such entries will *not* be listed here.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Lokkit-0-50-INPUT - [0:0]
-A INPUT -j RH-Lokkit-0-50-INPUT
-A FORWARD -j RH-Lokkit-0-50-INPUT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 110 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 22 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 25 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 80 --syn -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp -s 0/0 --sport 67:68 -d 0/0 --dport 67:68 -i eth0 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p udp -m udp -s 0/0 --sport 67:68 -d 0/0 --dport 67:68 -i eth1 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -i lo -j ACCEPT
-A RH-Lokkit-0-50-INPUT -i eth1 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -i eth0 -j ACCEPT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 0:1023 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 2049 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 0:1023 -j REJECT
-A RH-Lokkit-0-50-INPUT -p udp -m udp --dport 2049 -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 6000:6009 --syn -j REJECT
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 7100 --syn -j REJECT

제가 iptables을 어찌 건드려 보아도 139번 포트가 차단되지 않네요.
도와주세요. ㅜ.ㅜ;

skdream의 이미지

레드햇 쓰시나 보네요....

RH-Lokkit-o-50-INPUT 은 Redhat에 기본으로 설정되어있는 방화벽 체인입니다. 따라서 INPUT, OUTPUT, FORWARD체인에 아무리 더해봐야.. 이곳엔 보이지 않습니다..

물론 그래도 작동은 합니다.

외부망(eht1)에서 Net-bios포트를 차단하기 위해선
139 tcp와 139 udp를 둘다 막아야 하니까..

랜카드 eth1에서 막으려고 하면.. 이렇게 하면 되는건지는 확실하지 않지만.. 비슷할거구요..

-A RH-Lokkit-0-50-INPUT -p tcp --dport 139 -i eth1 -j REJECT

-A RH-Lokkit-0-50-INPUT -p udp --dport 139 -i eth1 -j REJECT

확실하게 되는 방법을 말씀드리면... ^^

-A RH-Lokkit-0-50-INPUT -p tcp -s ! xxx.xxx.xxx.0/24 -d yyy.yyy.yyy.yyy/32 --dport 139 -j REJECT

-A RH-Lokkit-0-50-INPUT -p udp -s ! xxx.xxx.xxx.0/24 -d yyy.yyy.yyy.yyy/32 --dport 139 -j REJECT

라고 하면 되겠네요.. 이건 IP를 이용해서 걸르는 방법입니다.
xxx.xxx.xxx.0 은 내부내트워크를 쓰면됩니다.
ex : 192.168.0.1 ~ 192.168.0.255 까지를 포함하려면 192.168.0.0/24
yyy.yyy.yyy.yyy는 eth1의 IP입니다.
이건 물론 전용선과 같이 IP가 불변일때 쓸 수 있는 방법입니다.

해석하자면... 프로토콜(-p) 이 tcp이고 패킷의 출발지 (소스 -s)가 xxx.xxx.xxx.0의 네트워크가 아니고(!) 패킷의 도착지(목표,데스티네이션 일려나요.. ㅡㅡ; -d)가
yyy.yyy.yyy.yyy이며 포트가 139번인 패킷은 REJECT시켜라 입니다.

중요한건 체인의 순서입니다. 위에 부터 반영되는거기 때문에 맨 아래에 추가해도 이미 위쪽에서 ACCEPT되는 범위의 채인이 있다면..
REJECT까지 가기도 전에 이미 패킷은 방화벽을 통과합니다.

사람마다 다르지만.. 전 우선적으로 거부할 REJECT를 맨위에...
그다음에 허용할 체인을 두고.. 마지막에 이것도 아니고 저것도 아닌 패킷은 DROP시켜버리는 패쇄적인 정책을 씁니다..

http://wiki.kldp.org/Translations//html/Packet_Filtering-KLDP/Packet_Filtering-KLDP.html#toc5

http://woogi.org/

에 가보시면 더욱 많은 자료가 있습니다.

가능하다면.. 레드햇 내장 파이어월보다는 스크립트를 이용해서 자체적으로 제작하는 방식이 훨씬 안정성이 높겠죠.. 자유도도 있고..

무엇보다.. 내부에서 나가는 네트워크도 제어할 수 있는 막강성이 관리자에게 부여된답니다.. :P

CoffeeDust의 이미지

너무 감사합니다.
잘 해결되었네요.

말씀하신 내용중 "우선적으로 거부를 먼저한다"라는 내용에 공감해서 INPUT에 RH-Lokkit-0-50-INPUT이라는 체인으로 가는 라인 앞쪽에 다음과 같이 2줄을 넣었더니 잘 되네요...^^

-A INPUT -p udp -s ! xxx.xxx.xxx.0/24 -d yyy.yyy.yyy.yyy/32 --dport 139 -j DROP
-A INPUT -p tcp -s ! xxx.xxx.xxx.0/24 -d yyy.yyy.yyy.yyy/32 --dport 139 -j DROP

지금 막 테스트 성공했습니다.
139번은 막히고 웹, 메일, 내부삼바, 마스커래이딩 모두 잘 돌아가네요.

많은 도움이 되었습니다.
정말 감사합니다. ^^

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.