nginx-lurkers.conf 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. # A filter to block random test attacks on my server
  2. #
  3. # Matches e.g.
  4. # put some new matches here
  5. #
  6. [Definition]
  7. bashfragments_generic = \(\) \{ :;\};|\(\) \{ :; \};|\(\) \{.*\};
  8. bashfragments_2 = /bin/bash -|bash -
  9. ## Starting with shellshock
  10. failregex = ^<HOST> -.* "(?:%(bashfragments_generic)s)|(?:%(bashfragments_2)s)
  11. ## Admin attacks
  12. ^<HOST> -.* "(POST|HEAD|GET) /administrator/
  13. ^<HOST> -.* "(POST|HEAD|GET) .*/administrator/
  14. ^<HOST> -.* "(POST|HEAD|GET) /admin/
  15. ^<HOST> -.* "(POST|HEAD|GET) .*/admin/
  16. ^<HOST> -.* "(POST|HEAD|GET) /manager/
  17. ^<HOST> -.* "(POST|HEAD|GET) /dbadmin/
  18. ^<HOST> -.* "(POST|HEAD|GET) /pma
  19. ^<HOST> -.* "(POST|HEAD|GET) /phpMyAdmin/
  20. ^<HOST> -.* "(POST|HEAD|GET) /phpmyadmin
  21. ## wordpress attacks
  22. ^<HOST> -.* "(POST|HEAD|GET) /wordpress/
  23. ^<HOST> -.* "(POST|HEAD|GET) /wp/
  24. ^<HOST> -.* "(POST|HEAD|GET) /wp-include/
  25. ^<HOST> -.* "(POST|HEAD|GET) .*/wp-admin/
  26. ^<HOST> -.* "(POST|HEAD|GET) .*wp-login.php
  27. ^<HOST> -.* "(POST|HEAD|GET) /wp-json/
  28. ## CGI attacks
  29. ^<HOST> -.* "(POST|HEAD|GET) /cgi-bin/
  30. ^<HOST> -.* "(POST|HEAD|GET) /cgi-mod/
  31. ^<HOST> -.* "(POST|HEAD|GET) /cgi-sys/
  32. ^<HOST> -.* "(POST|HEAD|GET) /sys-cgi/
  33. ^<HOST> -.* "(POST|HEAD|GET) /cgi-bin.*
  34. ^<HOST> -.* "(POST|HEAD|GET) /cgi/common.cgi
  35. ## Generic attacks
  36. ^<HOST> -.* "(POST|HEAD|GET) .*setup.php
  37. ^<HOST> -.* "(POST|HEAD|GET) .*login.php
  38. ^<HOST> -.* "(POST|HEAD|GET) .*admin.php
  39. ^<HOST> -.* "(POST|HEAD|GET) /login/
  40. ^<HOST> -.* "(POST|HEAD|GET) /script
  41. ^<HOST> -.* "(POST|HEAD|GET) /phppath/
  42. ^<HOST> -.* "(POST|HEAD|GET) .*/install/
  43. ## File system attacks
  44. ^<HOST> -.* "(POST|HEAD|GET) /.ssh
  45. ^<HOST> -.* "(POST|HEAD|GET) /.git
  46. ^<HOST> -.* "(POST|HEAD|GET) /readme.html
  47. ^<HOST> -.* "(POST|HEAD|GET) /CHANGELOG.txt
  48. ^<HOST> -.* "(POST|HEAD|GET) /.env
  49. ### WTF attacks
  50. ^<HOST> -.* ""
  51. ^<HOST> -.* "quit"
  52. ^<HOST> -.* "test"
  53. ## This should block binary?
  54. ^<HOST> -.* "\S*\\x
  55. ## Blocks odd attempt to redirect?
  56. ^<HOST> -.* "(POST|HEAD|GET) http.*
  57. ^<HOST> -.* "SSH-2.0-libssh2_1.7.0"
  58. ^<HOST> -.* "JDWP-Handshake
  59. ^<HOST> -.* "SSH-2.0-Go
  60. ## Unwanted Methods
  61. ^<HOST> -.* "PROPFIND
  62. ^<HOST> -.* "CONNECT
  63. ^<HOST> -.* "PUT
  64. ^<HOST> -.* "OPTIONS
  65. ## Bad Redirects
  66. ## https? makes 's' optional, ending /? makes trailing slash optional
  67. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://.*.ru/?"
  68. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://.*.xrus.org/?"
  69. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://avtoguru.pro/?"
  70. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://narosty.com/?"
  71. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://azartmix.com/?"
  72. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://kinoflux.net/?"
  73. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://souvenir.cc/?"
  74. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://meds-online24.com/?"
  75. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://mylida.org/?"
  76. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://dokfilms.net/?"
  77. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://chcu.net/?"
  78. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://surgut.xrus.org/?"
  79. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://xn--b1ag5cfn.xn--p1ai/?"
  80. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://www.avtolombard-krasnodar.com/?"
  81. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://bonkers.name/?"
  82. ^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://.*.ua/?"
  83. #^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://"
  84. #^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://"
  85. #^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://"
  86. #^<HOST> -.* "(POST|HEAD|GET) .*" [0-9]+ [0-9]+ "https?://"
  87. ## Misc attacks I havelogged
  88. ^<HOST> -.* "(POST|HEAD|GET) /tmUnblock.cgi
  89. ^<HOST> -.* "(POST|HEAD|GET) /muieblackcat
  90. ^<HOST> -.* "(POST|HEAD|GET) /themes/elastixneo/ie.css
  91. ^<HOST> -.* "(POST|HEAD|GET) /docs/funcspecs/3.jsp
  92. ^<HOST> -.* "(POST|HEAD|GET) /a2billing/
  93. ^<HOST> -.* "(POST|HEAD|GET) /user/soapCaller.bs
  94. ^<HOST> -.* "(POST|HEAD|GET) /w00tw00t.*
  95. ^<HOST> -.* "(POST|HEAD|GET) /HNAP1/
  96. ^<HOST> -.* "(POST|HEAD|GET) /rom-0
  97. ^<HOST> -.* "(POST|HEAD|GET) /hndUnblock.cgi
  98. ^<HOST> -.* "(POST|HEAD|GET) /checkout/
  99. ^<HOST> -.* "(POST|HEAD|GET) /Ringing.at.your.dorbell
  100. ^<HOST> -.* "(POST|HEAD|GET) /_asterisk
  101. ^<HOST> -.* "(POST|HEAD|GET) /server-status
  102. ^<HOST> -.* "(POST|HEAD|GET) /language/Swedish*/string.js
  103. ^<HOST> -.* "(POST|HEAD|GET) /../../../../../../../mnt/mtd/vBj5
  104. ^<HOST> -.* "(POST|HEAD|GET) //console/j_security_check
  105. ^<HOST> -.* "(POST|HEAD|GET) /xmlrpc.php
  106. ## Disabled due to ttrss and unsanitized rss?
  107. #^<HOST> -.* "(POST|HEAD|GET) /imgs/*
  108. ^<HOST> -.* "(POST|HEAD|GET) /tag/ HTTP
  109. ^<HOST> -.* "(POST|HEAD|GET) /invoker/EJBInvokerServlet
  110. ^<HOST> -.* "(POST|HEAD|GET) /stssys.htm
  111. ^<HOST> -.* "(POST|HEAD|GET) .*/elfinder.html
  112. ^<HOST> -.* "(POST|HEAD|GET) /web-console
  113. ^<HOST> -.* "(POST|HEAD|GET) /jmx-console
  114. ^<HOST> -.* "(POST|HEAD|GET) /invoker/JMXInvokerServlet
  115. ^<HOST> -.* "(POST|HEAD|GET) /x HTTP
  116. ^<HOST> -.* "(POST|HEAD|GET) /jenkins/script
  117. ^<HOST> -.* "(POST|HEAD|GET) /RemoteControl.html
  118. ^<HOST> -.* "(POST|HEAD|GET) /www/start.html
  119. ^<HOST> -.* "(POST|HEAD|GET) /Http/DataLayCfg.xml
  120. ^<HOST> -.* "(POST|HEAD|GET) /current_config/
  121. ^<HOST> -.* "(POST|HEAD|GET) /struts2-showcase/
  122. ^<HOST> -.* "(POST|HEAD|GET) /pmd
  123. ^<HOST> -.* "(POST|HEAD|GET) /recordings/
  124. ^<HOST> -.* "(POST|HEAD|GET) /logo_img.php.suspected
  125. ^<HOST> -.* "(POST|HEAD|GET) /webdav
  126. ^<HOST> -.* "(POST|HEAD|GET) /sftp-config.json
  127. ^<HOST> -.* "(POST|HEAD|GET) /ccvv
  128. ^<HOST> -.* "(POST|HEAD|GET) /xxbb
  129. ## Blocks after requests with null useragent.
  130. ^<HOST> -.* "(POST|HEAD|GET).*"-"$
  131. ^<HOST> -.* "(POST|HEAD|GET) /cfg/000000000000.cfg
  132. ^<HOST> -.* "(POST|HEAD|GET) /RPC2
  133. ## Blocks after request with useragent set to literal "null"
  134. ^<HOST> -.* "(POST|HEAD|GET).*"null"$
  135. ^<HOST> -.* "(POST|HEAD|GET) /KlfhsYYs
  136. ^<HOST> -.* "(POST|HEAD|GET) /static/UI_win7/js/login.js
  137. ## Blocks attacks sending characters used for shell commands
  138. ^<HOST> -.* "(POST|HEAD|GET) .*(%%21|%%22|%%23|%%24|%%25|%%26|%%27|%%28|%%29|%%2A|%%2C|%%3B|%%5B|%%5C|%%5D|%%60)
  139. ^<HOST> -.* "(POST|HEAD|GET) /nogFoot
  140. ^<HOST> -.* "(POST|HEAD|GET) /nogHead
  141. ^<HOST> -.* "(POST|HEAD|GET) /user/register
  142. ^<HOST> -.* "(POST|HEAD|GET) /rss.php\?mode=recent
  143. ^<HOST> -.* "(POST|HEAD|GET) /wls-wsat/CoordinatorPortType
  144. ^<HOST> -.* "(POST|HEAD|GET) /stalker_portal
  145. #^<HOST> -.* "(POST|HEAD|GET)
  146. #^<HOST> -.* "(POST|HEAD|GET)
  147. #^<HOST> -.* "(POST|HEAD|GET)
  148. #^<HOST> -.* "(POST|HEAD|GET)
  149. #^<HOST> -.* "(POST|HEAD|GET)
  150. #^<HOST> -.* "(POST|HEAD|GET)
  151. #^<HOST> -.* "(POST|HEAD|GET)
  152. #ignoreregex = ^<HOST> -.* "(POST|HEAD|GET) /.*
  153. ignoreregex = ^<HOST> -.* "(POST|HEAD|GET) /.well-known/openpgpkey