iptablesの設定

Debian さくらのVPS

【さくらのVPS】サーバの初期設定ガイド を見ていたら、 iptablesの設定方法 というのがあった。
さくらの VPS は、インターネットにむき出しなので、ファイアウォールが必要と。。
iptables って、ADSL接続で PC にルータをやらせていた時以来。
FTTH になってルータがその役目を担っていたので、iptables は長い間使っていなかった。

上記ページに従って最低限の設定をする。
攻撃しないで。。。

STEP1 サーバにログイン

yasunari@sakura:~$ su - root
パスワード:
root@sakura:~#

STEP2 設定の確認

root@sakura:~# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
root@sakura:~#

STEP3 ルールの設定

root@sakura:~# iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
root@sakura:~# iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
root@sakura:~# iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
root@sakura:~#

STEP4 許可する通信の設定

localhostからの通信とpingを許可に設定します

root@sakura:~# iptables -A INPUT -i lo -j ACCEPT
root@sakura:~# iptables -A INPUT -p icmp -j ACCEPT

サーバの利用用途に合わせて許可するポート番号を設定します

root@sakura:~# iptables -A INPUT -p tcp -m tcp --dport 内緒 -j ACCEPT

確立済みの通信を許可に設定します

root@sakura:~# iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

許可した通信以外のサーバに受信するパケットを拒否し、サーバから送信するパケットを許可に設定します

root@sakura:~# iptables -P INPUT DROP
root@sakura:~# iptables -P OUTPUT ACCEPT
root@sakura:~#
ここでもう一つ ssh を接続して、つながることを確認。

iptablesの設定を設定ファイルに保存します

root@sakura:~# service iptables save
iptables: unrecognized service
root@sakura:~#
ぐへっ。
root@sakura:~# service --status-all
 [ - ]  console-setup.sh
 [ + ]  cron
 [ + ]  dbus
 [ - ]  hwclock.sh
 [ - ]  keyboard-setup.sh
 [ + ]  kmod
 [ + ]  networking
 [ + ]  procps
 [ + ]  rsyslog
 [ + ]  ssh
 [ + ]  udev
 [ - ]  x11-common
root@sakura:~#
ない。

必要なパッケージを探す

root@sakura:~# apt-cache search iptables
	:
	:
iptables-persistent - boot-time loader for netfilter rules, iptables plugin
	:
	:
root@sakura:~# 
iptables-persistent をインストールすれば良い??
root@sakura:~# apt-get install iptables-persistent
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  netfilter-persistent
以下のパッケージが新たにインストールされます:
  iptables-persistent netfilter-persistent
アップグレード: 0 個、新規インストール: 2 個、削除: 0 個、保留: 0 個。
19.5 kB のアーカイブを取得する必要があります。
この操作後に追加で 79.9 kB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://ftp.jp.debian.org/debian stretch/main amd64 netfilter-persistent all 1.0.4+nmu2 [8,792 B]
取得:2 http://ftp.jp.debian.org/debian stretch/main amd64 iptables-persistent all 1.0.4+nmu2 [10.7 kB]
19.5 kB を 0秒 で取得しました (36.7 kB/s)
パッケージを事前設定しています ...


パッケージの設定

 lqqqqqqqqqqqqqqqqqqqqqqqqu iptables-persistent を設定しています tqqqqqqqqqqqqqqqqqqqqqqqqqk
 x                                                                                         x
 x 現在の iptables のルールは、設定ファイル /etc/iptables/rules.v4 に保存できます。このル  x
 x ールは、システムの起動時に自動的に読み込まれるようになります。                          x
 x                                                                                         x
 x ルールは、パッケージのインストール時にのみ自動的に保存されます。ルールのファイルを最新  x
 x に保つには、iptables-save(8) のマニュアルページを参照してください。                     x
 x                                                                                         x
 x 現在の IPv4 ルールを保存しますか?                                                       x
 x                                                                                         x
 x                         <はい>                           <いいえ>                       x
 x                                                                                         x
 mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

「はい」を選択


パッケージの設定

 lqqqqqqqqqqqqqqqqqqqqqqqqu iptables-persistent を設定しています tqqqqqqqqqqqqqqqqqqqqqqqqqk
 x                                                                                         x
 x 現在の iptables のルールは、設定ファイル /etc/iptables/rules.v6 に保存できます。このル  x
 x ールは、システムの起動時に自動的に読み込まれるようになります。                          x
 x                                                                                         x
 x ルールは、パッケージのインストール時にのみ自動的に保存されます。ルールのファイルを最新  x
 x に保つには、iptables-save(8) のマニュアルページを参照してください。                     x
 x                                                                                         x
 x 現在の IPv6 ルールを保存しますか?                                                       x
 x                                                                                         x
 x                         <はい>                           <いいえ>                       x
 x                                                                                         x
 mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

V6 は設定していないので、「いいえ」を選択

以前に未選択のパッケージ netfilter-persistent を選択しています。
(データベースを読み込んでいます ... 現在 33834 個のファイルとディレクトリがインストールされて います。)
.../netfilter-persistent_1.0.4+nmu2_all.deb を展開する準備をしています ...
netfilter-persistent (1.0.4+nmu2) を展開しています...
以前に未選択のパッケージ iptables-persistent を選択しています。
.../iptables-persistent_1.0.4+nmu2_all.deb を展開する準備をしています ...
iptables-persistent (1.0.4+nmu2) を展開しています...
netfilter-persistent (1.0.4+nmu2) を設定しています ...
Created symlink /etc/systemd/system/multi-user.target.wants/netfilter-persistent.service → /lib/systemd/system/netfilter-persistent.service.
update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
systemd (232-25+deb9u1) のトリガを処理しています ...
man-db (2.7.6.1-2) のトリガを処理しています ...
iptables-persistent (1.0.4+nmu2) を設定しています ...
root@sakura:~#
設定ファイルの保存までできた。

STEP5 設定の確認

iptablesの設定ファイルに設定が記載されているか確認します

root@sakura:~# ls /etc/iptables/rules.v4
/etc/iptables/rules.v4
root@sakura:~# cat !$
cat /etc/iptables/rules.v4
# Generated by iptables-save v1.6.0 on Wed Jan 31 19:15:40 2018
*filter
:INPUT DROP [33:1285]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1158:276818]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE -j DROP
-A INPUT -p tcp -m tcp ! --tcp-flags FIN,SYN,RST,ACK SYN -m state --state NEW -j DROP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG FIN,SYN,RST,PSH,ACK,URG -j DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 内緒 -j ACCEPT
COMMIT
# Completed on Wed Jan 31 19:15:40 2018

iptablesの設定を確認します

root@sakura:~# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
DROP       tcp  --  anywhere             anywhere             tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:内緒

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
root@sakura:~#

reboot して確認

念のため、reboot して確認する。
root@sakura:~# reboot
TeraTerm から再接続できることを確認。

設定がなされていることを確認

root@sakura:~# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
DROP       tcp  --  anywhere             anywhere             tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
ACCEPT     all  --  anywhere             anywhere
ACCEPT     icmp --  anywhere             anywhere
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:内緒

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
root@sakura:~#
OK ?

パッケージのアップデート
山下康成の
雲の上

sudo のセットアップ

Copyright (C) 2003-2018 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市/東京都新宿区