Linux関連のFirewall、っていうかパケットフィルタリングの定番、iptablesを使ってみます。 Ubuntu Server 16.04.2 LTS で構築しています。 インストール †# sudo apt install iptables 使い方 †リスト表示 †# sudo iptables -L (もしくは --list) # sudo iptables --list -n -v (詳細に。) たとえば、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 [linux-users:103966] Re: iptables -m tpc をみると、-p tcp をつけてる限り、-m tcp はあってもなくても変わらない、、、ぽいです。 設定の保存 †上記のように変更した内容は、再起動したら消えてしまうようで、保存するには下記のツールを使用します。 # 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 ココに反映されるようですね。 デフォルトのポリシーを替える †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 なんでも許可になっていますね。以下のように変更してみます。 # sudo iptables -P INPUT DROP // 自分への送信先のばあい、はすべて破棄 # sudo iptables -P FORWARD DROP // ルーティング?時はすべて破棄 # sudo iptables -P OUTPUT ACCEPT // 自分からの送信のばあい、はすべて許可 $ sudo iptables -L Chain INPUT (policy DROP) target prot opt source destination Chain FORWARD (policy DROP) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination デフォルトの設定が変更されました。あ、この状態で、リモートで接続している場合は遮断されるのでご注意。 sshでつないでる場合は、上記より先に # sudo iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 22 -j ACCEPT とやってSSHを許可しておいたり、 # sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT すでに確立されている接続についての応答パケットなどは許可、などを入れておきましょう。 よくある設定? †# 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 これでいいかな? TIPS集 †個別に設定の削除 †$ sudo iptables -L --line-number で行番号を表示して、 $ sudo iptables -D INPUT 2 ←行番号 で個別に削除可能 関連リンク †この記事は 現在のアクセス:1491 |