はじめに
Debian 11 のインストールはDebian 11 (bulleye)を用いたサーバ設定メモ - 発声練習。
参考サイト
方針
Debian 10からアクセス制御をiptablesからnftablesで行うようになった。
- Debian 9以前のiptablesの設定をテキストファイルに出力する
- Debian 10上で iptables-restore-translate でiptablesの設定をnftablesの設定に変更する。
- 編集したものを /etc/nftables.conf にコピーし、設定を反映させる。
(必要に応じて) iptablesの設定をテキストファイルに出力
% sudo iptables-save > iptables.conf
nftablesのインストール
% sudo apt install nftables % sudo systemctl enable nftables.service
現在の設定を表示する。
% sudo nft list ruleset
iptablesの設定をnftablesの設定へ変換
% sudo /usr/sbin/iptables-restore-translate -f iptables.conf > /tmp/nftables-temp.conf
/tmp/nftables-temp.conf を適宜編集する。/etc/nftables.conf の先頭2行は必ず追加しないといけない。編集したら/etc/nftables.confとして保存する。
% cd /etc % sudo cp -p nftables.conf nftables.conf.org % sudo cp /tmp/nftables-temp.conf nftables.conf % sudo nft -f /etc/nftables.conf % sudo nft list ruleset
設定例
元のiptablesの設定は https://qiita.com/cocuh/items/e7c305ccffb6841d109cを参考にしている。
#!/usr/sbin/nft -f
# 既存の設定をリセット
flush ruleset
table inet filter {
chain input {
type filter hook input priority 0;
}
chain forward {
type filter hook forward priority 0;
}
chain output {
type filter hook output priority 0;
}
}
# 以下、iptables-restore-translateで変換したときに
# INPUT, FORWARD, OUTPUTが大文字だったので小文字にした。
#
# また、 counter の後ろに ”packets 数字 bytes 数字" という記述があるがこれは削っても良いので削った。
# 以下は IPv4に対する設定。
table ip filter {
chain input {
type filter hook input priority 0; policy accept;
# ICMPを許可
ip protocol icmp counter accept
# 接続確立済みのTCPパケットを許可
ct state established,related counter accept
# ローカルホスト(127.0.0.1)からのアクセス許可
iifname "lo" counter accept
# ipspoofing対策
ip saddr 10.0.0.0/8 counter drop
ip saddr 172.16.0.0/12 counter drop
#ip saddr 192.168.0.0/16 counter drop
counter
ip saddr 127.0.0.0/8 counter drop
ip saddr 169.254.0.0/16 counter drop
ip saddr 192.0.2.0/24 counter drop
ip saddr 224.0.0.0/4 counter drop
ip daddr 255.255.255.255 counter drop
# SSH(22番ポート)へのアクセスは許可
tcp dport ssh counter accept
# HTTP(80番ポート)、HTTPS(443番ポート)へのアクセスは許可
tcp dport http counter accept
tcp dport https counter accept
# SMTP(25番)へのアクセスは許可
tcp dport smtp counter accept
# SMTP AUTH on TLS(465)とPOP3S(995)へのアクセスは許可
tcp dport urd counter accept
tcp dport pop3s counter accept
# muninへのアクセスはXX.XX.XX.XX/24の中からのみ許可
ip saddr XX.XX.XX.XX/24 tcp dport munin counter accept
# ポートスキャン対策
meter portscan size 65535 { ip saddr limit rate 10/second burst 10 packets} counter jump portscanner
# 上記に当てはまらないTCP, UDPのパケットは不可
ip protocol tcp counter reject with tcp reset
ip protocol udp counter reject
counter reject with icmp type prot-unreachable
}
chain forward {
type filter hook forward priority 0; policy accept;
counter reject
}
chain output {
type filter hook output priority 0; policy accept;
counter accept
}
chain portscanner {
counter drop
}
}
ポートの開き具合をチェックする。
設定したサーバ上で開いているポートを調べる。
% lsof -i
別のマシンからサーバで開いているポートを調べる(注意:これは攻撃の第一段階のポートスキャンにあたるので自分で管理しているサーバにだけおこなうこと)。なお、当該サーバのIPアドレスをYY.YY.YY.YY とする
% sudo nmap YY.YY.YY.YY (TCPのポートをチェック) % sudo nmap -sU YY.YY.YY.YY (UDPのポートをチェック)
fails2banのインストールと設定
以下のとおりに設定できた。
Debian 10 + nftables + fail2ban - 発声練習