CentOS 7.x 系でiptablesを利用する
CentOS 7 の「iptables」について
CentOS 7系では、F/Wは「firewalld」に変わっています。CentOS 6系利用した「iptables」を利用したい場合は、firewalld を停止してiptables をインストールして利用します。
「firewalld」と「iptables」の主な違いは以下のような違いがあります
- iptablesでは、設定を反映させるために、サービスの再起動が非通用でしたが、firewalld では停止することなく設定を反映できます
- iptablesでは、TCP/IPの仕組みを理解しないと設定がややこしが、firewalld では比較的にTCP/IP の理解がなくても設定が可能となっています
- firewalldでは、一時的なルールと永続的なルールを管理できて一時的なルールのみを有効にできますが、iptables ではそのようなルールはありません
CentOS 7 の「iptables」のインストールについて
まずは、CentOS 7のインストールされている「firewalld」を停止して、自動起動を停止します
1.firewalld を停止します
$ sudo systemctl stop firewalld
2.firewalld の自動起動を停止します
$ sudo systemctl disable firewalld
3.firewalld を停止したら、iptables をインストールします
$ sudo yum install iptables-services
4.iptables を起動します
$ sudo systemctl start iptables
5.iptables を自動起動するように設定します
$ sudo systemctl enable iptables
6.iptablesの設定を入れていきます。
以下では、iptabelsの設定を初期化してから、サーバーから送信する通信を許可し、特定の以下のポートのみ受信可能としています
- ping(icmp)
- http(80)
- https(443)
- ftp(21)
- ssh(22)
# iptables 初期化 $ sudo /sbin/iptables -F INPUT $ sudo /sbin/iptables -F OUTPUT $ sudo /sbin/iptables -F FORWARD # 受信を破棄 / 送信を許可 / 通過を拒否 $ sudo /sbin/iptables -P INPUT DROP $ sudo /sbin/iptables -P OUTPUT ACCEPT $ sudo /sbin/iptables -P FORWARD DROP # ローカルの通信を全て許可 $ sudo /sbin/iptables -A INPUT -i lo -j ACCEPT $ sudo /sbin/iptables -A OUTPUT -o lo -j ACCEPT # 内部から行ったアクセスに対する外部からの返答アクセスを許可 $ sudo /sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # ping(icmp)許可 $ sudo /sbin/iptables -I INPUT -p icmp --icmp-type 0 -j ACCEPT $ sudo iptables -I INPUT -p icmp --icmp-type 8 -j ACCEPT # ftp許可 $ sudo /sbin/iptables -A INPUT -p tcp --dport 21 -j ACCEPT # ftp許可 $ sudo /sbin/iptables -A INPUT -p tcp --dport 22 -j ACCEPT # HTTPポート(80)を許可 $ sudo /sbin/iptables -A INPUT -p tcp --dport 80 -j ACCEPT # HTTPSポート(443)を許可 $ sudo /sbin/iptables -A INPUT -p tcp --dport 443 -j ACCEPT
7.設定をへんこうしたら設定内容を確認して、設定内容に間違いがなければ「iptabels save」してからiptables を再起動します
# 設定内容を確認します $ sudo iptables -nL Chain INPUT (policy DROP) target prot opt source destination ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 8 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 DROP all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy DROP) target prot opt source destination DROP all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 # 変更した内容を保存します $ sudo service iptabels save # iptables を再起動します $ sudo systemctl start iptables
ディスカッション
コメント一覧
firewalld では停止することな「く」設定を反映できます
では?