⭕️ کانال امنیت و شبکه دولوپیکس
💠 دولوپیکس | جامعه توسعهدهندگان ایرانی
💎 @Developix
🚀 Developix.ir
📌 پشتیبانی و تبلیغات:
@DevelopixSupport
Post #133
993

- 🔥 4
| @developixnetwork
Showing posts older than #134 · Back to latest

add_header Strict-Transport-Security \
"max-age=31536000; includeSubDomains; preload" always;
max-age هرچه بزرگتر باشد، مرورگر مدت بیشتری فقط روی HTTPS قفل میماند.includeSubDomains یعنی تمام سابدامینها هم باید HTTPS باشند.preload حتما مطمئن باشید همه چیز روی HTTPS بدون خطاست، چون برگشت از آن سخت است.sudo apt update
sudo apt install nikto
192.168.1.10):nikto -h http://192.168.1.10
nikto -h 192.168.1.10 -p 8080
nikto -h 192.168.1.10 \
-o report.html -Format html
nikto -h 192.168.1.10 -vhost example.com
directory listing باز میمونه، یا نسخه یه CMS قدیمی عوض نمیشه. یه اسکن ساده Nikto قبل از پابلیککردن سرویس، میتونه کلی ریسک رو زود شناسایی کنه.sudo apt install tcpdump # روی Debian/Ubuntu
sudo yum install tcpdump # روی CentOS/RHEL قدیمی
sudo dnf install tcpdump # روی Fedora/RHEL جدید
eth0 است:sudo tcpdump -i eth0
sudo tcpdump -i eth0 tcp port 22 and 'tcp[tcpflags] & (tcp-syn) != 0'
sudo tcpdump -i eth0 port 22 -w ssh_traffic.pcap
-c برای محدود کردن تعداد پکت استفاده کن، مثلاً:sudo tcpdump -i eth0 port 22 -c 200
-s 96 یا مشابه استفاده کن تا فشار روی سیستم کم بشهssh وصل شو و ببین چطور ترافیک SSH جلوی چشمات رد میشه. همین تمرین ساده دید خیلی خوبی بهت میده.server (یا در تنظیمات عمومی) این بخش را اضافه یا اصلاح کن:ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
sudo nginx -t
sudo systemctl reload nginx
root یا sudo داره.sudo iptables -F
sudo iptables -X
# اجازه به ترافیک لوکال
sudo iptables -A INPUT -i lo -j ACCEPT
# اجازه به کانکشنهای جاری و مرتبط
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# اجازه به SSH روی پورت 22
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# اجازه به HTTP
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# اجازه به HTTPS
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Drop کردن بقیه ترافیک ورودی
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
ESTABLISHED,RELATED، فقط ترافیک مربوط به کانکشنهای مجاز قبلی اجازه عبور میگیرند؛ این هم امن است، هم باعث نمیشود اتصالهای فعلیات قطع شوند.lo را باز میگذاریم تا سرویسهایی که با خود سیستم حرف میزنند (مثل دیتابیس لوکال) از کار نیفتند.DROP کردن پالیسی INPUT و FORWARD، عملاً فقط پورتهایی که صراحتاً Allow شدهاند باز میمانند.sudo iptables -L -n -v
iptables-persistent استفاده کرد:sudo apt-get install iptables-persistent
sudo netfilter-persistent save
nftables پیشنهاد شود، ولی هنوز خیلی از سرورها از iptables استفاده میکنند و دانستنش برای دیباگ و امنیت حیاتی است.nmap -Pn -sS -F 192.168.1.10
nmap -sV 192.168.1.10
nmap --script http-vuln* -p80,443 192.168.1.10
nmap -sS -T2 192.168.1.0/24
Forwarded from ابر ویراک

remote_addr رو لاگ میگیریم و فکر میکنیم IP واقعی کاربره؛ اما پشت Nginx / Proxy / Load Balancer، این IP معمولاً IP همون Proxy هست، نه کلاینت 🎯X-Forwarded-For (یا X-Real-IP) و تنظیم درست اپلیکیشن و Reverse Proxy ـه. این کار برای تحلیل Incident، تشخیص حملات و Alert کردن روی IP خیلی مهمه.from flask import Flask, request
app = Flask(__name__)
TRUSTED_PROXIES = {"127.0.0.1", "10.0.0.1"} # IP های Nginx / LB
@app.before_request
def log_real_ip():
remote = request.remote_addr
xff = request.headers.get("X-Forwarded-For", "")
if remote in TRUSTED_PROXIES and xff:
# اولین IP معمولا نزدیکترین کلاینت است
real_ip = xff.split(",")[0].strip()
else:
real_ip = remote
app.logger.info(f"real_ip={real_ip} path={request.path}")
@app.route("/")
def index():
return "OK"
if __name__ == "__main__":
app.run()
X-Forwarded-For اعتماد کن که درخواست از Proxyهای شناختهشده میآد (مثل لیست بالا). هدر رو کاربر نهایی هم میتونه جعل کنه.real_ip_header و set_real_ip_from درست ست شدن تا remote_addr سمت اپ منطقی باشه.Forwarded from کانال رسمی تک نت | Taknet

