「iptables の設定例」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「iptables とは、設定例です。 __TOC__ == 概要 == == Webサーバーにおける設定 == === HTTPサーバへのアクセスは無制限 === <syntaxhigh...」)
 
 
(同じ利用者による、間の1版が非表示)
行7: 行7:
 
== Webサーバーにおける設定 ==
 
== Webサーバーにおける設定 ==
 
=== HTTPサーバへのアクセスは無制限 ===
 
=== HTTPサーバへのアクセスは無制限 ===
 +
* [[HTTP]]/[[HTTPS]]へのアクセスを許可
 +
* [[DNS]]問い合わせを許可
 +
* [[syslog]]転送を許可
 +
* [[sshd]]へのアクセスを許可(接続回数制限あり)
 +
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
 
# vim: filetype=iptables
 
# vim: filetype=iptables
行23: 行28:
  
 
# Internal Only
 
# Internal Only
# -A INPUT -p tcp -m multiport -m state --state NEW --dports mysql -j ACCEPT
+
# -A OUTPUT -p tcp -m multiport -m state --state NEW --dports mysql -j ACCEPT
  
 
# source address を指定する場合
 
# source address を指定する場合
行45: 行50:
 
COMMIT
 
COMMIT
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 
=== HTTPサーバへのアクセスも制限あり ===
 
=== HTTPサーバへのアクセスも制限あり ===
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
行129: 行135:
 
COMMIT
 
COMMIT
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
 +
== プロキシサーバの例 ==
 +
* http/https のアクセスを許可します
 +
== MySQLサーバの例 ==
 +
=== MySQLサーバのみを提供する場合 ===
 +
=== MySQLサーバとレプリケーションあり ===
  
 
== 関連項目 ==
 
== 関連項目 ==

2014年6月17日 (火) 00:58時点における最新版

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サーバとレプリケーションあり

関連項目