[root@server ~]# vi iptables.sh@@©@ƒtƒ@ƒCƒAƒEƒH[ƒ‹Ý’èƒXƒNƒŠƒvƒgì¬@
#!/bin/bash
#---------------------------------------#
# Ý’èŠJŽn #
#---------------------------------------#
# ƒCƒ“ƒ^ƒtƒF[ƒX–¼’è‹`
LAN=eth0
#---------------------------------------#
# Ý’èI—¹ #
#---------------------------------------#
# “à•”ƒlƒbƒgƒ[ƒN‚̃lƒbƒgƒ}ƒXƒNŽæ“¾
LOCALNET_MASK=`ifconfig $LAN|sed -e 's/^.*Mask:\([^ ]*\)$/\1/p' -e d`
# “à•”ƒlƒbƒgƒ[ƒNƒAƒhƒŒƒXŽæ“¾
LOCALNET_ADDR=`netstat -rn|grep $LAN|grep $LOCALNET_MASK|cut -f1 -d' '`
LOCALNET=$LOCALNET_ADDR/$LOCALNET_MASK
# ƒtƒ@ƒCƒAƒEƒH[ƒ‹’âŽ~(‚·‚ׂẴ‹[ƒ‹‚ðƒNƒŠƒA)
/etc/rc.d/init.d/iptables stop
# ƒfƒtƒHƒ‹ƒgƒ‹[ƒ‹(ˆÈ~‚̃‹[ƒ‹‚Ƀ}ƒbƒ`‚µ‚È‚©‚Á‚½ê‡‚É“K—p‚·‚郋[ƒ‹)Ý’è
iptables -P INPUT DROP # ŽóM‚Í‚·‚ׂĔjŠü
iptables -P OUTPUT ACCEPT # ‘—M‚Í‚·‚ׂċ–‰Â
iptables -P FORWARD DROP # ’ʉ߂͂·‚ׂĔjŠü
# Ž©ƒzƒXƒg‚©‚ç‚̃AƒNƒZƒX‚ð‚·‚×‚Ä‹–‰Â
iptables -A INPUT -i lo -j ACCEPT
# “à•”‚©‚ç‚̃AƒNƒZƒX‚ð‚·‚×‚Ä‹–‰Â
iptables -A INPUT -s $LOCALNET -j ACCEPT
# “à•”‚©‚çs‚Á‚½ƒAƒNƒZƒX‚ɑ΂·‚éŠO•”‚©‚ç‚̕ԓšƒAƒNƒZƒX‚ð‹–‰Â
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SYN Cookies‚ð—LŒø‚É‚·‚é
# ¦TCP SYN FloodUŒ‚‘Îô
sysctl -w net.ipv4.tcp_syncookies=1 > /dev/null
sed -i '/net.ipv4.tcp_syncookies/d' /etc/sysctl.conf
echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf
# ƒuƒ[ƒhƒLƒƒƒXƒgƒAƒhƒŒƒXˆ¶ping‚ɂ͉ž“š‚µ‚È‚¢
# ¦SmurfUŒ‚‘Îô
sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null
sed -i '/net.ipv4.icmp_echo_ignore_broadcasts/d' /etc/sysctl.conf
echo "net.ipv4.icmp_echo_ignore_broadcasts=1" >> /etc/sysctl.conf
# ICMP RedirectƒpƒPƒbƒg‚Í‹‘”Û
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ƒpƒPƒbƒg‚Í‹‘”Û
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
# ƒtƒ‰ƒOƒƒ“ƒg‰»‚³‚ꂽƒpƒPƒbƒg‚̓ƒO‚ð‹L˜^‚µ‚Ä”jŠü
iptables -A INPUT -f -j LOG --log-prefix '[IPTABLES FRAGMENT] : '
iptables -A INPUT -f -j DROP
# ŠO•”‚Æ‚ÌNetBIOSŠÖ˜A‚̃AƒNƒZƒX‚̓ƒO‚ð‹L˜^‚¹‚¸‚É”jŠü
# ¦•s—vƒƒO‹L˜^–hŽ~
iptables -A INPUT ! -s $LOCALNET -p tcp -m multiport --dports 135,137,138,139,445 -j DROP
iptables -A INPUT ! -s $LOCALNET -p udp -m multiport --dports 135,137,138,139,445 -j DROP
iptables -A OUTPUT ! -d $LOCALNET -p tcp -m multiport --sports 135,137,138,139,445 -j DROP
iptables -A OUTPUT ! -d $LOCALNET -p udp -m multiport --sports 135,137,138,139,445 -j DROP
# 1•bŠÔ‚É4‰ñ‚ð’´‚¦‚éping‚̓ƒO‚ð‹L˜^‚µ‚Ä”jŠü
# ¦Ping of DeathUŒ‚‘Îô
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
# ‘SƒzƒXƒg(ƒuƒ[ƒhƒLƒƒƒXƒgƒAƒhƒŒƒXAƒ}ƒ‹ƒ`ƒLƒƒƒXƒgƒAƒhƒŒƒX)ˆ¶ƒpƒPƒbƒg‚̓ƒO‚ð‹L˜^‚¹‚¸‚É”jŠü
# ¦•s—vƒƒO‹L˜^–hŽ~
iptables -A INPUT -d 255.255.255.255 -j DROP
iptables -A INPUT -d 224.0.0.1 -j DROP
# 113”Ôƒ|[ƒg(IDENT)‚ւ̃AƒNƒZƒX‚ɂ͋‘”Û‰ž“š
# ¦ƒ[ƒ‹ƒT[ƒo“™‚̃ŒƒXƒ|ƒ“ƒX’ቺ–hŽ~
iptables -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
# ACCEPT_COUNTRY_MAKEŠÖ”’è‹`
# Žw’肳‚ꂽ‘‚ÌIPƒAƒhƒŒƒX‚©‚ç‚̃AƒNƒZƒX‚ð‹–‰Â‚·‚郆[ƒU’è‹`ƒ`ƒFƒCƒ“ì¬
ACCEPT_COUNTRY_MAKE(){
for addr in `cat /tmp/cidr.txt|grep ^$1|awk '{print $2}'`
do
iptables -A ACCEPT_COUNTRY -s $addr -j ACCEPT
done
}
# DROP_COUNTRY_MAKEŠÖ”’è‹`
# Žw’肳‚ꂽ‘‚ÌIPƒAƒhƒŒƒX‚©‚ç‚̃AƒNƒZƒX‚ð”jŠü‚·‚郆[ƒU’è‹`ƒ`ƒFƒCƒ“ì¬
DROP_COUNTRY_MAKE(){
for addr in `cat /tmp/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
}
# IPƒAƒhƒŒƒXƒŠƒXƒgŽæ“¾iŠO•”ŠÖ”@•Ê“rì¬)
. /root/iptables_functions
IPLISTGET
# “ú–{‚©‚ç‚̃AƒNƒZƒX‚ð‹–‰Â‚·‚郆[ƒU’è‹`ƒ`ƒFƒCƒ“ACCEPT_COUNTRYì¬
iptables -N ACCEPT_COUNTRY
ACCEPT_COUNTRY_MAKE JP
# ˆÈ~,“ú–{‚©‚ç‚̂݃AƒNƒZƒX‚ð‹–‰Â‚µ‚½‚¢ê‡‚ÍACCEPT‚Ì‚©‚í‚è‚ÉACCEPT_COUNTRY‚ðŽw’è‚·‚é
# ’†‘E‘ä˜pEƒƒVƒA¦‚©‚ç‚̃AƒNƒZƒX‚ðƒƒO‚ð‹L˜^‚µ‚Ä”jŠü
# ¦‘S‘ŒxŽ@Ž{݂ւÌUŒ‚Œ³ãˆÊ‚RƒJ‘(“ú–{EƒAƒƒŠƒJ‚ðœ‚)
# http://www.cyberpolice.go.jp/detect/observation.html‚æ‚è
iptables -N DROP_COUNTRY
DROP_COUNTRY_MAKE CN
DROP_COUNTRY_MAKE TW
DROP_COUNTRY_MAKE RU
iptables -A INPUT -j DROP_COUNTRY
#----------------------------------------------------------#
# ŠeŽíƒT[ƒrƒX‚ðŒöŠJ‚·‚éꇂÌÝ’è(‚±‚±‚©‚ç) #
#----------------------------------------------------------#
# ŠO•”‚©‚ç‚ÌTCP22”Ôƒ|[ƒg(SSH)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦SSHƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 22 -j ACCEPT_COUNTRY
# ŠO•”‚©‚ç‚ÌTCP/UDP53”Ôƒ|[ƒg(DNS)‚ւ̃AƒNƒZƒX‚ð‹–‰Â
# ¦ŠO•”Œü‚¯DNSƒT[ƒo[‚ð‰^—p‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
# ŠO•”‚©‚ç‚ÌTCP80”Ôƒ|[ƒg(HTTP)‚ւ̃AƒNƒZƒX‚ð‹–‰Â
# ¦WebƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# ŠO•”‚©‚ç‚ÌTCP443”Ôƒ|[ƒg(HTTPS)‚ւ̃AƒNƒZƒX‚ð‹–‰Â
# ¦WebƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# ŠO•”‚©‚ç‚ÌTCP21”Ôƒ|[ƒg(FTP)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦FTPƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 21 -j ACCEPT_COUNTRY
# ŠO•”‚©‚ç‚ÌPASV—pƒ|[ƒg(FTP-DATA)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦FTPƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
# ¦PASV—pƒ|[ƒg60000:60030‚Í“–ƒTƒCƒg‚ÌÝ’è—á
iptables -A INPUT -p tcp --dport 60000:60030 -j ACCEPT_COUNTRY
# ŠO•”‚©‚ç‚ÌTCP25”Ôƒ|[ƒg(SMTP)‚ւ̃AƒNƒZƒX‚ð‹–‰Â
# ¦SMTPƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
# ŠO•”‚©‚ç‚ÌTCP465”Ôƒ|[ƒg(SMTPS)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦SMTPSƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 465 -j ACCEPT_COUNTRY
# ŠO•”‚©‚ç‚ÌTCP110”Ôƒ|[ƒg(POP3)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦POP3ƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 110 -j ACCEPT_COUNTRY
# ŠO•”‚©‚ç‚ÌTCP995”Ôƒ|[ƒg(POP3S)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦POP3SƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 995 -j ACCEPT_COUNTRY
# ŠO•”‚©‚ç‚ÌTCP143”Ôƒ|[ƒg(IMAP)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦IMAPƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 143 -j ACCEPT_COUNTRY
# ŠO•”‚©‚ç‚ÌTCP993”Ôƒ|[ƒg(IMAPS)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦IMAPSƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 993 -j ACCEPT_COUNTRY
# ŠO•”‚©‚ç‚ÌUDP1194”Ôƒ|[ƒg(OpenVPN)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦OpenVPNƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p udp --dport 1194 -j ACCEPT_COUNTRY
# VPNƒCƒ“ƒ^ƒtƒF[ƒX—pƒtƒ@ƒCƒAƒEƒH[ƒ‹Ý’è
# ¦OpenVPNƒT[ƒo[‚ðŒöŠJ‚·‚éꇂ̂Ý
[ -f /etc/openvpn/openvpn-startup ] && /etc/openvpn/openvpn-startup
# ŠO•”‚©‚ç‚ÌTCP20000”Ôƒ|[ƒg(Usermin)‚ւ̃AƒNƒZƒX‚ð“ú–{‚©‚ç‚̂݋–‰Â
# ¦Usemin‚ðŒöŠJ‚·‚éꇂ̂Ý
iptables -A INPUT -p tcp --dport 20000 -j ACCEPT_COUNTRY
#----------------------------------------------------------#
# ŠeŽíƒT[ƒrƒX‚ðŒöŠJ‚·‚éꇂÌÝ’è(‚±‚±‚Ü‚Å) #
#----------------------------------------------------------#
# ‹‘”ÛIPƒAƒhƒŒƒX‚©‚ç‚̃AƒNƒZƒX‚̓ƒO‚ð‹L˜^‚¹‚¸‚É”jŠü
# ¦‹‘”ÛIPƒAƒhƒŒƒX‚Í/root/deny_ip‚É1s‚²‚ƂɋLq‚µ‚Ä‚¨‚‚±‚Æ
# (/root/deny_ip‚ª‚È‚¯‚ê‚Î‚È‚É‚à‚µ‚È‚¢)
if [ -s /root/deny_ip ]; then
for ip in `cat /root/deny_ip`
do
iptables -I INPUT -s $ip -j DROP
done
fi
# ã‹L‚̃‹[ƒ‹‚Ƀ}ƒbƒ`‚µ‚È‚©‚Á‚½ƒAƒNƒZƒX‚̓ƒO‚ð‹L˜^‚µ‚Ä”jŠü
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
# ƒT[ƒo[Ä‹N“®Žž‚É‚àã‹Lݒ肪—LŒø‚Æ‚È‚é‚æ‚¤‚Ƀ‹[ƒ‹‚ð•Û‘¶
/etc/rc.d/init.d/iptables save
# ƒtƒ@ƒCƒAƒEƒH[ƒ‹‹N“®
/etc/rc.d/init.d/iptables start
[root@server ~]# chmod 700 iptables.sh@©@ƒtƒ@ƒCƒAƒEƒH[ƒ‹Ý’èƒXƒNƒŠƒvƒg‚ÖŽÀsŒ ŒÀ•t‰Á
‡AŠO•”ŠÖ”iptables_functions‚Ìì¬
[root@server ~]# vi iptables_functions
# IPƒAƒhƒŒƒXƒŠƒXƒgŽæ“¾ŠÖ”’è‹`
IPLISTGET(){
# http://nami.jp/ipv4bycc/‚©‚çÅV”ÅIPƒAƒhƒŒƒXƒŠƒXƒg‚ðŽæ“¾‚·‚é
wget -q http://nami.jp/ipv4bycc/cidr.txt.gz
gunzip cidr.txt.gz
# ÅV”ÅIPƒAƒhƒŒƒXƒŠƒXƒg‚ªŽæ“¾‚Å‚«‚È‚©‚Á‚½ê‡
if [ ! -f cidr.txt ]; then
if [ -f /tmp/cidr.txt ]; then
# ƒoƒbƒNƒAƒbƒv‚ª‚ ‚éꇂ͂»‚ÌŽ|‚ðrootˆ¶‚Ƀ[ƒ‹’Ê’m‚µ‚Ĉ—‚ð‘Å‚¿Ø‚é
echo cidr.txt was read from the backup! | mail -s $0 root
return
else
# ƒoƒbƒNƒAƒbƒv‚ª‚È‚¢ê‡‚Í‚»‚ÌŽ|‚ðrootˆ¶‚Ƀ[ƒ‹’Ê’m‚µ‚Ĉ—‚ð‘Å‚¿Ø‚é
echo cidr.txt not found!|mail -s $0 root
exit 1
fi
fi
# ÅV”ÅIPƒAƒhƒŒƒXƒŠƒXƒg‚ð /tmp‚ÖƒoƒbƒNƒAƒbƒv‚·‚é
/bin/mv cidr.txt /tmp/cidr.txt
}
[root@server ~]#
‡BIPƒAƒhƒŒƒXƒŠƒXƒgXVƒ`ƒFƒbƒN
iptables‚Å“Á’è‘‚©‚ç‚̃AƒNƒZƒX‹‘”Ûƒ‹[ƒ‹‚ðݒ肵‚½ê‡AIPƒAƒhƒŒƒXî•ñ‚Í•p”É‚ÉXV‚³‚ê‚é‚Ì‚ÅAXV‚ª‚ ‚éꇂÍiptablesÝ’èƒXƒNƒŠƒvƒg‚ðÄ‹N“®‚·‚邿‚¤‚É‚·‚éB
[root@server ~]# vi /etc/cron.daily/iplist_check.sh@©@IPƒAƒhƒŒƒXƒŠƒXƒgƒ`ƒFƒbƒNƒXƒNƒŠƒvƒgì¬
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# V‹ŒIPLIST·•ªƒ`ƒFƒbƒNŒ”(0‚ðŽw’è‚·‚邯ƒ`ƒFƒbƒN‚µ‚È‚¢)
# ¦V‹ŒIPLIST·•ª‚ªSABUN_CHK‚ÅŽw’肵‚½Œ”‚ð‰z‚¦‚éꇂÍiptablesÝ’èƒXƒNƒŠƒvƒg‚ðŽÀs‚µ‚È‚¢
# ¦V‹ŒIPLIST·•ªƒ`ƒFƒbƒN——R‚Íhttp://centossrv.com/bbshtml/webpatio/1592.shtml‚ðŽQÆ
SABUN_CHK=100
[ $# -ne 0 ] && SABUN_CHK=${1}
# ƒ`ƒFƒbƒN‘ƒR[ƒh
COUNTRY_CODE='JP CN TW RU'
# iptablesÝ’èƒXƒNƒŠƒvƒgƒpƒX
IPTABLES=/root/iptables.sh
# iptablesÝ’èƒXƒNƒŠƒvƒgŠO•”ŠÖ”Žæ‚èž‚Ý
. /root/iptables_functions
# IPƒAƒhƒŒƒXƒŠƒXƒgÅV‰»
rm -f IPLIST.new
IPLISTGET
for country in $COUNTRY_CODE
do
if [ -f /tmp/cidr.txt ]; then
grep ^$country /tmp/cidr.txt >> IPLIST.new
else
grep ^$country /tmp/IPLIST >> IPLIST.new
fi
done
[ ! -f /tmp/IPLIST ] && cp IPLIST.new /tmp/IPLIST
# IPƒAƒhƒŒƒXƒŠƒXƒgXVƒ`ƒFƒbƒN
diff -q /tmp/IPLIST IPLIST.new > /dev/null 2>&1
if [ $? -ne 0 ]; then
if [ ${SABUN_CHK} -ne 0 ]; then
if [ $(diff /tmp/IPLIST IPLIST.new | egrep -c '<|>') -gt ${SABUN_CHK} ]; then
(
diff /tmp/IPLIST IPLIST.new
echo
echo "$IPTABLES not executed."
) | mail -s 'IPLIST UPDATE' root
rm -f IPLIST.new
exit
fi
fi
/bin/mv IPLIST.new /tmp/IPLIST
sh $IPTABLES > /dev/null
else
rm -f IPLIST.new
fi
[root@server ~]# chmod +x /etc/cron.daily/iplist_check.sh@©@ŽÀsŒ ŒÀ•t—^
Ÿiptables‚Ì‹N“®
<
iptablesƒXƒNƒŠƒvƒg‚ÌŽÀs
[root@server ~]# ./iptables.sh@©@ƒtƒ@ƒCƒAƒEƒH[ƒ‹Ý’èƒXƒNƒŠƒvƒgŽÀs
ƒtƒ@ƒCƒAƒEƒH[ƒ‹‚̃‹[ƒ‹‚ð /etc/sysconfig/iptables ‚ɕۑ¶’†[ OK ]
ƒtƒ@ƒCƒAƒEƒH[ƒ‹ƒ‹[ƒ‹‚ð“K—p’†: [ OK ]
ƒ`ƒFƒCƒ“ƒ|ƒŠƒV[‚ð ACCEPT ‚ÉÝ’è’†filter [ OK ]
iptables ƒ‚ƒWƒ…[ƒ‹‚ðŽæ‚èŠO‚µ’† [ OK ]
iptables ƒtƒ@ƒCƒAƒEƒH[ƒ‹ƒ‹[ƒ‹‚ð“K—p’†: [ OK ]
iptables ƒ‚ƒWƒ…[ƒ‹‚ð“ǂݞ‚Ý’†ip_conntrack_ftp [ OK ]
[root@server ~]# chkconfig iptables on@@@©@iptablesŽ©“®‹N“®Ý’è
[root@server ~]# chkconfig --list iptables@©@iptablesŽ©“®‹N“®Ý’èŠm”F
iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off@©@ƒ‰ƒ“ƒŒƒxƒ‹2`5‚Ìon‚ðŠm”F
|
Apache 2.0‚ÆTomcat 5.0‚̘AŒg
dnotify‚ð—˜—p‚·‚éê‡
SQL‚̃eƒNƒjƒbƒN‚ð‹L
Oracle‚̃eƒNƒjƒbƒN‚ð‹L
VARCHAR2‚ðNUMBER‚ɕϊ·‚·‚éÛAŒ…”‚Å“{‚ç‚ê‚邯‚«‚ÉŒ…”‚𖳎‹‚·‚éfunction
trac‚Ìݒ胃‚
inotify‚ð—˜—p‚·‚éê‡
ŠÄŽ‹ƒT[ƒo[‚ÌÝ’
SSLƒL[ì
ŠÄŽ‹ƒT[ƒo[‚ÌÝ’
|