</>
DJAFAR.BLOG
Back to Articles
security February 24, 2025

Mengenal Python untuk Security Automation: Panduan Lengkap Pemula

Pelajari cara menggunakan Python untuk otomatisasi tugas keamanan siber. Dari scanning port hingga vulnerability assessment dengan contoh kode lengkap.

FA
Fajar Adnan
Security Researcher
3 min read

Python adalah salah satu bahasa pemrograman paling populer di dunia cybersecurity. Dalam artikel ini, kita akan mempelajari bagaimana menggunakan Python untuk mengotomatisasi tugas-tugas keamanan siber.

Python Security Automation Gambar ilustrasi - Python untuk cybersecurity

Mengapa Python untuk Security?

Python memiliki beberapa keunggulan yang menjadikannya pilihan ideal untuk security automation:

  • Syntax yang mudah - Cepat untuk development dan prototyping
  • Library yang kaya - Ribuan library untuk berbagai kebutuhan security
  • Cross-platform - Berjalan di Linux, Windows, dan macOS
  • Community yang besar - Banyak resource dan dukungan dari komunitas
Python Code

Gambar di atas menggunakan class img-medium (800px) - cocok untuk ilustrasi kode

Setup Environment

Sebelum memulai, pastikan Anda sudah menginstall Python 3.8 atau lebih baru:

# Cek versi Python
python3 --version

# Buat virtual environment
python3 -m venv venv

# Aktifkan virtual environment
source venv/bin/activate  # Linux/macOS
# atau
venv\Scripts\activate  # Windows

# Install dependencies
pip install requests socket nmap
Terminal Setup

Gambar kecil menggunakan img-small (600px) - cocok untuk screenshot terminal

Membuat Port Scanner Sederhana

Port scanning adalah teknik dasar untuk menemukan service yang berjalan di sebuah host. Berikut contoh port scanner sederhana:

Network Scanning
Ilustrasi network scanning dengan img-large (1200px)
#!/usr/bin/env python3
"""
Simple Port Scanner
Author: Fajar Adnan
Description: Basic port scanner untuk security assessment
"""

import socket
from datetime import datetime

def scan_port(host, port):
    """Scan single port dan return status"""
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(1)
        result = sock.connect_ex((host, port))
        sock.close()
        return result == 0
    except Exception as e:
        print(f"Error scanning port {port}: {e}")
        return False

def scan_host(target, start_port=1, end_port=1024):
    """
    Scan multiple ports pada target host
    
    Args:
        target (str): IP address atau hostname
        start_port (int): Port awal
        end_port (int): Port akhir
    """
    print(f"[*] Starting scan on {target}")
    print(f"[*] Time: {datetime.now()}")
    print(f"[*] Scanning ports {start_port}-{end_port}")
    print("-" * 50)
    
    open_ports = []
    
    for port in range(start_port, end_port + 1):
        if scan_port(target, port):
            print(f"[+] Port {port}: OPEN")
            open_ports.append(port)
        else:
            print(f"[-] Port {port}: CLOSED")
    
    print("-" * 50)
    print(f"[*] Scan completed. Found {len(open_ports)} open ports")
    return open_ports

if __name__ == "__main__":
    target = input("Enter target IP: ")
    scan_host(target)

Cara Menggunakan

  1. Simpan kode di atas sebagai port_scanner.py
  2. Jalankan dengan perintah:
python3 port_scanner.py
  1. Masukkan IP target ketika diminta

⚠️ Warning: Gunakan tool ini hanya pada sistem yang Anda miliki atau memiliki izin eksplisit untuk melakukan scanning.

HTTP Security Header Checker

Security headers adalah header HTTP yang meningkatkan keamanan website. Mari buat checker untuk menganalisis security headers:

Web Security Headers
import requests
from typing import Dict, List

