|
|
| LinuxTutorial |
2008年2月15日 11:40 |
| LinuxTutorial・バックナンバー |
IP テーブルとポートノッキング入門――2
著者: Matt Waldo オリジナル版を読む プリンター用 記事を転送
▼2008年2月15日 11:40 付の記事
■海外internet.com発の記事
コンフィギュレーション入門
次は、ファイアウォールの安全を確保する。YaST2 ファイアウォールは、一点を除けば素晴らしいものだ。同じように扱われない2種類のパケットが存在する。送信先のポートがクローズされていると、パケットは1つおきにファイアウォールに飲み込まれてしまうだけだ。攻撃者からは送ったパケットがどこにも到達しなかったように映り、コンピュータがそこにないように見える。
しかし、ICMP タイプ8と IDENT のパケットでは、ポートがクローズされている、というレスポンスをファイアウォールが返す。つまり、そこにだれかがいるのでどうぞ攻撃を開始してください、と言っているようなものだ。
ファイアウォールにこれらのパケットをほかと同じように扱わせるには、 IP テーブルに項目を1つ追加する必要がある。コンソールを開き、「su -」で root になり、「cd」で/etc/sysconfig/scripts に移動したら、テキストエディタを起動して「SuSEfirewall2-custom」を開く。
次に、ドキュメントの「fw_custom_after_antispoofing()」セクションに以下の内容をコピー&ペーストする。
###################################################
#
# Start
# Rules to make the host invisible on the Internet
#
###################################################
# Setup new chain
iptables -N INVISIBLE
# Drop incoming ICMP packets
#(Note: uses $FW_DEV_EXT variable setup in main SuSEfirewall2 script)
iptables -A INVISIBLE -p icmp -i $FW_DEV_EXT -m state --state NEW -m icmp --icmp-type 8 -j DROP
# Drop identd packets from unknown hosts
iptables -A INVISIBLE -p tcp --dport 113 -m state --state NEW -j DROP
# Send the packets I want to examine further to my INVISIBLE chain
iptables -A INPUT -p icmp -i $FW_DEV_EXT -m state --state NEW -j INVISIBLE
iptables -A INPUT -p tcp --dport 113 -j INVISIBLE
###################################################
#
# End
# Rules to make the host invisible on the Internet
#
###################################################
ついでに、以下を前のコードの下にコピーする。
###################################################
#
# Start Port Knocking Configuration
#
###################################################
#Enter the 4 ports used as the port knocking combination
TOKEN1="10"
TOKEN2="20"
TOKEN3="30"
TOKEN4="40"
#Enter the port to open after successful know
OPENPORT="22"
#Enter the number of seconds the port will remain open waiting for you to connect
OPENTIMER="10"
iptables -N TOKEN1CHAIN
iptables -A TOKEN1CHAIN -m recent --name TOKEN1A --remove
iptables -A TOKEN1CHAIN -m recent --name TOKEN2A --remove
iptables -A TOKEN1CHAIN -m recent --name TOKEN3A --remove
iptables -A TOKEN1CHAIN -m recent --name TOKEN4A --remove
iptables -A TOKEN1CHAIN -m recent --name TOKEN1A --set
iptables -A TOKEN1CHAIN -m recent --name TOKEN1B --set
iptables -A TOKEN1CHAIN -j LOG --log-prefix "TOKEN1 Received: "
iptables -N PRE-TOKEN2CHAIN
iptables -A PRE-TOKEN2CHAIN -p tcp --dport $TOKEN2 -m recent --rcheck --name TOKEN1A -j RETURN
iptables -A PRE-TOKEN2CHAIN -p tcp --dport $TOKEN1 -m recent --name TOKEN1B --remove -j RETURN
iptables -A PRE-TOKEN2CHAIN -m recent --name TOKEN1A --remove
iptables -A PRE-TOKEN2CHAIN -j LOG --log-prefix "VIOLATION AFTER TOKEN1: "
iptables -N TOKEN2CHAIN
iptables -A TOKEN2CHAIN -m recent --name TOKEN1A --remove
iptables -A TOKEN2CHAIN -m recent --name TOKEN2A --set
iptables -A TOKEN2CHAIN -m recent --name TOKEN2B --set
iptables -A TOKEN2CHAIN -j LOG --log-prefix "TOKEN2 Received: "
iptables -N PRE-TOKEN3CHAIN
iptables -A PRE-TOKEN3CHAIN -p tcp --dport $TOKEN3 -m recent --rcheck --name TOKEN2A -j RETURN
iptables -A PRE-TOKEN3CHAIN -p tcp --dport $TOKEN2 -m recent --name TOKEN2B --remove -j RETURN
iptables -A PRE-TOKEN3CHAIN -m recent --name TOKEN2A --remove
iptables -A PRE-TOKEN3CHAIN -j LOG --log-prefix "VIOLATION ATFER TOKEN2: "
iptables -N TOKEN3CHAIN
iptables -A TOKEN3CHAIN -m recent --name TOKEN2A --remove
iptables -A TOKEN3CHAIN -m recent --name TOKEN3A --set
iptables -A TOKEN3CHAIN -m recent --name TOKEN3B --set
iptables -A TOKEN3CHAIN -j LOG --log-prefix "TOKEN3 Received: "
iptables -N PRE-TOKEN4CHAIN
iptables -A PRE-TOKEN4CHAIN -p tcp --dport $TOKEN4 -m recent --rcheck --name TOKEN3A -j RETURN
iptables -A PRE-TOKEN4CHAIN -p tcp --dport $TOKEN3 -m recent --name TOKEN3B --remove -j RETURN
iptables -A PRE-TOKEN4CHAIN -m recent --name TOKEN3A --remove
iptables -A PRE-TOKEN4CHAIN -j LOG --log-prefix "VIOLATION AFTER TOKEN3: "
iptables -N TOKEN4CHAIN
iptables -A TOKEN4CHAIN -m recent --name TOKEN3A --remove
iptables -A TOKEN4CHAIN -m recent --name TOKEN4A --set
iptables -A TOKEN4CHAIN -m recent --name TOKEN4B --set
iptables -A TOKEN4CHAIN -m recent --name TOKEN4C --set
iptables -A TOKEN4CHAIN -j LOG --log-prefix "TOKEN4 Received: "
iptables -N PRE-OPENPORT
iptables -A PRE-OPENPORT -p tcp --dport $OPENPORT -m recent --rcheck --name TOKEN4C -j LOG --log-prefix "TOKEN OK: "
iptables -A PRE-OPENPORT -p tcp --dport $OPENPORT -m recent --name TOKEN4C --remove
iptables -A PRE-OPENPORT -p tcp --dport $OPENPORT -m recent --rcheck --name TOKEN4A -j RETURN
iptables -A PRE-OPENPORT -p tcp --dport $TOKEN4 -m recent --name TOKEN4B --remove -j RETURN
iptables -A PRE-OPENPORT -m recent --name TOKEN4A --remove
iptables -A PRE-OPENPORT -j LOG --log-prefix "VIOLATION AFTER TOKEN4: "
iptables -A INPUT -p tcp --dport $TOKEN1 -m recent --set --name TOKEN1A -j TOKEN1CHAIN
iptables -A INPUT -m recent --rcheck --name TOKEN1A -j PRE-TOKEN2CHAIN
iptables -A INPUT -p tcp --dport $TOKEN2 -m recent --rcheck --name TOKEN1A -j TOKEN2CHAIN
iptables -A INPUT -m recent --rcheck --name TOKEN2A -j PRE-TOKEN3CHAIN
iptables -A INPUT -p tcp --dport $TOKEN3 -m recent --rcheck --name TOKEN2A -j TOKEN3CHAIN
iptables -A INPUT -m recent --rcheck --name TOKEN3A -j PRE-TOKEN4CHAIN
iptables -A INPUT -p tcp --dport $TOKEN4 -m recent --rcheck --name TOKEN3A -j TOKEN4CHAIN
iptables -A INPUT -m recent --rcheck --name TOKEN4A -j PRE-OPENPORT
iptables -A INPUT -p tcp --dport $OPENPORT -m recent --rcheck --seconds $OPENTIMER --name TOKEN4A -j ACCEPT
###################################################
#
# End Port Knocking Configuration
#
###################################################
「Token number」を10、20、30、40から、最大1024までのほかの好きな数字に変更する。この数字の組み合わせは自分が使うアクセスコードだと考えればよいし、実際そうなっている。この数字の組み合わせは、中に入るときに自分のファイアウォールに渡すので覚えておく。
ほかにも、ファイアウォールを再起動する前に以下を変更しておく。
1. /etc/sysconfig/SuSEfirewall2を編集し、「FW_CUSTOMRULES=""」を「FW_CUSTOMRULES="/etc/sysconfig/scripts/SuSEfirewall2-custom"」へ、そして「FW_DEV_EXT="any eth-id-xx:xx:xx:xx:xx:xx"」を「FW_DEV_EXT="eth0"」あるいは「FW_DEV_EXT="eth1"」へ変更する (YaST2 の設定を思い出して、自分の外部インターフェイスに合った正しい名前を使う)。
2. root としてターミナルから以下のコマンドを実行し、ファイアウォールサービスを再起動する。
SuSEfirewall2 stop
SuSEfirewall2 start
これで、内部にも入らせてくれる安全性の非常に高いファイアウォールの完成だ。でも、どう使えばよいのだろうか。使い方は、接続元のハードが Linux か Windows かで異なるが、コンセプトは同じだ。ここでは、設定がやや複雑になるので Windows マシンを使って説明する。 次へ:Windows との接続 »
関連記事 IP テーブルとポートノッキング入門編
IP テーブルとポートノッキング入門――1
IP テーブルとポートノッキング入門――3
サブネットをまたいだ Samba ファイル/プリントサーバーの共有:パート2――1
サブネットをまたいだ Samba ファイル/プリントサーバーの共有:パート2――2
|
|
|
 |
|
ブログ一覧 |
 |
 |
【ベンチャー専門家の目利きブログ「なぜこの企業は伸びるのか?」】
|
 |
 |
【データメーション】
|
 |
 |
【Graphic Design Forum】
|
 |
 |
【最新テクノロジーの意外な処方箋】
|
 |
 |
【エンジニアの独り言】
|
 |
 |
【デスマーチからの脱却】
|
|
 |
|