iptables

iptables用ログファイルの作成

まず、iptablesのログを格納するフォルダとファイルを作成

$ sudo mkdir /var/log/iptables
$ sudo chmod 600 /var/log/iptables
$ sudo touch /var/log/iptables/iptables.log

syslogがこのフォルダに掃き出すように設定

$ sudo vi /etc/syslog.conf
 
kern.warning          /var/log/iptables/iptables.log  #追加

syslogの再起動

$ sudo /etc/init.d/syslog restart

ローテションに追加。

$ sudo vi /etc/logrotate.d/syslog
 
 
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron 
/var/log/iptables/iptables.log{
    rotate 12
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
        /bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

iptablesスクリプトファイル作成

とりあえずここで開けてるのはsshのポートだけ

CentOS5

iptable.sh

#!/bin/bash                                                                                                                       
 
#iptables                                                                                                                         
IPT=/sbin/iptables
 
# インタフェース定義                                                                                                            
GLOBAL_DEV=eth0
LOCAL_DEV=eth0:0
 
#
LOCAL_ADDR=192.168.1.0/24
 
/etc/init.d/iptables stop
 
#初期化                                                                                                                           
$IPT -F
$IPT -X
$IPT -P INPUT   DROP
$IPT -P OUTPUT  ACCEPT
$IPT -P FORWARD DROP
 
# 自ホストからのアクセスをすべて許可                                                                                              
$IPT -A INPUT -i lo -j ACCEPT
 
# 内部からのアクセスをすべて許可                                                                                                  
$IPT -A INPUT -s $LOCAL_ADDR -j ACCEPT                                                                                           
 
# 内部アクセスからの応答を許可
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 
# フラグメント化されたパケットはログを記録して破棄                                                                                
$IPT -A INPUT -f -j LOG --log-level warning --log-prefix '[FRAGMENT] : '
$IPT -A INPUT -f -j DROP                                       
 
# 1分間に10回を超えるpingはログを記録して破棄                                                                                     
$IPT -N PINGOFDEATH
$IPT -A LOG_PINGDEATH -m limit --limit 1/m --limit-burst 10 -j ACCEPT
$IPT -A PINGOFDEATH -j LOG --log-level warning --log-prefix '[PING OF DEATH] : '
$IPT -A PINGOFDEATH -j DROP
$IPT -A INPUT -p icmp --icmp-type echo-request -j LOG_PINGOFDEATH
 
# 外部からのTCP1122番ポート(SSH)へのアクセス(ポートを1122に変更しています)
# 送信元アドレスごとに最大一分間に1アクセスまで。送信元アドレスの情報を一時間保存
# 破棄したものはログに記録
$IPT -N SSHD
$IPT -A SSHD -m hashlimit --hashlimit-name sshd_hosts --hashlimit 1/minute --hashlimit-burst 1 --hashlimit-mode srcip --hashlimit-htable-expire 120000 -j ACCEPT
$IPT -A SSHD -j LOG --log-level warning --log-prefix '[ SSH ] : '
$IPT -A SSHD -j DROP
$IPT -A INPUT -p tcp -m state --syn --state NEW --dport 1122 -j SSHD
 
$IPT -A INPUT -j DROP
$IPT -A FORWARD -j DROP
 
/etc/init.d/iptables save
/etc/init.d/iptables start

hashlimitのipは/proc/net/ipt_hashlimit/の下にできる。

server/iptables.txt · 最終更新: 2012/03/06 14:16 by eiji