綾小路龍之介の素人思考

[linux] update-rc.dでマシン起動と終了時にiptablesルールスクリプトを走らせる。

デーモン起動と同じ事をするということ。

iptablesのルールを作るスクリプトは以下。これを/etc/init.d/iptablesという名前で保存し、実行属性をつけておく。

# chmod +x /etc/init.d/iptables
# cat /etc/init.d/iptables
#!/bin/bash

IPTABLESSAVE=/sbin/iptables-save
IPTABLES=/sbin/iptables

$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t nat -Z
$IPTABLESSAVE > /etc/iptables.down.rules

#echo 1 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -A POSTROUTING -j MASQUERADE

$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

$IPTABLES -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 22
#$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED
$IPTABLES -A INPUT -j ACCEPT -p tcp --dport 22 -m hashlimit --hashlimit 3/minute --hashlimit-burst 3 --hashlimit-name out_ssh --hashlimit-mode srcip,dstip --hashlimit-htable-expire 60000
$IPTABLES -A INPUT -j DROP -p tcp --dport 22
$IPTABLES -A INPUT -j ACCEPT -i lo
$IPTABLES -A INPUT -j ACCEPT -i eth1
$IPTABLES -A INPUT -j ACCEPT -i eth2
$IPTABLES -A INPUT -j ACCEPT -i eth3
$IPTABLES -A INPUT -j ACCEPT -i eth4

$IPTABLES -A OUTPUT -j DROP -o ppp0 -d 10.0.0.0/8
$IPTABLES -A OUTPUT -j DROP -o ppp0 -d 176.16.0.0/12
$IPTABLES -A OUTPUT -j DROP -o ppp0 -d 192.168.0.0/16
$IPTABLES -A OUTPUT -j DROP -o ppp0 -d 127.0.0.0/8

$IPTABLESSAVE > /etc/iptables.up.rules

exit

update-rc.dを使ってこのスクリプトを起動時に走らせる。

# update-rc.d iptables defaults
update-rc.d: warning: /etc/init.d/iptables missing LSB information
update-rc.d: see <http://wiki.debian.org/LSBInitScripts>
 Adding system startup for /etc/init.d/iptables ...
   /etc/rc0.d/K20iptables -> ../init.d/iptables
   /etc/rc1.d/K20iptables -> ../init.d/iptables
   /etc/rc6.d/K20iptables -> ../init.d/iptables
   /etc/rc2.d/S20iptables -> ../init.d/iptables
   /etc/rc3.d/S20iptables -> ../init.d/iptables
   /etc/rc4.d/S20iptables -> ../init.d/iptables
   /etc/rc5.d/S20iptables -> ../init.d/iptables

削除するには以下のようにする。

# update-rc.d -f iptables remove
 Removing any system startup links for /etc/init.d/iptables ...
   /etc/rc0.d/K20iptables
   /etc/rc1.d/K20iptables
   /etc/rc2.d/S20iptables
   /etc/rc3.d/S20iptables
   /etc/rc4.d/S20iptables
   /etc/rc5.d/S20iptables
   /etc/rc6.d/K20iptables

リファレンス

  1. update-rc.d - Google 検索
  2. Fulldigit - update-rc.dコマンド
  3. [ThinkIT] 第3回:不必要な起動スクリプトの削除と起動プロセスとポートのチェック (1/2)
  4. TIPS/Linux/chkconfigとupdate-rc.d - masami Wiki*

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2009-10-16T20:06:48+09:00
  2. Modified: 2009-10-16T20:06:48+09:00
  3. Generated: 2017-12-05T23:09:31+09:00