##!/bin/sh
#——設定開始——# # インタフェース名定義 # LAN=eth1 # WAN=eth0 #name localhost 構成: WAN – eth0|PC|eth1(192.168.0.1) – LAN(192.168.0.0/24) #——設定終了——#
#——初期化開始——# # ファイアウォール停止(すべてのルールをクリア) /etc/rc.d/init.d/iptables stop
# フィルタリングルールを初期化 iptables -F iptables -F -t nat #——初期化終了——#
#——Filter設定開始——# # デフォルトポリシーを設定 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP
# loopback への入出力は許可 iptables -A INPUT -i lo -j ACCEPT iptables -A OUTPUT -o lo -j ACCEPT
# 1秒間に4回を超えるpingはログを記録して破棄 # ※Ping of Death攻撃対策 iptables -N LOG_PINGDEATH iptables -A LOG_PINGDEATH -m limit –limit 1/s –limit-burst 4 -j ACCEPT iptables -A LOG_PINGDEATH -j LOG –log-prefix ‘[IPTABLES PINGDEATH] : ‘ iptables -A LOG_PINGDEATH -j DROP iptables -A INPUT -p icmp –icmp-type echo-request -j LOG_PINGDEATH
# SYN Cookiesを有効にする # ※TCP SYN Flood攻撃対策 sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null sed -i ‘/net.ipv4.tcp_syncookies/d’ /etc/sysctl.conf echo “net.ipv4.tcp_syncookies=1″ >> /etc/sysctl.conf
# ブロードキャストアドレス宛pingには応答しない # ※Smurf攻撃対策 sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null sed -i ‘/net.ipv4.icmp_echo_ignore_broadcasts/d’ /etc/sysctl.conf echo “net.ipv4.icmp_echo_ignore_broadcasts=1″ >> /etc/sysctl.conf
# ICMP Redirectパケットは拒否 sed -i ‘/net.ipv4.conf.*.accept_redirects/d’ /etc/sysctl.conf for dev in `ls /proc/sys/net/ipv4/conf/` do sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null echo “net.ipv4.conf.$dev.accept_redirects=0″ >> /etc/sysctl.conf done
# Source Routedパケットは拒否 sed -i ‘/net.ipv4.conf.*.accept_source_route/d’ /etc/sysctl.conf for dev in `ls /proc/sys/net/ipv4/conf/` do sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null echo “net.ipv4.conf.$dev.accept_source_route=0″ >> /etc/sysctl.conf done
#——INPUT開始——# # フラグメント化されたパケットはログを記録して破棄 iptables -A INPUT -f -j LOG –log-prefix ‘[IPTABLES FRAGMENT] : ‘ iptables -A INPUT -f -j DROP
# 内部からのアクセスをすべて許可 iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
# 全ホスト(ブロードキャストアドレス、マルチキャストアドレス)宛パケットはログを記録せずに破棄 # ※不要ログ記録防止 iptables -A INPUT -d 255.255.255.255 -j DROP iptables -A INPUT -d 224.0.0.1 -j DROP
# 113番ポート(IDENT)へのアクセスには拒否応答 # ※メールサーバ等のレスポンス低下防止 iptables -A INPUT -p tcp –dport 113 -j REJECT –reject-with tcp-reset
# 内部から行ったアクセスに対する外部からの返答アクセスを許可 iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
# DNSとの通信を許可 iptables -A INPUT -p udp –sport 53 -j ACCEPT iptables -A INPUT -p udp –dport 53 -j ACCEPT
#Internetからの送信元IPアドレスがプライベートアドレスのパケットを破棄 iptables -A INPUT -s 10.0.0.0/8 -j DROP iptables -A INPUT -s 172.16.0.0/12 -j DROP iptables -A INPUT -s 192.168.0.0/16 -j DROP
#Internetからの宛先IPアドレスがプライベートアドレスのパケットを破棄 iptables -A INPUT -d 10.0.0.0/8 -j DROP iptables -A INPUT -d 172.16.0.0/12 -j DROP iptables -A INPUT -d 192.168.0.0/16 -j DROP
iptables -I INPUT -p tcp -s 192.168.1.0/24 –dport 443 -j ACCEPT
# 外部とのNetBIOS関連のアクセスはログを記録せずに破棄 #iptables -A INPUT ! -s 192.168.0.0/24 -p tcp -m multiport –dports 135,137,138,139,445 -j DROP #iptables -A INPUT ! -s 192.168.0.0/24 -p udp -m multiport –dports 135,137,138,139,445 -j DROP
#iptables -A INPUT -p tcp -m multiport –dports 135,137,138,139,445 -j ACCEPT #iptables -A INPUT -p udp -m multiport –dports 135,137,138,139,445 -j ACCEPT
#iptables -A INPUT -p tcp -m state –state NEW –dport 139 -j ACCEPT #iptables -A INPUT -p tcp -m state –state NEW –dport 445 -j ACCEPT
# 外部からのTCP22番ポート(SSH)へのアクセスを許可 # ※SSHサーバーを公開する場合のみ iptables -A INPUT -i eth1 -p tcp –dport 22 -j DROP # 133.89.79.0/24からの内部へのアクセスを許可 #iptables -A INPUT -p tcp -s 133.89.79.0/24 –dport 22 -j ACCEPT
# 外部からのTCP/UDP53番ポート(DNS)へのアクセスを許可 # ※外部向けDNSサーバーを運用する場合のみ iptables -A INPUT -p tcp –dport 53 -j ACCEPT iptables -A INPUT -p udp –dport 53 -j ACCEPT
# 外部からのTCP80番ポート(HTTP)へのアクセスを許可 # ※Webサーバーを公開する場合のみ iptables -A INPUT -i eth1 -p tcp –dport 80 -j ACCEPT
# 外部からのTCP443番ポート(HTTPS)へのアクセスを許可 # ※Webサーバーを公開する場合のみ #iptables -A INPUT -p tcp –dport 443 -j ACCEPT
# 外部からのTCP21番ポート(FTP)へのアクセスを許可 # ※FTPサーバーを公開する場合のみ #iptables -A INPUT -p tcp –dport 21 -j ACCEPT
# 外部からのPASV用ポート(FTP-DATA)へのアクセスを許可 # ※FTPサーバーを公開する場合のみ # ※PASV用ポート60000:60030は当サイトの設定例 #iptables -A INPUT -p tcp –dport 60000:60030 -j ACCEPT
# 外部からのTCP25番ポート(SMTP)へのアクセスを許可 # ※SMTPサーバーを公開する場合のみ #iptables -A INPUT -p tcp –dport 25 -j ACCEPT
# 外部からのTCP465番ポート(SMTPS)へのアクセスを許可 # ※SMTPSサーバーを公開する場合のみ #iptables -A INPUT -p tcp –dport 465 -j ACCEPT
# 外部からのTCP110番ポート(POP3)へのアクセスを許可 # ※POP3サーバーを公開する場合のみ #iptables -A INPUT -p tcp –dport 110 -j ACCEPT
# 外部からのTCP995番ポート(POP3S)へのアクセスを許可 # ※POP3Sサーバーを公開する場合のみ #iptables -A INPUT -p tcp –dport 995 -j ACCEPT
# 外部からのTCP143番ポート(IMAP)へのアクセスを許可 # ※IMAPサーバーを公開する場合のみ #iptables -A INPUT -p tcp –dport 143 -j ACCEPT
# 外部からのTCP993番ポート(IMAPS)へのアクセスを許可 # ※IMAPSサーバーを公開する場合のみ #iptables -A INPUT -p tcp –dport 993 -j ACCEPT
# 外部からのUDP1194番ポート(OpenVPN)へのアクセスを許可 # ※OpenVPNサーバーを公開する場合のみ #iptables -A INPUT -p udp –dport 1194 -j ACCEPT
# プリンターポート透過 iptables -A INPUT -p tcp –dport 9100 -j ACCEPT #iptables -A INPUT -p udp –dport 9100 -j ACCEPT iptables -A INPUT -p tcp –dport 515 -j ACCEPT
# メール関係 iptables -A INPUT -i eth1 -p tcp -m multiport –dport 465,587,993,995 -j ACCEPT
#Sambaに必要なポートを許可 #iptables -A INPUT -p tcp –dport 139 -j ACCEPT #iptables -A INPUT -p udp –dport 137 -j ACCEPT #iptables -A INPUT -p udp –dport 138 -j ACCEPT #iptables -A INPUT -p udp –dport 445 -j ACCEPT #iptables -A INPUT -p udp -m udp –dport 137 -j ACCEPT #iptables -A INPUT -p udp -m udp –dport 138 -j ACCEPT #iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 139 -j ACCEPT #iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 445 -j ACCEPT
# VPNインタフェース用ファイアウォール設定 # ※OpenVPNサーバーを公開する場合のみ #[ -f /etc/openvpn/openvpn-startup ] && /etc/openvpn/openvpn-startup
# DHCP関連のアクセスはログを記録せずに破棄 # ※不要ログ記録防止 iptables -A INPUT -p udp -m multiport –dports 67,68 -j DROP
# ステルススキャンに対抗 # すべてのTCPセッションがSYNで始まらないものをログに記録し、拒否する iptables -A INPUT -p tcp ! –syn -m state –state NEW -j LOG –log-prefix “Dropped by Stealth Scan: “ iptables -A INPUT -p tcp ! –syn -m state –state NEW -j DROP
# ICMPの入力について設定 iptables -A INPUT -p icmp -j ACCEPT #——INPUT終了——#
#——OUTPUT開始——# iptables -A OUTPUT -d 127.0.0.0/8 -o eth0 -j DROP iptables -A OUTPUT -d 10.0.0.0/8 -o eth0 -j DROP iptables -A OUTPUT -d 172.16.0.0/12 -o eth0 -j DROP iptables -A OUTPUT -d 192.168.0.0/16 -o eth0 -j DROP
# 既に認証されたパケットを受理 iptables -A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
# LOCALNETからのTCP22番ポート(SSH)へのアクセスを許可 iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT
# LOCALNETへのTCP20,21番ポート(FTP)へのアクセスを許可 iptables -A OUTPUT -p tcp -m multiport –sport 20,21 -j ACCEPT
# HTTPセッションを開始するパケットを受理 iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
# HTTPSセッションを開始するパケットを受理 iptables -A OUTPUT -p tcp –dport 443 -j ACCEPT
# SSLセッションを開始するパケットを受理 iptables -A OUTPUT -p tcp –dport 443 -j ACCEPT
# MySQLセッションを開始するパケットを受理 iptables -A OUTPUT -p tcp –sport 3306 -j ACCEPT
# DNSセッションを開始するパケットを受理 iptables -A OUTPUT -p tcp –dport 53 -j ACCEPT iptables -A OUTPUT -p udp –dport 53 -j ACCEPT
# SMTPセッションを開始するパケットを受理 iptables -A OUTPUT -p tcp –dport 25 -j ACCEPT iptables -A OUTPUT -p tcp –dport 465 -j ACCEPT iptables -A OUTPUT -p tcp –dport 587 -j ACCEPT
# ping iptables -A OUTPUT -p icmp –icmp-type 8 -j ACCEPT iptables -A OUTPUT -p icmp –icmp-type 0 -j ACCEPT
# 8080 iptables -A OUTPUT -p udp –dport 8080 -j ACCEPT iptables -A OUTPUT -p tcp –dport 8080 -j ACCEPT
# プリンターポート透過 iptables -A OUTPUT -p tcp –dport 9100 -j ACCEPT #iptables -A OUTPUT -p udp –dport 9100 -j ACCEPT iptables -A OUTPUT -p tcp –dport 515 -j ACCEPT
#Sambaに必要なポートを許可 #iptables -A OUTPUT -p tcp –dport 139 -j ACCEPT #iptables -A OUTPUT -p udp –dport 137 -j ACCEPT #iptables -A OUTPUT -p udp –dport 138 -j ACCEPT #iptables -A OUTPUT -p udp –dport 445 -j ACCEPT #iptables -A OUTPUT -p udp -m udp –dport 137 -j ACCEPT #iptables -A OUTPUT -p udp -m udp –dport 138 -j ACCEPT #iptables -A OUTPUT -m state –state NEW -m tcp -p tcp –dport 139 -j ACCEPT #iptables -A OUTPUT -m state –state NEW -m tcp -p tcp –dport 445 -j ACCEPT
# NTPを許可 iptables -A OUTPUT -p udp -d 133.243.238.243 –dport 123 –sport 123 -j ACCEPT # ntp-a2.nict.go.jp iptables -A OUTPUT -p udp -d 133.243.238.244 –dport 123 –sport 123 -j ACCEPT # ntp-a3.nict.go.jp iptables -A OUTPUT -p udp -d 133.243.238.163 –dport 123 –sport 123 -j ACCEPT # ntp-b2.nict.go.jp iptables -A OUTPUT -p udp -d 133.243.238.164 –dport 123 –sport 123 -j ACCEPT # ntp-b3.nict.go.jp iptables -A OUTPUT -p udp -d 210.171.226.40 –dport 123 –sport 123 -j ACCEPT
# 外部とのNetBIOS関連のアクセスはログを記録せずに破棄 iptables -A OUTPUT ! -d 192.168.0.0/24 -p tcp -m multiport –sports 135,137,138,139,445 -j DROP iptables -A OUTPUT ! -d 192.168.0.0/24 -p udp -m multiport –sports 135,137,138,139,445 -j DROP
#iptables -A OUTPUT -p tcp -m multiport –dports 135,137,138,139,445 -j ACCEPT #iptables -A OUTPUT -p udp -m multiport –dports 135,137,138,139,445 -j ACCEPT
# DHCP関連のアクセスはログを記録せずに破棄 # ※不要ログ記録防止 iptables -A OUTPUT -p udp -m multiport –sports 67,68 -j DROP
# ICMPの出力について設定 iptables -A OUTPUT -p icmp -j ACCEPT #——OUTPUT終了——#
#——FORWARD開始——# #接続戻りパケットを許可する iptables -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
#Internetから指定ポートへの接続を許可 iptables -A FORWARD -i eth1 -p tcp –dport 20 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –sport 20 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –dport 22 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –sport 22 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –dport 23 -j DROP iptables -A FORWARD -i eth1 -p tcp –sport 23 -j DROP iptables -A FORWARD -i eth1 -p tcp –dport 25 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –sport 25 -j ACCEPT iptables -A FORWARD -i eth1 -p udp –dport 53 -j ACCEPT iptables -A FORWARD -i eth1 -p udp –sport 53 -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp –dport 80 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –sport 80 -j ACCEPT iptables -A FORWARD -s 192.168.0.0/24 -p udp –dport 80 -j ACCEPT
#iptables -A FORWARD -i eth1 -p tcp –dport 8082 -j ACCEPT #iptables -A FORWARD -i eth1 -p tcp –sport 8082 -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp –dport 110 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –sport 110 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –dport 119 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –sport 119 -j ACCEPT iptables -A FORWARD -i eth1 -p udp –dport 123 -j ACCEPT iptables -A FORWARD -i eth1 -p udp –sport 123 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –dport 143 -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp –sport 443 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –dport 443 -j ACCEPT
iptables -A FORWARD -i eth1 -p tcp –sport 587 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –dport 587 -j ACCEPT iptables -A FORWARD -i eth1 -p icmp –icmp-type 8 -j ACCEPT iptables -A FORWARD -i eth1 -p icmp –icmp-type 0 -j ACCEPT #iptables -A FORWARD -i eth1 -p tcp –dport 9100 -j ACCEPT #iptables -A FORWARD -i eth1 -p udp –dport 9100 -j ACCEPT iptables -A FORWARD -i eth1 -p tcp –dport 515 -j ACCEPT iptables -A FORWARD -s 192.168.0.0/16 -j DROP
#メール関係 iptables -A FORWARD -s 192.168.0.0/24 -p tcp -m multiport –dport 465,587,993,995 -j ACCEPT
# 様々なインターネットサービスのために eth1 側からの 1024~65535までを通過させる iptables -A FORWARD -p tcp -i eth1 –dport 1025:65535 -j ACCEPT # 様々なインターネットサービスのために eth1 側への 1024~65535までを通過させる #iptables -A FORWARD -p tcp -o eth1 –dport 1025:65535 -j ACCEPT
#Sambaに必要なポートを許可 #iptables -A FORWARD -p tcp –dport 139 -j ACCEPT #iptables -A FORWARD -p tcp –dport 137 -j ACCEPT #iptables -A FORWARD -p udp –dport 138 -j ACCEPT #iptables -A FORWARD -p udp –dport 445 -j ACCEPT
#NetBIOS関連のパケットは、Internetに出さない iptables -A FORWARD -p tcp -m multiport –sport 135,137,138,139,445 -j DROP iptables -A FORWARD -p udp -m multiport –sport 135,137,138,139,445 -j DROP iptables -A FORWARD -p tcp -m multiport –dport 135,137,138,139,445 -j DROP iptables -A FORWARD -p udp -m multiport –dport 135,137,138,139,445 -j DROP
# SMB #iptables -A FORWARD -p tcp -m multiport –dport 135,137,138,139,445 -j ACCEPT #iptables -A FORWARD -p udp -m multiport –dport 135,137,138,139,445 -j ACCEPT #iptables -A FORWARD -p tcp -m multiport –sport 135,137,138,139,445 -j ACCEPT #iptables -A FORWARD -p udp -m multiport –sport 135,137,138,139,445 -j ACCEPT #iptables -A FORWARD -p tcp –dport 445 -j ACCEPT #iptables -A FORWARD -p udp –dport 445 -j ACCEPT #iptables -A FORWARD -p tcp –sport 445 -j ACCEPT #iptables -A FORWARD -p udp –sport 445 -j ACCEPT
# RFC iptables -A FORWARD -p tcp –dport 111 -j ACCEPT iptables -A FORWARD -p udp –dport 111 -j ACCEPT # iptables -A FORWARD -i eth1 -o eth0 -s 192.168.0.0/24 -j ACCEPT
#——FORWARD終了——#
#——Filter設定終了——#
#——プリンター・ファイル共有設定開始——# # 外部からのファイル共有(NetBIOS)SAMBAを許可 iptables -A INPUT -p udp –dport 137:138 -j ACCEPT iptables -A OUTPUT -p udp –sport 137:138 -j ACCEPT iptables -A INPUT -p tcp -m state –state NEW –dport 139 -j ACCEPT iptables -A INPUT -p tcp -m state –state NEW –dport 445 -j ACCEPT
# ファイル共有(NetBIOS)SAMBAを許可 iptables -A INPUT -p udp -s 192.168.0.0/24 –dport 137:138 -j ACCEPT iptables -A OUTPUT -p udp -d 192.168.0.0/24 –sport 137:138 -j ACCEPT iptables -A INPUT -p tcp -m state –state NEW -s 192.168.0.0/24 –dport 139 -j ACCEPT iptables -A INPUT -p tcp -m state –state NEW -s 192.168.0.0/24 –dport 445 -j ACCEPT
# プリンタ共有 iptables -A INPUT -p tcp -m multiport –dport 515,9100 -j ACCEPT iptables -A FORWARD -p tcp -m multiport –dport 515,9100 -j ACCEPT #——プリンター・ファイル共有設定完了——#
#——NASを許可——# #iptables -A INPUT -s 133.89.79.33 -j ACCEPT #iptables -A OUTPUT -d 133.89.79.33 -j ACCEPT #——NASを許可——#
#——ポート変更——# #iptables -A INPUT -p tcp -m state –state NEW,ESTABLISHED,RELATED -s 192.168.0.0/24 -d 192.168.0.1 –dport 3128 -j ACCEPT #iptables -A OUTPUT -p tcp -s 192.168.0.1 –sport 3128 -d 192.168.0.0/24 -j ACCEPT #iptables -t nat -A PREROUTING -i eth1 -s ! 192.168.0.1 -p tcp –dport 80 -j DNAT –to-destination 192.168.0.1:3128 #iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128 #———————-#
#——NAT設定開始——# iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT iptables -t nat -P OUTPUT ACCEPT iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT –to 133.89.79.62
iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128 iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 443 -j REDIRECT –to-port 3130
#Port8082 iptables -t nat -A PREROUTING -p tcp –dport 8082 -i eth1 -j DNAT –to 192.168.0.1:8082 iptables -t nat -A PREROUTING -p udp –dport 8082 -i eth1 -j DNAT –to 192.168.0.1:8082
#——NAT設定終了——#
#——ログ取得設定——# # 拒否IPアドレスからのアクセスはログを記録せずに破棄 # ※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておくこと # (/root/deny_ipがなければなにもしない) if [ -s /root/deny_ip ]; then for ip in `cat /root/deny_ip` do iptables -I INPUT -s $ip -j DROP done fi
# 上記のルールにマッチしなかったアクセスはログを記録して破棄 iptables -A INPUT -m limit –limit 1/s -j LOG –log-prefix ‘[IPTABLES INPUT] : ‘ iptables -A INPUT -m limit –limit 1/s -j ULOG –ulog-nlgroup 1 –ulog-prefix ‘INPUT’
iptables -A INPUT -j DROP iptables -A FORWARD -m limit –limit 1/s -j LOG –log-prefix ‘[IPTABLES FORWARD] : ‘ iptables -A FORWARD -m limit –limit 1/s -j ULOG –ulog-nlgroup 2 –ulog-prefix ‘FORWARD’ iptables -A FORWARD -j DROP #——ログ取得設定——#
#——起動開始——# # サーバー再起動時にも上記設定が有効となるようにルールを保存 /etc/rc.d/init.d/iptables save
# ファイアウォール起動 /etc/rc.d/init.d/iptables start #——起動完了——#
|