iptables の設定例

提供: セキュリティ
移動: 案内検索
スポンサーリンク

iptables とは、設定例です。

概要

Webサーバーにおける設定

HTTPサーバへのアクセスは無制限

  • HTTP/HTTPSへのアクセスを許可
  • DNS問い合わせを許可
  • syslog転送を許可
  • sshdへのアクセスを許可(接続回数制限あり)
# vim: filetype=iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
#:OUTPUT ACCEPT [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
 
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# Incomming from Internet
-A INPUT -p tcp -m multiport -m state --state NEW --dports http,https -j ACCEPT
 
# Internal Only
# -A OUTPUT -p tcp -m multiport -m state --state NEW --dports mysql -j ACCEPT
 
# source address を指定する場合
#-A INPUT -p tcp -m state -s 192.168.0.0./24 --state NEW --syn --dport ssh -m hashlimit --hashlimit 5/m --hashlimit-name t_sshd --hashlimit-mode srcip --hashlimit-burst 4 --hashlimit-htable-expire 600000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --syn --dport ssh -m hashlimit --hashlimit 5/m --hashlimit-name t_sshd --hashlimit-mode srcip --hashlimit-burst 4 --hashlimit-htable-expire 600000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW ! --syn -j LOG --log-prefix "FW not syn ssh: "
 
# 514 is syslog
-A OUTPUT -p udp -m multiport --dports syslog,domain -j ACCEPT
-A INPUT -p udp -m multiport --sports domain -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 514,domain -j ACCEPT
-A INPUT -p tcp -m multiport --sports domain -j ACCEPT
 
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 
-A OUTPUT -o lo -j ACCEPT
 
-A INPUT -m state --state INVALID -j LOG --log-level 4 --log-prefix "FW drop invalid packet: " --log-ip-options --log-tcp-options
-A INPUT -m state --state INVALID -j DROP
 
COMMIT

HTTPサーバへのアクセスも制限あり

# vim: filetype=iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
#:OUTPUT ACCEPT [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
 
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# Incomming from Internet
#-A INPUT -p tcp -m multiport -m state --state NEW --dports http,https -j ACCEPT
-A INPUT -p tcp -m multiport -m state --state NEW --dports http,https -m hashlimit --hashlimit-name t_http --hashlimit-mode srcip --hashlimit 120/m --hashlimit-burst 700 --hashlimit-htable-expire 120000 -j ACCEPT
 
# Internal Only
# -A INPUT -p tcp -m multiport -m state --state NEW --dports mysql -j ACCEPT
 
# source address を指定する場合
#-A INPUT -p tcp -m state -s 192.168.0.0./24 --state NEW --syn --dport ssh -m hashlimit --hashlimit 5/m --hashlimit-name t_sshd --hashlimit-mode srcip --hashlimit-burst 4 --hashlimit-htable-expire 600000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --syn --dport ssh -m hashlimit --hashlimit 5/m --hashlimit-name t_sshd --hashlimit-mode srcip --hashlimit-burst 10 --hashlimit-htable-expire 600000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW ! --syn -j LOG --log-prefix "FW not syn ssh: "
#-A INPUT -p tcp -m state --state NEW ! --syn -j DROP
 
# 514 is syslog
-A OUTPUT -p udp -m multiport --dports syslog,domain -j ACCEPT
-A INPUT -p udp -m multiport --sports domain -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 514,domain -j ACCEPT
-A INPUT -p tcp -m multiport --sports domain -j ACCEPT
 
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 
-A OUTPUT -o lo -j ACCEPT
 
-A INPUT -m state --state INVALID -j LOG --log-level 4 --log-prefix "FW drop invalid packet: " --log-ip-options --log-tcp-options
-A INPUT -m state --state INVALID -j DROP
 
COMMIT

HTTPサーバへのアクセス mysqlを利用する

  • httpd, sshd へのアクセスを許可します
  • 他のサーバの MySQL に接続します
# vim: filetype=iptables
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
#:OUTPUT ACCEPT [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
 
-A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# Incomming from Internet
#-A INPUT -p tcp -m multiport -m state --state NEW --dports http,https -j ACCEPT
-A INPUT -p tcp -m multiport -m state --state NEW --dports http,https -m hashlimit --hashlimit-name t_http --hashlimit-mode srcip --hashlimit 120/m --hashlimit-burst 700 --hashlimit-htable-expire 120000 -j ACCEPT
 
# Internal Only
-A OUTPUT -p tcp -m multiport -m state --state NEW --dports mysql -j ACCEPT
 
# source address を指定する場合
#-A INPUT -p tcp -m state -s 192.168.0.0./24 --state NEW --syn --dport ssh -m hashlimit --hashlimit 5/m --hashlimit-name t_sshd --hashlimit-mode srcip --hashlimit-burst 4 --hashlimit-htable-expire 600000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW --syn --dport ssh -m hashlimit --hashlimit 5/m --hashlimit-name t_sshd --hashlimit-mode srcip --hashlimit-burst 10 --hashlimit-htable-expire 600000 -j ACCEPT
-A INPUT -p tcp -m state --state NEW ! --syn -j LOG --log-prefix "FW not syn ssh: "
#-A INPUT -p tcp -m state --state NEW ! --syn -j DROP
 
# 514 is syslog
-A OUTPUT -p udp -m multiport --dports syslog,domain -j ACCEPT
-A INPUT -p udp -m multiport --sports domain -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 514,domain -j ACCEPT
-A INPUT -p tcp -m multiport --sports domain -j ACCEPT
 
-A INPUT -p icmp --icmp-type echo-request -j ACCEPT
 
-A OUTPUT -o lo -j ACCEPT
 
-A INPUT -m state --state INVALID -j LOG --log-level 4 --log-prefix "FW drop invalid packet: " --log-ip-options --log-tcp-options
-A INPUT -m state --state INVALID -j DROP
 
COMMIT


プロキシサーバの例

  • http/https のアクセスを許可します

MySQLサーバの例

MySQLサーバのみを提供する場合

MySQLサーバとレプリケーションあり

関連項目




スポンサーリンク