Download _hot_ Nessusupdateplugins All20targz Top
Manually updating Nessus plugins using the all-2.0.tar.gz archive is a critical procedure for security professionals operating in offline or air-gapped environments where automatic updates are not possible. Understanding the Plugin Archive all-2.0.tar.gz
file is a compressed archive containing the entire library of Nessus plugins. Because Nessus relies on these plugins to identify vulnerabilities, keeping this set current is essential for maintaining an accurate security posture. Step-by-Step Offline Update Process To update your Nessus scanner manually, follow these steps: Obtain the Plugin Archive On a machine with internet access, navigate to the Tenable Offline Registration Page Enter your Challenge Code (found in the Nessus UI under Settings > About) and your Activation Code Download the latest plugin file, typically named all-2.0.tar.gz Transfer the File Move the downloaded
file to the offline Nessus host using secure media like a USB drive or internal file transfer. Perform the Installation (CLI Method)
Open a terminal or command prompt as an administrator and run the specific update command for your operating system:
"C:\Program Files\Tenable\Nessus\nessuscli.exe" update all-2.0.tar.gz /opt/nessus/sbin/nessuscli update all-2.0.tar.gz /Library/Nessus/run/sbin/nessuscli update all-2.0.tar.gz Perform the Installation (UI Method) Log in to the Nessus User Interface Navigate to Software Update Manual Software Update in the top right. Upload your own plugin archive , select your file, and click Best Practices for Security Plugins (Tenable Nessus 10.11)
Guide to Updating Tenable Nessus Plugins Manually Updating your Tenable Nessus plugins is crucial for maintaining accurate vulnerability scans, especially in air-gapped or offline environments where automatic updates aren't an option. While Nessus typically handles this via its online feed, you can manually download and apply a plugin archive (often referred to in legacy contexts as all-2.0.tar.gz or similar compressed formats). 1. Obtain the Plugin Archive
To perform an offline update, you must first generate a Challenge Code from your Nessus scanner and use it along with your Activation Code to download the latest plugin set from the Tenable Offline Registration Page.
Generate Challenge Code: Run the following command on your Nessus server: Linux: # /opt/nessus/sbin/nessuscli fetch --challenge download nessusupdateplugins all20targz top
Windows: C:\Program Files\Tenable\Nessus\nessuscli.exe fetch --challenge
Download File: After submitting your codes on the Tenable site, you will be prompted to download a compressed TAR file (e.g., all-2.0.tar.gz or sc-plugins-diff.tar.gz). 2. Update via the User Interface (UI)
If you have access to the Nessus web interface, this is the most straightforward method: Log in as an Administrator. Navigate to Settings > Software Update. Click Manual Software Update in the top-right corner. Select Upload your own plugin archive and click Continue.
Browse for your downloaded .tar.gz file and select Open to begin the installation. 3. Update via the Command Line Interface (CLI)
For automated workflows or restricted environments, use the nessuscli tool: Linux:
# /opt/nessus/sbin/nessuscli update /path/to/your/plugins.tar.gz Use code with caution. Copied to clipboard Windows:
"C:\Program Files\Tenable\Nessus\nessuscli.exe" update "C:\path\to\your\plugins.tar.gz" Use code with caution. Copied to clipboard macOS: Manually updating Nessus plugins using the all-2
# /Library/Nessus/run/sbin/nessuscli update /path/to/your/plugins.tar.gz Use code with caution. Copied to clipboard Key Considerations
Permissions: Ensure you are running these commands with administrative or root privileges.
Restarting: Nessus will automatically process the new plugins, though a service restart may be required if the software components themselves were also updated.
Checksum Verification: Always verify the integrity of your download using the MD5 checksum provided on the download page to ensure the file wasn't corrupted during transfer. Update Tenable Nessus Software
Features Included:
- Robust downloading with progress indication
- Error handling and retry logic
- Checksum verification (optional)
- Extraction capability for tar.gz files
- Logging to file and console
- Command-line interface with help
- Fallback URLs if primary fails
- SSL verification (configurable)
- Progress bars for download status
- File size verification
This feature provides a complete solution for downloading Nessus plugin updates with proper error handling and user feedback.
Here is the technical paper/guide on how to perform this action.
Introduction: Why Manual Plugin Updates Matter
Nessus, developed by Tenable, is the gold standard for vulnerability assessment. While most users rely on the built-in automatic update feature (nessuscli update), there are critical scenarios where a manual approach is not just preferred—it’s required. Features Included:
Enter the file: nessusupdateplugins-all20.tar.gz.
This 20-series tarball contains the complete offline plugin set for Nessus. Whether you are operating in an air-gapped environment, dealing with strict firewall rules, or troubleshooting a broken automatic updater, knowing how to download nessusupdateplugins all20targz top is an essential skill for any security professional.
In this guide, we will break down exactly what this file is, where to find the latest version, how to download it securely, and the step-by-step process to install it on Linux, Windows, and macOS.
Python Implementation
#!/usr/bin/env python3 """ Nessus Plugin Downloader Feature Downloads the latest Nessus plugins package from Tenable's official source """import os import sys import argparse import requests import hashlib import gzip import tarfile from pathlib import Path from datetime import datetime from typing import Optional, Dict, Any import logging
class NessusPluginDownloader: """Handles downloading Nessus plugin updates"""
# Official Tenable download URLs BASE_URLS = 'professional': 'https://www.tenable.com/downloads/api/v1/public/pages/nessus', 'feed': 'https://plugins.nessus.org/v2/nessus.php', 'direct': 'https://www.tenable.com/downloads/nessus' def __init__(self, download_dir: str = '/tmp/nessus_plugins', verify_ssl: bool = True): self.download_dir = Path(download_dir) self.verify_ssl = verify_ssl self.setup_logging() self.create_download_directory() def setup_logging(self): """Configure logging""" logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler('nessus_downloader.log'), logging.StreamHandler() ] ) self.logger = logging.getLogger(__name__) def create_download_directory(self): """Create download directory if it doesn't exist""" self.download_dir.mkdir(parents=True, exist_ok=True) self.logger.info(f"Download directory: self.download_dir") def download_file(self, url: str, filename: str, chunk_size: int = 8192) -> bool: """Download file with progress indication""" try: self.logger.info(f"Downloading from: url") headers = 'User-Agent': 'Mozilla/5.0 (compatible; NessusUpdater/1.0)' response = requests.get(url, stream=True, headers=headers, verify=self.verify_ssl) response.raise_for_status() total_size = int(response.headers.get('content-length', 0)) filepath = self.download_dir / filename downloaded = 0 with open(filepath, 'wb') as f: for chunk in response.iter_content(chunk_size=chunk_size): if chunk: f.write(chunk) downloaded += len(chunk) if total_size > 0: percent = (downloaded / total_size) * 100 sys.stdout.write(f"\rProgress: percent:.1f% (downloaded/total_size bytes)") sys.stdout.flush() print() # New line after progress self.logger.info(f"Successfully downloaded: filepath") return True except requests.RequestException as e: self.logger.error(f"Download failed: e") return False def get_latest_plugin_url(self, nessus_version: str = 'latest') -> Optional[str]: """Get the download URL for the latest Nessus plugins""" try: # Tenable's API endpoint for plugin downloads api_url = f"https://www.tenable.com/downloads/api/v2/public/nessus" response = requests.get(api_url, verify=self.verify_ssl) response.raise_for_status() data = response.json() # Find the plugin update package plugin_pattern = 'nessus-update-plugins' for release in data.get('releases', []): for file in release.get('files', []): if plugin_pattern in file.get('name', '').lower() and 'tar.gz' in file.get('name', ''): return file.get('url') # Fallback to direct URL pattern return "https://plugins.nessus.org/v2/nessus.php?f=all-2.0.tar.gz" except Exception as e: self.logger.warning(f"Could not fetch latest URL from API: e") # Return default URL return "https://plugins.nessus.org/v2/nessus.php?f=all-2.0.tar.gz" def verify_checksum(self, filepath: Path, expected_md5: Optional[str] = None) -> bool: """Verify file integrity using MD5 or SHA256""" if not expected_md5: self.logger.info("No checksum provided, skipping verification") return True try: md5_hash = hashlib.md5() with open(filepath, 'rb') as f: for chunk in iter(lambda: f.read(4096), b''): md5_hash.update(chunk) file_md5 = md5_hash.hexdigest() if file_md5 == expected_md5: self.logger.info("Checksum verification passed") return True else: self.logger.error(f"Checksum mismatch: expected expected_md5, got file_md5") return False except Exception as e: self.logger.error(f"Checksum verification failed: e") return False def extract_archive(self, filename: str, extract_to: Optional[str] = None) -> bool: """Extract the downloaded tar.gz archive""" filepath = self.download_dir / filename if not filepath.exists(): self.logger.error(f"File not found: filepath") return False extract_path = Path(extract_to) if extract_to else self.download_dir / 'extracted' extract_path.mkdir(exist_ok=True) try: self.logger.info(f"Extracting filename to extract_path") with gzip.open(filepath, 'rb') as f_in: with tarfile.open(fileobj=f_in, mode='r') as tar: tar.extractall(path=extract_path) self.logger.info(f"Extraction completed successfully") return True except Exception as e: self.logger.error(f"Extraction failed: e") return False def download_plugins(self, version: str = 'all-2.0', extract: bool = False) -> Dict[str, Any]: """Main method to download Nessus plugins""" result = 'success': False, 'filename': None, 'filepath': None, 'size': 0, 'timestamp': datetime.now().isoformat() # Construct filename filename = f"nessus-update-plugins-version.tar.gz" # Get download URL download_url = self.get_latest_plugin_url() if not download_url: # Use default pattern download_url = f"https://plugins.nessus.org/v2/nessus.php?f=version.tar.gz" # Download the file if self.download_file(download_url, filename): filepath = self.download_dir / filename result['success'] = True result['filename'] = filename result['filepath'] = str(filepath) result['size'] = filepath.stat().st_size # Optionally extract if extract: result['extracted'] = self.extract_archive(filename) self.logger.info(f"Download complete: filename (result['size'] bytes)") return resultdef main(): """Command-line interface for the downloader""" parser = argparse.ArgumentParser( description='Download Nessus plugin updates', formatter_class=argparse.RawDescriptionHelpFormatter, epilog=""" Examples: %(prog)s --version all-2.0 %(prog)s --version all-2.0 --extract %(prog)s --output-dir ./plugins --no-verify-ssl """ )
parser.add_argument( '--version', default='all-2.0', help='Plugin version (default: all-2.0)' ) parser.add_argument( '--output-dir', default='/tmp/nessus_plugins', help='Download directory (default: /tmp/nessus_plugins)' ) parser.add_argument( '--extract', action='store_true', help='Extract the downloaded archive' ) parser.add_argument( '--no-verify-ssl', action='store_true', help='Disable SSL verification (not recommended)' ) parser.add_argument( '--verbose', action='store_true', help='Enable verbose logging' ) args = parser.parse_args() # Create downloader instance downloader = NessusPluginDownloader( download_dir=args.output_dir, verify_ssl=not args.no_verify_ssl ) if args.verbose: downloader.logger.setLevel(logging.DEBUG) # Download plugins print(f"\n'='*60") print(f"Nessus Plugin Downloader") print(f"Version: args.version") print(f"Output Directory: args.output_dir") print(f"'='*60\n") result = downloader.download_plugins( version=args.version, extract=args.extract ) if result['success']: print(f"\n✅ Download successful!") print(f" File: result['filename']") print(f" Size: result['size']:, bytes") print(f" Location: result['filepath']") if args.extract and result.get('extracted'): print(f" Extracted: Yes") sys.exit(0) else: print(f"\n❌ Download failed!") sys.exit(1)
if name == "main": main()