Closed5
ufwとiptablesによるファイアウォール設定
目的
自宅サーバのポートが全開放になっているのはよろしくないので
ファイアウォール(FW)を設定し使用しているポート以外は閉じる
環境
Ubuntu Sever 22.04 LTS
利用技術と設定方針
Linuxには「iptables」というパケットフィルタを行う機能がある
ただ設定が複雑なため、Ubuntuには「ufw」という「iptables」を簡単に設定できる機能がある
そのため基本は「ufw」で設定し、必要に応じて「iptables」を利用する
参考
ufwコマンド
操作 | コマンド | 備考 |
---|---|---|
動作状態確認 | sudo ufw status verbose | 無効:inactive / 有効:active |
設定ルールを番号づけで表示 | sudo ufw status numbered | ルール削除の際に利用 |
有効化 | sudo ufw enable | |
無効化 | sudo ufw disable | |
外部からの通信拒否 | sudo ufw default DENY | 内から外は許可 |
ポート開放 | sudo ufw allow [ポート番号/アプリ名] | 定義されているアプリ名指定も可 、「proto tcp(udp)」でプロトコル指定も可 |
IP指定してポート開放 | sudo ufw allow from [IP] to any port [ポート番号] | IPはサブネットで範囲指定も可能 |
連続接続の場合は拒否 | sudo ufw limit ssh [ポート番号/アプリ名] | |
アプリ定義一覧表示 | sudo ufw app list | |
ルール削除 | sudo ufw delete [ルール番号] |
ufwによる設定例、ここではssh以外を拒否する
# 外部からの通信を拒否
$ sudo ufw default DENY
# 192.168.0.*を対象にsshを有効化
$ sudo ufw allow proto tcp from 192.168.0.0/24 to any port 22
# sshの連続接続を拒否(順番大事)
$ sudo ufw limit 22
# 有効化
$ sudo ufw enable
$ sudo reboot
基本的には上記のようにufwで設定で良いが、Dockerを使用している場合は注意が必要
ホスト側との通信設定を行うと自動的に「iptables」の設定もポート開放するように設定される
そのためDockerよるサービスがLAN内向けなどであれば下記のように制限をかけた方が良い
$ sudo apt install iptables-persistent
$ sudo iptables -I DOCKER-USER -i [通信インターフェイス名] ! -s 192.168.0.0/24 -j DROP
$ sudo reboot
この場合「192.168.0.*」以外からのアクセスは拒否する
なお最初にインストールしているのは「iptables」の設定を保持するためのもの
再起動後にルールが反映されているか確認する
$ sudo iptables -L -n -v | grep -A7 "DOCKER-USER"
Cain DOCKER-USER (1 references)
pkts bytes target prot opt in out source destination
0 0 DROP all -- [NIC] * !192.168.0.0/24 0.0.0.0/0
8167 8948K RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
このスクラップは2023/12/28にクローズされました