iptable을 이용한 방화벽 질문입니다.

lpokeh의 이미지

#!/bin/sh
#iptables 모듈 등록하기

modprobe iptable_filter
/sbin/iptables -F

# 정책 수립(일단 다 막고 본다)

/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P INPUT DROP

# ssh 열기(동작)

/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# httpd 열기(불완전)

/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

# mysqld 열기(불완전)

/sbin/iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT

# ftpd 열기(동작안함)

/sbin/iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 20:21 -j ACCEPT

/sbin/iptables -A INPUT -p udp --dport 20:21 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --sport 20:21 -j ACCEPT

# samba 열기(동작)

/sbin/iptables -A INPUT -p tcp --dport 137:139 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 137:139 -j ACCEPT

/sbin/iptables -A INPUT -p udp --dport 137:139 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --sport 137:139 -j ACCEPT

사용하는 것은 아파치, 개인용 FTP, mysql입니다. 그저 개인 홈의 게시판
정도로 mysql을 사용하고 JS보드를 쓰는데 글을 쓰거나 수정하면 반응이
엄청나게 늦습니다. 10분 뒤에 재접을 해서 봐야만 바뀐 모습을 볼 수 있는데..
FTP는 아예 접속이 불가능해집니다. 왜 이런 문제가 있는지 모르겠군요...

소리의 이미지

lpokeh wrote:
FTP는 아예 접속이 불가능해집니다.

iptables와 ftp 데몬을 같이 사용하시려면 ip_conntrack_ftp 모듈을 올려주셔야 하는 걸로 알고 있습니다.

그리고... 제가 초보라 lpokeh님의 iptables 규칙에 무슨 문제가 있는지는 정확히 모르겠지만, 방화벽 사용 용도가 저랑 비슷하신 것 같아 혹시라도 도움이 될 지 모르니 제 iptables 명령들을 올려보겠습니다. 사실 레드햇의 iptables 기본 규칙들을 베낀 것입니다. :oops:

#!/bin/sh

# 청소
iptables -F

# 기본 정책은 일단 다 받아들이기
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# 루프백 장치의 패킷은 모두 허용
iptables -A INPUT -j ACCEPT -i lo

# icmp 패킷은 모두 허용
iptables -A INPUT -j ACCEPT -p icmp --icmp-type any

# 이미 연결되었거나 상호의존적 패킷들은 무조건 허용
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED

# 새롭게 들어오는 특정 포트의 패킷들을 허용 (ftp/ssh/telnet/smtp/http)
iptables -A INPUT -j ACCEPT -m state --state NEW -p tcp --dport 21
iptables -A INPUT -j ACCEPT -m state --state NEW -p tcp --dport 22
iptables -A INPUT -j ACCEPT -m state --state NEW -p tcp --dport 23
iptables -A INPUT -j ACCEPT -m state --state NEW -p tcp --dport 25
iptables -A INPUT -j ACCEPT -m state --state NEW -p tcp --dport 80

# 새롭게 들어오는 특정 포트의 패킷들을 허용 (samba)
iptables -A INPUT -j ACCEPT -m state --state NEW -p udp --dport 135
iptables -A INPUT -j ACCEPT -m state --state NEW -p udp --dport 137
iptables -A INPUT -j ACCEPT -m state --state NEW -p udp --dport 138
iptables -A INPUT -j ACCEPT -m state --state NEW -p tcp --dport 139
iptables -A INPUT -j ACCEPT -m state --state NEW -p tcp --dport 445

# 나머지는 모두 icmp-host-prohibited 메시지를 돌려보내고 막기
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
익명 사용자의 이미지

lpokeh wrote:
#!/bin/sh
#iptables 모듈 등록하기

modprobe iptable_filter
/sbin/iptables -F

# 정책 수립(일단 다 막고 본다)

/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P INPUT DROP

# ssh 열기(동작)

/sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# httpd 열기(불완전)

/sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

# mysqld 열기(불완전)

/sbin/iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT

# ftpd 열기(동작안함)

/sbin/iptables -A INPUT -p tcp --dport 20:21 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 20:21 -j ACCEPT

/sbin/iptables -A INPUT -p udp --dport 20:21 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --sport 20:21 -j ACCEPT

# samba 열기(동작)

/sbin/iptables -A INPUT -p tcp --dport 137:139 -j ACCEPT
/sbin/iptables -A OUTPUT -p tcp --sport 137:139 -j ACCEPT

/sbin/iptables -A INPUT -p udp --dport 137:139 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp --sport 137:139 -j ACCEPT

사용하는 것은 아파치, 개인용 FTP, mysql입니다. 그저 개인 홈의 게시판
정도로 mysql을 사용하고 JS보드를 쓰는데 글을 쓰거나 수정하면 반응이
엄청나게 늦습니다. 10분 뒤에 재접을 해서 봐야만 바뀐 모습을 볼 수 있는데..
FTP는 아예 접속이 불가능해집니다. 왜 이런 문제가 있는지 모르겠군요...

저게 답니까? DNS 관련 쿼리도 돌아오기 불가능하겠군요.

/sbin/iptables -A INPUT -p ALL -m state --state established

정도는 넣어주는게 좋지 않을까요?

그리고 정책상으로 OUTPUT은 ACCEPT 이므로 OUTPUT 쪽 룰은 DENY할 부분만 있으면 되겠습니다.

realcns의 이미지

원래 iptable에선 순서가 중요하지 않습니까?
위에서 다 막아버리면 밑에서 열어줘도 소용 없는것 같던데...

제가 잘못 알고 있는건가요?

모든 OS를 사용해보자~!!
-놀고먹는백수가 되고 싶은 사람-

atie의 이미지

저는 local to local은 모든 것이 허용되게 우선 설정하고, 다음은 외부에서의 특정 포트 접근을 허용하는 순으로 설정을 합니다. 그렇지만, 외부에서의 mysql 포트로의 접근은 절대 허용하지 않습니다. local에서 접속하는 것만으로도 충분합니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

Necromancer의 이미지

FTP의 경우 Passive 모드를 이용하기 위해서는 Passive Port 접속 대역을
지정해 주어야 합니다. (proftpd에서는 PassivePort 지시어로 지정합니다)

그다음 iptables로 접속대역 (혼자쓴다면 10여개 정도로도 충분하겠지만 여럿이
쓴다면 100개 이상 늘려야겠죠.)포트를 다 열어주어야 합니다.
방화멱 내부에서 돌린다면 노가다로 그 포트들을 다 포워딩 걸어야죠.

Passive가 아닌 Active 모드인경우는 클라이언트쪽 20번 포트가
열려 있어야 하죠.
active시는 서버가 클라이언트 20번 포트로 접속 들어갑니다.

Written By the Black Knight of Destruction

댓글 달기

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