PCがローカルネットワークにある場合、他のPCからの攻撃なんて考えなくてもいいのかも しれませんが、念のためなんてこともあるかもしれませんので。 iptables コマンドを使ってファイアウォールを構築する方法。
# chkconfig iptables on
service iptables start
# iptables -L
Chain INPUT (policy ACCEPT) ←パケットの入力 全て許可
target prot opt source destination
RH-Lokkit-0-50-INPUT all -- anywhere anywhere ←"RH-Lokkit-0-50-INPUT "はチェイン名 内容は下で定義
Chain FORWARD (policy ACCEPT) ←パケットの転送 全て許可
target prot opt source destination
RH-Lokkit-0-50-INPUT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT) ←パケットの出力 全て許可
target prot opt source destination
Chain RH-Lokkit-0-50-INPUT (2 references) ←チェイン"RH-Lokkit-0-50-INPUT "のルール
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:http flags:SYN,RST,ACK/SYN ←httpの接続を許可
ACCEPT tcp -- anywhere anywhere tcp dpt:ftp flags:SYN,RST,ACK/SYN ←ftpの接続を許可
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh flags:SYN,RST,ACK/SYN ←sshの接続を許可
ACCEPT all -- anywhere anywhere ←ローカルホストの接続を全て許可
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited ←全てを拒否
# iptables -X RH-Lokkit-0-50-INPUT ← チェイン:RH-Lokkit-0-50-INPUT を削除
# iptables -F INPUT ← INPUT(他のマシンからの接続)チェイン内のルールを全て削除
# iptables -F OUTPUT ← OUTPUT(他のマシンへの接続)チェイン内のルールを全て削除
# iptables -F FORWARD ← FORWARD(他のマシンへの転送)チェイン内のルールを全て削除
# iptables -N FIREWALL1 ← 新しいユーザ定義チェインの作成
# iptables -A INPUT -j FIREWALL1 ← INPUTチェインをユーザ定義チェインと結びつける
# iptables -A FIREWALL1 -i lo -j ACCEPT ← ローカルホストからの入力を許可・必須
# iptables -A FIREWALL1 -m state --state ESTABLISHED,RELATED -j ACCEPT ←確立済みとその関連するコネクションを許可・必須
# iptables -A FIREWALL1 -p icmp -j ACCEPT ← icmpプロトコルのパケットを許可
# iptables -A FIREWALL1 -p tcp --dport 21 -j ACCEPT ← FTP(tcp/21)への接続を許可
# iptables -A FIREWALL1 -p tcp --dport 22 -j ACCEPT ← SSH(tcp/22)への接続を許可
# iptables -A FIREWALL1 -p tcp --dport 80 -j ACCEPT ← HTTP(tcp/80)への接続を許可
# iptables -A FIREWALL1 -p tcp --dport 443 -j ACCEPT ← HTTPS(tcp/443)への接続を許可
# iptables -A FIREWALL1 -j REJECT --reject-with icmp-host-prohibited ← 先に許可したポート以外全て不許可にする
# iptables -P INPUT ACCEPT ← INPUT(他のマシンからの接続)のポリシーをACCEPT(許可)
# iptables -P FORWARD DROP ← FORWARD(他のマシンへの転送)のポリシーをDROP(破棄・応答も返さない)
# iptables -P OUTPUT ACCEPT ← OUTPUT (他のマシンへの接続)のポリシーをACCEPT(許可)
最後に以下のコマンドで現在の設定を保存する。
# service iptables save #設定したルールの保存
現在のルールを/etc/sysconfig/iptablesに保存中: [ OK ]
ちなみにチェイン丸ごと消すときは
# iptables -X チェイン名
チェイン内のあるルールを消すときは
# iptables -D チェイン名 消したいルールのチェイン内の上からの順番
チェイン名を変えるときは
# iptables -E 元のチェイン名 新しいチェイン名
ルータにするときは
または (こちらは即時)
vi /etc/sysctl.conf #次の再起動時に有効となる
net.ipv4.ip_forward = 1
echo 1 > /proc/sys/net/ipv4/ip_forward
上のiptables の設定に次の設定を加える。 (eth0がインターネット eth1がローカルとする)
# iptables -A FORWARD -j FIREWALL1
# iptables -A FIREWALL1 -i eth1 -j ACCEPT
さらにIPマスカレードにする場合は
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -L -t nat ←nat テーブルを確認