Last active
December 14, 2015 17:29
-
-
Save rakusai/5122261 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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