Help us understand the problem. What is going on with this article?

CentOS7へのiptablesの導入

More than 3 years have passed since last update.

CentOS7.2にiptablesをセットアップした際のメモ。

CentOS6との相違点

  • パッケージ名がiptablesからiptables-servicesに変わった
  • firewalldがデフォルトで有効になっている模様 -> 両方はいらないのでiptablesを導入したら無効に

※ 本当はfirewalldの方が設定中も通信が途切れることが無いようなので、firewalldを使ったほうが良さそう。でも今回は勉強不足なところもあり、iptablesを利用する。

方針

  • wirewalldではなくiptablesを利用する
  • ipv6のネットワークを無効化する
  • ip6tables.serviceを無効化する
  • ipv4のフィルタリングだけしっかり設定する

インストール

$ sudo yum install iptables-services

設定

iptablesで使用する設定ファイルは以下の4つ。

  • /etc/sysconfig/iptables-config
  • /etc/sysconfig/iptables
  • /etc/sysconfig/ip6tables-config
  • /etc/sysconfig/ip6tables

xxx-configは利用モジュールの読み込みやサービス停止時の動作等を定義する。
xxtablesはフィルタリングのルールを主に定義する。

iptables-config
今回はFTPのパッシブモード等を利用しないため、デフォルトのまま使用する。

iptables
さくらのナレッジのサイトが参考にしつつ設定する。

/etc/sysconfig/iptables
# ポリシー
*filter
:INPUT   DROP   [0:0]
:FORWARD DROP   [0:0]
:OUTPUT  ACCEPT [0:0]

### デフォルトで許可
# ループバックを許可
-A INPUT -i lo -j ACCEPT
# セッション確率済みのパケットを許可
-A INPUT  -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
# DNSの戻りパケットを許可
-A INPUT -p udp --sport 53 -j ACCEPT
# NTPの戻りパケットを許可
-A INPUT -p udp --sport 123 -j ACCEPT
# ICMP
-A INPUT -p icmp --icmp-type echo-request -m hashlimit --hashlimit-name t_icmp --hashlimit 1/m --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-htable-expire 120000 -j ACCEPT
# SSH
-A INPUT -p tcp --tcp-flags SYN,RST,ACK SYN -m state --state NEW --dport 22 -m hashlimit --hashlimit-name t_sshd --hashlimit 1/m --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-htable-expire 120000 -j ACCEPT

### 攻撃対策
# データを持たないパケットの接続を破棄する
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP
# SYNflood攻撃と思われる接続を破棄する
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP
# ステルススキャンと思われる接続を破棄する
-A INPUT -p tcp --tcp-flags ALL ALL -j DROP

### 各種サービス
# -A INPUT -p tcp --dport 80 -j ACCEPT

COMMIT

サービスの有効化・無効化

$ sudo systemctl start iptables.service
$ sudo systemctl enable iptables.service
$ sudo systemctl stop firefwalld.service
$ sudo systemctl disable firewalld.service

ipv6の停止はまた、別途。

参考サイト

CentOS7のiptablesとFirewalld
CentOS7, iptables設定でハマった
iptables インストールと設定
ファイアウォールiptablesを簡単解説~初心者でもよくわかる!VPSによるWebサーバー運用講座(4)
俺史上最強のiptablesをさらす
コピペから脱出!iptablesの仕組みを理解して環境に合わせた設定をしよう

fbs884
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away