/var/log/auth.log کار میکنه و IPهایی که بیشتر از ۵ بار لاگین ناموفق داشتن رو چاپ میکنه:#!/usr/bin/env python3
import re
from collections import Counter
LOG_FILE = "/var/log/auth.log"
FAILED_THRESHOLD = 5
pattern = re.compile(r"Failed password for .* from (\d+\.\d+\.\d+\.\d+)")
ips = []
with open(LOG_FILE, "r", encoding="utf-8", errors="ignore") as f:
for line in f:
match = pattern.search(line)
if match:
ips.append(match.group(1))
counts = Counter(ips)
for ip, c in counts.items():
if c >= FAILED_THRESHOLD:
print(f"{ip} - failed logins: {c}")
/var/log/secure هست، فقط همون رو عوض کن.Forwarded from ابر ویراک

/var/log/auth.log (روی Debian/Ubuntu) یا /var/log/secure (روی CentOS/RHEL) میآیند، ولی سطح جزئیات را میشود بالاتر برد.sudo nano /etc/ssh/sshd_config
LogLevel VERBOSE
UseDNS no
sudo systemctl restart sshd
LogLevel VERBOSE باعث میشود حتی key fingerprint ها و تلاشهای لاگین ناموفق با جزئیات ثبت شوند. این برای incident response و تحلیل حملات خیلی کمک میکند. 🔐sudo grep "Failed password" /var/log/auth.log \
| awk '{print $(NF-3)}' \
| sort | uniq -c | sort -nr | head
logrotate درست تنظیم کن تا هم دیسک پر نشود هم دادهٔ تاریخی کافی داشته باشی.nmap -sS -sV -O -p 1-1000 192.168.1.0/24
import re
SENSITIVE_KEYS = ["password", "token", "authorization"]
def scrub_log(data: str) -> str:
pattern = r"(password|token|authorization)" \
r"\s*[:=]\s*([^&\s]+)"
return re.sub(pattern, r"\1=***", data, flags=re.IGNORECASE)
# مثال استفاده
raw_log = "user=ali password=MyP@ssw0rd token=abc123"
clean_log = scrub_log(raw_log)
print(clean_log)
# خروجی: user=ali password=*** token=***
nmap -sS -T3 -Pn \
-p 22,80,443,3389 \
--open \
-oA internal_scan_2025-12-03 \
10.10.0.0/24
nmap -sS -sV -O -p- --min-rate 1000 192.0.2.10
nmap -sS -sV -O -p- -oN scan.txt 192.0.2.10
localhost:8080 گوش میده و پشت فایروال مخفیه. نمیخوای Port 8080 رو تو اینترنت باز کنی، ولی از خونه باید بهش دسترسی داشته باشی.localhost:8080 اونجا وصل شه.ssh -L 9090:localhost:8080 user@example.com -N -C
-L 9090:localhost:8080 یعنی هر درخواست به 127.0.0.1:9090 روی سیستم تو، از داخل تونل ssh بره به localhost:8080 روی سرور.user@example.com هم یوزر و سرور مقصدت هست (میتونه IP هم باشه).-N یعنی شل باز نکن، فقط تونل رو نگه دار.-C هم Compression روشن میکنه که روی لینکهای کند مفیده.http://127.0.0.1:9090
AllowUsers یا AllowGroups رو توی /etc/ssh/sshd_config محدود کن که هر یوزری نتونه تونل بسازه./var/log/auth.log (روی Debian/Ubuntu) زیر نظر داشته باش تا سوءاستفاده از تونلها رو زودتر ببینی.server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
}
openssl s_client -connect example.com:443 -tls1_2
curl -I https://example.com --http2
sudo nmap -sS -sV -O -p- -T4 192.168.1.0/24 -oA myscan