#author("2026-03-02T20:24:34+09:00","default:pengwei-admin","pengwei-admin")
#author("2026-03-02T20:25:35+09:00","default:pengwei-admin","pengwei-admin")
*[[ubuntu/ufw]] [#jbfc7a39]
#contents
**firewall-ufw [#od4002bb]
 serverworld blog: https://www.server-world.info/query?os=Ubuntu_22.04&p=ufw&f=1

 sudo ufw status  #Status: inactive
 sudo ufw enable
 sudo ufw status  #Status: active

 sudo ufw status verbose  #Default: deny (incoming), allow (outgoing), disabled (routed)
 sudo ufw allow ssh
 sudo ufw status verbose
 sudo ufw delete allow ssh 
 sudo ufw status verbose
 sudo ufw reload

 sudo ufw allow 8080/tcp             #80番ポートのtcp通信を許可。udpは許可されない。
 sudo ufw delete allow 8080/tcp  #許可した80番ポートのtcpを削除する。status verboseで調べたlistにあるものだけ対象。

 sudo ufw app list

 sudo vim /etc/ufw/before.rules #ICMP関連すべてコメントアウト
 #家だけ許可する場合:-A ufw-before-input -p icmp --icmp-type echo-request -s 192.168.1.0/24 -j ACCEPT

**占用されたとき [#x3873895]
 sudo netstat -tuln | grep 8080  #状況調べる
 sudo lsof -i :8080                    #PIDまで調べる
 sudo kill -9 <PID>

**すべてのportからListenしているものを確認 [#ee50019f]
 sudo lsof -i -P -n | grep LISTEN

** ALLOW IN Anywhereの危うさ [#ab83d7ef]
 単純に「sudo ufw allow ssh」を実行すると、ufwはALLOW IN Anywhereのルールが追加されて、Anywhereは全世界にアクセスを許可という誤り設定になる。(前段ルーターの22 portの許可は別として。)
- 1. ローカルネットワーク (192.168.0.x) からのアクセスを許可
 sudo ufw allow from 192.168.0.0/24 to any port 22 proto udp
 sudo ufw allow from 192.168.0.0/24 to any port 22 proto tcp

- 2. VPNクライアント (例:VPNクライアントのIP範囲が 10.10.10.0) からのアクセスを許可
 sudo ufw allow from 10.10.10.0/24 to any port 22 proto udp
 sudo ufw allow from 10.10.10.0/24 to any port 22 proto tcp
 sudo ufw allow from 10.10.10.23 to any port 22 proto tcp

 sudo ufw status numbered
 sudo ufw delete 11

** ルーター機能-DMZとUPnP [#c59097dd]
 DMZ (DeMilitarized Zone): 特定のIP(サーバーPC)を「全ポート開放」として設定できる機能。
 UPnP                    : サーバー上のアプリケーションが、ルーターに対して勝手に「22番を開けて」と要求し、ルーターが自動で開けてしまった機能。

** configを見やすくターミナル確認(コメントと空行を除いて表示する) [#s380ef29]
 grep -vE '^\s*#|^\s*$' /etc/ocserv/ocserv.conf

 grep -v:マッチした行を除外
 -E     :拡張正規表現を使う
 ^\s*#  :行頭の空白のあとに # がある行(コメント)
 ^\s*$  :空白だけの行(空行)

**sshdとufwのリアルタイムログ表示 [#c5be3c9e]
 sudo tail -f /var/log/auth.log
 sudo journalctl -u sshd -f

** 新旧IPtableについて(nft) [#ge0643fb]
 使用しているiptableを確認できる: sudo update-alternatives --display iptables
 iptables-nftのほうが最新型。
 ★ufw は内部的に iptables コマンドを使ってルールを設定する

** 物理if経由ならif指定 [#j35e2a18]
-ハマったこと
-ハマったこと  ※インターフェース指定がない場合、UFWがうまくマッチしないことがある
 [22/tcp  ALLOW IN 192.168.10.132]の指定をしたが、192.168.10.132からの接続がブロックされる:
 Mar  2 19:54:23 www kernel: [126370.917315] [UFW BLOCK] IN=eno1 OUT= MAC=xx:00 SRC=192.168.10.132 DST=192.168.10.119 
 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=29758 DF PROTO=TCP SPT=54357 DPT=2119 WINDOW=64240 RES=0x00 SYN URGP=0

-解決方法、sudo ufw allow in on eno1 proto tcp from 192.168.10.132 to any port 22
 設定後の表示:[21] 22/tcp on eno1   ALLOW IN    192.168.10.132

トップ   差分 履歴 リロード   一覧 検索 最終更新   ヘルプ   最終更新のRSS