======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/の下にできる。