【CentOS】IPtablesの使い方

CentOSでファイアーウォールというかセキュリティを強化するため、IPtablesをいじくったのでそん時のメモです。

あんまりガチガチに設定しすぎると大変なことになるので、最低限度の知識はもって、おいた上での大したことのない設定例です。

iptablesってアクセスリストと同じです

じぶんはネットワーク(土管屋さん)出身なので、これってアクセスリストでしょってのが最初の感想です。
結局はどNW機器も考え方は同じなんですねってことです。

それではまずは、iptablesの確認です。

# iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     362K   47M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2      430 15684 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       48  1865 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        0     0 ACCEPT     tcp  --  *      *       10.1.11.128/25       0.0.0.0/0           state NEW tcp dpt:22
5        1    52 ACCEPT     tcp  --  *      *       172.17.24.0/24       0.0.0.0/0           state NEW tcp dpt:22
6       16  1208 ACCEPT     tcp  --  *      *       192.168.1.0/24       0.0.0.0/0           state NEW tcp dpt:22
7    26584 3497K 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)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 152 packets, 20576 bytes)
num   pkts bytes target     prot opt in     out     source               destination

上記の設定はicmp(ping疎通)と、3つのセグメント(アドレス10./172./192)でのssh(port 22)での通信は許可し、それ以外の通信はすべて落とすぜ!

という設定になっとります。

また、一番左にあるのは設定番号。
アクセスするパケットは1番から順に確認されていきます。どこにも引っかからないパケットは最後は捨てられます(REJECT)って感じです。

簡単に言うとこんな感じ。

そして、実際に書かれている設定を確認するのが以下のコマンドです。

# iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 10.1.11.128/25 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 172.17.24.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited

新たにIPtablesを追加する

それでは、実際に設定を追加してみます。

上記で説明したように、普通に設定をしちゃうと、リストの一番最下位に来てしまい、すべて落とされているので、設定が反映されません。

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

なので、以下のような設定で、上記で確認した設定番号を指定して設定を追加します。

# iptables -I INPUT 4 -p tcp -m tcp --dport 80 -j ACCEPT

すると、以下のように設定は指定の番号に反映されます。

# iptables -nvL --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     362K   47M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2      430 15684 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       48  1865 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4      678 35460 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80
5        0     0 ACCEPT     tcp  --  *      *       10.1.11.128/25       0.0.0.0/0           state NEW tcp dpt:22
6        1    52 ACCEPT     tcp  --  *      *       172.17.24.0/24       0.0.0.0/0           state NEW tcp dpt:22
7       16  1208 ACCEPT     tcp  --  *      *       192.168.1.0/24       0.0.0.0/0           state NEW tcp dpt:22
8    26584 3497K 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)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT 152 packets, 20576 bytes)
num   pkts bytes target     prot opt in     out     source               destination

設定後、問題が無ければsaveコマンドを叩きます。
これをしないと、再起動した後などに設定が全部消えちゃうので、ご注意を!

# service iptables save
iptables: ファイアウォールのルールを /etc/sysconfig/iptable[  OK  ]中:

以上です。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!