class SecurityHeaderChecker:
    """Check security headers pada website"""
    
    REQUIRED_HEADERS = {
        'Strict-Transport-Security': 'Melindungi dari downgrade attacks',
        'Content-Security-Policy': 'Mencegah XSS dan injection attacks',
        'X-Frame-Options': 'Mencegah clickjacking',
        'X-Content-Type-Options': 'Mencegah MIME sniffing',
        'Referrer-Policy': 'Mengontrol informasi referrer',
        'Permissions-Policy': 'Mengontrol fitur browser',
    }
    
    def __init__(self, url: str):
        self.url = url
        self.headers = {}
        self.results = {}
    
    def fetch_headers(self) -> bool:
        """Fetch HTTP headers dari target URL"""
        try:
            response = requests.get(self.url, timeout=10)
            self.headers = response.headers
            return True
        except requests.exceptions.RequestException as e:
            print(f"Error fetching headers: {e}")
            return False
    
    def check_headers(self) -> Dict[str, bool]:
        """Check keberadaan security headers"""
        for header, description in self.REQUIRED_HEADERS.items():
            exists = header in self.headers
            self.results[header] = {
                'exists': exists,
                'description': description,
                'value': self.headers.get(header, 'Not found')
            }
        return self.results
    
    def report(self) -> None:
        """Generate security report"""
        print(f"\nSecurity Header Report for: {self.url}")
        print("=" * 60)
        
        total = len(self.results)
        present = sum(1 for r in self.results.values() if r['exists'])
        score = (present / total) * 100
        
        print(f"Security Score: {score:.1f}% ({present}/{total})\n")
        
        for header, info in self.results.items():
            status = "" if info['exists'] else ""
            print(f"{status} {header}")
            print(f"  Description: {info['description']}")
            print(f"  Value: {info['value']}\n")

# Usage
if __name__ == "__main__":
    url = input("Enter website URL (e.g., https://example.com): ")
    checker = SecurityHeaderChecker(url)
    
    if checker.fetch_headers():
        checker.check_headers()
        checker.report()

Contoh Output

Security Header Report for: https://example.com
============================================================
Security Score: 83.3% (5/6)

✓ Strict-Transport-Security
  Description: Melindungi dari downgrade attacks
  Value: max-age=31536000; includeSubDomains

✓ Content-Security-Policy
  Description: Mencegah XSS dan injection attacks
  Value: default-src 'self'

✓ X-Frame-Options
  Description: Mencegah clickjacking
  Value: DENY

✓ X-Content-Type-Options
  Description: Mencegah MIME sniffing
  Value: nosniff

✗ Permissions-Policy
  Description: Mengontrol fitur browser
  Value: Not found

Best Practices Security Coding

Ketika menulis code untuk security tools, perhatikan hal berikut:

1. Input Validation

Selalu validasi input user untuk mencegah injection attacks:

Input Validation
import re
import ipaddress

def validate_ip(ip_string: str) -> bool:
    """Validasi IP address format"""
    try:
        ipaddress.ip_address(ip_string)
        return True
    except ValueError:
        return False

def validate_url(url: str) -> bool:
    """Validasi URL format"""
    pattern = r'^https?://[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}(/.*)?$'
    return bool(re.match(pattern, url))

# Usage
target_ip = input("Enter target IP: ")
if not validate_ip(target_ip):
    print("Invalid IP address!")
    exit(1)

2. Error Handling

Jangan expose informasi sensitif dalam error message:

# ❌ BAD - Expose informasi
try:
    connect_to_database(password)
except Exception as e:
    print(f"Database error: {e}")  # Bisa leak informasi!

# ✅ GOOD - Generic error
try:
    connect_to_database(password)
except Exception:
    print("Connection failed. Please try again.")
    logger.error("Database connection failed")  # Log detail untuk admin

3. Secure Credential Storage

Jangan hardcode credentials dalam code:

# ❌ BAD - Hardcoded credentials
API_KEY = "sk-1234567890abcdef"
DB_PASSWORD = "supersecret123"

# ✅ GOOD - Use environment variables
import os
from dotenv import load_dotenv

load_dotenv()  # Load dari file .env

API_KEY = os.getenv('API_KEY')
DB_PASSWORD = os.getenv('DB_PASSWORD')

if not API_KEY:
    raise ValueError("API_KEY not found in environment")

Kesimpulan

Python adalah tool yang powerful untuk security automation. Dengan mempelajari dasar-dasar Python security programming, Anda dapat:

  1. Mengotomatisasi tugas security yang repetitive
  2. Membuat custom tools untuk kebutuhan spesifik
  3. Mempercepat proses security assessment
  4. Meningkatkan efisiensi kerja sebagai security professional
Python Automation
Python automation dengan img-full (100% width) - cocok untuk banner atau penutup artikel

Resources Lanjutan


🔒 Remember: Dengan great power comes great responsibility. Gunakan knowledge ini untuk tujuan yang baik dan selalu dapatkan izin sebelum melakukan testing pada sistem orang lain.

Share this article