読者です 読者をやめる 読者になる 読者になる

破棄されたブログ

このブログは破棄されました。

Debian 7 の iptables と sshd の設定と IPv6 無効化メモ

iptables の設定

既存の設定を確認する。

sudo 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

この設定だと、誰でもどこからでもアクセスできるから、設定を変えてやる。

iptables ルールファイルの作成

ここら辺で Debian Wiki の内容と変わってくるんで注意。

iptables-persistent をインストールする。

sudo aptitude install iptables-persistent

iptables (IPv4) の設定ファイルは /etc/iptables/rules.v4 になる。iptables-persistent が自動生成した設定ファイルのバックアップを一応とっておいてから編集する。

sudo cp /etc/iptables/rules.v4 /etc/iptables/rules.v4.bak
sudo vim /etc/iptables/rules.v4

Debian Wiki に書いてある設定をコピペしてくる。SSH のポートを適宜修正して保存。
ここで、SSH のポートは後で設定するポートを指定しておいてやる必要あるから注意。

*filter

# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT

# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT

# Allows HTTP and HTTPS connections from anywhere (the normal ports for websites)
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT

# Allows SSH connections 
# THE -dport NUMBER IS THE SAME ONE YOU SET UP IN THE SSHD_CONFIG FILE
-A INPUT -p tcp -m state --state NEW --dport 30000 -j ACCEPT

# Now you should read up on iptables rules and consider whether ssh access 
# for everyone is really desired. Most likely you will only allow access from certain IPs.

# Allow ping
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7

# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT

COMMIT

設定を反映して確認

sudo service iptables-persistent start
sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
REJECT     all  --  anywhere             loopback/8           reject-with icmp-port-unreachable
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             state NEW tcp dpt:30000
ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
LOG        all  --  anywhere             anywhere             limit: avg 5/min burst 5 LOG level debug prefix "iptables denied: "
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
REJECT     all  --  anywhere             anywhere             reject-with icmp-port-unreachable

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere

で、/etc/iptables/rules.v4 があるってことは、 /etc/iptables/rules.v6 があるわけで、
IPv6 に対応たい場合には、 IPv6 に対しても同じように設定してやらないといけない。
実際、 ip6tables -L をすると、生まれたままの姿の状態になっていることがわかる。
めんどくさいから IPv6 は無効化しておく。

すでに、 Debian Wiki の通りに Debian 6 Squeeze 向けな設定をしてしまった場合

Debian Wiki の手順通りに設定した場合に作成するファイル 3 つは、全て新規作成したもの。

こいつらの設定を引き継ぎつつ、新しい設定に移行させればいい。

まず、既存の設定で /etc/iptables/rules.v4 を上書きして、正しく設定ファイルが作成されていることを確認する。

sudo iptables-save > /etc/iptables/rules.v4
cat /etc/iptables/rules.v4

既存の設定ファイルを削除する。

sudo rm /etc/iptables.up.rules /etc/iptables.test.rules /etc/network/if-pre-up.d/iptables

設定を反映させて、確認する。

sudo service iptables-persistent start
sudo iptables -L

IPv6 の無効化

IPv6 を有効にしておくと ip6tables の設定とかしないといけなそうでかったるいので無効化する。
Debian Wiki には /etc/sysctl.d/disableipv6.conf に追記しろとか書いてあるけど、
/etc/sysctl.conf に書いても同じ(とか個人的には /etc/sysctl.conf に書くほうが好きって /etc/sysctl.d/README.sysctl に書いてあった)から、/etc/sysctl.conf に書く。

sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak
sudo vim /etc/sysctl.conf
--- /etc/sysctl.conf.bak
+++ /etc/sysctl.conf
@@ -58,3 +58,8 @@
 # Log Martian Packets
 #net.ipv4.conf.all.log_martians = 1
 #
+
+# Disable IPv6
+net.ipv6.conf.all.disable_ipv6 = 1
+net.ipv6.conf.default.disable_ipv6 = 1
+net.ipv6.conf.lo.disable_ipv6 = 1

sysctl で設定を反映

sudo sysctl -p

SSH ポートの変更

とりあえずバックアップをとっておいてからお好みで編集する。
とりあえず、ポートの変更は必須

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo vim /etc/ssh/sshd_config
diff -u /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
--- /etc/ssh/sshd_config.bak
+++ /etc/ssh/sshd_config
@@ -2,7 +2,7 @@
 # See the sshd_config(5) manpage for details

 # What ports, IPs and protocols we listen for
-Port 22
+Port 30000
 # Use these options to restrict which interfaces/protocols sshd will bind to
 #ListenAddress ::
 #ListenAddress 0.0.0.0

メモ

chef solo で自動化できるようにしたい。

広告を非表示にする