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 ]中:
以上です。
サーバーを構築するならVPSがおすすめです。
エンジニアのオンライン学習
ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。
おすすめオンライン教材 | |
自宅で学習ができるオンラインスクール | |
ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。