2
0

More than 1 year has passed since last update.

Ubuntu 20.04 の ufw、iptable で日本国内のIPからのアクセスのみに絞る

Last updated at Posted at 2022-07-05

はじめに

環境

~$ uname -a
Linux linux 5.4.0-121-generic #137-Ubuntu SMP Wed Jun 15 13:33:07 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS"

~$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

設定

概要

  • 以下のように、新しいチェーンを作成して、日本のIPアドレスは、RETURN して、そのほかは DROP するように設定する。そのためにスクリプトや設定編集を実行する。

    iptables -F DROP_EXCEPT_JP
    iptables -A DROP_EXCEPT_JP -s AAA.AAA.AAA.AAA/16 -j RETURN
    iptables -A DROP_EXCEPT_JP -s BBB.BBB.BBB.BBB/24 -j RETURN
          :
          :
    iptables -A DROP_EXCEPT_JP -j DROP
    

作業

  • /etc/ufw/before.rules を編集して、以下の3行を COMMIT とコメントの前に追加する

    :DROP_EXCEPT_JP - [0:0]
    -A DROP_EXCEPT_JP -j ACCEPT
    -A ufw-before-input -j DROP_EXCEPT_JP
    # don't delete the 'COMMIT' line or these rules won't be processed
    COMMIT
    
  • /etc/ufw/after.init の start) と stop) を編集する

    start)
        # typically required
        /etc/ufw/after.init.drop_except_jp
        ;;
    stop)
        # typically required
        iptables -F DROP_EXCEPT_JP
        ;;
    
  • /etc/ufw/after.init に実行権限を付加する

    chmod +x /etc/ufw/after.init
    
  • 以下のスクリプトを作成する。場所はどこでも良い。 {self subnet} に自分のサブネットを入れる。

    #!/bin/sh
    IPTABLES=iptables
    #EXCLUDE_PORTS=80,443,25
    wget -q -N http://nami.jp/ipv4bycc/cidr.txt.gz
    gunzip -q -f -c cidr.txt.gz > cidr.txt
    if [ -f cidr.txt ]; then
        echo $IPTABLES -F DROP_EXCEPT_JP
        #echo $IPTABLES -A DROP_EXCEPT_JP -p tcp -m multiport --dport $EXCLUDE_PORTS -m state --state NEW -j RETURN
        # 次の行は必要に応じて
        echo $IPTABLES -A DROP_EXCEPT_JP -s {self subnet} -j RETURN
        sed -n 's/^JP\t//p' cidr.txt | while read address; do
            echo $IPTABLES -A DROP_EXCEPT_JP -s $address -j RETURN
        done
        echo $IPTABLES -A DROP_EXCEPT_JP -j DROP
    fi    
    
  • スクリプトを実行して日本のIPアドレスを記載したファイルを作成する

    sh drop_except_jp.sh > after.init.drop_except_jp
    cp after.init.drop_except_jp /etc/ufw/after.init.drop_except_jp
    chmod +x /etc/ufw/after.init.drop_except_jp
    
  • ufw を再起動する

    ufw reload
    service ufw restart
    service ufw stats
    

おわりに

  • かんたんでしたね、簡単になるように公開してくださっている記事に感謝

参考記事

2
0
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
2
0