web-dev-qa-db-ja.com

1つのルールでiptablesのLOGおよびDROP

Iptablesを使用して発信接続をログに記録しようとしています。私が望んでいるのは、接続をドロップして受け入れながら、それらのログも記録することです。 -jオプションはDROP/REJECT/ACCEPT/LOGを取ることを発見しました。しかし、DROP and LOGまたはACCEPT and LOGのようなことをしたいです。これを達成する方法はありますか?

24
Abhay PS

例:

iptables -A INPUT -j LOG --log-prefix "INPUT:DROP:" --log-level 6
iptables -A INPUT -j DROP

ログの例:

Feb 19 14:18:06 servername kernel: INPUT:DROP:IN=eth1 OUT= MAC=aa:bb:cc:dd:ee:ff:11:22:33:44:55:66:77:88 SRC=x.x.x.x DST=x.x.x.x LEN=48 TOS=0x00 PREC=0x00 TTL=117 ID=x PROTO=TCP SPT=x DPT=x WINDOW=x RES=0x00 SYN URGP=0

別のオプション:

   LOG
       Turn on kernel logging of matching packets.  When this option 
       is set for a rule, the Linux kernel will print some 
       information  on  all  matching  packets
       (like most IP header fields) via the kernel log (where it can 
       be read with dmesg or syslogd(8)).  This is a "non-terminating 
       target", i.e. rule traversal
       continues at the next rule.  So if you want to LOG the packets 
       you refuse, use two separate rules with the same matching 
       criteria, first using target LOG
       then DROP (or REJECT).

       --log-level level
              Level of logging (numeric or see syslog.conf(5)).

       --log-prefix prefix
              Prefix log messages with the specified prefix; up to 29 
              letters long, and useful for distinguishing messages in 
              the logs.

       --log-tcp-sequence
              Log TCP sequence numbers. This is a security risk if the 
              log is readable by users.

       --log-tcp-options
              Log options from the TCP packet header.

       --log-ip-options
              Log options from the IP packet header.

       --log-uid
              Log the userid of the process which generated the packet.
19
pOchi

すでに1年以上前ですが、他のGoogle検索でこの質問に何度か出くわしました。他の人の利益のために以前の回答を改善できると思います。

簡単な答えは、両方のアクションを1行にまとめることはできませんが、必要なことを実行するチェーンを作成し、1つのライナーで呼び出すことができます。

記録して受け入れるチェーンを作成しましょう:

iptables -N LOG_ACCEPT

そして、そのルールを設定しましょう:

iptables -A LOG_ACCEPT -j LOG --log-prefix "INPUT:ACCEPT:" --log-level 6
iptables -A LOG_ACCEPT -j ACCEPT

それでは、ログに記録してドロップするチェーンを作成しましょう。

iptables -N LOG_DROP

そして、そのルールを設定しましょう:

iptables -A LOG_DROP -j LOG --log-prefix "INPUT:DROP: " --log-level 6
iptables -A LOG_DROP -j DROP

これで、デフォルトのLOG/ACCEPT/REJECT/DROPの代わりにカスタムチェーンにジャンプ(-j)することで、すべてのアクションを一度に実行できます。

iptables -A <your_chain_here> <your_conditions_here> -j LOG_ACCEPT
iptables -A <your_chain_here> <your_conditions_here> -j LOG_DROP
53
Prevok

nflogの方が良い

Sudo apt-get -y install ulogd2

ICMPブロックルールの例:

iptables=/sbin/iptables
# Drop ICMP (PING)
$iptables -t mangle -A PREROUTING -p icmp -j NFLOG --nflog-prefix 'ICMP Block'
$iptables -t mangle -A PREROUTING -p icmp -j DROP

また、ログでプレフィックス「ICMP Block」を検索できます。

/var/log/ulog/syslogemu.log
2
user4839775

職場では、iptablesを使用してポート993(IMAPS)および995(POP3S)でSSLv3接続を記録およびブロックする必要がありました。そこで、Gert van Dijkの iptablesファイアウォールを使用してネットワークでSSLv3を削除する方法(POODLE) とPrevokの answer を組み合わせて、これを思い付きました:

iptables -N SSLv3
iptables -A SSLv3 -j LOG --log-prefix "SSLv3 Client Hello detected: "
iptables -A SSLv3 -j DROP
iptables -A INPUT \
  -p tcp \! -f -m multiport --dports 993,995 \
  -m state --state ESTABLISHED -m u32 --u32 \
  "0>>22&0x3C@ 12>>26&0x3C@ 0 & 0xFFFFFF00=0x16030000 && \
   0>>22&0x3C@ 12>>26&0x3C@ 2 & 0xFF=0x01 && \
   0>>22&0x3C@ 12>>26&0x3C@ 7 & 0xFFFF=0x0300" \
  -j SSLv3

説明

  1. LOGおよびDROPに、カスタムチェーンを作成します(例:SSLv3):

    iptables -N SSLv3
    iptables -A SSLv3 -j LOG --log-prefix "SSLv3 Client Hello detected: "
    iptables -A SSLv3 -j DROP
    
  2. 次に、LOGおよびDROPにしたいものをそのチェーンにリダイレクトします(-j SSLv3):

    iptables -A INPUT \
      -p tcp \! -f -m multiport --dports 993,995 \
      -m state --state ESTABLISHED -m u32 --u32 \
      "0>>22&0x3C@ 12>>26&0x3C@ 0 & 0xFFFFFF00=0x16030000 && \
       0>>22&0x3C@ 12>>26&0x3C@ 2 & 0xFF=0x01 && \
       0>>22&0x3C@ 12>>26&0x3C@ 7 & 0xFFFF=0x0300" \
      -j SSLv3
    

注:ルールの順序に注意してください。これらのルールは、ファイアウォールスクリプトにあるこのルールより上に置くまで機能しませんでした。

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT