feat(seeds): add port catalog and host port assignments to dev seed
Adds 25 common ports (SSH, HTTP/S, SMTP, PostgreSQL, etc.) to the ports catalog and assigns realistic open ports to each seeded host based on its role (web server, database, NAS, VPN gateway, etc.). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -60,3 +60,136 @@ FROM (VALUES
|
||||
('vpn-client-02', '172.16.1.11')
|
||||
) AS t(name, ip)
|
||||
WHERE NOT EXISTS (SELECT 1 FROM hosts WHERE hosts.name = t.name AND hosts.ip = t.ip);
|
||||
|
||||
-- ── Ports catalog ─────────────────────────────────────────────────────────────
|
||||
|
||||
INSERT INTO ports (number, description) VALUES
|
||||
(22, 'SSH'),
|
||||
(25, 'SMTP'),
|
||||
(53, 'DNS'),
|
||||
(80, 'HTTP'),
|
||||
(143, 'IMAP'),
|
||||
(161, 'SNMP'),
|
||||
(443, 'HTTPS'),
|
||||
(445, 'SMB'),
|
||||
(465, 'SMTPS'),
|
||||
(500, 'IKE / IPSec'),
|
||||
(514, 'Syslog'),
|
||||
(587, 'SMTP Submission'),
|
||||
(873, 'rsync'),
|
||||
(993, 'IMAPS'),
|
||||
(1194, 'OpenVPN'),
|
||||
(2049, 'NFS'),
|
||||
(3000, 'Grafana'),
|
||||
(3389, 'RDP'),
|
||||
(4500, 'IPSec NAT-T'),
|
||||
(5044, 'Logstash Beats'),
|
||||
(5432, 'PostgreSQL'),
|
||||
(5601, 'Kibana'),
|
||||
(9090, 'Prometheus'),
|
||||
(9100, 'JetDirect'),
|
||||
(9200, 'Elasticsearch')
|
||||
ON CONFLICT (number) DO NOTHING;
|
||||
|
||||
-- ── Host ports ────────────────────────────────────────────────────────────────
|
||||
|
||||
-- gateway: SSH, DNS, HTTP, HTTPS
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 53, 80, 443]) p
|
||||
WHERE h.name = 'gateway' AND h.ip = '192.168.1.1'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- workstation-01: SSH, RDP
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 3389]) p
|
||||
WHERE h.name = 'workstation-01' AND h.ip = '192.168.1.10'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- workstation-02: SSH, RDP
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 3389]) p
|
||||
WHERE h.name = 'workstation-02' AND h.ip = '192.168.1.11'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- workstation-03: SSH, RDP
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 3389]) p
|
||||
WHERE h.name = 'workstation-03' AND h.ip = '192.168.1.12'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- nas-01: SSH, HTTP, HTTPS, SMB, NFS
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 80, 443, 445, 2049]) p
|
||||
WHERE h.name = 'nas-01' AND h.ip = '192.168.1.20'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- printer-01: HTTP, HTTPS, JetDirect
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[80, 443, 9100]) p
|
||||
WHERE h.name = 'printer-01' AND h.ip = '192.168.1.50'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- web-server-01: SSH, HTTP, HTTPS
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 80, 443]) p
|
||||
WHERE h.name = 'web-server-01' AND h.ip = '192.168.10.10'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- web-server-02: SSH, HTTP, HTTPS
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 80, 443]) p
|
||||
WHERE h.name = 'web-server-02' AND h.ip = '192.168.10.11'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- db-server-01: SSH, PostgreSQL
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 5432]) p
|
||||
WHERE h.name = 'db-server-01' AND h.ip = '192.168.10.20'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- mail-server-01: SSH, SMTP, IMAP, SMTPS, Submission, IMAPS
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 25, 143, 465, 587, 993]) p
|
||||
WHERE h.name = 'mail-server-01' AND h.ip = '192.168.10.30'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- core-switch-01: SSH, SNMP
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 161]) p
|
||||
WHERE h.name = 'core-switch-01' AND h.ip = '10.0.0.1'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- monitoring-01: SSH, HTTP, HTTPS, Grafana, Prometheus
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 80, 443, 3000, 9090]) p
|
||||
WHERE h.name = 'monitoring-01' AND h.ip = '10.0.1.10'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- backup-server-01: SSH, SMB, rsync
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 445, 873]) p
|
||||
WHERE h.name = 'backup-server-01' AND h.ip = '10.0.1.20'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- log-server-01: SSH, Syslog, Logstash Beats, Elasticsearch, Kibana
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 514, 5044, 9200, 5601]) p
|
||||
WHERE h.name = 'log-server-01' AND h.ip = '10.0.1.30'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- vpn-gateway-01: SSH, IKE, OpenVPN, IPSec NAT-T
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, p FROM hosts h, unnest(ARRAY[22, 500, 1194, 4500]) p
|
||||
WHERE h.name = 'vpn-gateway-01' AND h.ip = '172.16.0.1'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
-- vpn clients: SSH only
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, 22 FROM hosts h
|
||||
WHERE h.name = 'vpn-client-01' AND h.ip = '172.16.1.10'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO host_ports (host_id, port_number)
|
||||
SELECT h.id, 22 FROM hosts h
|
||||
WHERE h.name = 'vpn-client-02' AND h.ip = '172.16.1.11'
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
Reference in New Issue
Block a user