はじめに
Debian 10 のインストールはDebian 10 (buster)を用いたサーバ設定メモ - 発声練習。
参考サイト
方針
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の設定は そこそこセキュアなlinuxサーバーを作る - Qiitaを参考にしている。
#!/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のポートをチェック)