#navi(FrontPage): Not a child page like: FrontPage/RPM関連情報取得

サーバ管理

RPM関連情報取得

環境準備

サーバ管理関連の関数として継続利用する為、以下のディレクトリを構成で関数を管理する。

/root/tools/srv-infoベースディレクトリ
格納先用途
func関数格納場所
log最終加工ファイルを格納
etc設定ファイルを格納
tmp一時ファイルを格納

rpm-command-info

LO_SRV_NAME="`uname -n`"
LO_SRV_LOG="/root/tools/srv-info/log/${LO_SRV_NAME}-rpm-comm-var-`date '+%Y%m%d%H%M%S'`.csv"
# ------------------------------------------------------------------------------
#   情報収集
# ------------------------------------------------------------------------------
rpm -qa --qf '%{name},%{version},%{release},%{arch}\n' > ${LO_SRV_LOG}
}
            :
abrt,2.0.8,21.el6.centos,x86_64
xorg-x11-server-Xorg,1.13.0,23.el6.centos,x86_64
m17n-db-bengali,1.5.5,1.1.el6,noarch

rpminstchk

function rpmserch ()
{
TMPFILE=/root/tools/srv-info/tmp/rpmserch.tmp
if [ $# -eq 0 ]; then
   echo "使用法: rpmserch [検索キーワード]"
   echo ""
else
   rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n' | sort | grep ${1} > ${TMPFILE} 2>&1
   BIT32=`cat ${TMPFILE} | grep 'i[36]86' | sort`
   BIT64=`cat ${TMPFILE} | grep 'x86_64' | sort`
more << EOF
--------------------------------------------------
 RPM Serch
   Key Word : ${1}
   Hit Word : `cat ${TMPFILE} | wc -l`
--------------------------------------------------
32 bit
-------
${BIT32:-none}
64 bit
-------
${BIT64:-none}
--------------------------------------------------
EOF
   rm -rf ${TMPFILE}
fi
}

rpmuninstchk

function rpmuninstchk () {
if [ ! $# -eq 0 ]; then
   CMD=`echo ${1} | sed 's/\.\///g' | awk -F. '{print $1}'`
   echo "--- Erase Package ---"
   echo ""
   echo ${1}
   echo ""
   echo "--- RPM Before Erase Check ---"
   echo ""
   rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" | grep ${CMD}
   echo ""
   echo "--- RPM Erase CHECK ---"
   echo ""
   rpm -ev --test ${1}
fi
}

バックアップ

環境準備

backup.sh

LO_BACKUP_SRV="192.168.0.67"
LO_BACKUP_LOG="/root/tools/backup/log/rsync-`date '+%Y%m%d%H%M%S'`.log"
LO_BACKUP_DIR="/backup/`uname -n`"
# ------------------------------------------------------------------------------
#   /root ディレクトリバックアップ
# ------------------------------------------------------------------------------
rsync -avz --delete -e ssh /root/tools      ${LO_BACKUP_SRV}:${LO_BACKUP_DIR}/root >> ${LO_BACKUP_LOG} 2>&1
# ------------------------------------------------------------------------------
#   /etc ディレクトリバックアップ
# ------------------------------------------------------------------------------
rsync -avz --delete -e ssh /etc/            ${LO_BACKUP_SRV}:${LO_BACKUP_DIR}/etc/ >> ${LO_BACKUP_LOG} 2>&1
#rsync -avz --delete -e ssh /etc/httpd      ${LO_BACKUP_SRV}:${LO_BACKUP_DIR}/etc/ >> ${LO_BACKUP_LOG} 2>&1
#rsync -avz --delete -e ssh /etc/zabbix     ${LO_BACKUP_SRV}:${LO_BACKUP_DIR}/etc/ >> ${LO_BACKUP_LOG} 2>&1
#rsync -avz --delete -e ssh /etc/my.cnf.d   ${LO_BACKUP_SRV}:${LO_BACKUP_DIR}/etc/ >> ${LO_BACKUP_LOG} 2>&1

IPTABLES設定スクリプト

環境準備

iptables.sh

# ------------------------------------------------------------------------------
#   全てのルールを初期化(全削除)する場合
# ------------------------------------------------------------------------------
# -F 何も指定されてない場合すべてのフィルタルールを削除する。
# -X 何も指定されてない場合デフォルト以外のすべてのチェインを削除する。
# ------------------------------------------------------------------------------
iptables -F
iptables -X
# ------------------------------------------------------------------------------
#   基本ポリシー設定
# ------------------------------------------------------------------------------
# チェイン
# INPUT       入ってくるパケットに関して
# OUTPUT      出てゆくパケットに関して
# FORWARD     パケットの転送
# PREROUTING  受信時にアドレスを変換
# POSTROUTING 送信時にアドレスを変換
# ------------------------------------------------------------------------------
iptables -P INPUT   DROP
iptables -P FORWARD DROP
iptables -P OUTPUT  ACCEPT
# ------------------------------------------------------------------------------
#   個別ポリシー設定(ほかACCEPTやDROPなどユーザによる設定)
# ------------------------------------------------------------------------------
# こちらから求めたパケットは許可する。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ローカルループバックの接続を許可する。
iptables -A INPUT -i lo -j ACCEPT
# ------------------------------------------------------------------------------
#   個別サーバ登録
# ------------------------------------------------------------------------------
case $(hostname -s) in
   wp01 )
      iptables -A INPUT -i eth0 -m multiport -p tcp --dports 25,80,443 -j ACCEPT
      ;;
   samba01 )
      iptables -A INPUT -i eth0 -m multiport -p tcp --dports 80,139,445 -j ACCEPT
      iptables -A INPUT -i eth1 -m multiport -p tcp --dports 80,139,445 -j ACCEPT
      iptables -A INPUT -i eth0 -m multiport -p udp --dports 137,138 -j ACCEPT
      iptables -A INPUT -i eth1 -m multiport -p udp --dports 137,138 -j ACCEPT
      ;;
   repo01 )
      iptables -A INPUT -i eth0 -m multiport -p tcp --dports 80 -j ACCEPT
      ;;
   dns01 )
      iptables -A INPUT -i eth0 -m multiport -p tcp --dports 53 -j ACCEPT
      iptables -A INPUT -i eth1 -m multiport -p tcp --dports 53 -j ACCEPT
      ;;
