menu
書いてる野郎
orebike@gmail.com
Linuxのfirewallはiptablesというデーモンが受け持っている
iptablesという名称は設定で3つ出てくる。
iptablesデーモンのの動作を変更するのがiptablesコマンドでiptables自体の管理をするのがiptablesデーモン起動スクリプトということになる
iptablesはデーモンなので /etc/init.d/iptables stop とやればfirewallはなくなって全部OKになる。外部からのアクセスでトラブった場合は一旦iptablesを落としてみるのもいいかも
基本設定は外から内とルーティングは全部禁止、内から外は全開放、内側は全部OKということになる。
これをiptablesコマンドでやると↓のようになる
全ルール削除
iptables -F iptables -Z iptables -X
外から内とりあえず全禁止
iptables -P INPUT DROP
内から外全開放
iptables -P OUTPUT ACCEPT
ルーティング禁止
iptables -P FORWARD DROP
内側全部OK
iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
そしてうけつけたいポートだけあける。定番は22版ポートのSSH用の穴。
SSHの新規コネクションだけを許可
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT
その後に・・・コネクションを確立したものに対しては全OK。これで認証とfirewallが連携できたことになる
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
設定するには設定する項目をスクリプトファイルにしておいて一気に実行するほうがいい。 なぜかといえば、最初の外部からは全部Drop設定をやって時点でiptablesに設定が即時反映されてリモート接続の場合切れてしまうから
さっきのを一気に実行すると↓
iptables -F iptables -Z iptables -X iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
これでfirewallに即時反映される。即時反映はされるが、次にiptablesデーモンを起動した時に初期設定に戻ってしまう。
なので現状のfirewallの設定状態を初期設定として保存するやりかたがある。iptables起動スクリプトにsaveという引数を渡して実行する
/etc/init.d/iptables save
これでiptablesの初期設定ファイルに現状の設定状態が書きこまれて次回起動時にも反映される。
設定は
/etc/sysconfig/iptables
に保存されるので確認するといい