Skip to content

Instantly share code, notes, and snippets.

@rakusai
Last active December 14, 2015 17:29
Show Gist options
  • Save rakusai/5122261 to your computer and use it in GitHub Desktop.
Save rakusai/5122261 to your computer and use it in GitHub Desktop.
#!/bin/bash
##
# BlueNote Firewall Configuration
##
# ポリシーの決定
/sbin/iptables -P INPUT DROP # 受信はすべて破棄 すべての穴をふさいでから必要なポートを空ける
/sbin/iptables -P OUTPUT ACCEPT #送信はすべて許可
/sbin/iptables -P FORWARD DROP # 通過はすべて破棄
# 個別ルールを全削除
/sbin/iptables -F
/sbin/iptables -F INPUT
/sbin/iptables -F OUTPUT
/sbin/iptables -F FORWARD
/sbin/iptables -F -t mangle
# ユーザー定義チェインを削除
/sbin/iptables -X
# 自ホストからのアクセスをすべて許可
/sbin/iptables -A INPUT -i lo -j ACCEPT
# ローカルネットワークからのアクセスをすべて許可
/sbin/iptables -A INPUT -i eth1 -j ACCEPT
# IP SPOOFING対策
/sbin/iptables -N IP_SPOOFING
/sbin/iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j IP_SPOOFING
/sbin/iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j IP_SPOOFING
/sbin/iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j IP_SPOOFING
/sbin/iptables -A INPUT -i eth0 -s 192.168.0.0/16 -j IP_SPOOFING
/sbin/iptables -A IP_SPOOFING -j LOG --log-prefix "IPTABLES [*IP_SPOOFING*]:"
/sbin/iptables -A IP_SPOOFING -j DROP
# セッション確立後のパケット疎通は許可
/sbin/iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#/sbin/iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
# ping of death対策
/sbin/iptables -N PING_OF_DEATH
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -j PING_OF_DEATH
/sbin/iptables -A PING_OF_DEATH -m limit --limit 2/s --limit-burst 4 -j RETURN
/sbin/iptables -A PING_OF_DEATH -j LOG --log-prefix "IPTABLES [*PING-DEATH*]:"
/sbin/iptables -A PING_OF_DEATH -j DROP
# SYN-FLOODING対策
/sbin/iptables -N SYN_FLOOD
/sbin/iptables -A INPUT -i eth0 -p tcp --syn -j SYN_FLOOD
/sbin/iptables -A SYN_FLOOD -m limit --limit 200/s --limit-burst 4 -j RETURN
/sbin/iptables -A SYN_FLOOD -j LOG --log-prefix "IPTABLES [*SYN-FLOOD*]:"
/sbin/iptables -A SYN_FLOOD -j DROP
# ポートスキャナーからの対策
/sbin/iptables -N PORT_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j PORT_SCAN
/sbin/iptables -A PORT_SCAN -m limit --limit 1/s --limit-burst 4 -j RETURN
/sbin/iptables -A PORT_SCAN -j LOG --log-prefix "IPTABLES [*PORT-SCAN*]:"
/sbin/iptables -A PORT_SCAN -j DROP
# Stealth Scan対策
/sbin/iptables -N STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL ACK,RST,SYN,FIN -j STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,FIN SYN,FIN -j STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,RST SYN,RST -j STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags SYN,ACK SYN,ACK -m state --state NEW -j STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL NONE -j STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags FIN,RST FIN,RST -j STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ACK,FIN FIN -j STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ACK,PSH PSH -j STEALTH_SCAN
/sbin/iptables -A INPUT -i eth0 -p tcp --tcp-flags ACK,URG URG -j STEALTH_SCAN
/sbin/iptables -A STEALTH_SCAN -j LOG --log-prefix "IPTABLES [*STEALTH_SCAN*]: "
/sbin/iptables -A STEALTH_SCAN -j DROP
# フラグメント化されたパケットはログを記録して破棄
/sbin/iptables -A INPUT -f -j LOG --log-prefix 'IPTABLES [*FRAGMENT*] : '
/sbin/iptables -A INPUT -f -j DROP
# SSH BRUTE-FORCE対策
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH --rsource
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -m recent --update --seconds 40 --hitcount 5 --name SSH --rsource -j DROP
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT #SSH
/sbin/iptables -A INPUT -i eth0 -p tcp --sport 22 -j ACCEPT #SSH
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 174.142.252.164/16 -j ACCEPT #PING from iWeb
/sbin/iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request -s 202.212.177.193/32 -j ACCEPT #PING from Nakatsugawa
#/sbin/iptables -A INPUT -i eth0 -p tcp --dport 25 -j ACCEPT #MAIL
#/sbin/iptables -A INPUT -i eth0 -p tcp --sport 25 -j ACCEPT #MAIL
/sbin/iptables -A INPUT -p UDP -s 0/0 --source-port 53 -j ACCEPT #DNS
/sbin/iptables -A INPUT -i eth0 -p udp --dport 161 -j ACCEPT #SNMP
/sbin/iptables -A INPUT -i eth0 -p udp --sport 161 -j ACCEPT #SNMP
/sbin/iptables -A INPUT -i eth0 -p udp --dport 162 -j ACCEPT #SNMP
/sbin/iptables -A INPUT -i eth0 -p udp --sport 162 -j ACCEPT #SNMP
/sbin/iptables -A INPUT -i eth0 -p udp --dport 123 -j ACCEPT #NTP
/sbin/iptables -A INPUT -i eth0 -p udp --sport 123 -j ACCEPT #NTP
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT #WEB
/sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT #WEB
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 81 -j ACCEPT #WEB
/sbin/iptables -A INPUT -i eth0 -p tcp --sport 81 -j ACCEPT #WEB
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT #WEB (SSL)
/sbin/iptables -A INPUT -i eth0 -p tcp --sport 443 -j ACCEPT #WEB (SSL)
/sbin/iptables -A INPUT -m state --state INVALID -j DROP
# 上記のルールにも当てはまらなかったものはロギングして破棄
/sbin/iptables -A INPUT -i eth0 -j LOG --log-prefix "drop: "
/sbin/iptables -A INPUT -i eth0 -j DROP
# put any specific blocks here
# ファイアウォール再起動
/etc/init.d/iptables save
/etc/init.d/iptables restart
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment