プログラムから開く
再インストール際など他のプログラムから開くなどで上手くソフトがしない場合、前のデータが残ってるので削除する。
「ファイル名を指定して実行」→「regedit」と入力してOKを押す。
HKEY_CURRENT_USER\Softeare\Classes\Applicationsと開く
そこにあるもの右クリックで「削除」する。
再インストール際など他のプログラムから開くなどで上手くソフトがしない場合、前のデータが残ってるので削除する。
「ファイル名を指定して実行」→「regedit」と入力してOKを押す。
HKEY_CURRENT_USER\Softeare\Classes\Applicationsと開く
そこにあるもの右クリックで「削除」する。
nmapで空きポートを確認
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2010-09-09 13:18 JST
Interesting ports on example.com (127.0.0.1):
Not shown: 1670 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
80/tcp open http
110/tcp open pop3
143/tcp open imap
443/tcp open https
993/tcp open imaps
995/tcp open pop3s
3306/tcp open mysql
isofでプロセスを表示
ポート80を確認してみる
killで該当プロセス「214」をとめる
nmapで確認
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2010-09-09 13:18 JST
Interesting ports on example.com (127.0.0.1):
Not shown: 1670 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
110/tcp open pop3
143/tcp open imap
443/tcp open https
993/tcp open imaps
995/tcp open pop3s
3306/tcp open mysql
ポート80が表示されなければOK
しかし自動起動の設定をしているとrebootなので再起動したときにきどうしてまう・・・
chkconfigをoffする
そして停止する
《参考サイト》
Linuxのカーネルアップデートのメリット、デメリット
デフォルトだとiptablesのログがmessagesに記録される。
かなりの量になり見辛いので独立させたい!!
/etc/syslog.confを設定
以下と追記 iptables.logへ保存する
/var/log/にiptables.logを作成してパーミッションを600に
syslogを再起動
《参考サイト》
iptablesのログlogLOG
iptablesのロギング
/etc/sysctl.confの設定
# vi /etc/sysctl.conf
# Controls IP packet forwarding net.ipv4.ip_forward = 1 # SYN Cookiesを有効にする # ※TCP SYN Flood攻撃対策 net.ipv4.tcp_syncookies=1 # ブロードキャストアドレス宛pingには応答しない # ※Smurf攻撃対策 net.ipv4.icmp_echo_ignore_broadcasts = 1 # IPアドレスのなしすまし対策 net.ipv4.conf.default.rp_filter = 1 #偽のエラーレスポンス無視 net.ipv4.icmp_ignore_bogus_error_responses = 1
シェルスクリプトにてiptablesを設定
# vi /root/iptables.sh
iptables.sh
#!/bin/bash
# ファイアウォール停止(すべてのルールをクリア)
/etc/init.d/iptables stop
# インタフェース名定義
LAN=eth0
# 内部ネットワークのネットマスク取得
LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d`
# 内部ネットワークアドレス取得
LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '`
LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK
# デフォルトルール(以降のルールにマッチしなかった場合に適用するルール)設定
iptables -P INPUT DROP # 受信はすべて破棄
iptables -P OUTPUT ACCEPT # 送信はすべて許可
iptables -P FORWARD DROP # 通過はすべて破棄
# 自ホストからのアクセスをすべて許可
iptables -A INPUT -i lo -j ACCEPT
# 内部から行ったアクセスに対する外部からの返答アクセスを許可
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 内部からのアクセスをすべて許可
iptables -A INPUT -s $LOCALNET -j ACCEPT
# ICMP Redirectパケットは拒否
sed -i '/net.ipv4.conf.*.accept_redirects/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_redirects=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_redirects=0" >> /etc/sysctl.conf
done
# Source Routedパケットは拒否
sed -i '/net.ipv4.conf.*.accept_source_route/d' /etc/sysctl.conf
for dev in `ls /proc/sys/net/ipv4/conf/`
do
sysctl -w net.ipv4.conf.$dev.accept_source_route=0 > /dev/null
echo "net.ipv4.conf.$dev.accept_source_route=0" >> /etc/sysctl.conf
done
# フラグメント化されたパケットはログを記録して破棄
iptables -A INPUT -f -j LOG --log-prefix '[IPTABLES FRAGMENT] : '
iptables -A INPUT -f -j DROP
# 1秒間に4回を超えるpingはログを記録して破棄
# ※Ping of Death攻撃対策
iptables -N LOG_PINGDEATH
iptables -A LOG_PINGDEATH -m limit --limit 1/s --limit-burst 4 -j ACCEPT
iptables -A LOG_PINGDEATH -j LOG --log-prefix '[IPTABLES PINGDEATH] : '
iptables -A LOG_PINGDEATH -j DROP
iptables -A INPUT -p icmp --icmp-type echo-request -j LOG_PINGDEATH
# 113番ポート(IDENT)へのアクセスには拒否応答
# ※メールサーバ等のレスポンス低下防止
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
# ACCEPT_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを許可するユーザ定義チェイン作成
ACCEPT_COUNTRY_MAKE(){
for addr in `cat cidr.txt|grep ^$1|awk '{print $2}'`
do
iptables -A ACCEPT_COUNTRY -s $addr -j ACCEPT
done
}
# DROP_COUNTRY_MAKE関数定義
# 指定された国のIPアドレスからのアクセスを破棄するユーザ定義チェイン作成
DROP_COUNTRY_MAKE(){
for addr in `cat cidr.txt|grep ^$1|awk '{print $2}'`
do
iptables -A DROP_COUNTRY -s $addr -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES DENY_COUNTRY] : '
iptables -A DROP_COUNTRY -s $addr -j DROP
done
}
# iptables設定スクリプト外部関数取り込み
. /root/iptables_functions
# IPアドレスリスト取得
IPLISTGET
# 日本からのアクセスを許可するユーザ定義チェインACCEPT_COUNTRY作成
iptables -N ACCEPT_COUNTRY
ACCEPT_COUNTRY_MAKE JP
# 以降,日本からのみアクセスを許可したい場合はACCEPTのかわりにACCEPT_COUNTRYを指定する
# 中国・韓国・台湾からのアクセスを破棄するユーザ定義チェインDROP_COUNTRY作成
iptables -N DROP_COUNTRY
DROP_COUNTRY_MAKE CN
DROP_COUNTRY_MAKE KR
DROP_COUNTRY_MAKE TW
# 以降,中国・韓国・台湾からのアクセスを破棄したい場合はDROPのかわりにDROP_COUNTRYを指定する
# 中国・韓国・台湾※からのアクセスをログを記録して破棄
# ※全国警察施設への攻撃元上位3カ国(日本・アメリカを除く)
# http://www.cyberpolice.go.jp/detect/observation.htmlより
iptables -A INPUT -j DROP_COUNTRY
# IPアドレスリスト削除
rm -f cidr.txt
#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここから) #
#----------------------------------------------------------#
# 外部からのTCP22番ポート(SSH)へのアクセスを日本からのみ許可
# ※SSHサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY
# 外部からのTCP80番ポート(HTTP)へのアクセスを許可
# ※Webサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# 外部からのTCP25番ポート(SMTP)へのアクセスを許可
# ※SMTPサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# 外部からのTCP465番ポート(SMTPS)へのアクセスを日本からのみ許可
# ※SMTPSサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 465 -j ACCEPT_COUNTRY
# 外部からのTCP110番ポート(POP3)へのアクセスを日本からのみ許可
# ※POP3サーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 110 -j ACCEPT_COUNTRY
# 外部からのTCP995番ポート(POP3S)へのアクセスを日本からのみ許可
# ※POP3Sサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 995 -j ACCEPT_COUNTRY
# 外部からのTCP143番ポート(IMAP)へのアクセスを日本からのみ許可
# ※IMAPサーバーを公開する場合のみ
iptables -A INPUT -p tcp --dport 143 -j ACCEPT_COUNTRY
#----------------------------------------------------------#
# 各種サービスを公開する場合の設定(ここまで) #
#----------------------------------------------------------#
# 拒否IPアドレスからのアクセスはログを記録せずに破棄
# ※拒否IPアドレスは/root/deny_ipに1行ごとに記述しておくこと
# (/root/deny_ipがなければなにもしない)
if [ -s /root/deny_ip ]; then
iptables -N DENY_HOST
for ip in `cat /root/deny_ip`
do
iptables -A DENY_HOST -s $ip -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES DENY_HOST] : '
iptables -A DENY_HOST -s $ip -j DROP
iptables -I INPUT -j DENY_HOST
done
fi
# 上記のルールにマッチしなかったアクセスはログを記録して破棄
iptables -A INPUT -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES INPUT] : '
iptables -A INPUT -j DROP
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-prefix '[IPTABLES FORWARD] : '
iptables -A FORWARD -j DROP
# サーバー再起動時にも上記設定が有効となるようにルールを保存
/etc/rc.d/init.d/iptables save
# ファイアウォール再起動
/etc/rc.d/init.d/iptables restart
ファイアウォール設定スクリプトへ実行権限付加
# chmod 700 /root/iptables.sh
ファイアウォール設定スクリプト外部関数作成
http://nami.jp/ipv4bycc/ から、「世界の国別 IPv4 アドレス割り当てリスト」をダウンロードしてその中の「中国[CN]・韓国[KR]・台湾[TW]」に該当するIPアドレスからの接続を拒否するように設定
# vi /root/iptables_functions
# IPアドレスリスト取得関数定義
IPLISTGET(){
# http://nami.jp/ipv4bycc/から最新版IPアドレスリストを取得する
wget -q http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip cidr.txt.gz
# 最新版IPアドレスリストが取得できなかった場合
if [ ! -f cidr.txt ]; then
if [ -f /tmp/cidr.txt ]; then
# バックアップがある場合はその旨をroot宛にメール通知して処理を打ち切る
echo cidr.txt was read from the backup! | mail -s $0 root
exit 1
else
# バックアップがない場合はその旨をroot宛にメール通知して処理を打ち切る
echo cidr.txt not found!|mail -s $0 root
exit 1
fi
fi
# 最新版IPアドレスリストを /tmpへバックアップする
/bin/cp cidr.txt /tmp/cidr.txt
}
IPアドレス情報は頻繁に更新されるので、自動的に最新のIPアドレス情報で特定国からのアクセス拒否ルールを更新するようにする
/etc/cron.dailyで毎日スクリプトを実行
# vi /etc/cron.daily/iplist_check.sh
iplist_check.shの設定内容
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# 新旧IPLIST差分チェック件数(0を指定するとチェックしない)
# ※新旧IPLIST差分がSABUN_CHKで指定した件数を越える場合はiptables設定スクリプトを実行しない
# ※新旧IPLIST差分チェック理由は
SABUN_CHK=100
[ $# -ne 0 ] && SABUN_CHK=${1}
# チェック国コード
COUNTRY_CODE='JP CN KR TW'
# iptables設定スクリプトパス
IPTABLES=/root/iptables.sh
# iptables設定スクリプト外部関数取り込み
. /root/iptables_functions
# IPアドレスリスト最新化
IPLISTGET
for country in $COUNTRY_CODE
do
if [ -f cidr.txt ]; then
grep ^$country cidr.txt >> IPLIST.new
else
grep ^$country /tmp/IPLIST >> IPLIST.new
fi
done
rm -f cidr.txt
# IPアドレスリスト更新チェック
diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1
if [ $? -ne 0 ]; then
/bin/mv IPLIST.new /tmp/IPLIST
$IPTABLES > /dev/null
else
rm -f IPLIST.new
fi
IPアドレス情報チェックスクリプトに実行権限付加
chmod 700 /etc/cron.daily/iplist_check.sh
《参考サイト》
Iptableの設定
ファイアウォール構築(iptables)
CentOS 5.1 iptablesでファイアーウォール
【SPF】
| Authentication Results | 認証 | 認証結果 | 意味 |
| spf=pass | ○ | ○ | 正しく認証された |
| spf=neutral | ○ | △ | 詐称されているかどうか判断出来ない |
| spf=softfail | ○ | △ | 詐称の可能性がある |
| spf=fail | ○ | × | 詐称されている |
| spf=temperror | × | なし | 認証処理エラーのため認証出来ず |
| spf=permerror | × | なし | 認証登録情報に誤りがある |