1
0

verifica 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. #!/bin/bash
  2. u_dir="/etc/adm-lite/userDIR"
  3. tmp_verifica="/etc/adm-lite/tmp_tmp"
  4. _arquivo1="/etc/adm-lite/tmp_arq1"
  5. _arquivo2="/etc/adm-lite/tmp_arq2"
  6. _arquivo3="/etc/adm-lite/tmp_arq3"
  7. _arquivo4="/etc/adm-lite/tmp_arq4"
  8. [[ ! -d "$u_dir" ]] && mkdir $u_dir
  9. [[ -e "$_arquivo1" ]] && rm $_arquivo1
  10. [[ -e "$_arquivo2" ]] && rm $_arquivo2
  11. [[ -e "$_arquivo3" ]] && rm $_arquivo3
  12. [[ -e "$_arquivo4" ]] && rm $_arquivo4
  13. function_dropb () {
  14. port_dropbear=`ps aux | grep dropbear | awk NR==1 | awk '{print $17;}'`
  15. [[ $port_dropbear = "" ]] && return
  16. log=/var/log/auth.log
  17. loginsukses='Password auth succeeded'
  18. echo ' '
  19. pids=`ps ax |grep dropbear |grep " $port_dropbear" |awk -F" " '{print $1}'`
  20. for pid in $pids
  21. do
  22. pidlogs=`grep $pid $log |grep "$loginsukses" |awk -F" " '{print $3}'`
  23. i=0
  24. for pidend in $pidlogs
  25. do
  26. let i=i+1
  27. done
  28. if [ $pidend ]; then
  29. login=`grep $pid $log |grep "$pidend" |grep "$loginsukses"`
  30. PID=$pid
  31. user=`echo $login |awk -F" " '{print $10}' | sed -r "s/'/ /g"`
  32. waktu=`echo $login |awk -F" " '{print $2"-"$1,$3}'`
  33. while [ ${#waktu} -lt 13 ]; do
  34. waktu=$waktu" "
  35. done
  36. while [ ${#user} -lt 16 ]; do
  37. user=$user" "
  38. done
  39. while [ ${#PID} -lt 8 ]; do
  40. PID=$PID" "
  41. done
  42. echo "$user $PID $waktu"
  43. fi
  44. done
  45. echo ""
  46. return
  47. }
  48. dropbear_pids () {
  49. unset pids
  50. port_dropbear=`ps aux | grep dropbear | awk NR==1 | awk '{print $17;}'`
  51. log=/var/log/auth.log
  52. loginsukses='Password auth succeeded'
  53. [[ -z $port_dropbear ]] && return 1
  54. for port in `echo $port_dropbear`; do
  55. for pidx in $(ps ax |grep dropbear |grep "$port" |awk -F" " '{print $1}'); do
  56. pids="${pids}$pidx\n"
  57. done
  58. done
  59. for pid in `echo -e "$pids"`; do
  60. pidlogs=`grep $pid $log |grep "$loginsukses" |awk -F" " '{print $3}'`
  61. i=0
  62. for pidend in $pidlogs; do
  63. let i++
  64. done
  65. if [[ $pidend ]]; then
  66. login=$(grep $pid $log |grep "$pidend" |grep "$loginsukses")
  67. PID=$pid
  68. user=`echo $login |awk -F" " '{print $10}' | sed -r "s/'//g"`
  69. waktu=$(echo $login |awk -F" " '{print $2"-"$1,$3}')
  70. [[ -z $user ]] && continue
  71. echo "$user|$PID|$waktu"
  72. fi
  73. done
  74. }
  75. openvpn_pids () {
  76. #nome|#loguin|#rcv|#snd|#time
  77. byte () {
  78. while read B dummy; do
  79. [[ "$B" -lt 1024 ]] && echo "${B} bytes" && break
  80. KB=$(((B+512)/1024))
  81. [[ "$KB" -lt 1024 ]] && echo "${KB} Kb" && break
  82. MB=$(((KB+512)/1024))
  83. [[ "$MB" -lt 1024 ]] && echo "${MB} Mb" && break
  84. GB=$(((MB+512)/1024))
  85. [[ "$GB" -lt 1024 ]] && echo "${GB} Gb" && break
  86. echo $(((GB+512)/1024)) terabytes
  87. done
  88. }
  89. for user in $(mostrar_usuarios); do
  90. [[ ! $(sed -n "/^${user},/p" /etc/openvpn/openvpn-status.log) ]] && continue
  91. i=0
  92. unset RECIVED
  93. unset SEND
  94. unset HOUR
  95. while read line; do
  96. IDLOCAL=$(echo ${line}|cut -d',' -f2)
  97. RECIVED+="$(echo ${line}|cut -d',' -f3)+"
  98. SEND+="$(echo ${line}|cut -d',' -f4)+"
  99. DATESEC=$(date +%s --date="$(echo ${line}|cut -d',' -f5|cut -d' ' -f1,2,3,4)")
  100. TIMEON="$(($(date +%s)-${DATESEC}))"
  101. MIN=$(($TIMEON/60)) && SEC=$(($TIMEON-$MIN*60)) && HOR=$(($MIN/60)) && MIN=$(($MIN-$HOR*60))
  102. HOUR+="${HOR}h:${MIN}m:${SEC}s\n"
  103. let i++
  104. done <<< "$(sed -n "/^${user},/p" /etc/openvpn/openvpn-status.log)"
  105. RECIVED=$(echo $(echo ${RECIVED}0|bc)|byte)
  106. SEND=$(echo $(echo ${SEND}0|bc)|byte)
  107. HOUR=$(echo -e $HOUR|sort -n|tail -1)
  108. echo -e "$user|$i|$RECIVED|$SEND|$HOUR"
  109. done
  110. }
  111. mostrar_usuarios () {
  112. for u in `awk -F : '$3 > 900 { print $1 }' /etc/passwd | grep -v "nobody" |grep -vi polkitd |grep -vi system-`; do
  113. echo "$u"
  114. done
  115. }
  116. function_onlines () {
  117. (
  118. unset _on ssh
  119. #_ons=$(ps -x | grep sshd | grep -v root | grep priv | wc -l)
  120. #[[ "$(cat /etc/SSHPlus/Exp)" != "" ]] && _expuser=$(cat /etc/SSHPlus/Exp) || _expuser="0"
  121. #[[ -e /etc/openvpn/openvpn-status.log ]] && _onop=$(grep -c "10.8.0" /etc/openvpn/openvpn-status.log) || _onop="0"
  122. #[[ -e /etc/default/dropbear ]] && _drp=$(ps aux | grep dropbear | grep -v grep | wc -l) _ondrp=$(($_drp - 1)) || _ondrp="0"
  123. for user in $(mostrar_usuarios); do
  124. ssh+="$(ps -u $user | grep sshd |wc -l)+"
  125. ssh+="$(dropbear_pids|grep "$user"|wc -l)+"
  126. [[ -e /etc/openvpn/openvpn-status.log ]] && ssh+="$(fun_ovpn_onl|grep "$user"|wc -l)+"
  127. ssh+="0"
  128. _on=$(echo $ssh|bc)
  129. done
  130. #Usuarios Vencidos
  131. datenow=$(date +%s)
  132. for user in $(awk -F: '{print $1}' /etc/passwd); do
  133. expdate=$(chage -l $user|awk -F: '/Account expires/{print $2}')
  134. echo $expdate|grep -q never && continue
  135. datanormal=$(date -d"$expdate" '+%d/%m/%Y')
  136. expsec=$(date +%s --date="$expdate")
  137. diff=$(echo $datenow - $expsec|bc -l)
  138. echo $diff|grep -q ^\- && continue
  139. vencidos[1]+="1+"
  140. done
  141. #Fazendo A Soma#
  142. vencidos[1]+="0"
  143. vencidos[1]=$(echo ${vencidos[1]}|bc)
  144. echo "$_on" > ./onlines
  145. echo "${vencidos[1]}" > ./vencidos
  146. ) &
  147. }
  148. fun_ovpn_onl () {
  149. for userovpn in `cat /etc/passwd | grep ovpn | awk -F: '{print $1}'`; do
  150. us=$(cat /etc/openvpn/openvpn-status.log | grep $userovpn | wc -l)
  151. [[ "$us" != "0" ]] && echo "$userovpn"
  152. done
  153. }
  154. function_usertime () {
  155. (
  156. declare -A data
  157. declare -A time
  158. declare -A time2
  159. declare -A timefinal
  160. tempousers="./tempo_conexao"
  161. usr_pids_var="./userDIR"
  162. [[ ! -e $tempousers ]] && touch $tempousers
  163. _data_now=$(date +%s)
  164. for user in `awk -F : '$3 > 900 { print $1 }' /etc/passwd |grep -v "nobody" |grep -vi polkitd |grep -vi systemd-[a-z] |grep -vi systemd-[0-9]`; do
  165. unset ssh
  166. [[ -e $usr_pids_var/$user.pid ]] && source $usr_pids_var/$user.pid
  167. ssh+="$(ps -u $user | grep sshd |wc -l)+"
  168. ssh+="$(function_dropb | grep "$user" | wc -l)+"
  169. [[ -e /etc/openvpn/server.conf ]] && ssh+="$(fun_ovpn_onl | grep "$user" | wc -l)+"
  170. ssh+="0"
  171. user_pid=$(echo $ssh|bc)
  172. if [ "$user_pid" -gt "0" ]; then
  173. [[ "${data[$user]}" = "" ]] && data[$user]="$_data_now"
  174. if [ ! -e $usr_pids_var/$user.pid2 ]; then
  175. [[ -e $usr_pids_var/$user.pid ]] && cp $usr_pids_var/$user.pid $usr_pids_var/$user.pid2
  176. fi
  177. fi
  178. if [ "$user_pid" = "0" ]; then
  179. unset data[$user]
  180. [[ -e "$usr_pids_var/$user.pid" ]] && rm $usr_pids_var/$user.pid
  181. [[ -e $usr_pids_var/$user.pid2 ]] && rm $usr_pids_var/$user.pid2
  182. fi
  183. if [ "${data[$user]}" != "" ]; then
  184. time[$user]=$(($_data_now - ${data[$user]}))
  185. time2[$user]=$(cat $tempousers | grep "$user" | awk '{print $2}')
  186. [[ "${time2[$user]}" = "" ]] && time2[$user]="0"
  187. timefinal[$user]=$((${time2[$user]} + ${time[$user]}))
  188. _arquivo=$(cat $tempousers |grep -v "$user")
  189. echo "$_arquivo" > $tempousers
  190. echo "$user ${timefinal[$user]}" >> $tempousers
  191. echo "data[$user]=$_data_now" > $usr_pids_var/$user.pid
  192. fi
  193. done
  194. ) &
  195. }
  196. fun_net () {
  197. (
  198. log_0="/tmp/tcpdum"
  199. log_1="/tmp/tcpdump"
  200. log_2="/tmp/tcpdumpLOG"
  201. usr_dir="/etc/adm-lite/userDIR/usr_cnx"
  202. [[ -e "$log_1" ]] && mv -f $log_1 $log_2
  203. [[ ! -e $usr_dir ]] && touch $usr_dir
  204. #ENCERRA TCP
  205. for pd in `ps x | grep tcpdump | grep -v grep | awk '{print $1}'`; do
  206. kill -9 $pd > /dev/null 2>&1
  207. done
  208. #INICIA TCP
  209. tcpdump -s 50 -n 1> /tmp/tcpdump 2> /dev/null &
  210. [[ ! -e /tmp/tcpdump ]] && touch /tmp/tcpdump
  211. #ANALIZA USER
  212. for user in `awk -F : '$3 > 900 { print $1 }' /etc/passwd | grep -v "nobody" |grep -vi polkitd |grep -vi system-`; do
  213. touch /tmp/$user
  214. ip_openssh $user > /dev/null 2>&1
  215. ip_drop $user > /dev/null 2>&1
  216. sed -i '/^$/d' /tmp/$user
  217. pacotes=$(paste -sd+ /tmp/$user | bc)
  218. rm /tmp/$user
  219. if [ "$pacotes" != "" ]; then
  220. if [ "$(cat $usr_dir | grep "$user")" != "" ]; then
  221. pacotesuser=$(cat $usr_dir | grep "$user" | awk '{print $2}')
  222. [[ $pacotesuser = "" ]] && pacotesuser=0
  223. [[ $pacotesuser != +([0-9]) ]] && pacotesuser=0
  224. ussrvar=$(cat $usr_dir | grep -v "$user")
  225. echo "$ussrvar" > $usr_dir
  226. pacotes=$(($pacotes+$pacotesuser))
  227. echo -e "$user $pacotes" >> $usr_dir
  228. else
  229. echo -e "$user $pacotes" >> $usr_dir
  230. fi
  231. fi
  232. unset pacotes
  233. done
  234. ) &
  235. }
  236. ip_openssh () {
  237. user="$1"
  238. for ip in `lsof -u $user -P -n | grep "ESTABLISHED" | awk -F "->" '{print $2}' |awk -F ":" '{print $1}' | grep -v "127.0.0.1"`; do
  239. packet=$(cat $log_2 | grep "$ip" | wc -l)
  240. echo "$packet" >> /tmp/$user
  241. unset packet
  242. done
  243. }
  244. ip_drop () {
  245. user="$1"
  246. loguser='Password auth succeeded'
  247. touch /tmp/drop
  248. for ip in `cat /var/log/auth.log | tail -100 | grep "$user" | grep "$loguser" | awk -F "from" '{print $2}' | awk -F ":" '{print $1}'`; do
  249. if [ "$(cat /tmp/drop | grep "$ip")" = "" ]; then
  250. packet=$(cat $log_2 | grep "$ip" | wc -l)
  251. echo "$packet" >> /tmp/$user
  252. echo "$ip" >> /tmp/drop
  253. fi
  254. done
  255. rm /tmp/drop
  256. }
  257. #killall menu > /dev/null 2>&1
  258. #kill -9 $(ps x|grep -v grep|grep limiter.sh|awk '{print $1}')
  259. function_usertime > /dev/null 2>&1
  260. #function_killmultiloguin > /dev/null 2>&1
  261. function_onlines > /dev/null 2>&1
  262. #fun_net > /dev/null 2>&1