iptables: 2006年6月アーカイブ

RH-Firewall-1-INPUTにkrfilter

|

こちらを参考にしました。
krfilter - deny accesses from .kr

"KRFILTER"というChainをつくり、
# iptables -N KRFILTER
そのルールに当てはまると、"KRFILTERD"というChainを適用するしくみです。
# iptables -N KRFILTERED
# iptables -A KRFILTER -s xxx.xxx.xxx.xxx/xx -j KRFILTERED
それで、"KRFILTERD"は"Drop"とか"REJECT"とか、 ログをとってRejectするように作ったChainである"LOG_REJECT"を適用させます。
# iptables -A KRFILTERED -j LOG_REJECT
で、この"KRFILTER"を"RH-Firewall-1-INPUT"のここらへんに足しておけば良いでしょう。 ○/etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -j KRFILTER
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptablesのログをsyslogに出力させる

|
■AcceptのChainをつくる
# iptables -N LOG_ACCEPT
# iptables -A LOG_ACCEPT -j LOG --log-prefix "accepted " --log-level 3
# iptables -A LOG_ACCEPT -j ACCEPT
■RejectのChainをつくる
# iptables -N LOG_REJECT
# iptables -A LOG_REJECT -j LOG --log-prefix "rejected " --log-level 3
# iptables -A LOG_REJECT -j REJECT --reject-with icmp-host-prohibited
■フィルタのChainに適用させる
-A RH -p tcp -m state --state NEW -m tcp --dport 80 -j LOG_ACCEPT
-A RH -p tcp -m state --state NEW -m tcp --dport 443 -j LOG_ACCEPT
-A RH -j LOG_REJECT


■ログはfacility "kern"に出力される。
--log-levelは最近のものだと文字列でも指定できる。

○/etc/syslog.confに以下の行を足し、syslogdを再起動する
# iptables
kern.warning  /var/log/iptables

○/etc/logrotate.d/syslogの1行目に、/var/log/iptablesを足す。

TCPのフィルタ

|

■-m tcp (-p tcp との併用)

--sport
--source-port [!] port[:port] ともかける

--dport --destination-port [!] port[:port] ともかける

--tcp-flags [!] mask comp 指定できるフラグは SYN ACK FIN RST URG PSH ALL NONE。 ', '区切りで羅列できる。 例: # iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST SYN SYN フラグが設定され ACK, FIN, RST フラグが設定されていないパケットにのみマッチする。

--syn このようなパケットは TCP 接続の開始要求に使われる。 これは --tcp-flags SYN,RST,ACK SYN と等しい。

[!] --syn "--syn" の前に "!" フラグを置くと、 SYN ビットがクリアされ ACK と RST ビットが設定されているTCP パケッ トにのみマッチする。

--tcp-option [!] number TCP オプションが設定されている場合にマッチする。

--mss value[:value] 指定された MSS 値 (の範囲) を持つTCPのSYN または SYN/ACK パケットにマッチする。

ステートフルなパケットフィルタ

|
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 23 -j ACCEPT
-m [モジュール] であり、
"state"や"tcp"はモジュールである

■-m state

--state [STATE名]で指定する

INVALID: このパケットは既知の接続と関係 していない。

ESTABLISHED: このパケットは、過去双方向にパケットがやり取りされた接続に属するパケット

NEW: 新しい接続を開始したか、 双方向にはパケットがやり取りされていない接続に属するパケット

RELATED: このパケットが新しい接続を開始しているが、 FTP データ転送やICMP エラーのように、既存の接続に関係している。

iptablesの設定の行番号を出力させる

|
# iptables -L -n --line-number
いつもこれをうつのが面倒な場合、 /root/.bashrcなどに
alias iptables-config='iptables -L -n --line-number'
と書いてしまう。

Chainの名前を変更する

|
# iptables -E RH-Firewall-1-INPUT RH
# iptable-save > /etc/sysconfig/iptables

このアーカイブについて

このページには、2006年6月以降に書かれたブログ記事のうちiptablesカテゴリに属しているものが含まれています。

前のアーカイブはiptables: 2006年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

iptables: 2006年6月: 月別アーカイブ

Powered by Movable Type 4.1