iptablesの記述方法

このQ&Aのポイント
  • RedHatLinux9でのiptablesの記述方法を解説します
  • -Nオプションの使い方について分かりやすく解説します
  • NetBIOS関連のパケットをログをとるように設定する方法を説明します
回答を見る
  • ベストアンサー

iptablesの記述方法

RedHatLinux9 でサーバ兼ルータ兼ファイアウォールを構築しています。(DMZを1台使用) iptables の記述が、なかなか分かりやすく解説しているものがなくて困っています。 特に -N の記述方法がよく分かりません。 DMZ側のファイアウォールとして、 # NetBIOS関連のパケットはログをとり、インターネットに出さない と設定する場合、下記のようでよいのでしょうか? iptables -N net-bios iptables -A net-bios -j LOG --log-prefix "### NetBIOS ###" iptables -A net-bios -j DROP iptables -A FORWARD -p tcp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p udp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p udp -m multiport --dport 135,137,138,139,445 -j net-bios

質問者が選んだベストアンサー

  • ベストアンサー
  • xjd
  • ベストアンサー率63% (1021/1612)
回答No.1

自宅のルータ兼サーバでは、以下の様に定義してます。 まず、ログを出力して拒否するルールを作っておいて iptables -N LOGANDDROP iptables -A LOGANDDROP -j LOG ........ iptables -A LOGANDDROP -j DROP そのあとで、拒否したいforwardは、ルールセットLOGANDDROPを呼べば良いです。 iptables -A FORWARD ........ -j LAGANDDROP

hotchan
質問者

お礼

あ、xjd さんですね。いつもありがとうございます。 m(_ _)m よろしければ、 質問:RedHat9 Linux のDNSサーバのログが不正アクセスでないかどうか教えて欲しいです の方も宜しくお願いします。m(_ _)m

関連するQ&A

  • iptablesの設定 NetBiosについて

    RedHat9 Linux でサーバ兼ルータを構築しています。(DMZも使用しています) (WAN側 ppp0 、DMZ側 eth1、LAN側 eth2) iptables の設定として、 # ポリシーの設定 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # NetBIOS関連のパケットはログをとり、インターネットに出さない iptables -N net-bios iptables -A net-bios -j LOG --log-prefix "### NetBIOS ###" iptables -A net-bios -j DROP iptables -A INPUT -i ppp0 -p tcp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A INPUT -i ppp0 -p udp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A INPUT -i ppp0 -p tcp -m multiport --dport 135,137,138,139,445 -j net-bios iptables -A INPUT -i ppp0 -p udp -m multiport --dport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p tcp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p udp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p udp -m multiport --dport 135,137,138,139,445 -j net-bios というのを設定しました。 下記のサイトを参考にしました。 http://www.kkoba.com/linuxrouter/iptables.shtml ところで、NetBIOS関連のパケットはログをとり、インターネットに出さない という設定は必要ですか? これだと異常にたくさんのログが取れてしまいますが。。

  • Linuxサーバに社内からSSH接続をすると、決まった会社のIPがとれます。大丈夫でしょうか?

    RedHat9 Linux でサーバ兼ルータを構築しています。(DMZも使用しています) (WAN側 ppp0 、DMZ側 eth1、LAN側 eth2) iptables の設定として、 # NetBIOS関連のパケットはログをとり、インターネットに出さない iptables -N net-bios iptables -A net-bios -j LOG --log-prefix "### NetBIOS ###" iptables -A net-bios -j DROP iptables -A FORWARD -p tcp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p udp -m multiport --sport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p tcp -m multiport --dport 135,137,138,139,445 -j net-bios iptables -A FORWARD -p udp -m multiport --dport 135,137,138,139,445 -j net-bios としていました。(今はログが多くなるということでやめようと思っています) 社内PCからサーバにSSHでログインすると、必ず、下記のようなログが出ます。 (私のPCはIP 192.168.*.* ) May 26 15:00:00 ns kernel: ### NetBIOS ###IN=eth2 OUT=ppp0 SRC=192.168.*.* DST=aaa.bbb.cc.dd LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=**** DF PROTO=TCP SPT=1335 DPT=139 WINDOW=**** RES=0x00 SYN URGP=0 DST=aaa.bbb.cc.dd というIPは、知らない会社のIPです。 これはなにか悪さをされているということでしょうか?

  • iptablesの設定がうまく反映されません

    iptablesを有効にすると、サーバが公開しているウエブページの閲覧がローカル、外部ドメインともにできません。内部名前解決もできなくなってしまいます。メールもローカル、外部ドメインからも送受信できなくなります。 無効にすると、全て問題なく動作します。 iptables無効状態ではHTTP:80、HTTPS:443 SMTP:25/587、POP3:110/995、IMAP:143/993 は外部からポートスキャンで、アクセスできましたとなります。 iptablesを有効にすると、どのポート番号もポートスキャンで、アクセスできませんとなります。設定は下記のとおりです。有効状態で唯一、22番だけポートスキャンで成功します。 何がいけないのでしょうか。よろしくお願いします。 環境:CentOS6.2 、1台のサーバでApache,Bind,Postfix/Dovecot が稼動中です。 [root@hogehoge ~]# cat /etc/sysconfig/iptables # Generated by iptables-save v1.4.7 on Tue Jun 12 22:39:14 2012 *filter :INPUT DROP [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [24:2320] -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A INPUT -s 192.168.0.0/24 -j ACCEPT -A INPUT -j LOG --log-prefix "[iptables] " --log-level 6 -A INPUT -p udp -m udp --dport 53 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT -A INPUT -p tcp -m tcp --sport 25 -j ACCEPT -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT -A INPUT -p tcp -m tcp --dport 587 -j ACCEPT -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on Tue Jun 12 22:39:14 2012

  • iptablesを使用してのDNSゾーン転送の設定。

    今後Linuxをルーターとしてサーバー公開を目指しています。 グローバルIP=10.10.10.10(ルーターインターフェース=eth0) プライベートIP=192.168.0.1(ルーターインターフェースeth1) PrimaryDNS=10.10.10.10:53をプライベートIPに変換=192.168.0.2:53 セカンダリDNS=20.20.20.20 Linuxルータはiptablesのみ動作。 primaryDNSサーバーはwindows2000を使用しています。 iptablesにより、Preroutingを使用して10.10.10.10:53→192.168.0.2:53の変換。 POSTROUTINGにより192.168.0.2→10.10.10.10:53へ変換と設定しています。 # iptables -t nat -A PREROUTING -p tcp -d 10.10.10.10 -dport53 -j DNAT -to-destinalion 192.168.1.20:53 # iptables -t nat -A POSTROUTING -p tcp -s 10.10.10.10 -sport53 -j SNAT -to-source 192.168.1.20:53 # iptables -t nat -A PREROUTING -p udp -d 10.10.10.10 -dport53 -j DNAT -to-destinalion 192.168.1.20:53 # iptables -t nat -A POSTROUTING -p udp -s 10.10.10.10 -sport53 -j SNAT -to-source 192.168.1.20:53 そこで質問なのですが、この際Win2000でゾーン転送のセカンダリDNSの宛先アドレスはどうしたらよろしいのでしょうか? その際、iptablesの記述も教えてください。 一応、 # iptables -A FORWARD -p tcp -dport53 -j ACCEPT # iptables -A FORWARD -p udp -dport53 -j ACCEPT 53ポートのtcp,udpを許可しています。

  • iptablesの設定について

    IISとApachのテストサイトを構築しています。 LINUXマシンにNICを2枚差し、 インターネット側:FW-OUT(eth0) プライベート側:FW-IN(eth1) WEBサイトの仮想アドレスとして、 V_WEB(eth0:1) V_WIN2K(eth0:2) MAINTマシンからPINGは172.32.0.0は通るのですが、 当該マシンから両WEBページが閲覧できません。 記述は、 http://www.atmarkit.co.jp/flinux/rensai/security03/security03a.html を参考に変更しました。 何か手がかりがあればお願いします。 #!/bin/sh # # Define IP Address FW_OUT='172.32.0.100' FW_IN='192.168.0.1' V_WEB='172.32.0.10' V_WIN2K='172.32.0.20' R_WEB='192.168.0.10' R_WIN2K='192.168.0.20' MAINT='172.32.0.150' ANY='0.0.0.0' # # Flush chains /sbin/iptables -F # /sbin/iptables -P INPUT DROP /sbin/iptables -P FORWARD DROP /sbin/iptables -P OUTPUT DROP # /sbin/iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT /sbin/iptables -A OUTPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT # /sbin/iptables -A OUTPUT -p icmp -s $FW_OUT --icmp-type 0 -d $MAINT -j ACCEPT /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $FW_OUT -j ACCEPT # /sbin/iptables -A OUTPUT -p icmp -s $V_WEB --icmp-type 0 -d $MAINT -j ACCEPT /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_WEB -j ACCEPT /sbin/iptables -A OUTPUT -p icmp -s $V_WIN2K --icmp-type 0 -d $MAINT -j ACCEPT /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 8 -d $V_WIN2K -j ACCEPT # /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 0 -d $V_WEB -j ACCEPT /sbin/iptables -A OUTPUT -p icmp -s $V_WEB --icmp-type 8 -d $MAINT -j ACCEPT /sbin/iptables -A INPUT -p icmp -s $MAINT --icmp-type 0 -d $V_WIN2K -j ACCEPT /sbin/iptables -A OUTPUT -p icmp -s $V_WIN2K --icmp-type 8 -d $MAINT -j ACCEPT # /sbin/iptables -A INPUT -p TCP -s $MAINT --dport 22 -d $FW_OUT -i eth0 -j ACCEPT /sbin/iptables -A OUTPUT -p TCP ! --syn --sport 22 -s $FW_OUT -d $MAINT -o eth0 -j ACCEPT # /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 80 -d $R_WEB -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 80 -s $R_WEB -d $ANY -j ACCEPT # /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 443 -d $R_WEB -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 443 -s $R_WEB -d $ANY -j ACCEPT # /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 80 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 80 -s $R_WIN2K -d $ANY -j ACCEPT # /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 135 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 135 -s $R_WIN2K -d $ANY -j ACCEPT /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 137 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 137 -s $R_WIN2K -d $ANY -j ACCEPT /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 138 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 138 -s $R_WIN2K -d $ANY -j ACCEPT /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 139 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 139 -s $R_WIN2K -d $ANY -j ACCEPT /sbin/iptables -A FORWARD -p TCP -s $ANY --dport 445 -d $R_WIN2K -j ACCEPT /sbin/iptables -A FORWARD -p TCP ! --syn -m state --state ESTABLISHED --sport 445 -s $R_WIN2K -d $ANY -j ACCEPT # # Flush Nat Rules # /sbin/iptables -t nat -F # # Nat Rules # /sbin/iptables -t nat -A POSTROUTING -s $R_WEB -o eth0 -p TCP -j SNAT --to $V_WEB /sbin/iptables -t nat -A POSTROUTING -s $R_WIN2K -o eth0 -p TCP -j SNAT --to $V_WIN2K # # End Of Rules [root@firewall FW]#

  • iptablesによるパケットフィルタ

    こんにちは、皆さん iptablesに関して、2つの種類の質問があります。 1. SYNパケット以外の許可の設定 iptablesで、HTTPやFTPのサービスポートを閉じた上で、 以下のコマンドを実行すると、サービスポートが空いてなくても パケットが通ってしまいます。 iptables -A INPUT -p tcp ! --syn -j ACCEPT 上記の意味はSYNパケット以外だけ許可するとなってますので、 最初のセッションを張るパケットは通過できないので、 結果的にはサービスは提供されないのではないでしょうか? でもなぜか通ってます。 また、上記をDROPに指定し直すと、パケットは通過しません。 その後、以下のように個別にサービスポートを開けると、 パケットは通過できるようになるので、当然サービスが提供されます。 iptables -A INPUT -p tcp --sport 1024:65535 --dport 80 -j ACCEPT iptables -A INPUT -p tcp --sport 1024:65535 --dport 20 -j ACCEPT iptables -A INPUT -p tcp --sport 1024:65535 --dport 21 -j ACCEPT 2. INPUTとFORWARDについて INPUTとFORWARDの違いは、FORWARDはサーバをルータとして使っている時だけ 必要なチェインで、INPUTはパケットを受信する時に必ず通るチェインという 認識でよろしいでしょうか?

  • iptablesでFTPのパッシブモード通信許可

    こんにちは。 iptablesの学習でテスト用のFWサーバーと2台のWebサーバーをつくりました。 いまはForwardでアクセスごとに転送先を振り分ける実験をしています。 FTPのForward設定でわからないことがあるので質問させてください。 やりたいこと: ip_conntrack_ftpを組み込めばiptablesにいちいちパッシブ通信の使用ポートすべてを指定しなくても、モジュールが自動で制御してくれるという情報をネットで見かけ、それをやってみようと考えています。ところがどうがんばってもFTPのパッシブモードがつながりません。FTP以外のサービス、たとえばDNS, NTP, HTTP等のForwardは問題なく行えています。 環境: FWサーバー → CentOS6 iptablesで外部からのアクセスをブロックしたり、振り分けたり。 WEBサーバー → CentOS6 apacheとvsftpdでWebサーバーを構成。iptables無効です。 ルーター → 業務用ですがファイアウォール等はすべて無効になっています。 111.222.333.0はグローバルIPアドレスです。 192.168.1.0はローカルIPアドレスです。                              -eth0(WEB_SERVER1)                              | 192.168.1.2(→111.222.333.2) (ONU)-(ROUTER)-eth0(FW_SERVER)eth1----|        111.222.333.1(eth0)          |        111.222.333.2(eth0:1)         -eth0(WEB_SERVER2)        111.222.333.3(eth0:2)          192.168.1.3(→111.222.333.3)        192.168.1.1(eth1) FWサーバーのiptable設定: net.ipv4.ip_forward = 1 ip_conntrack_ftpモジュール有効 ip_nat_ftpモジュール有効 iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP . .(一部省略) . # HTTP iptables -A FORWARD -p tcp -i eth0 -o eth1 -m multiport --dport 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -p tcp -i eth1 -o eth0 -m multiport --sport 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT # FTP(ここをどうしたらいいのかわからない) iptables -A FORWARD -p tcp --dport 21 -j ACCEPT iptables -A FORWARD -p tcp --sport 21 -j ACCEPT # Webserver1 iptables -t nat -A PREROUTING -i eth0 -d 111.222.333.2 -j DNAT --to-destination 192.168.1.2 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.2 -j SNAT --to-source 111.222.333.2 # Webserver2 iptables -t nat -A PREROUTING -i eth0 -d 111.222.333.3 -j DNAT --to-destination 192.168.1.3 iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.3 -j SNAT --to-source 111.222.333.3 上記設定でFTPのForward部分をmultiportにしてポート20を入れたり除いたり、NEWやESTABLISHEDやRELATEDを入れたり消したり、いろいろ試行錯誤していますがFilezillaで下のようなエラーがでます。 PASV レスポンス: 227 Entering Passive Mode (111,222,333,2,92,226). コマンド: LIST エラー: 接続タイムアウト エラー: ディレクトリ一覧表示の取り出しに失敗しました 説明が長くて恐縮ですがよろしくお願いします。 <(_ _)>

  • ipmasqadmをiptablesで定義する方法について

    お世話になります。 Linuxをルーター機能で2枚のNIC構成で作成しています。 kernel-2.2では下記のコマンドでDMZにあるWebサーバーにポートフォアワードしていました。 /sbin/ipmasqadm portfw -a -P tcp -L 1.2.3.4 80 -R 192.168.0.101 80 これをkernel-2.4ではiptablesを使用して構成するようですが、その定義がいまいち理解できていません。 その定義方法は下記のものだけでよろしいのでしょうかをお尋ねします。つまり、下記のみで外部からDMZゾーンにあるWebサーバーへのアクセスが可能かどうか?です。 /sbin/iptables -A FORWARD -p tcp -s 0.0.0.0 --dport 80 -d 192.168.0.101 -j ACCEPTなど・・・ /sbin/iptables -A PREROUTING -t nat -p tcp -d 1.2.3.4 --dport 80 -j DNAT --to 192.168.0.101:80 以上のヒントをお願いします。

  • 【 Fedora Core3 】 /etc/sysconfig/iptables

    DNSサーバ兼Webサーバに使おうと思っています。 SSHは使います。 (現在試験稼動中です。) セキュリティを強化するために是非ともご指摘・ご指南頂ければ幸いです。 よろしくお願いします。<(_ _)> /etc/sysconfig/iptables -- *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A INPUT -p udp -m udp --sport 53 -j ACCEPT -A FORWARD -j RH-Firewall-1-INPUT -A OUTPUT -pudp -m udp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmp-type any -j ACCEPT -A RH-Firewall-1-INPUT -p ipv6-crypt -j ACCEPT -A RH-Firewall-1-INPUT -p ipv6-auth -j ACCEPT -A RH-Firewall-1-INPUT -d 244.0.0.251 -p udp --dport 5353 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISH -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT --

  • iptableコマンドを複数記載したスクリプトを実行したいです。

    Linuxのコマンドについてお聞きしたいです。 iptableコマンドを複数記載したスクリプトを作成し、そのスクリプトを実行することによってパケットフィルタリングの設定をしようと思っています。 Windowsで下記のようなファイルを作成しました。 #!/bin/sh iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE iptables -P INPUT DROP iptables -P FORWARD DROP iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i eth0 -d 210.98.76.54 -p tcp --dport 80 -j ACCEPT iptables -A INPUT -i eth1 -d 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT iptables -A INPUT -i eth0 -d 202.228.202.2 -p udp --sport 53 --dport 1024:65535 -j ACCEPT iptables -A INPUT -j LOG --log-prefix "### INPUT ###" iptables -A FORWARD -j LOG --log-prefix "### FORWARD ###" これをLinuxの/rootに作成したbinフォルダにフロッピーでコピーしました。 ファイル名をfilterにしたので、[root@linux root]# filter とし、Enterとし、 スクリプトを実行して設定を反映させようとしました。 しかし、: bad interpreter: そのようなファイルやディレクトリはありません と出てしまいます。 何が足りないのでしょうか?