13
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS7へのiptablesの導入

Last updated at Posted at 2016-11-05

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の仕組みを理解して環境に合わせた設定をしよう

13
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?