カテゴリー
【VPS・Linuxサーバー入門】iptablesからクライアントのMACアドレスごとにConoHa VPSのファイアウォールを設定する
※ 当ページには【広告/PR】を含む場合があります。
2022/12/13
2022/12/14
MACアドレスを利用したファイアウォールの構築の基礎
22222
$ sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$ sudo iptables -A INPUT -p tcp --dport 22222 -j ACCEPT
...
22
22222
$ sudo iptables -A INPUT -p tcp -s [送信者のIPアドレス] --dport 22222 -j ACCEPT
iptables-persistentでファイアウォールを管理する
rc.local
rc.local
iptables-persistent
iptables-persistent
$ sudo apt install iptables-persistent -y
iptables-persistent
netfilter-persistent
$ sudo netfilter-persistent save
#👇IPv4用Netfilterルール
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
#👇IPv6用Netfilterルール
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
$ sudo netfilter-persistent flush
netfilter-persistent flush
$ sudo netfilter-persistent reload
netfilter-persistent save
netfilter-persistent
netfilter-persistent start
$ sudo systemctl status netfilter-persistent
● netfilter-persistent.service - netfilter persistent configuration
Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vend>
Drop-In: /etc/systemd/system/netfilter-persistent.service.d
└─iptables.conf
Active: active (exited) since Mon 2022-12-12 16:00:17 JST; 34min ago
Docs: man:netfilter-persistent(8)
Main PID: 543099 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 528)
Memory: 0B
CPU: 0
CGroup: /system.slice/netfilter-persistent.service
$ sudo netfilter-persistent stop
$ sudo netfilter-persistent start
netfilter-persistent
拡張モジュール・「mac」でフィルターを構築する
ipコマンド
link/ether
$ ip addr | grep ether
#...
link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
#...
00:11:22:33:44:55
$ sudo iptables -A INPUT \
-m mac --mac-source 00:11:22:33:44:55 \
-j ACCEPT
00:11:22:33:44:55
#👇ループバックからの入力は常に許可
$ sudo iptables -A INPUT -i lo -j ACCEPT
#👇既に接続したことのある外部への通信(応答)を許可
$ sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#👇MACアドレス・00:11:22:33:44:55(👈現在のWAN接続されている機器)からの外部入力は許可
$ sudo iptables -A INPUT -m mac --mac-source 00:11:22:33:44:55 -j ACCEPT
#👇利用できるならば、別のMACアドレス・11:22:33:44:55:66(👈保険のクライアント)からの外部入力は許可
$ sudo iptables -A INPUT -m mac --mac-source 11:22:33:44:55:66 -j ACCEPT
#👇上記の設定ルールに該当しないパケットで、INPUTアクセスは破棄
$ sudo iptables -A INPUT -j DROP
#sudo iptables -P INPUT DROP でポリシーごと書き換えても可
#👇上記の設定ルールに該当しないパケットで、FORWARDアクセスは破棄
$ sudo iptables -A FORWARD -j DROP
#sudo iptables -P FORWARD DROP でポリシーごと書き換えても可
#👇上記の設定ルールに該当しないパケットで、OUTPUTは許可
$ sudo iptables -A OUTPUT -j ACCEPT
#sudo iptables -P OUTPUT ACCEPT でポリシーごと書き換えても可
$ sudo netfilter-persistent save
$ ping -c 4 <VPSのIPアドレス>
#...接続可能
$ ping -c 4 <VPSのIPアドレス>
#...接続不可
グローバルMACアドレスの調べ方①〜LOGターゲットを利用する
グローバルMACアドレス
$ sudo iptables -A INPUT -p imcp -j LOG --log-macdecode
--log-macdecode
/var/log/kern.log
$ sudo cat /var/log/kern.log
...
Dec 12 20:32:23 xxx-xxx-xxx-xxxx kernel: [2849028.102048] IN=eth0 OUT= 🌟MACSRC=xx:xx:xx:xx:xx:xx MACDST=00:00:00:00:11:22 MACPROTO=0800 SRC=yyy.yyy.yyy.yyy DST=zzz.zzz.zzz.zzz LEN=36 TOS=0x00 PREC=0x00 TTL=241 ID=2089 DF PROTO=ICMP TYPE=8 CODE=0 ID=18 SEQ=17006
MACSRC
グローバルMACアドレスの調べ方②〜ブロードバンドルーターの設定画面で調べる
http://192.168.*.1
[設定] > [情報] > [現在の状態]
装置情報
MACアドレス(ETHERNET)
まとめ
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー