#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