esac
iptables -A INPUT -i eth0 -s 192.168.0.25 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.2.25 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m multiport -p tcp --dports 10050,10051,10055,10061 -j ACCEPT
iptables -A INPUT -m multiport -p udp --dports 10050,10051,10055,10061 -j ACCEPT
### ------------------------------------------------------------------------------
###   特定の国からの接続を許可
### ------------------------------------------------------------------------------
###
###L_DW_PATH=http://nami.jp/ipv4bycc/cidr.txt.gz
###L_DW_FILE=/tmp/cidr.txt.gz
###L_DW_LOG=/tmp/download.log
###L_IP_LIST=/tmp/ip.lst
###
###wget -O ${L_DW_FILE} -o ${L_DW_LOG} ${L_DW_PATH} && zcat ${L_DW_FILE} > ${L_IP_LIST} && rm -f ${L_DW_FILE}
###
### 特定の国からのアクセスを許可する
###if [ -s ${L_IP_LIST} ]; then
###     iptables -N ACCEPT_JP_FILTER
###     sed -n 's/^JP\t//p' ${L_IP_LIST} | while read address;
###      do
###        iptables -A ACCEPT_JP_FILTER -s ${address} -m state --state NEW -m multiport -p tcp --dports 8887,443 -j ACCEPT
###     done
###fi
### ------------------------------------------------------------------------------
# ------------------------------------------------------------------------------
#   IP Spoofing攻撃対策
# ------------------------------------------------------------------------------
# 外部(WAN側)からプライベートIPアドレスに成りすました通信を破棄します。
iptables -N IP_SPOOFING
iptables -A IP_SPOOFING -i eth0 -s 127.0.0.1/8    -j DROP
iptables -A IP_SPOOFING -i eth0 -s 10.0.0.0/8     -j DROP
iptables -A IP_SPOOFING -i eth0 -s 172.16.0.0/12  -j DROP
iptables -A IP_SPOOFING -i eth0 -s 192.168.0.0/16 -j DROP
iptables -A IP_SPOOFING -i eth0 -s 192.168.0.0/24 -j DROP
iptables -A IP_SPOOFING -i eth1 -s 127.0.0.1/8    -j DROP
iptables -A IP_SPOOFING -i eth1 -s 10.0.0.0/8     -j DROP
iptables -A IP_SPOOFING -i eth1 -s 172.16.0.0/12  -j DROP
iptables -A IP_SPOOFING -i eth1 -s 192.168.0.0/16 -j DROP
iptables -A IP_SPOOFING -i eth1 -s 192.168.0.0/24 -j DROP
# ------------------------------------------------------------------------------
#   Ping攻撃対策
# ------------------------------------------------------------------------------
iptables -N PING_ATTACK
iptables -A PING_ATTACK -m length --length :85 -j ACCEPT
iptables -A PING_ATTACK -j LOG --log-prefix "[IPTABLES PINGATTACK] : " --log-level=debug
iptables -A PING_ATTACK -j DROP
iptables -A INPUT -p icmp --icmp-type 8 -j PING_ATTACK
# ------------------------------------------------------------------------------
#   Ping攻撃対策 + Ping Flood攻撃対策
# ------------------------------------------------------------------------------
iptables -A PING_ATTACK -p icmp --icmp-type 8 -m length --length :85 -m limit --limit 1/s --limit-burst 4 -j ACCEPT
# ------------------------------------------------------------------------------
#   サーバー攻撃への対処
#   syn信号とPING攻撃の無効化(1秒に1回だけ受信)
# ------------------------------------------------------------------------------
iptables -A INPUT -i ppp+ -p tcp --syn -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -i ppp+ -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
# ------------------------------------------------------------------------------
#   Smurf攻撃対策+不要ログ破棄
# ------------------------------------------------------------------------------
iptables -N SMURF
iptables -A SMURF -d 255.255.255.255 -j DROP
iptables -A SMURF -d 224.0.0.1 -j DROP
iptables -A SMURF -d 192.168.0.255 -j DROP
iptables -A SMURF -d 192.168.2.255 -j DROP
# ------------------------------------------------------------------------------
#   SYNflood攻撃と思われる接続を破棄する
# ------------------------------------------------------------------------------
iptables -I INPUT -p tcp ! --syn -m state --state NEW -j DROP
# ------------------------------------------------------------------------------
#   データを持たないパケットの接続を破棄する
# ------------------------------------------------------------------------------
iptables -I INPUT -p tcp --tcp-flags ALL NONE -j DROP
# ------------------------------------------------------------------------------
#   ステルススキャンと思われる接続を破棄する
# ------------------------------------------------------------------------------
iptables -I INPUT -p tcp --tcp-flags ALL ALL -j DROP
# ------------------------------------------------------------------------------
#   それ以外はログを残す。
# ------------------------------------------------------------------------------
iptables -A INPUT -j LOG --log-prefix "drop_packet:"
# ------------------------------------------------------------------------------
#   設定を登録及び再起動
# ------------------------------------------------------------------------------
/etc/init.d/iptables save
/etc/init.d/iptables restart
# ----------------------------------------------------------------------------------------
#   設定内容を確認
# ----------------------------------------------------------------------------------------
iptables -L -n -v --line-number

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS