Top / Network / iptables

Linux関連のFirewall、っていうかパケットフィルタリングの定番、iptablesを使ってみます。

Ubuntu Server 16.04.2 LTS で構築しています。

インストール

# sudo apt install iptables

リスト表示

# sudo iptables  -L
# sudo iptables  --list -n -v

install直後の初期状態

# sudo iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

たとえば、HTTPは任意のIPから許可。

# sudo iptables  -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

たとえばsshは所定のIPだけ許可

# sudo iptables -A INPUT -p tcp -s 192.168.0.10/32 --dport 22 -j ACCEPT

設定の保存

# sudo apt list  iptables-persistent
# sudo apt install iptables-persistent

保存と、読み込み

# sudo /etc/init.d/netfilter-persistent  save
# sudo /etc/init.d/netfilter-persistent  reload

設定は

# sudo cat /etc/iptables/rules.v4

ココに反映されるようですね。

よくある設定?

# sudo iptables -F     // defaultのポリシー以外の初期化。INPUTが DROPだとココで接続切れるので注意。
# sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT    //セッション確立後の応答パケットとかなどは許可
# sudo iptables -P INPUT DROP  // 自分への送信先のばあい、はすべて破棄
# sudo iptables -P FORWARD DROP   // ルーティング?時はすべて破棄
# sudo iptables -P OUTPUT ACCEPT  // 自分からの送信のばあい、はすべて許可
# sudo iptables -A INPUT -p icmp -j ACCEPT // pingなどICMPは許可
# sudo iptables -A INPUT -i lo -j ACCEPT // loopback 自分から自分への通信は許可。

あとは個別に、使ってるポートだけ穴開け。

# sudo iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT

これでいいかな?

個別に設定の削除

$ sudo iptables -L --line-number

で行番号を表示して、

$ sudo iptables -D INPUT 2  ←行番号

で個別に削除可能

関連リンク


この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Network / iptables

現在のアクセス:1334


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS