One Hat Cyber Team
Your IP :
216.73.217.135
Server IP :
185.33.55.30
Server :
Linux cl30.webspacecontrol.com 5.14.0-611.38.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 10 17:21:28 EDT 2026 x86_64
Server Software :
Apache
PHP Version :
8.1.34
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
lib64
/
nagios
/
plugins
/
custom
/
Edit File:
check_rbl
#!/opt/alt/php56/usr/bin/php <?php /** * This class is a Nagios plugin to check DotRoll and Microware SMTP RBL availability */ class NagiosRBLCheckPlugin { /** * Nagios exit status codes */ const NAGIOS_EXIT_STATUS_OK = 0; const NAGIOS_EXIT_STATUS_WARNING = 1; const NAGIOS_EXIT_STATUS_CRITICAL = 2; const NAGIOS_EXIT_STATUS_UNKNOWN = 3; const NAGIOS_EXIT_STATUS_DEPENDED = 4; // protected $RBL = array('dnsbl-3.uceprotect.net','hostkarma.junkemailfilter.com','cbl.abuseat.org', 'b.barracudacentral.org', 'bl.spamcop.net', 'dnsbl.sorbs.net', 'http.dnsbl.sorbs.net', 'dul.dnsbl.sorbs.net', 'misc.dnsbl.sorbs.net', 'smtp.dnsbl.sorbs.net', 'socks.dnsbl.sorbs.net', 'spam.dnsbl.sorbs.net', 'web.dnsbl.sorbs.net', 'zombie.dnsbl.sorbs.net', 'dnsbl-1.uceprotect.net', 'dnsbl-2.uceprotect.net', 'pbl.spamhaus.org', 'sbl.spamhaus.org', 'xbl.spamhaus.org', 'zen.spamhaus.org', 'bl.spamcannibal.org', 'psbl.surriel.com', 'ubl.unsubscore.com', 'rbl.spamlab.com', 'dyna.spamrats.com', 'noptr.spamrats.com', 'spam.spamrats.com', 'cbl.anti-spam.org.cn', 'cdl.anti-spam.org.cn', 'dnsbl.inps.de', 'drone.abuse.ch', 'httpbl.abuse.ch', 'korea.services.net', 'short.rbl.jp', 'virus.rbl.jp', 'spamrbl.imp.ch', 'wormrbl.imp.ch', 'virbl.bit.nl', 'rbl.suresupport.com', 'dsn.rfc-ignorant.org', 'ips.backscatterer.org', 'spamguard.leadmon.net', 'opm.tornevall.org', 'netblock.pedantic.org', 'multi.surbl.org', 'ix.dnsbl.manitu.net', 'tor.dan.me.uk', 'rbl.efnetrbl.org', 'dnsbl.dronebl.org', 'db.wpbl.info', 'rbl.interserver.net', 'bogons.cymru.com', 'csi.cloudmark.com'); // protected $RBL = array('cbl.abuseat.org', 'b.barracudacentral.org', 'bl.spamcop.net', 'dnsbl.sorbs.net', 'http.dnsbl.sorbs.net', 'dul.dnsbl.sorbs.net', 'misc.dnsbl.sorbs.net', 'smtp.dnsbl.sorbs.net', 'socks.dnsbl.sorbs.net', 'spam.dnsbl.sorbs.net', 'web.dnsbl.sorbs.net', 'zombie.dnsbl.sorbs.net', 'dnsbl-1.uceprotect.net', 'dnsbl-2.uceprotect.net', 'pbl.spamhaus.org', 'sbl.spamhaus.org', 'xbl.spamhaus.org', 'zen.spamhaus.org', 'bl.spamcannibal.org', 'psbl.surriel.com', 'ubl.unsubscore.com', 'rbl.spamlab.com', 'dyna.spamrats.com', 'noptr.spamrats.com', 'spam.spamrats.com', 'cbl.anti-spam.org.cn', 'cdl.anti-spam.org.cn', 'dnsbl.inps.de', 'drone.abuse.ch', 'httpbl.abuse.ch', 'korea.services.net', 'short.rbl.jp', 'virus.rbl.jp', 'spamrbl.imp.ch', 'wormrbl.imp.ch', 'virbl.bit.nl', 'rbl.suresupport.com', 'dsn.rfc-ignorant.org', 'spamguard.leadmon.net', 'ips.backscatterer.org', 'opm.tornevall.org', 'netblock.pedantic.org', 'multi.surbl.org', 'ix.dnsbl.manitu.net', 'tor.dan.me.uk', 'rbl.efnetrbl.org', 'dnsbl.dronebl.org', 'db.wpbl.info', 'bogons.cymru.com', 'csi.cloudmark.com', 'dnsrbl.org'); // protected $RBL = array('cbl.abuseat.org', 'b.barracudacentral.org', 'bl.spamcop.net', 'dnsbl.sorbs.net', 'http.dnsbl.sorbs.net', 'dul.dnsbl.sorbs.net', 'misc.dnsbl.sorbs.net', 'smtp.dnsbl.sorbs.net', 'socks.dnsbl.sorbs.net', 'spam.dnsbl.sorbs.net', 'web.dnsbl.sorbs.net', 'zombie.dnsbl.sorbs.net', 'dnsbl-1.uceprotect.net', 'dnsbl-2.uceprotect.net', 'pbl.spamhaus.org', 'sbl.spamhaus.org', 'xbl.spamhaus.org', 'zen.spamhaus.org', 'bl.spamcannibal.org', 'psbl.surriel.com', 'ubl.unsubscore.com', 'rbl.spamlab.com', 'dyna.spamrats.com', 'noptr.spamrats.com', 'spam.spamrats.com', 'cbl.anti-spam.org.cn', 'cdl.anti-spam.org.cn', 'dnsbl.inps.de', 'drone.abuse.ch', 'httpbl.abuse.ch', 'korea.services.net', 'short.rbl.jp', 'virus.rbl.jp', 'spamrbl.imp.ch', 'wormrbl.imp.ch', 'virbl.bit.nl', 'rbl.suresupport.com', 'dsn.rfc-ignorant.org', 'spamguard.leadmon.net', 'opm.tornevall.org', 'netblock.pedantic.org', 'multi.surbl.org', 'ix.dnsbl.manitu.net', 'tor.dan.me.uk', 'rbl.efnetrbl.org', 'dnsbl.dronebl.org', 'db.wpbl.info', 'bogons.cymru.com', 'csi.cloudmark.com', 'dnsrbl.org'); // protected $RBL = array('cbl.abuseat.org', 'b.barracudacentral.org', 'bl.spamcop.net', 'dnsbl.sorbs.net', 'http.dnsbl.sorbs.net', 'dul.dnsbl.sorbs.net', 'misc.dnsbl.sorbs.net', 'smtp.dnsbl.sorbs.net', 'socks.dnsbl.sorbs.net', 'spam.dnsbl.sorbs.net', 'web.dnsbl.sorbs.net', 'zombie.dnsbl.sorbs.net', 'dnsbl-1.uceprotect.net', 'dnsbl-2.uceprotect.net', 'pbl.spamhaus.org', 'sbl.spamhaus.org', 'xbl.spamhaus.org', 'zen.spamhaus.org', 'bl.spamcannibal.org', 'psbl.surriel.com', 'ubl.unsubscore.com', 'rbl.spamlab.com', 'dyna.spamrats.com', 'noptr.spamrats.com', 'spam.spamrats.com', 'cbl.anti-spam.org.cn', 'cdl.anti-spam.org.cn', 'dnsbl.inps.de', 'drone.abuse.ch', 'httpbl.abuse.ch', 'korea.services.net', 'short.rbl.jp', 'virus.rbl.jp', 'spamrbl.imp.ch', 'wormrbl.imp.ch', 'virbl.bit.nl', 'rbl.suresupport.com', 'dsn.rfc-ignorant.org', 'spamguard.leadmon.net', 'opm.tornevall.org', 'netblock.pedantic.org', 'multi.surbl.org', 'ix.dnsbl.manitu.net', 'tor.dan.me.uk', 'dnsbl.dronebl.org', 'db.wpbl.info', 'bogons.cymru.com', 'csi.cloudmark.com', 'dnsrbl.org'); // protected $RBL = array('hostkarma.junkemailfilter.com', 'cbl.abuseat.org', 'b.barracudacentral.org', 'bl.spamcop.net', 'dnsbl.sorbs.net', 'http.dnsbl.sorbs.net', 'dul.dnsbl.sorbs.net', 'misc.dnsbl.sorbs.net', 'smtp.dnsbl.sorbs.net', 'socks.dnsbl.sorbs.net', 'spam.dnsbl.sorbs.net', 'web.dnsbl.sorbs.net', 'zombie.dnsbl.sorbs.net', 'dnsbl-1.uceprotect.net', 'dnsbl-2.uceprotect.net', 'pbl.spamhaus.org', 'sbl.spamhaus.org', 'xbl.spamhaus.org', 'zen.spamhaus.org', 'bl.spamcannibal.org', 'psbl.surriel.com', 'ubl.unsubscore.com', 'rbl.spamlab.com', 'dyna.spamrats.com', 'noptr.spamrats.com', 'spam.spamrats.com', 'cbl.anti-spam.org.cn', 'cdl.anti-spam.org.cn', 'dnsbl.inps.de', 'drone.abuse.ch', 'httpbl.abuse.ch', 'korea.services.net', 'short.rbl.jp', 'virus.rbl.jp', 'spamrbl.imp.ch', 'wormrbl.imp.ch', 'virbl.bit.nl', 'rbl.suresupport.com', 'dsn.rfc-ignorant.org', 'spamguard.leadmon.net', 'opm.tornevall.org', 'netblock.pedantic.org', 'multi.surbl.org', 'ix.dnsbl.manitu.net', 'tor.dan.me.uk', 'dnsbl.dronebl.org', 'db.wpbl.info', 'bogons.cymru.com', 'csi.cloudmark.com', 'dnsrbl.org'); // protected $RBL = array('cbl.abuseat.org', 'b.barracudacentral.org', 'bl.spamcop.net', 'dnsbl.sorbs.net', 'http.dnsbl.sorbs.net', 'dul.dnsbl.sorbs.net', 'misc.dnsbl.sorbs.net', 'smtp.dnsbl.sorbs.net', 'socks.dnsbl.sorbs.net', 'spam.dnsbl.sorbs.net', 'web.dnsbl.sorbs.net', 'zombie.dnsbl.sorbs.net', 'dnsbl-1.uceprotect.net', 'dnsbl-2.uceprotect.net', 'pbl.spamhaus.org', 'sbl.spamhaus.org', 'xbl.spamhaus.org', 'zen.spamhaus.org', 'psbl.surriel.com', 'ubl.unsubscore.com', 'rbl.spamlab.com', 'dyna.spamrats.com', 'noptr.spamrats.com', 'spam.spamrats.com', 'cbl.anti-spam.org.cn', 'cdl.anti-spam.org.cn', 'dnsbl.inps.de', 'drone.abuse.ch', 'httpbl.abuse.ch', 'korea.services.net', 'short.rbl.jp', 'virus.rbl.jp', 'spamrbl.imp.ch', 'wormrbl.imp.ch', 'virbl.bit.nl', 'rbl.suresupport.com', 'dsn.rfc-ignorant.org', 'spamguard.leadmon.net', 'opm.tornevall.org', 'netblock.pedantic.org', 'multi.surbl.org', 'ix.dnsbl.manitu.net', 'tor.dan.me.uk', 'dnsbl.dronebl.org', 'db.wpbl.info', 'bogons.cymru.com', 'csi.cloudmark.com', 'dnsrbl.org','hostkarma.junkemailfilter.com'); protected $RBL = array('cbl.abuseat.org', 'b.barracudacentral.org', 'bl.spamcop.net', 'dnsbl.sorbs.net', 'http.dnsbl.sorbs.net', 'dul.dnsbl.sorbs.net', 'misc.dnsbl.sorbs.net', 'smtp.dnsbl.sorbs.net', 'socks.dnsbl.sorbs.net', 'spam.dnsbl.sorbs.net', 'web.dnsbl.sorbs.net', 'zombie.dnsbl.sorbs.net', 'dnsbl-1.uceprotect.net', 'dnsbl-2.uceprotect.net', 'pbl.spamhaus.org', 'sbl.spamhaus.org', 'xbl.spamhaus.org', 'zen.spamhaus.org', 'psbl.surriel.com', 'ubl.unsubscore.com', 'rbl.spamlab.com', 'dyna.spamrats.com', 'noptr.spamrats.com', 'spam.spamrats.com', 'dnsbl.inps.de', 'drone.abuse.ch', 'httpbl.abuse.ch', 'korea.services.net', 'short.rbl.jp', 'virus.rbl.jp', 'spamrbl.imp.ch', 'wormrbl.imp.ch', 'virbl.bit.nl', 'rbl.suresupport.com', 'dsn.rfc-ignorant.org', 'spamguard.leadmon.net', 'opm.tornevall.org', 'netblock.pedantic.org', 'multi.surbl.org', 'ix.dnsbl.manitu.net', 'tor.dan.me.uk', 'dnsbl.dronebl.org', 'db.wpbl.info', 'bogons.cymru.com', 'csi.cloudmark.com', 'dnsrbl.org','hostkarma.junkemailfilter.com','truncate.gbudb.net'); protected $serverIps; protected $timeStart; /** * Constructor for class NagiosRBLCheckPlugin * */ public function __construct() { $this->timeStart = microtime(true); date_default_timezone_set('Europe/Budapest'); set_error_handler(array($this, 'errorHandler')); openlog('NagiosRBLCheckPlugin', LOG_PID|LOG_ODELAY|LOG_PERROR, LOG_USER); $this->prepare(); $this->serverIps = $this->getIps(); $this->checkRBLS(); } protected function getIps() { if (is_file('/etc/wwwacct.conf') || is_file('/etc/domainips') || is_file('/etc/reservedips') ) { $ips = file('/etc/wwwacct.conf'); foreach($ips as $ip) { $ip = explode(' ',trim($ip)); if ($ip[0] == 'ADDR') { $retval[] = $ip[1]; } } if (is_file('/etc/domainips')) { $ips = file('/etc/domainips'); foreach($ips as $ip) { $ip = explode(':',trim($ip)); if (isset($ip[1])) { $retval[] = $ip[0]; } } } if (is_file('/etc/reservedips')) { $ips = file('/etc/reservedips'); if (is_array($ips)) { foreach($ips as $ip) { $ip = explode(':',trim($ip)); if (isset($ip[0])) { $retval[] = $ip[0]; } } } } return $retval; } else { //return array('80.77.122.227', '80.77.122.226', '80.77.122.225', '80.77.122.224', '80.77.120.235', '80.77.120.234', '80.77.120.201', '80.77.120.200', '80.77.120.36', '80.77.120.158', '80.77.120.93', '80.77.120.81', '80.77.120.82', '80.77.120.92', '80.77.120.68', '80.77.120.67', '80.77.120.72', '80.77.120.71', '80.77.120.95'); return array('185.33.52.29', '80.77.120.234', '185.33.52.48', '185.33.52.49', '185.33.52.12', '185.33.52.22', '185.33.52.26', '185.33.52.27', '185.33.52.28'); } } /** * Prepare directiories */ protected function prepare() { $mainpid = getmypid(); if (!is_dir('/tmp/' . __CLASS__)) { mkdir('/tmp/' . __CLASS__); } if (!is_dir('/tmp/' . __CLASS__.'/'.$mainpid)) { mkdir('/tmp/' . __CLASS__.'/'.$mainpid); } $log = glob('/tmp/' . __CLASS__ .'/'.$mainpid.'/*.log'); array_map('unlink', $log); } /** * Fork and make al results */ protected function checkRBLS() { $parentpid = getmypid(); foreach ($this->serverIps as $serverIp) { $pid = pcntl_fork(); if($pid == -1) { echo("Error forking...\n"); exit(self::NAGIOS_EXIT_STATUS_UNKNOWN); } else if($pid == 0) { // Worker start foreach ($this->RBL as $rbl) { $reverseIp = implode('.',array_reverse(explode('.', $serverIp))); // $records = dns_get_record("$reverseIp.$rbl", DNS_A); $records = shell_exec("/usr/bin/dig +short A $reverseIp.$rbl"); if (count($records) > 0) { // $txt = dns_get_record("$reverseIp.$rbl", DNS_TXT); // file_put_contents('/tmp/' . __CLASS__ . '/' . $parentpid . '/' . getmypid() . '.log', "Listed: $serverIp in $rbl TTL: {$records[0]['ttl']} " . (isset($txt[0]['txt']) ? "More info: {$txt[0]['txt']}" : '') . '<br/>', FILE_APPEND | LOCK_EX); file_put_contents('/tmp/' . __CLASS__ . '/' . $parentpid . '/' . getmypid() . '.log', "$serverIp in $rbl" . " " , FILE_APPEND | LOCK_EX); } } // Woker end exit(); } } while(pcntl_waitpid(0, $status) != -1); $logs = glob('/tmp/' . __CLASS__ . '/' . $parentpid . '/*.log'); $result = ''; if (is_array($logs) && count($logs) > 0) { foreach ($logs as $log) { $result .= file_get_contents($log); } } array_map('unlink', $logs); rmdir('/tmp/' . __CLASS__.'/' . $parentpid); $executionTime = (microtime(true) - $this->timeStart)/60; if (!empty($result)) { echo "" .$result . " | time=$executionTime; " . date('Y-m-d H:i:s') . PHP_EOL; // exit(self::NAGIOS_EXIT_STATUS_CRITICAL); exit(self::NAGIOS_EXIT_STATUS_WARNING); } else { echo $info = "OK - NO BLACKLISTED IP in (" . implode(', ', $this->serverIps) . " pool) | time=$executionTime; " . date('Y-m-d H:i:s') . PHP_EOL; exit(self::NAGIOS_EXIT_STATUS_OK); } } /** * Log and echo message */ protected static function log($errorLevel, $message) { echo 'ERROR: ' . $message . PHP_EOL; if (!empty(self::$_sysLog)) { syslog($errorLevel, $message); } } /** * Error handler * A custom error handler to handle unexpected errors */ protected static function errorHandler($errorLevel, $message, $file, $line) { self::log(LOG_ERR, '('.$file.'@'.$line.') '.$message); exit(self::NAGIOS_EXIT_STATUS_UNKNOWN); } } new NagiosRBLCheckPlugin();
Simpan