パケットフィルタ
UFWを利用すると簡単
https://yukeikai.net/orca/?cmd=read&page=%C6%FC%B5%AD%2F2014-01-28&word=ufw
iptablesを直接設定する場合
スカイ・エス・エイッチさんのパケットフィルタの例(ipchains)を見て
security対策に挑戦してみた。
kernel2.4からipchainsの代わりにiptablesが標準でインストールされている。基本インストールするとiptablesが既に使用可能になっている。
こちらのiptablesの設定を参考にした。
ORCAサーバ(スタンドアロン) 192.168.0.20 クライアント1 WinXP 192.168.0.3 クライアント2 WinXP 192.168.0.4
としておきます。サーバにはFTPサーバ(proftpd)、Webサーバ(apache)、sambaサーバ、ntpサーバもインストールしてあります。
rootでloginしてコンソールから、
# iptables -L
Chain INPUT (Policy ACCEPT) target prot opt source destination Chain FORWARD (Policy ACCEPT) target prot opt source destination Chain OUTPUT (Policy ACCEPT) target prot opt source destination
とでればインストールされています。
- ポリシーを決める
INPUT については、一旦すべて ACCEPT(許可)。FORWARD は使わないので DROP(破棄)。OUTPUT は、すべて ACCEPT(許可)。# iptables -P INPUT ACCEPT # iptables -P FORWARD DROP # iptables -P OUTPUT ACCEPT
- ルールをクリア
# iptables -F
- ルールをキー入力
icmp(ping)と自端末からの入力を許可# iptables -A INPUT -p icmp -j ACCEPT # iptables -A INPUT -i lo -j ACCEPT
Webによる接続を許可# iptables -A INPUT -p tcp --dport 80 -j ACCEPT
FTPによる接続を許可# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
ssh による接続を許可# iptables -A INPUT -p tcp --dport 22 -j ACCEPT
samba による接続を許可# iptables -A INPUT -p tcp -s 192.168.0.0/24 -d 192.168.0.0/24 --dport 137:139 -j ACCEPT # iptables -A INPUT -p udp -s 192.168.0.0/24 -d 192.168.0.0/24 --dport 137:139 -j ACCEPT
ntp-serverへの接続を許可# iptables -A INPUT -p udp -s 192.168.0.0/24 -d 192.168.0.20 --dport 123 -j ACCEPT
ORCAへの接続を許可# iptables -A INPUT -p tcp -s 192.168.0.3 -d 192.168.0.20 --dport 5432 -j ACCEPT # iptables -A INPUT -p tcp -s 192.168.0.3 -d 192.168.0.20 --dport 8000 -j ACCEPT # iptables -A INPUT -p tcp -s 192.168.0.4 -d 192.168.0.20 --dport 5432 -j ACCEPT # iptables -A INPUT -p tcp -s 192.168.0.4 -d 192.168.0.20 --dport 8000 -j ACCEPT
TCPの接続開始と応答、FTPデータなどを許可# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
他の接続はすべて破棄(ポリシーの再設定)# iptables -P INPUT DROP
- /etc/network/interfaces
起動時に以上の設定をするには/etc/network/interfacesに下記の通り記述する。auto lo eth0 iface lo inet loopback iface eth0 inet static address 192.168.0.20 netmask 255.255.255.0 broadcast 192.168.0.255 network 192.168.0.0 gateway 192.168.0.1 pre-up iptables -P INPUT ACCEPT pre-up iptables -P FORWARD DROP pre-up iptables -P OUTPUT ACCEPT pre-up iptables -F pre-up iptables -A INPUT -p icmp -j ACCEPT pre-up iptables -A INPUT -i lo -j ACCEPT pre-up iptables -A INPUT -p tcp --dport 80 -j ACCEPT pre-up iptables -A INPUT -p tcp --dport 21 -j ACCEPT pre-up iptables -A INPUT -p tcp --dport 22 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.0/24 -d 192.168.0.0/24 --dport 137:139 -j ACCEPT pre-up iptables -A INPUT -p udp -s 192.168.0.0/24 -d 192.168.0.0/24 --dport 137:139 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.3 -d 192.168.0.20 --dport 5432 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.3 -d 192.168.0.20 --dport 8000 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.4 -d 192.168.0.20 --dport 5432 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.4 -d 192.168.0.20 --dport 8000 -j ACCEPT pre-up iptables -A INPUT -p udp -s 192.168.0.0/24 -d 192.168.0.20 --dport 123 -j ACCEPT pre-up iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT pre-up iptables -P INPUT DROP
NFS とファイアウォール†
相性が悪いらしい。mountdポートの固定が必要。
http://infobsession.net/wiki/index.php?cmd=read&page=Linux%2FDebian%2FTips
- mountdポートの固定
/etc/default/nfs-common にSTATDOPTS="--port 2050 --outgoing-port 2051"
/etc/default/nfs-kernel-server にRPCMOUNTDOPTS="-p 2052"
- /etc/network/interfacesに追記
portmapper nfs mountdへの接続を許可する。auto lo eth0 iface lo inet loopback iface eth0 inet static address 192.168.0.20 netmask 255.255.255.0 broadcast 192.168.0.255 network 192.168.0.0 gateway 192.168.0.1 pre-up iptables -P INPUT ACCEPT pre-up iptables -P FORWARD DROP pre-up iptables -P OUTPUT ACCEPT pre-up iptables -F pre-up iptables -A INPUT -p icmp -j ACCEPT pre-up iptables -A INPUT -i lo -j ACCEPT pre-up iptables -A INPUT -p tcp --dport 80 -j ACCEPT pre-up iptables -A INPUT -p tcp --dport 21 -j ACCEPT pre-up iptables -A INPUT -p tcp --dport 22 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.0/24 -d 192.168.0.0/24 --dport 137:139 -j ACCEPT pre-up iptables -A INPUT -p udp -s 192.168.0.0/24 -d 192.168.0.0/24 --dport 137:139 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.3 -d 192.168.0.20 --dport 5432 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.3 -d 192.168.0.20 --dport 8000 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.4 -d 192.168.0.20 --dport 5432 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.4 -d 192.168.0.20 --dport 8000 -j ACCEPT pre-up iptables -A INPUT -p udp -s 192.168.0.0/24 -d 192.168.0.20 --dport 123 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.0/24 -d 192.168.0.20 --dport 2049 -j ACCEPT pre-up iptables -A INPUT -p udp -s 192.168.0.0/24 -d 192.168.0.20 --dport 2049 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.0/24 -d 192.168.0.20 --dport 111 -j ACCEPT pre-up iptables -A INPUT -p udp -s 192.168.0.0/24 -d 192.168.0.20 --dport 111 -j ACCEPT pre-up iptables -A INPUT -p tcp -s 192.168.0.0/24 -d 192.168.0.20 --dport 2050:2052 -j ACCEPT pre-up iptables -A INPUT -p udp -s 192.168.0.0/24 -d 192.168.0.20 --dport 2050:2052 -j ACCEPT pre-up iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT pre-up iptables -P INPUT DROP
CUPS リモート管理を可能にする†
pre-up iptables -A INPUT -p tcp --dport 631 -j ACCEPT
Cygwin(xdmcp)とファイアウォール†
pre-up iptables -A INPUT -p udp --dport 177 -j ACCEPT
もう少し簡単にiptables†
dhcpではうまく行かないのでstaticにすること。
/etc/network/interfaces (ORCAサーバ)
auto lo eth0 iface lo inet loopback iface eth0 inet static address 192.168.0.20 netmask 255.255.255.0 broadcast 192.168.0.255 network 192.168.0.0 gateway 192.168.0.1 pre-up iptables -P INPUT ACCEPT pre-up iptables -P FORWARD DROP pre-up iptables -P OUTPUT ACCEPT pre-up iptables -F pre-up iptables -A INPUT -p icmp -j ACCEPT pre-up iptables -A INPUT -i lo -j ACCEPT # pre-up iptables -A INPUT -p tcp --dport 8000 -j ACCEPT pre-up iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT pre-up iptables -P INPUT DROP
設定を変更したら、
# /etc/init.d/networking restart
以上の設定でlocal以外からはORCAサーバにアクセスできなくなる。
pre-up iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
としてポート8000を解放するとクライアント(glclient)からORCAサーバ(glserver)に接続可能になる。
ルータのアドレス変換でポート8000を解放するとLAN外部からも容易にアクセスできでしまう。
pre-up iptables -A INPUT -p tcp -s 192.168.0.0/24 -d 192.168.0.20 --dport 8000 -j ACCEPT
とするとLAN内のすべてのクライアントからORCAサーバに接続可能になる。外部からの接続は遮断。
pre-up iptables -A INPUT -p tcp -s 192.168.0.3 -d 192.168.0.20 --dport 8000 -j ACCEPT
とするとクライアント1だけがORCAサーバに接続可能になる。