ここは僕の冷蔵庫。後はあれして食べるだけ。

I love the frozen FOOD.

iptablesによるfirewall設定。
CentOS7のような firewall-cmdが動作しているプロダクトは、「Linux上のfirewall-cmdコマンドによるfirewall設定」で、firewall設定を。

iptables環境確認

iptables -L -n

で、現状のfirewall設定が確認可能。
例えば、

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

のように状況がわかる。
基本は、3部構成。

  • Chain INPUT
  • パケットを受けるときのFW(firewall)設定
  • Chain FORWARD
  • パケットを橋渡しするときのFW設定
  • Chain OUTPUT
  • パケットを出すときのFW設定

そして、各構成の中で、 target,prot,optなどが表示。

  • target
  • 許可(ACCEPT)するか、REJECT(拒否)するか
  • prot
  • プロトコル。icmpやらtcp,udp等
  • source/destination
  • どこから、どこへ。0.0.0.0/0 はどこでも(どんなところからでも)っていう意味。記述方法は、IP/netmask
  • 備考
  • ACCEPTやREJECTの方法など。

例えば、出力例の6行目をいうと、
「どこからか TCP で ssh ポートで接続するものは どこのIPでも 許可します」ってことです。sshをIPアドレスで拒否したい場合は、、この設定が邪魔になるってことですね。
ただ、各構成ともに、policy ACCEPTと記載されているので、記述がないプロトコルはすべて許可設定になってます。ですので、7行目のように、定義以外のものはすべてREJECTしなさいという記載が入ってます。
尚、IPマスカレードの設定などは、FORWARD設定になります。

iptables設定

/etc/sysconfig/iptables ファイルに、firewallの設定情報を記載します。
先ほどのFWは、下記のような設定を受けてのものです。

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

設定変更後は、

/etc/rc.d/init.d/iptables restart

等で、iptablesサービスを再起動させると良いです。

尚、TCPの80ポート(HTTP)を許可させる場合は、最後尾にこんな行を追記します。

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-Aで、chainを指定し、-jでターゲットを許可するようにし、-pにてTCPプロトコル指定、dportでポート番号。

パケットの制御状況

パケットを許可した状況などが知りたい場合は、

iptables -nvL

を実行してみてください。先ほどのFW設定情報にあわせて、処理したパケットのサイズが出てきます。

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 145M  113G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
 1543 88637 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
 2903  175K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
43156   20M REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 117M packets, 183G bytes)

参考

参考記事


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


*