Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.09 KB | None | 0 0
  1. #!/usr/bin/env bash
  2. #
  3. ##################################################################
  4. # Script para aplicar baseline da Proteus #
  5. # 12 Jan 2016 - Wendel Amix - v1.0 #
  6. ##################################################################
  7. #
  8. # Historico / Atualizacoes
  9. #
  10. # Data: 17/Jan/2017 - Wendel
  11. #
  12. # - Troquei o bash para o env bash, respeitando path unico de cada
  13. # servidor. Sendo assim removi o path completo dos comandos abaixo
  14. # - Adicionei novas vulnerabilidades baseadas no arquivo recebido
  15. # - Agora todas as vulnerabilidades sao feitas via funcao, facili-
  16. # tando o gerenciamento entre elas - tks Edison
  17. # - Adicionei aspas duplas em todas as variaveis para evitar
  18. # problemas com variaveis nulas por solicitacao do Railson
  19. #
  20. ##################################################################
  21.  
  22. # Variaveis
  23. HOST=$(uname -n)
  24. SISTEMA=$(uname -s)
  25. IP=$(ip route get 8.8.8.8 | awk -F 'FS' 'BEGIN {FS=" "; ORS="|"} {print $7;exit}')
  26. HOJE=$(date +"%Y%m%d")
  27. LOG=/tmp/CL_${HOST}_${HOJE}.log
  28. DNS="127.0.0.1"
  29. DNS2="127.0.0.1"
  30. SERVICOS=/amb/global/proteus/servicos.txt
  31. SUID_ARQUIVOS=/amb/global/proteus/suid_arquivos.txt
  32. ESCRITA_ARQUIVOS=/amb/global/proteus/escrita_arquivos.txt
  33. SERV_AUTORIZADOS="127.0.0.1(rw,sync) 127.0.0.1(ro)"
  34.  
  35. # Verificacoes
  36. must_root ()
  37. {
  38. if [[ $(id -u) != 0 ]]; then
  39. echo "Precisa ser root. Saindo"
  40. exit 0
  41. fi
  42. }
  43.  
  44. log_exist ()
  45. {
  46. if [[ -f "$LOG" ]]; then
  47. rm -f "$LOG"
  48. fi
  49. }
  50.  
  51. # Vulnerabilidades
  52. system_ctrlaltdel ()
  53. {
  54. echo "Vulnerabilidade: reiniciar sistema via ctrl alt del"
  55.  
  56. if [[ -f /etc/inittab ]]; then
  57. grep -q ctrlaltdel /etc/inittab &&
  58. sed -i."${HOJE}" '/ctrlaltdel/s/^/#/' /etc/inittab &&
  59. echo "[x] Aplicada com sucesso /etc/inittab" ||
  60. sed -i."${HOJE}" '$a\\n#ctrlaltdel' /etc/inittab &&
  61. echo "[x] Aplicada com sucesso /etc/inittab"
  62. elif [[ -f /etc/init/control-alt-delete.conf ]]; then
  63. grep -q control-alt-delete /etc/init/control-alt-delete.conf &&
  64. sed -i."${HOJE}" '/control-alt-delete/s/^/#/' /etc/init/control-alt-delete.conf &&
  65. echo "[x] Aplicada com sucesso /etc/init/control-alt-delete.conf" ||
  66. sed -i."${HOJE}" '$a\\n#control-alt-delete' /etc/init/control-alt-delete.conf &&
  67. echo "[x] Aplicada com sucesso /etc/init/control-alt-delete.conf"
  68. else
  69. echo "[x] Nao aplicada. Arquivo nao encontrado."
  70. fi
  71. }
  72.  
  73. dns_spoofing ()
  74. {
  75. echo "Vulnerabilidade: dns: spoofing"
  76.  
  77. if [[ -f /etc/resolv.conf ]]; then
  78. sed -i."${HOJE}" '/nameserver/s/^/#/;$anameserver '"${DNS}"'\nnameserver '"${DNS2}"'' /etc/resolv.conf
  79. echo "[x] Aplicada com sucesso"
  80. else
  81. echo "[x] Nao aplicada. Arquivo nao encontrado."
  82. fi
  83. }
  84.  
  85. sysctl_interfaces_spoofing ()
  86. {
  87. echo "Vulnerabilidade: sysctl: interfaces spoofing"
  88.  
  89. if [[ -f /etc/sysctl.conf ]]; then
  90. grep -q net.ipv4.conf.all.rp_filter /etc/sysctl.conf &&
  91. sed -i."${HOJE}" 's/.*net.ipv4.conf.all.rp_filter.*/net.ipv4.conf.all.rp_filter=1/g' /etc/sysctl.conf &&
  92. echo "[x] Aplicada com sucesso" ||
  93. sed -i."${HOJE}" '$a\\nnet.ipv4.conf.all.rp_filter=1' /etc/sysctl.conf &&
  94. echo "[x] Aplicada com sucesso"
  95. else
  96. echo "[x] Nao aplicada. Arquivo nao encontrado."
  97. fi
  98.  
  99. sysctl -w net.ipv4.conf.all.rp_filter=1 > /dev/null
  100. }
  101.  
  102. sysctl_icmp_accept ()
  103. {
  104. echo "Vulnerabilidade: sysctl: icmp accept"
  105.  
  106. if [[ -f /etc/sysctl.conf ]]; then
  107. grep -q net.ipv4.icmp_echo_ignore_broadcasts /etc/sysctl.conf &&
  108. sed -i."${HOJE}" 's/.*net.ipv4.icmp_echo_ignore_broadcasts.*/net.ipv4.icmp_echo_ignore_broadcasts=1/g' /etc/sysctl.conf &&
  109. echo "[x] Aplicada com sucesso" ||
  110. sed -i."${HOJE}" '$a\\nnet.ipv4.icmp_echo_ignore_broadcasts=1' /etc/sysctl.conf &&
  111. echo "[x] Aplicada com sucesso"
  112. else
  113. echo "[x] Nao aplicada. Arquivo nao encontrado."
  114. fi
  115.  
  116. sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 > /dev/null
  117. }
  118.  
  119. sysctl_forward_ipv4 ()
  120. {
  121. echo "Vulnerabilidade: sysctl: forward ipv4 sendo permitido"
  122.  
  123. if [[ -f /etc/sysctl.conf ]]; then
  124. grep -q net.ipv4.conf.all.accept_redirects /etc/sysctl.conf &&
  125. sed -i."${HOJE}" 's/.*net.ipv4.conf.all.accept_redirects.*/net.ipv4.conf.all.accept_redirects=0/g' /etc/sysctl.conf &&
  126. echo "[x] Aplicada com sucesso" ||
  127. sed -i."${HOJE}" '$a\\nnet.ipv4.conf.all.accept_redirects=0' /etc/sysctl.conf &&
  128. echo "[x] Aplicada com sucesso"
  129. else
  130. echo "[x] Nao aplicada. Arquivo nao encontrado."
  131. fi
  132.  
  133. sysctl -w net.ipv4.conf.all.accept_redirects=0 > /dev/null
  134. }
  135.  
  136. sysctl_forward_ipv6 ()
  137. {
  138. echo "Vulnerabilidade: sysctl: forward ipv6 sendo permitido"
  139.  
  140. if [[ -f /etc/sysctl.conf ]]; then
  141. grep -q net.ipv6.conf.all.accept_redirects /etc/sysctl.conf &&
  142. sed -i."${HOJE}" 's/.*net.ipv6.conf.all.accept_redirects.*/net.ipv6.conf.all.accept_redirects=0/g' /etc/sysctl.conf &&
  143. echo "[x] Aplicada com sucesso" ||
  144. sed -i."${HOJE}" '$a\\nnet.ipv6.conf.all.accept_redirects=0' /etc/sysctl.conf &&
  145. echo "[x] Aplicada com sucesso"
  146. else
  147. echo "[x] Nao aplicada. Arquivo nao encontrado."
  148. fi
  149.  
  150. sysctl -w net.ipv6.conf.all.accept_redirects=0 > /dev/null
  151. }
  152.  
  153. sysctl_redirect_allowed ()
  154. {
  155. echo "Vulnerabilidade: sysctl: redirecionamento de pacotes sendo permitido"
  156.  
  157. if [[ -f /etc/sysctl.conf ]]; then
  158. grep -q net.ipv4.conf.all.send_redirects /etc/sysctl.conf &&
  159. sed -i."${HOJE}" 's/.*net.ipv4.conf.all.send_redirects.*/net.ipv4.conf.all.send_redirects=0/g' /etc/sysctl.conf &&
  160. echo "[x] Aplicada com sucesso" ||
  161. sed -i."${HOJE}" '$a\\nnet.ipv4.conf.all.send_redirects=0' /etc/sysctl.conf &&
  162. echo "[x] Aplicada com sucesso"
  163. else
  164. echo "[x] Nao aplicada. Arquivo nao encontrado."
  165. fi
  166.  
  167. sysctl -w net.ipv4.conf.all.send_redirects=0 > /dev/null
  168. }
  169.  
  170. sysctl_bogus_error ()
  171. {
  172. echo "Vulnerabilidade: sysctl: protecao contra pacotes bogus nao ativada"
  173.  
  174. if [[ -f /etc/sysctl.conf ]]; then
  175. grep -q net.ipv4.icmp_ignore_bogus_error_responses /etc/sysctl.conf &&
  176. sed -i."${HOJE}" 's/.*net.ipv4.icmp_ignore_bogus_error_responses.*/net.ipv4.icmp_ignore_bogus_error_responses=1/g' /etc/sysctl.conf &&
  177. echo "[x] Aplicada com sucesso" ||
  178. sed -i."${HOJE}" '$a\\nnet.ipv4.icmp_ignore_bogus_error_responses=1' /etc/sysctl.conf &&
  179. echo "[x] Aplicada com sucesso"
  180. else
  181. echo "[x] Nao aplicada. Arquivo nao encontrado."
  182. fi
  183.  
  184. sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1 > /dev/null
  185. }
  186.  
  187. sysctl_reply_router ()
  188. {
  189. echo "Vulnerabilidade: sysctl: resposta para anuncio de roteadores"
  190.  
  191. if [[ -f /etc/sysctl.conf ]]; then
  192. grep -q net.ipv6.conf.all.accept_ra /etc/sysctl.conf &&
  193. sed -i."${HOJE}" 's/.*net.ipv6.conf.all.accept_ra.*/net.ipv6.conf.all.accept_ra=0/g' /etc/sysctl.conf &&
  194. echo "[x] Aplicada com sucesso" ||
  195. sed -i."${HOJE}" '$a\\nnet.ipv6.conf.all.accept_ra=0' /etc/sysctl.conf &&
  196. echo "[x] Aplicada com sucesso"
  197. else
  198. echo "[x] Nao aplicada. Arquivo nao encontrado."
  199. fi
  200.  
  201. sysctl -w net.ipv6.conf.all.accept_ra=0 > /dev/null
  202. }
  203.  
  204. sysctl_log_martians ()
  205. {
  206. echo "Vulnerabilidade: sysctl: ausencia de logs pacotes suspeitos"
  207.  
  208. if [[ -f /etc/sysctl.conf ]]; then
  209. grep -q net.ipv4.conf.all.log_martians /etc/sysctl.conf &&
  210. sed -i."${HOJE}" 's/.*net.ipv4.conf.all.log_martians.*/net.ipv4.conf.all.log_martians=1/g' /etc/sysctl.conf &&
  211. echo "[x] Aplicada com sucesso" ||
  212. sed -i."${HOJE}" '$a\\nnet.ipv4.conf.all.log_martians=1' /etc/sysctl.conf &&
  213. echo "[x] Aplicada com sucesso"
  214. else
  215. echo "[x] Nao aplicada. Arquivo nao encontrado."
  216. fi
  217.  
  218. sysctl -w net.ipv4.conf.all.log_martians=1 > /dev/null
  219. }
  220.  
  221. sysctl_randomize_swap ()
  222. {
  223. echo "Vulnerabilidade: sysctl: sistema grava dados em memoria virtual de forma nao aleatoria"
  224.  
  225. if [[ -f /etc/sysctl.conf ]]; then
  226. grep -q kernel.randomize_va_space /etc/sysctl.conf &&
  227. sed -i."${HOJE}" 's/.*kernel.randomize_va_space.*/kernel.randomize_va_space=1/g' /etc/sysctl.conf &&
  228. echo "[x] Aplicada com sucesso" ||
  229. sed -i."${HOJE}" '$a\\nkernel.randomize_va_space=1' /etc/sysctl.conf &&
  230. echo "[x] Aplicada com sucesso"
  231. else
  232. echo "[x] Nao aplicada. Arquivo nao encontrado."
  233. fi
  234.  
  235. sysctl -w kernel.randomize_va_space=1 > /dev/null
  236. }
  237.  
  238. nfs_fstab ()
  239. {
  240. echo "Vulnerabilidade: nfs: shares sem suids"
  241.  
  242. if [[ -f /etc/fstab ]]; then
  243. sed -i."${HOJE}" '/nfs/s/defaults/defaults,nosuid/g' /etc/fstab
  244. echo "[x] Aplicada com sucesso"
  245. fi
  246. }
  247.  
  248. audit_files_dir ()
  249. {
  250. echo "Vulnerabilidade: permissoes de arquivos de auditagem"
  251.  
  252. for a in /var/adm/* /var/log/*; do
  253. if [[ -f $a ]]; then
  254. chmod 640 "$a"
  255. echo "[x] Arquivos corrigidos para 640: $a"
  256. elif [[ -d $a ]]; then
  257. chmod 750 "$a"
  258. echo "[x] Diretorios corrigidos para 750: $a"
  259. fi
  260. done
  261. }
  262.  
  263. logrotate_create ()
  264. {
  265. echo "Vulnerabilidade: logrotate: permissoes arquivos logrotate.d/logrotate.conf"
  266.  
  267. for a in /etc/logrotate.conf /etc/logrotate.d/*; do
  268. if [[ -f $a ]]; then
  269. sed -i."${HOJE}" '/create/s/^/#/;/{/a\ \ \ \ create 0640' "$a"
  270. echo "[x] Arquivos corrigidos: $a"
  271. fi
  272. done
  273. }
  274.  
  275. nfs_shares ()
  276. {
  277. echo "Vulnerabilidade: nfs: shares vulneraveis"
  278.  
  279. if [[ -f /etc/exports ]]; then
  280. sed -i."${HOJE}" '/repo/s/$/'"${SERV_AUTORIZADOS}"'/g' /etc/exports
  281. echo "[x] Aplicada com sucesso"
  282. else
  283. echo "[x] Nao aplicada. Arquivo nao encontrado."
  284. fi
  285. }
  286.  
  287. trust_files ()
  288. {
  289. # REFAZER
  290. echo "Vulnerabilidade: arquivos de confianca com permissoes incorretas"
  291.  
  292. if [[ -f /etc/hosts.equiv ]]; then
  293. chmod 600 /etc/hosts.equiv
  294. echo "[x] Arquivo /etc/hosts.equiv corrigido"
  295. fi
  296.  
  297. # for a in $(awk -F":" '{print $6}' < /etc/passwd | sort -u); do
  298. # if [[ -f $a/.netrc || -f $a/.rhosts ]]; then
  299. # chmod 600 "$a"/.netrc "$a"/.rhosts &> /dev/null
  300. # echo "[x] Arquivos .netrc e/ou .rhosts corrigidos dos usuarios: $a"
  301. # fi
  302. # done
  303.  
  304. local line
  305. awk -F":" '{print $6}' < /etc/passwd | sort -u | while IFS= read -r line; do
  306. if [[ -f $line/.netrc || -f $line/.rhosts ]]; then
  307. chmod 600 "$line"/.netrc "$line"/.rhosts &> /dev/null
  308. echo "[x] Arquivos .netrc e/ou .rhosts corrigidos dos usuarios: $a"
  309. fi
  310. done
  311. }
  312.  
  313. file_at_allow ()
  314. {
  315. echo "Vulnerabilidade: criacao do arquivo at.allow com usuarios autorizados"
  316.  
  317. if [[ ! -f /etc/at.allow ]]; then
  318. touch /etc/at.allow
  319. echo "[x] Arquivo /etc/at.allow criado com sucesso"
  320. elif [[ -f /etc/at.allow ]]; then
  321. echo "[x] Arquivo ja existe."
  322. fi
  323. }
  324.  
  325. banners_motd ()
  326. {
  327. echo "Vulnerabilidade: banners motd"
  328.  
  329. if [[ "$(grep -Eiq 'debian|buntu|mint' /etc/*release)" ]]; then
  330. chmod -x /etc/update-motd.d/*
  331. echo "[x] Nao e baseado em Debian, pulando update-motd.d"
  332. fi
  333.  
  334. for a in /etc/motd /etc/issue /etc/issue.net; do
  335. if [[ -f $a ]]; then
  336. echo ""Uso restrito a usuarios autorizados"" | tee -a "$a" > /dev/null
  337. echo "[x] Arquivo motd/banners corrigidos: $a"
  338. fi
  339. done
  340. }
  341.  
  342. sudoers_syslog ()
  343. {
  344. echo "Vulnerabilidade: sudoers: sem syslog"
  345.  
  346. if [[ -f /etc/sudoers ]]; then
  347. sed -i."${HOJE}" '$a\\nDefaults syslog=authpriv,syslog_goodpri=info,syslog_badpri=info' /etc/sudoers
  348. echo "[x] Aplicada com sucesso"
  349. fi
  350. }
  351.  
  352. pam_su ()
  353. {
  354. echo "Vulnerabilidade: pam: uso indevido do su"
  355.  
  356. if [[ -f /etc/pam.d/su ]]; then
  357. sed -i."${HOJE}" '$a\\nauth required /lib/security/pam_wheel.so group=wheel use_uid' /etc/pam.d/su
  358. echo "[x] Aplicada com sucesso"
  359. fi
  360. }
  361.  
  362. profile_tmout ()
  363. {
  364. echo "Vulnerabilidade: profile: incluir TMOUT no profile"
  365.  
  366. if [[ -f /etc/profile ]]; then
  367. sed -i."${HOJE}" '$a\\nTMOUT=900\nexport TMOUT' /etc/profile
  368. echo "[x] Aplicada com sucesso"
  369. fi
  370. }
  371.  
  372. ftp_valid_user ()
  373. {
  374. echo "Vulnerabilidade: ftp: anonimo nao autorizado"
  375.  
  376. if [[ -f /etc/ftpusers ]]; then
  377. sed -i."${HOJE}" '/^/d' /etc/ftpusers
  378. echo ftp > /etc/ftpusers
  379. echo "[x] Aplicada com sucesso"
  380. else
  381. echo "[x] Nao aplicada. Arquivo nao encontrado."
  382. fi
  383. }
  384.  
  385. dns_version_perm ()
  386. {
  387. echo "Vulnerabilidade: dns: esconder versao e permissoes de configs incorretas"
  388.  
  389. if [[ -f /amb/local/dns/named.conf ]]; then
  390. sed -i."${HOJE}" '/options {/a\ \ \ \ \ \ \ \ version "DNS server";' /amb/local/dns/named.conf
  391. chmod 750 /amb/local/dns/*.conf
  392. echo "[x] Aplicada com sucesso"
  393. elif [[ -f /etc/named.conf ]]; then
  394. sed -i."${HOJE}" '/options {/a\ \ \ \ \ \ \ \ version "DNS server";' /etc/named.conf
  395. for a in /etc/nscd.conf /etc/rndc.conf /etc/rndc.key /etc/named.conf /etc/bind/*; do
  396. if [[ -f $a ]]; then
  397. chmod 750 "$a"
  398. fi
  399. done
  400. echo "[x] Aplicada com sucesso"
  401. else
  402. echo "[x] Nao aplicada. Arquivo nao encontrado."
  403. fi
  404. }
  405.  
  406. sshd_rhosts ()
  407. {
  408. echo "Vulnerabilidade: sshd: desabilitar suporte rhosts sshd"
  409.  
  410. if [[ -f /etc/ssh/sshd_config ]]; then
  411. sed -i."${HOJE}" 's/.*IgnoreRhosts.*/IgnoreRhosts yes/g;s/.*RhostsRSAAuthentication no/RhostsRSAAuthentication no/g' /etc/ssh/sshd_config
  412. echo "[x] Aplicada com sucesso"
  413. fi
  414. }
  415.  
  416. sshd_version ()
  417. {
  418. echo "Vulnerabilidade: sshd: habilitar versao 2 sshd"
  419.  
  420. if [[ -f /etc/ssh/sshd_config ]]; then
  421. sed -i."${HOJE}" 's/.*Protocol [0-9]/Protocol 2/g' /etc/ssh/sshd_config
  422. echo "[x] Aplicada com sucesso"
  423. fi
  424. }
  425.  
  426. sshd_startups ()
  427. {
  428. echo "Vulnerabilidade: sshd: maximo de sessoes simulnateneas"
  429.  
  430. if [[ -f /etc/ssh/sshd_config ]]; then
  431. sed -i."${HOJE}" 's/.*MaxStartups [0-9]/MaxStartups 5/g' /etc/ssh/sshd_config
  432. echo "[x] Aplicada com sucesso"
  433. fi
  434. }
  435.  
  436. sshd_empty_passwords ()
  437. {
  438. echo "Vulnerabilidade: sshd: desabilitar login usuario sem senha"
  439.  
  440. if [[ -f /etc/ssh/sshd_config ]]; then
  441. sed -i."${HOJE}" 's/.*PermitEmptyPasswords.*/PermitEmptyPasswords no/g' /etc/ssh/sshd_config
  442. echo "[x] Aplicada com sucesso"
  443. fi
  444. }
  445.  
  446. sshd_keep_alive ()
  447. {
  448. echo "Vulnerabilidade: sshd: desabilitar sessoes inativas"
  449.  
  450. if [[ -f /etc/ssh/sshd_config ]]; then
  451. sed -i."${HOJE}" 's/.*TCPKeepAlive.*/TCPKeepAlive yes/g' /etc/ssh/sshd_config
  452. echo "[x] Aplicada com sucesso"
  453. fi
  454. }
  455.  
  456. sshd_privilege_separation ()
  457. {
  458. echo "Vulnerabilidade: sshd: servico com privilegios de super-usuario desnecessarios"
  459.  
  460. if [[ -f /etc/ssh/sshd_config ]]; then
  461. sed -i."${HOJE}" 's/.*UsePrivilegeSeparation.*/UsePrivilegeSeparation yes/g' /etc/ssh/sshd_config
  462. echo "[x] Aplicada com sucesso"
  463. fi
  464. }
  465.  
  466. sshd_alive_interval ()
  467. {
  468. echo "Vulnerabilidade: sshd: espera sessoes inativas muito alto"
  469.  
  470. if [[ -f /etc/ssh/sshd_config ]]; then
  471. sed -i."${HOJE}" 's/.*ClientAliveInterval.*/ClientAliveInterval 900/g;s/.*ClientAliveCountMax.*/ClientAliveCountMax 0/g' /etc/ssh/sshd_config
  472. echo "[x] Aplicada com sucesso"
  473. fi
  474. }
  475.  
  476. samba_guest ()
  477. {
  478. echo "Vulnerabilidade: samba: ausencia de autenticacao para acesso aos compartilhamentos"
  479.  
  480. if [[ -f /amb/local/samba/smb.conf ]]; then
  481. sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ guest ok = no' /amb/local/samba/smb.conf
  482. echo "[x] Aplicada com sucesso arquivo /amb"
  483. elif [[ -f /etc/samba/smb.conf ]]; then
  484. sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ guest ok = no' /etc/samba/smb.conf
  485. echo "[x] Aplicada com sucesso arquivo /etc"
  486. else
  487. echo "[x] Nao aplicada. Arquivo nao encontrado."
  488. fi
  489. }
  490.  
  491. samba_null_pw ()
  492. {
  493. echo "Vulnerabilidade: samba: autenticacao de usuarios com senha nula"
  494.  
  495. if [[ -f /amb/local/samba/smb.conf ]]; then
  496. sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ null Passwords = no' /amb/local/samba/smb.conf
  497. echo "[x] Aplicada com sucesso arquivo /amb"
  498. elif [[ -f /etc/samba/smb.conf ]]; then
  499. sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ null Passwords = no' /etc/samba/smb.conf
  500. echo "[x] Aplicada com sucesso arquivo /etc"
  501. else
  502. echo "[x] Nao aplicada. Arquivo nao encontrado."
  503. fi
  504. }
  505.  
  506. samba_encrypt_pw ()
  507. {
  508. echo "Vulnerabilidade: samba: criptografia de senhas desabilitadas"
  509.  
  510. if [[ -f /amb/local/samba/smb.conf ]]; then
  511. sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ encrypt passwords=yes' /amb/local/samba/smb.conf
  512. echo "[x] Aplicada com sucesso arquivo /amb"
  513. elif [[ -f /etc/samba/smb.conf ]]; then
  514. sed -i."${HOJE}" '/global]/a\ \ \ \ \ \ \ \ encrypt passwords=yes' /etc/samba/smb.conf
  515. echo "[x] Aplicada com sucesso arquivo /etc"
  516. else
  517. echo "[x] Nao aplicada. Arquivo nao encontrado."
  518. fi
  519. }
  520.  
  521. postfix_validate_email ()
  522. {
  523. echo "Vulnerabilidade: postfix: verificacao de validade de email"
  524.  
  525. if [[ -f /amb/local/postfix/main.cf ]]; then
  526. grep -q disable_vrfy_command /amb/local/postfix/main.cf &&
  527. sed -i."${HOJE}" 's/.*disable_vrfy_command.*/disable_vrfy_command = yes/g' /amb/local/postfix/main.cf &&
  528. echo "[x] Aplicada com sucesso arquivo /amb" ||
  529. sed -i."${HOJE}" '$a\\ndisable_vrfy_command = yes' /amb/local/postfix/main.cf &&
  530. echo "[x] Aplicada com sucesso arquivo /amb"
  531. elif [[ -f /etc/postfix/main.cf ]]; then
  532. grep -q disable_vrfy_command /etc/postfix/main.cf &&
  533. sed -i."${HOJE}" 's/.*disable_vrfy_command.*/disable_vrfy_command = yes/g' /etc/postfix/main.cf &&
  534. echo "[x] Aplicada com sucesso arquivo /etc" ||
  535. sed -i."${HOJE}" '$a\\ndisable_vrfy_command = yes' /etc/postfix/main.cf &&
  536. echo "[x] Aplicada com sucesso arquivo /etc"
  537. else
  538. echo "[x] Nao aplicada. Arquivo nao encontrado."
  539. fi
  540. }
  541.  
  542. sendmail_blame_verification ()
  543. {
  544. echo "Vulnerabilidade: sendmail: verificacao de permissao de arquivos desativada"
  545.  
  546. if [[ -f /amb/local/sendmail/sendmail.cf ]]; then
  547. sed -i."${HOJE}" 's/.*DontBlameSendmail.*/O DontBlameSendmail=safe/g' /amb/local/sendmail/sendmail.cf
  548. echo "[x] Aplicada com sucesso arquivo /amb"
  549. elif [[ -f /etc/mail/sendmail.cf ]]; then
  550. sed -i."${HOJE}" 's/.*DontBlameSendmail.*/O DontBlameSendmail=safe/g' /etc/mail/sendmail.cf
  551. echo "[x] Aplicada com sucesso arquivo /etc"
  552. else
  553. echo "[x] Nao aplicada. Arquivo nao encontrado."
  554. fi
  555. }
  556.  
  557. sendmail_view_queue ()
  558. {
  559. echo "Vulnerabilidade: sendmail: visualizacao da fila de emails irrestrita e permissao incorretas do diretorio da fila de emails"
  560.  
  561. if [[ -L /usr/sbin/sendmail ]]; then
  562. ls -l /usr/sbin/sendmail | awk -F" " '{print $11}' | xargs chmod 0700
  563. echo "[x] Aplicada com sucesso linksimbolico"
  564. elif [[ -f /usr/sbin/sendmail ]]; then
  565. chmod 0700 /usr/sbin/sendmail
  566. echo "[x] Aplicada com sucesso binario"
  567. elif [[ -d /var/spool/mqueue ]]; then
  568. chmod 0700 /var/spool/mqueue
  569. else
  570. echo "[x] Nao aplicada. Arquivo nao encontrado."
  571. fi
  572. }
  573.  
  574. sendmail_help ()
  575. {
  576. echo "Vulnerabilidade: sendmail: help mostrando infos do sistema"
  577.  
  578. if [[ -f /amb/local/sendmail/sendmail.cf ]]; then
  579. sed -i."${HOJE}" 's/.*HelpFile.*/O HelpFile=\/etc\/mail\/empty.txt/g' /amb/local/sendmail/sendmail.cf
  580. touch /etc/mail/empty.txt
  581. echo "[x] Aplicada com sucesso arquivo /amb"
  582. elif [[ -f /etc/mail/sendmail.cf ]]; then
  583. sed -i."${HOJE}" 's/.*HelpFile.*/O HelpFile=\/etc\/mail\/empty.txt/g' /etc/mail/sendmail.cf
  584. touch /etc/mail/empty.txt
  585. echo "[x] Aplicada com sucesso arquivo /etc"
  586. else
  587. echo "[x] Nao aplicada. Arquivo nao encontrado."
  588. fi
  589. }
  590.  
  591. sendmail_restrict ()
  592. {
  593. echo "Vulnerabilidade: sendmail: verificacao de validade de email, processamento da fila de emails nao restritiva e visualizacao da fila de emails irrestrita"
  594.  
  595. if [[ -f /amb/local/sendmail/sendmail.cf ]]; then
  596. sed -i."${HOJE}" '/PrivacyOptions/s/$/,novrfy,noexpn,restrictqrun,restrictmailq/' /amb/local/sendmail/sendmail.cf
  597. echo "[x] Aplicada com sucesso arquivo /amb"
  598. elif [[ -f /etc/mail/sendmail.cf ]]; then
  599. sed -i."${HOJE}" '/PrivacyOptions/s/$/,novrfy,noexpn,restrictqrun,restrictmailq/' /etc/mail/sendmail.cf
  600. echo "[x] Aplicada com sucesso arquivo /etc"
  601. else
  602. echo "[x] Nao aplicada. Arquivo nao encontrado."
  603. fi
  604. }
  605.  
  606. sendmail_greeting ()
  607. {
  608. echo "Vulnerabilidade: sendmail: esconder versao"
  609.  
  610. if [[ -f /amb/local/sendmail/sendmail.cf ]]; then
  611. sed -i."${HOJE}" 's/.*SmtpGreetingMessage.*/O SmtpGreetingMessage=/g' /amb/local/sendmail/sendmail.cf
  612. echo "[x] Aplicada com sucesso arquivo /amb"
  613. elif [[ -f /etc/mail/sendmail.cf ]]; then
  614. sed -i."${HOJE}" 's/.*SmtpGreetingMessage.*/O SmtpGreetingMessage=/g' /etc/mail/sendmail.cf
  615. echo "[x] Aplicada com sucesso arquivo /etc"
  616. else
  617. echo "[x] Nao aplicada. Arquivo nao encontrado."
  618. fi
  619. }
  620.  
  621. services_unnecessary ()
  622. {
  623. echo "Vulnerabilidade: servicos desnecessarios"
  624.  
  625. if [[ "$(grep -Eiq 'debian|buntu|mint' /etc/*release)" ]]; then
  626. echo "Debian/*buntu"
  627. local line
  628. cat < "$SERVICOS" | while IFS= read -r line; do
  629. update-rc.d "$line" disable
  630. echo "[x] Servicos desativados: $line"
  631. done
  632. elif [[ "$(grep -Eiq 'centos|oracle|fedora|redhat' /etc/*release | grep -Eiq '5|6')" ]]; then
  633. echo "RH5/RH6"
  634. local line
  635. cat < "$SERVICOS" | while IFS= read -r line; do
  636. chkconfig "$line" off
  637. echo "[x] Servicos desativados: $line"
  638. done
  639. else
  640. echo "RH7"
  641. local line
  642. cat < "$SERVICOS" | while IFS= read -r line; do
  643. systemctl disable "$line"
  644. echo "[x] Servicos desativados: $line"
  645. done
  646. fi
  647. }
  648.  
  649. suid_unnecessary ()
  650. {
  651. echo "Vulnerabilidade: suid em arquivos desnecessarios"
  652.  
  653. local line
  654. cat < "$SUID_ARQUIVOS" | while IFS= read -r line; do
  655. if [[ -f "$line" ]]; then
  656. chmod -s "$line"
  657. echo "[x] Arquivos que foram removidos o suid: $line"
  658. fi
  659. done
  660. }
  661.  
  662. files_other_unnecessary ()
  663. {
  664. echo "Vulnerabilidade: escrita para grupo em arquivos desnecessarios"
  665.  
  666. local line
  667. cat < "$ESCRITA_ARQUIVOS" | while IFS= read -r line; do
  668. if [[ -f "$line" ]]; then
  669. chmod og-w "$line"
  670. echo "[x] Arquivos que foram removidos a escrita para grupo e outros: $line"
  671. fi
  672. done
  673. }
  674.  
  675. ntp_not_working ()
  676. {
  677. # Aplicar p/ DEBIAN LIKE
  678. echo "Vulnerabilidade: ntp: ausencia de sincronia data/hora"
  679.  
  680. if [[ "$(grep -Eiq 'centos|oracle|fedora|redhat' /etc/*release | grep -Eiq '5|6')" ]]; then
  681. echo "RH5/RH6"
  682. chkconfig ntpd on
  683. ntpstat
  684. if ! ntpstat; then
  685. ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
  686. echo "[x] Servico iniciado"
  687. elif ntpstat; then
  688. echo "[x] Servico esta funcionando"
  689. fi
  690. else
  691. echo "RH7"
  692. systemctl enable ntpd
  693. ntpstat
  694. if ! ntpstat; then
  695. ntpd -u ntp:ntp -p /var/run/ntpd.pid -g
  696. echo "[x] Servico iniciado"
  697. elif ntpstat; then
  698. echo "[x] Servico esta funcionando"
  699. fi
  700. fi
  701. }
  702.  
  703.  
  704. main ()
  705. {
  706. if [[ $SISTEMA = "Linux" ]]; then
  707.  
  708. echo "Inicio correcao de vulnerabilidades"
  709. echo "Hostname: ${HOST} - Sistema: ${SISTEMA} - IPs: ${IP} - Data: $(date +%d/%m/%Y-%T)"
  710. must_root
  711. log_exist
  712. system_ctrlaltdel
  713. dns_spoofing
  714. sysctl_interfaces_spoofing
  715. sysctl_icmp_accept
  716. sysctl_forward_ipv4
  717. sysctl_forward_ipv6
  718. sysctl_redirect_allowed
  719. sysctl_bogus_error
  720. sysctl_reply_router
  721. sysctl_log_martians
  722. # sysctl_randomize_swap
  723. nfs_fstab
  724. audit_files_dir
  725. logrotate_create
  726. nfs_shares
  727. trust_files
  728. file_at_allow
  729. banners_motd
  730. sudoers_syslog
  731. pam_su
  732. profile_tmout
  733. ftp_valid_user
  734. dns_version_perm
  735. sshd_rhosts
  736. sshd_version
  737. sshd_startups
  738. sshd_empty_passwords
  739. sshd_keep_alive
  740. sshd_privilege_separation
  741. sshd_alive_interval
  742. # samba_guest
  743. samba_null_pw
  744. samba_encrypt_pw
  745. postfix_validate_email
  746. sendmail_blame_verification
  747. sendmail_view_queue
  748. sendmail_help
  749. sendmail_restrict
  750. sendmail_greeting
  751. # services_unnecessary
  752. # suid_unnecessary
  753. # files_other_unnecessary
  754. # ntp_not_working
  755.  
  756. else
  757.  
  758. echo "Hostname: ${HOST} - Sistema: ${SISTEMA} - IPs: ${IP} - Data: $(date +%d/%m/%Y-%T)"
  759. echo "Sistema nao suportado"
  760. exit
  761.  
  762. fi
  763.  
  764. }
  765.  
  766. main >> "$LOG" 2>&1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement