<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archiwa Bash - soban</title>
	<atom:link href="https://soban.pl/pl/category/bash-pl/feed/" rel="self" type="application/rss+xml" />
	<link>https://soban.pl/pl/category/bash-pl/</link>
	<description>IT, Linux, Servers, Security</description>
	<lastBuildDate>Mon, 02 Mar 2026 14:07:25 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>CrowdSec – dodatkowa ochrona serwera Linux, Nginx i SSH przed botami oraz atakami brute-force</title>
		<link>https://soban.pl/pl/crowdsec-ochrona-serwera-linux/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Fri, 27 Feb 2026 10:43:29 +0000</pubDate>
				<category><![CDATA[Bash]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=788</guid>

					<description><![CDATA[<p>Jeśli korzystasz z serwera Linux z Nginx, SSH lub WordPressem, prawdopodobnie znasz już Fail2Ban. Jest to dobre narzędzie, ale działa lokalnie — blokuje tylko adresy IP, które zaatakowały Twój serwer. CrowdSec działa zupełnie inaczej. To system ochrony oparty o współdzieloną reputację IP. Jeśli tysiące serwerów na świecie wykryją atakujące IP, Twój serwer może je zablokować [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/crowdsec-ochrona-serwera-linux/">CrowdSec – dodatkowa ochrona serwera Linux, Nginx i SSH przed botami oraz atakami brute-force</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" width="1024" height="685" src="https://soban.pl/wp-content/uploads/2026/02/image-4-1024x685.png" alt="" class="wp-image-789" style="aspect-ratio:1.4949112952561037;width:580px;height:auto" srcset="https://soban.pl/wp-content/uploads/2026/02/image-4-1024x685.png 1024w, https://soban.pl/wp-content/uploads/2026/02/image-4-300x201.png 300w, https://soban.pl/wp-content/uploads/2026/02/image-4-768x514.png 768w, https://soban.pl/wp-content/uploads/2026/02/image-4.png 1174w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Jeśli korzystasz z serwera Linux z Nginx, SSH lub WordPressem, prawdopodobnie znasz już <strong>Fail2Ban</strong>. Jest to dobre narzędzie, ale działa lokalnie — blokuje tylko adresy IP, które zaatakowały <em>Twój</em> serwer.</p>



<p><strong>CrowdSec</strong> działa zupełnie inaczej. To system ochrony oparty o współdzieloną reputację IP. Jeśli tysiące serwerów na świecie wykryją atakujące IP, Twój serwer może je zablokować <strong>zanim jeszcze spróbują ataku</strong>.</p>



<h2 class="wp-block-heading">Jak działa CrowdSec?</h2>



<ul class="wp-block-list">
<li>analizuje logi systemowe (nginx, ssh, wordpress)</li>



<li>wykrywa podejrzane zachowanie</li>



<li>wymienia informacje o atakujących IP z innymi serwerami</li>



<li>blokuje ruch na poziomie firewalla</li>
</ul>



<p>Efekt? Większość botów i skanerów internetu nigdy nie dociera do Twojego Nginxa.</p>



<h2 class="wp-block-heading">Instalacja CrowdSec na Debian / Ubuntu</h2>



<p>Instalacja CrowdSec jest bardzo prosta i dostępna bezpośrednio z repozytoriów Debiana.</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">apt update
apt install crowdsec</pre></div>



<p>Podczas instalacji CrowdSec automatycznie:</p>



<ul class="wp-block-list">
<li>tworzy lokalne API (LAPI)</li>



<li>rejestruje serwer w CrowdSec Central API</li>



<li>pobiera podstawowe scenariusze bezpieczeństwa</li>
</ul>



<h2 class="wp-block-heading">Instalacja firewall bouncer</h2>



<p>CrowdSec sam wykrywa zagrożenia, ale potrzebuje komponentu wykonawczego — tzw. <strong>bouncera</strong>, który blokuje ruch w firewallu.</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">apt install crowdsec-firewall-bouncer</pre></div>



<p>Domyślnie bouncer korzysta z <strong>nftables</strong> i automatycznie dodaje reguły blokujące adresy IP.</p>



<h2 class="wp-block-heading">Instalacja kolekcji bezpieczeństwa</h2>



<p>Kolekcje zawierają parsery logów oraz scenariusze wykrywania ataków.</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cscli collections install crowdsecurity/nginx
cscli collections install crowdsecurity/wordpress
cscli collections install crowdsecurity/base-http-scenarios
cscli collections install crowdsecurity/sshd</pre></div>



<p>Po instalacji przeładuj konfigurację:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">systemctl reload crowdsec</pre></div>



<h2 class="wp-block-heading">Konfiguracja logów Nginx</h2>



<p>Aby CrowdSec analizował ruch HTTP, należy wskazać logi Nginx.</p>



<p>Edytuj plik:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">nano /etc/crowdsec/acquis.yaml</pre></div>



<p>Dodaj konfigurację:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">filenames:
  - /var/log/nginx/access*.log
  - /var/log/nginx/error*.log
labels:
  type: nginx</pre></div>



<p>Następnie uruchom ponownie usługę:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">systemctl restart crowdsec</pre></div>



<h2 class="wp-block-heading">Sprawdzenie działania CrowdSec</h2>



<p>Status usługi:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">systemctl status crowdsec</pre></div>



<p>Lista aktywnych banów:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cscli decisions list</pre></div>



<p>Statystyki działania:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cscli metrics</pre></div>



<h2 class="wp-block-heading">Efekt końcowy</h2>



<p>Po poprawnej instalacji CrowdSec:</p>



<ul class="wp-block-list">
<li>serwer automatycznie blokuje znane botnety</li>



<li>ataki WordPress i brute-force SSH są zatrzymywane na firewallu</li>



<li>Nginx obsługuje mniej złośliwego ruchu</li>



<li>CPU i IO serwera są znacząco odciążone</li>
</ul>



<p>CrowdSec można traktować jako <strong>ewolucję Fail2Ban</strong> — system, który nie tylko reaguje lokalnie, ale korzysta z globalnej inteligencji zagrożeń.</p>
<p>Artykuł <a href="https://soban.pl/pl/crowdsec-ochrona-serwera-linux/">CrowdSec – dodatkowa ochrona serwera Linux, Nginx i SSH przed botami oraz atakami brute-force</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Konfiguracja Fail2Ban dla Nginx &#8211; blokowanie skanerów i exploitów bez blokowania administratora WordPress</title>
		<link>https://soban.pl/pl/fail2ban-nginx-wordpress-setup/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 23:07:23 +0000</pubDate>
				<category><![CDATA[Bash]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=716</guid>

					<description><![CDATA[<p>Ten poradnik pokazuje kompletną instalację i konfigurację Fail2Ban dla Nginx, zaprojektowaną tak, aby: blokować rzeczywiste skanery i próby exploitów (np. żądania do /.env, /.git, /phpmyadmin itp.), unikać przypadkowego blokowania administratorów (częsty problem przy banowaniu wyłącznie na podstawie błędów HTTP), blokować adresy IP dopiero po powtarzającej się podejrzanej aktywności, stosować krótki czas bana (5 minut), aby [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/fail2ban-nginx-wordpress-setup/">Konfiguracja Fail2Ban dla Nginx &#8211; blokowanie skanerów i exploitów bez blokowania administratora WordPress</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img decoding="async" width="486" height="747" src="https://soban.pl/wp-content/uploads/2026/02/image-1.png" alt="" class="wp-image-717" srcset="https://soban.pl/wp-content/uploads/2026/02/image-1.png 486w, https://soban.pl/wp-content/uploads/2026/02/image-1-195x300.png 195w" sizes="(max-width: 486px) 100vw, 486px" /></figure>



<h2 class="wp-block-heading">Ten poradnik pokazuje kompletną instalację i konfigurację Fail2Ban dla Nginx, zaprojektowaną tak, aby:</h2>



<ul class="wp-block-list">
<li>blokować rzeczywiste skanery i próby exploitów (np. żądania do <code>/.env</code>, <code>/.git</code>, <code>/phpmyadmin</code> itp.),</li>
<li>unikać przypadkowego blokowania administratorów (częsty problem przy banowaniu wyłącznie na podstawie błędów HTTP),</li>
<li>blokować adresy IP dopiero po powtarzającej się podejrzanej aktywności,</li>
<li>stosować krótki czas bana (5 minut), aby zmniejszyć ryzyko zablokowania samego siebie.</li>
</ul>



<h2 class="wp-block-heading">Dlaczego banowanie wyłącznie na podstawie błędów HTTP może być problematyczne</h2>



<p>Wiele poradników sugeruje blokowanie adresów IP jedynie na podstawie kodów statusu HTTP (4xx/499). W praktyce bardzo często prowadzi to do samoblokady, ponieważ nowoczesne aplikacje generują serie zapytań (AJAX, panel administracyjny, przebudowa cache), przez co podczas normalnej pracy mogą pojawiać się błędy HTTP.</p>



<p>Ta konfiguracja wykorzystuje bezpieczniejsze podejście:</p>



<ul class="wp-block-list">
<li><strong>ścieżki exploitów</strong> są zawsze traktowane jako podejrzane,</li>
<li><strong>błędy HTTP są liczone tylko wtedy, gdy zapytanie nie posiada nagłówka Referer</strong> (typowe zachowanie skanerów),</li>
<li><strong>znane złośliwe User-Agenty</strong> są uwzględniane.</li>
</ul>



<h2 class="wp-block-heading">Krok 1: Instalacja Fail2Ban</h2>



<p>Zainstaluj Fail2Ban:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">apt update
apt install -y fail2ban</pre>



<p>Włącz oraz uruchom usługę:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">systemctl enable fail2ban
systemctl start fail2ban</pre>



<p>Sprawdź status działania:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">fail2ban-client ping
systemctl status fail2ban</pre>



<h2 class="wp-block-heading">Krok 2: Utworzenie filtra nginx-secure</h2>



<p>Utwórz plik filtra:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">nano /etc/fail2ban/filter.d/nginx-secure.conf</pre>



<p>Wklej poniższą konfigurację:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">[Definition]

failregex =
    ^&lt;HOST&gt; - .* "(?:GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH|PROPFIND|CONNECT) (?:/\.env|/wp-config\.php|/phpinfo\.php|/(?:phpmyadmin|adminer)(?:/|$)|/(?:\.git|\.svn|\.hg)(?:/|$)|/vendor/phpunit/|/cgi-bin/).*" \d{3} .*

    ^&lt;HOST&gt; - .* "(?:GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH|PROPFIND|CONNECT) [^"]*" (?:400|403|404|405|408|413|414|429|444) [^"]* "-" ".*"

    ^&lt;HOST&gt; - .* "(?:GET|POST|HEAD|PUT|DELETE|OPTIONS|PATCH|PROPFIND|CONNECT).*" \d{3} .* "(?:[^"]*)" "(?:[^"]*(?:sqlmap|nikto|masscan|zgrab|nmap|acunetix|wpscan|dirbuster|gobuster)[^"]*)"

ignoreregex =</pre>



<h2 class="wp-block-heading">Krok 3: Utworzenie jail nginx-secure</h2>



<p>Utwórz plik konfiguracji jail:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">nano /etc/fail2ban/jail.d/nginx-secure.conf</pre>



<p>Wklej konfigurację:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">[nginx-secure]
enabled  = true
port     = http,https
filter   = nginx-secure

logpath  = /var/log/nginx/access.log
           /var/log/nginx/access-*.log

findtime = 600
maxretry = 20
bantime  = 300

action   = iptables-multiport[name=nginx-secure, port="http,https"]

ignoreip = 127.0.0.1/8 ::1</pre>



<h2 class="wp-block-heading">Krok 4: Restart Fail2Ban</h2>



<pre class="urvanov-syntax-highlighter-plain-tag">fail2ban-server -t
systemctl restart fail2ban</pre>



<h2 class="wp-block-heading">Krok 5: Sprawdzenie integracji z firewallem</h2>



<p>Sprawdź czy łańcuch Fail2Ban istnieje:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">iptables -S | grep f2b-nginx-secure
iptables -L f2b-nginx-secure -n -v</pre>



<h2 class="wp-block-heading">Test z zewnętrznej maszyny</h2>



<p>Test ścieżki exploita:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">for i in 1 2 3 4 5; do
  curl -I https://soban.pl/.env
done</pre>



<p>Test logiki błędów bez Referer:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">for i in 1 2 3 4 5; do
  curl -sS -o /dev/null -w "%{http_code}\n" https://soban.pl/this-path-should-not-exist-$i
done</pre>



<p>Po wykryciu powtarzających się podejrzanych żądań adres IP zostanie zablokowany na 5 minut.</p>



<h2 class="wp-block-heading">Sprawdzenie zbanowanych adresów IP</h2>



<pre class="urvanov-syntax-highlighter-plain-tag">fail2ban-client status nginx-secure</pre>



<h2 class="wp-block-heading">Odblokowanie adresu IP</h2>



<p>Ręczne zdjęcie bana:</p>



<pre class="urvanov-syntax-highlighter-plain-tag">fail2ban-client set nginx-secure unbanip YOUR_IP</pre>



<h2 class="wp-block-heading">Podsumowanie</h2>



<ul class="wp-block-list">
<li>blokuje rzeczywiste próby exploitów i skanery,</li>
<li>minimalizuje ryzyko samoblokady administratora,</li>
<li>stosuje krótki 5-minutowy ban,</li>
<li>działa z iptables-nft,</li>
<li>łatwy test oraz szybkie odblokowanie adresu IP.</li>
</ul>
<p>Artykuł <a href="https://soban.pl/pl/fail2ban-nginx-wordpress-setup/">Konfiguracja Fail2Ban dla Nginx &#8211; blokowanie skanerów i exploitów bez blokowania administratora WordPress</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Automatyczny upgrade Debian 12 → Debian 13 z opcjonalną aktualizacją PHP i nginx</title>
		<link>https://soban.pl/pl/upgrade-debian-12-do-13/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 10:44:22 +0000</pubDate>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Patching]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=702</guid>

					<description><![CDATA[<p>Upgrade Debiana z wersji 12 (bookworm) do 13 (trixie) to operacja, która na serwerach i kontenerach (np. Proxmox LXC / VM) powinna być robiona powtarzalnie i bez niespodzianek. Poniżej masz prosty poradnik oraz gotowe komendy do pobrania i uruchomienia skryptu. Zanim odpalisz upgrade: zrób backup / snapshot. W Proxmoxie najlepiej vzdump lub snapshot. Na bare-metal [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/upgrade-debian-12-do-13/">Automatyczny upgrade Debian 12 → Debian 13 z opcjonalną aktualizacją PHP i nginx</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="682" src="https://soban.pl/wp-content/uploads/2026/02/image-1024x682.png" alt="" class="wp-image-707" style="width:551px;height:auto" srcset="https://soban.pl/wp-content/uploads/2026/02/image-1024x682.png 1024w, https://soban.pl/wp-content/uploads/2026/02/image-300x200.png 300w, https://soban.pl/wp-content/uploads/2026/02/image-768x511.png 768w, https://soban.pl/wp-content/uploads/2026/02/image.png 1119w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Upgrade Debiana z wersji 12 (<strong>bookworm</strong>) do 13 (<strong>trixie</strong>) to operacja, która na serwerach i kontenerach (np. Proxmox LXC / VM) powinna być robiona powtarzalnie i bez niespodzianek. Poniżej masz prosty poradnik oraz gotowe komendy do pobrania i uruchomienia skryptu.</p>



<p><strong>Zanim odpalisz upgrade:</strong> zrób backup / snapshot. W Proxmoxie najlepiej <code>vzdump</code> lub snapshot. Na bare-metal chociaż kopia <code>/etc</code>, aplikacji i baz danych.</p>



<ul class="wp-block-list">
<li><strong>Proxmox LXC / VM</strong>: backup (vzdump) albo snapshot.</li>



<li><strong>Serwer</strong>: backup /etc, /var/www, bazy danych (MySQL/PostgreSQL), certyfikaty SSL.</li>
</ul>



<p>Skrypt do pobrania:</p>



<p><a href="https://soban.pl/bash/upgrade_to_debian13.sh" target="_blank" rel="noopener noreferrer">https://soban.pl/bash/upgrade_to_debian13.sh</a></p>



<h2 class="wp-block-heading">1) Backup przed upgradem (przykłady)</h2>



<p>Przykład backupu w Proxmox (na hoście Proxmox, podmień CTID/VMID):</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">vzdump 101 --mode snapshot --compress zstd --storage local</pre></div>



<p>Przykład prostego backupu katalogów na serwerze (to nie zastąpi pełnego snapshotu, ale lepsze to niż nic):</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">tar czf /root/backup_before_upgrade.tar.gz /etc /var/www /root</pre></div>



<h2 class="wp-block-heading">2) Pobranie skryptu (wget / curl)</h2>



<p>Najprościej: użyj <strong>wget</strong>. Jeśli komenda <code>wget</code> nie działa mimo zainstalowanego pakietu, użyj wariantu z pełną ścieżką <code>/usr/bin/wget</code>.</p>



<p><strong>Wariant A (standardowy wget):</strong></p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">apt update
apt install -y wget
cd /root
wget -O upgrade_to_debian13.sh https://soban.pl/bash/upgrade_to_debian13.sh
chmod +x upgrade_to_debian13.sh</pre></div>



<p><strong>Wariant B (wget z pełną ścieżką – pomaga gdy PATH jest skopany):</strong></p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">apt update
apt install -y wget
cd /root
/usr/bin/wget -O upgrade_to_debian13.sh https://soban.pl/bash/upgrade_to_debian13.sh
chmod +x upgrade_to_debian13.sh</pre></div>



<p><strong>Wariant C (curl):</strong></p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">apt update
apt install -y curl
cd /root
curl -fsSL -o upgrade_to_debian13.sh https://soban.pl/bash/upgrade_to_debian13.sh
chmod +x upgrade_to_debian13.sh</pre></div>



<h2 class="wp-block-heading">3) Pomoc skryptu (parametry)</h2>



<p>Zanim odpalisz upgrade, zobacz listę parametrów i przykłady użycia:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cd /root
./upgrade_to_debian13.sh --help</pre></div>



<h2 class="wp-block-heading">4) Upgrade Debian 12 → Debian 13 (system only)</h2>



<p>Jeśli jesteś na Debian 12 (bookworm) i chcesz wykonać tylko upgrade systemu:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cd /root
./upgrade_to_debian13.sh</pre></div>



<p>Skrypt zrobi backup <code>/etc/apt/sources.list</code>, podmieni repozytoria na trixie, wykona <code>apt update</code> oraz <code>apt full-upgrade</code>, a na końcu <code>autoremove</code> i <code>autoclean</code>.</p>



<h2 class="wp-block-heading">5) Auto-detekcja PHP/nginx i aktualizacja jeśli potrzeba</h2>



<p>Jeśli kontener/VM jest webowy i chcesz, żeby skrypt sam wykrył użycie PHP (nginx + <code>fastcgi_pass</code>) i w razie potrzeby zaktualizował PHP oraz nginx:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cd /root
./upgrade_to_debian13.sh --auto</pre></div>



<h2 class="wp-block-heading">6) Wymuszona aktualizacja PHP i nginx (PHP-FPM socket fix)</h2>



<p>Jeśli chcesz wymusić instalację/upgrade PHP oraz automatyczne przestawienie konfiguracji nginx na poprawny socket PHP-FPM:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cd /root
./upgrade_to_debian13.sh --with-php --with-nginx --php-version 8.2</pre></div>



<p>To polecenie instaluje PHP 8.2 (php-fpm + popularne moduły) i podmienia w konfiguracjach nginx stare ścieżki socketów na <code>/run/php/php8.2-fpm.sock</code>. Następnie wykonuje <code>nginx -t</code> oraz restart/reload usług.</p>



<h2 class="wp-block-heading">7) Debian 13 już jest? Tryb tylko PHP/nginx (bez release upgrade)</h2>



<p>Jeżeli system jest już na Debian 13 (trixie) i chcesz wykonać tylko aktualizację PHP/nginx bez ruszania repozytoriów systemowych:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cd /root
./upgrade_to_debian13.sh --php-nginx-only --with-php --with-nginx --php-version 8.2</pre></div>



<h2 class="wp-block-heading">8) Tryb testowy (dry-run)</h2>



<p>Jeśli chcesz zobaczyć co skrypt zrobi, ale bez wykonywania zmian:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cd /root
./upgrade_to_debian13.sh --auto --dry-run</pre></div>



<h2 class="wp-block-heading">9) Diagnostyka: wget jest zainstalowany, a nie działa</h2>



<p>Jeżeli <code>apt</code> mówi, że wget jest zainstalowany, a shell krzyczy <code>command not found</code>, to najczęściej problem z <code>PATH</code>. Najprostsza obejściówka to użycie pełnej ścieżki: <code>/usr/bin/wget</code>.</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">echo "$PATH"
command -v wget || true
ls -l /usr/bin/wget || true
/usr/bin/wget --version || true</pre></div>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p>To rozwiązanie jest wygodne, bo w jednym miejscu masz upgrade Debian 12 → Debian 13 oraz (opcjonalnie) ogarnięcie problemów z PHP/nginx po upgrade (socket PHP-FPM, test konfiguracji nginx i restart usług). Najważniejsze: zrób backup przed upgradem i zawsze zacznij od <code>--help</code>, żeby widzieć dostępne opcje.</p>



<p>Skrypt: <a href="https://soban.pl/bash/upgrade_to_debian13.sh" target="_blank" rel="noopener noreferrer">https://soban.pl/bash/upgrade_to_debian13.sh</a></p>
<p>Artykuł <a href="https://soban.pl/pl/upgrade-debian-12-do-13/">Automatyczny upgrade Debian 12 → Debian 13 z opcjonalną aktualizacją PHP i nginx</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dell WD19/WD19S: aktualizacja firmware na Proxmox/Debian bez timeoutów USB (fwupd + autosuspend fix)</title>
		<link>https://soban.pl/pl/dell-wd19s-firmware-update-proxmox-debian-usb-timeout-fix/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Sun, 18 Jan 2026 21:00:19 +0000</pubDate>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Dell]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=666</guid>

					<description><![CDATA[<p>Jeśli próbujesz aktualizować firmware stacji dokującej Dell WD19/WD19S na Proxmoxie (albo Debianie) przez fwupdmgr, możesz trafić na klasyczny błąd typu Operation timed out podczas etapu Erasing…. W praktyce update sypie się przez zarządzanie energią USB (autosuspend). Poniżej masz prosty, skuteczny fix oraz gotowy skrypt do odpalenia na serwerze/laptopie. Objawy problemu Najczęściej w trakcie aktualizacji docka [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/dell-wd19s-firmware-update-proxmox-debian-usb-timeout-fix/">Dell WD19/WD19S: aktualizacja firmware na Proxmox/Debian bez timeoutów USB (fwupd + autosuspend fix)</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="669" src="https://soban.pl/wp-content/uploads/2026/01/image-1024x669.png" alt="" class="wp-image-667" style="aspect-ratio:1.5306645407436934;width:654px;height:auto" srcset="https://soban.pl/wp-content/uploads/2026/01/image-1024x669.png 1024w, https://soban.pl/wp-content/uploads/2026/01/image-300x196.png 300w, https://soban.pl/wp-content/uploads/2026/01/image-768x502.png 768w, https://soban.pl/wp-content/uploads/2026/01/image.png 1113w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>Jeśli próbujesz aktualizować firmware stacji dokującej Dell WD19/WD19S na Proxmoxie (albo Debianie) przez <code>fwupdmgr</code>, możesz trafić na klasyczny błąd typu <em>Operation timed out</em> podczas etapu <strong>Erasing…</strong>. W praktyce update sypie się przez zarządzanie energią USB (autosuspend). Poniżej masz prosty, skuteczny fix oraz gotowy skrypt do odpalenia na serwerze/laptopie.</p>



<h2 class="wp-block-heading">Objawy problemu</h2>



<p>Najczęściej w trakcie aktualizacji docka (WD19/WD19S) pojawia się błąd podobny do:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">failed to write-firmware: failed to erase bank: failed after 5 retries: failed to SetReport: USB error: Operation timed out [-7]</pre></div>



<p>Wtedy <code>fwupdmgr</code> może pokazywać urządzenie WD19S jako <strong>Update State: Failed</strong> albo stale informować o <strong>pending activation</strong>, ale sam flash nie przechodzi do końca.</p>



<h2 class="wp-block-heading">Dlaczego tak się dzieje?</h2>



<p>Dock podczas flashowania wykonuje długie operacje, a gdy system próbuje oszczędzać energię na USB (autosuspend), kontrolne transfery USB mogą się wysypywać. Efekt: timeout dokładnie na etapie kasowania banku flash (<em>erase bank</em>).</p>



<h2 class="wp-block-heading">Szybki fix: wyłącz autosuspend USB na czas aktualizacji</h2>



<p>Najprostsze rozwiązanie to tymczasowe ustawienie autosuspend na <code>-1</code> (czyli wyłączenie). To ustawienie obowiązuje do rebootu (chyba że zrobisz je na stałe w kernel cmdline), ale w zupełności wystarczy na czas update.</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">echo -1 &gt; /sys/module/usbcore/parameters/autosuspend</pre></div>



<p>Następnie uruchom aktualizację:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">fwupdmgr refresh --force
fwupdmgr update</pre></div>



<h2 class="wp-block-heading">Po update: „pending activation” i wymagane odłączenie kabla</h2>



<p>Po udanej instalacji firmware dla WD19/WD19S <code>fwupdmgr</code> często wypisuje komunikat:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">The update will continue when the device USB cable has been unplugged.
WD19S is pending activation; use fwupdmgr activate to complete the update.</pre></div>



<p>Wtedy zrób to w tej kolejności:</p>



<ul class="wp-block-list">
<li>Odłącz kabel USB-C od docka (od laptopa).</li>



<li>(Opcjonalnie) Odłącz zasilanie docka na 10–15 sekund i podepnij ponownie.</li>



<li>Podepnij USB-C z powrotem.</li>



<li>Wykonaj aktywację:</li>
</ul>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">fwupdmgr activate</pre></div>



<p>Na końcu sprawdź status:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">fwupdmgr get-updates
fwupdmgr get-devices | less</pre></div>



<h2 class="wp-block-heading">Gotowy skrypt: install + update + wyłączenie autosuspend (z restore)</h2>



<p>Poniżej masz gotowy skrypt, który:</p>



<ul class="wp-block-list">
<li>instaluje <code>fwupd</code></li>



<li>odświeża metadane LVFS</li>



<li>tymczasowo wyłącza autosuspend USB (żeby WD19S nie wywalał timeoutów)</li>



<li>uruchamia aktualizacje</li>



<li>przywraca poprzednią wartość autosuspend po zakończeniu (nawet jeśli update się wywali)</li>
</ul>



<p>Skrypt możesz wkleić ręcznie z artykułu, ale jeśli wolisz szybciej: możesz go pobrać bezpośrednio z:</p>



<p><strong>https://soban.pl/bash/dell_updage.sh</strong></p>



<p>Przykład pobrania i uruchomienia:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">cd /root/scripts
curl -fsSL https://soban.pl/bash/dell_updage.sh -o dell_updage.sh
chmod +x dell_updage.sh
./dell_updage.sh</pre></div>



<p>Jeśli chcesz, możesz też podejrzeć treść przed uruchomieniem:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">curl -fsSL https://soban.pl/bash/dell_updage.sh | less</pre></div>



<p>Jeżeli nie masz <code>less</code> w systemie:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">apt update
apt install -y less</pre></div>



<h2 class="wp-block-heading">Skrypt (pełna treść)</h2>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">#!/bin/bash
set -euo pipefail

# dell upgrade:
# - installs fwupd
# - refreshes metadata
# - runs fwupdmgr update
# - TEMPORARILY disables USB autosuspend to avoid WD19/WD19S timeouts
# - restores autosuspend setting after update

echo "[INFO] Installing fwupd..."
apt update
apt install -y fwupd

echo "[INFO] Refreshing firmware metadata..."
fwupdmgr refresh --force
fwupdmgr get-updates || true

# Save current autosuspend value (if exists)
AUTOSUSPEND_PATH="/sys/module/usbcore/parameters/autosuspend"
OLD_AUTOSUSPEND=""

if [[ -f "$AUTOSUSPEND_PATH" ]]; then
  OLD_AUTOSUSPEND="$(cat "$AUTOSUSPEND_PATH" || true)"
  echo "[INFO] Current usbcore autosuspend: ${OLD_AUTOSUSPEND}"
else
  echo "[WARN] autosuspend sysfs file not found: $AUTOSUSPEND_PATH"
fi

restore_autosuspend() {
  if [[ -f "$AUTOSUSPEND_PATH" &amp;&amp; -n "${OLD_AUTOSUSPEND}" ]]; then
    echo "[INFO] Restoring usbcore autosuspend back to: ${OLD_AUTOSUSPEND}"
    echo "${OLD_AUTOSUSPEND}" &gt; "$AUTOSUSPEND_PATH" || true
  fi
}
trap restore_autosuspend EXIT

# Disable autosuspend to prevent USB timeout during dock firmware erase/write
if [[ -f "$AUTOSUSPEND_PATH" ]]; then
  echo "[INFO] Disabling USB autosuspend (set to -1) to avoid dock update timeouts..."
  echo -1 &gt; "$AUTOSUSPEND_PATH"
fi

read -p "Czy chcesz zaktualizowac wszystkie urzadzenia? (y/n): " answer
if [[ "$answer" == "y" || "$answer" == "Y" ]]; then
  echo "[INFO] Running fwupdmgr update..."
  fwupdmgr update || {
    echo "[ERROR] fwupdmgr update failed."
    echo "[HINT] If this is Dell dock (WD19/WD19S), try: unplug USB-C, replug, then run: fwupdmgr activate"
    exit 1
  }

  echo "[INFO] Update finished."
  echo "[INFO] If you updated a Dell dock and it says 'pending activation':"
  echo "       1) Unplug USB-C cable from the dock"
  echo "       2) (Optional) Unplug dock power for 10 seconds, plug back"
  echo "       3) Run: fwupdmgr activate"
else
  echo "[INFO] Skipping firmware update."
fi

echo "[INFO] Done."</pre></div>



<h2 class="wp-block-heading">Uruchomienie skryptu</h2>



<p>Najprościej:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">chmod +x dell_updage.sh
./dell_updage.sh</pre></div>



<h2 class="wp-block-heading">Najczęstsze pytania i tipy</h2>



<ul class="wp-block-list">
<li><strong>Update dalej się sypie?</strong> Odłącz wszystkie peryferia od docka (monitory/LAN/USB), zostaw tylko zasilanie i USB-C, zrób hard reset docka (odłącz prąd na 30s) i spróbuj ponownie.</li>



<li><strong>„pending activation” po update</strong> – to normalne dla WD19/WD19S. Musisz wypiąć USB-C, podpiąć ponownie i zrobić <code>fwupdmgr activate</code>.</li>



<li><strong>To aktualizuje BIOS laptopa?</strong> Nie zawsze. <code>fwupdmgr</code> pokaże osobno „System Firmware” (BIOS/UEFI) i osobno dock. W tym artykule skupiamy się na docku i problemie z USB timeout.</li>
</ul>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p>Jeśli firmware Dell WD19/WD19S wywala się na Proxmox/Debian podczas <em>Erasing…</em>, to w większości przypadków wystarczy na czas aktualizacji wyłączyć autosuspend USB. Skrypt powyżej robi to automatycznie, a potem przywraca poprzednie ustawienie, żeby system dalej działał normalnie.</p>



<p></p>
<p>Artykuł <a href="https://soban.pl/pl/dell-wd19s-firmware-update-proxmox-debian-usb-timeout-fix/">Dell WD19/WD19S: aktualizacja firmware na Proxmox/Debian bez timeoutów USB (fwupd + autosuspend fix)</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dynamiczne nazwy zakładek w Tmuxie z SSH i hostname</title>
		<link>https://soban.pl/pl/dynamiczne-nazwy-zakladek-w-tmuxie-z-ssh-i-hostname/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Tue, 15 Apr 2025 14:57:06 +0000</pubDate>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[tmux]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=633</guid>

					<description><![CDATA[<p>Dynamiczne nazwy zakładek w Tmuxie z SSH i hostname Chcesz, aby Twoje zakładki (okna) w Tmuxie automatycznie pokazywały hostname serwera, do którego się logujesz przez SSH? A po wylogowaniu wracały do nazwy lokalnego hosta? Ten poradnik pokaże Ci, jak to skonfigurować krok po kroku. 1. Konfiguracja Tmux – ~/.tmux.conf W pliku konfiguracyjnym Tmuxa ustaw domyślną [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/dynamiczne-nazwy-zakladek-w-tmuxie-z-ssh-i-hostname/">Dynamiczne nazwy zakładek w Tmuxie z SSH i hostname</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://soban.pl/wp-content/uploads/2025/04/image-2.png" alt="" class="wp-image-634" style="width:454px;height:auto" srcset="https://soban.pl/wp-content/uploads/2025/04/image-2.png 1024w, https://soban.pl/wp-content/uploads/2025/04/image-2-300x300.png 300w, https://soban.pl/wp-content/uploads/2025/04/image-2-150x150.png 150w, https://soban.pl/wp-content/uploads/2025/04/image-2-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><br>Dynamiczne nazwy zakładek w Tmuxie z SSH i hostname</p>



<p>Chcesz, aby Twoje zakładki (okna) w Tmuxie automatycznie pokazywały hostname serwera, do którego się logujesz przez SSH? A po wylogowaniu wracały do nazwy lokalnego hosta? Ten poradnik pokaże Ci, jak to skonfigurować krok po kroku.</p>



<h2 class="wp-block-heading">1. Konfiguracja Tmux – ~/.tmux.conf</h2>



<p>W pliku konfiguracyjnym Tmuxa ustaw domyślną komendę startową na specjalny plik Bash (<code>.bash_tmux</code>), który załatwi całą magię.</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">set-option -g default-command 'bash --rcfile ~/.bash_tmux'</pre></div>



<h2 class="wp-block-heading">2. Skrypt startowy Bash – ~/.bash_tmux</h2>



<p>Ten plik wykonuje się przy każdym starcie okna Tmux. Ustawia nazwę okna na hostname oraz nadpisuje polecenie <code>ssh</code>, aby aktualizowało zakładkę przy połączeniu i po rozłączeniu.</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">#!/bin/bash
# ~/.bash_tmux
# Custom Bash init file for Tmux sessions with dynamic tab naming

# Override the default ssh command to dynamically rename the Tmux window
ssh() {
  if [ -n "$TMUX" ]; then
    # Loop through arguments to find the target host (first non-flag argument)
    for arg in "$@"; do
      if [[ "$arg" != -* ]]; then
        if [[ "$arg" == *@* ]]; then
          host="${arg#*@}"  # extract host from user@host
        else
          host="$arg"
        fi
        break
      fi
    done

    # Strip any trailing junk or whitespace
    host="$(echo "$host" | cut -d' ' -f1)"

    # Rename the Tmux window to the SSH target
    [ -n "$host" ] &amp;&amp; tmux rename-window "$host"

    # Save the local hostname to restore later
    local_host="$(hostname -s)"

    # Run the actual SSH command
    command ssh "$@"

    # Restore the original window name after logout
    tmux rename-window "$local_host"
  else
    # Not in Tmux — just run ssh normally
    command ssh "$@"
  fi
}

# Load the user's regular bash configuration
source ~/.bashrc

# On shell start, if in Tmux, set the window name to the current hostname
if [ -n "$TMUX" ]; then
  tmux rename-window "$(hostname -s)"
fi</pre></div>



<h2 class="wp-block-heading">3. Przeładowanie konfiguracji Tmux bez restartu</h2>



<p>Aby zastosować zmiany bez restartowania całej sesji Tmux, użyj następującego polecenia:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">tmux source-file ~/.tmux.conf</pre></div>



<p>Dodatkowo możesz przeładować bieżącą powłokę z <code>.bash_tmux</code> ręcznie:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">exec bash --rcfile ~/.bash_tmux</pre></div>



<h2 class="wp-block-heading">4. Efekt końcowy</h2>



<ul class="wp-block-list">
<li>Nowe okno Tmux ma automatycznie nazwę lokalnego hosta</li>



<li>Po połączeniu przez SSH — zakładka zmienia się na nazwę zdalnego hosta</li>



<li>Po wylogowaniu — zakładka wraca do lokalnego hostname</li>
</ul>



<p>Prosto, czytelnie i mega wygodnie — idealne dla adminów, devopsów i fanów porządku w Tmuxie 💪</p>



<p></p>
<p>Artykuł <a href="https://soban.pl/pl/dynamiczne-nazwy-zakladek-w-tmuxie-z-ssh-i-hostname/">Dynamiczne nazwy zakładek w Tmuxie z SSH i hostname</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Automatyczne usuwanie najstarszych plików na zdalnym dysku QNAP przez SSHFS</title>
		<link>https://soban.pl/pl/automatyczne-usuwanie-najstarszych-plikow-na-zdalnym-dysku-qnap-przez-sshfs/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Fri, 07 Feb 2025 14:41:45 +0000</pubDate>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[QNAP]]></category>
		<category><![CDATA[Skrypt]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=566</guid>

					<description><![CDATA[<p>Automatyzacja Zarządzania Przestrzenią Dyskową w Środowisku Linux W dzisiejszym cyfrowym świecie, gdzie dane gromadzone są w coraz większych ilościach, zarządzanie przestrzenią dyskową staje się kluczowym elementem utrzymania efektywności operacyjnej systemów. W tym artykule przedstawię skrypt, który automatyzuje proces zarządzania przestrzenią na zdalnym dysku montowanym przez SSHFS, szczególnie przydatny dla administratorów systemów, którzy regularnie muszą radzić [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/automatyczne-usuwanie-najstarszych-plikow-na-zdalnym-dysku-qnap-przez-sshfs/">Automatyczne usuwanie najstarszych plików na zdalnym dysku QNAP przez SSHFS</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="501" height="497" src="https://soban.pl/wp-content/uploads/2025/02/image.png" alt="" class="wp-image-574" srcset="https://soban.pl/wp-content/uploads/2025/02/image.png 501w, https://soban.pl/wp-content/uploads/2025/02/image-300x298.png 300w, https://soban.pl/wp-content/uploads/2025/02/image-150x150.png 150w" sizes="auto, (max-width: 501px) 100vw, 501px" /></figure>



<p><br><strong>Automatyzacja Zarządzania Przestrzenią Dyskową w Środowisku Linux</strong></p>



<p>W dzisiejszym cyfrowym świecie, gdzie dane gromadzone są w coraz większych ilościach, zarządzanie przestrzenią dyskową staje się kluczowym elementem utrzymania efektywności operacyjnej systemów. W tym artykule przedstawię skrypt, który automatyzuje proces zarządzania przestrzenią na zdalnym dysku montowanym przez SSHFS, szczególnie przydatny dla administratorów systemów, którzy regularnie muszą radzić sobie z zapełniającymi się nośnikami danych.</p>



<h3 class="wp-block-heading">Wymagania wstępne</h3>



<p>Przed rozpoczęciem, upewnij się, że na twoim systemie zainstalowane jest SSHFS oraz wszystkie niezbędne pakiety umożliwiające jego prawidłową pracę. SSHFS pozwala na montowanie systemów plików zdalnych przez SSH, co jest kluczowe dla działania naszego skryptu. Aby zainstalować SSHFS oraz niezbędne narzędzia, w tym pakiet umożliwiający przekazywanie hasła (sshpass), użyj poniższego polecenia:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">sudo apt-get update
sudo apt-get install sshfs fuse sshpass -y</pre></div>



<h3 class="wp-block-heading">Skrypt Bash do zarządzania przestrzenią dyskową</h3>



<p>Nasz skrypt Bash skupia się na monitorowaniu i utrzymaniu określonego procentu wolnej przestrzeni dyskowej na zdalnym dysku, montowanym za pomocą SSHFS. Oto główne funkcje skryptu:</p>



<p><strong>Definicja Celów:</strong></p>



<p>TARGET_USAGE=70 &#8211; procent przestrzeni dyskowej, który chcemy utrzymać jako zajęty. Skrypt będzie działał na rzecz utrzymania przynajmniej 30% wolnego miejsca na dysku.</p>



<p><strong>Punkt Montowania i Ścieżki:</strong></p>



<p>MOUNT_POINT=&#8221;/mnt/qnapskorupki&#8221; &#8211; lokalny katalog, w którym montowany jest zdalny dysk. TARGET_DIRS=&#8221;$MOUNT_POINT/up*.soban.pl&#8221; &#8211; ścieżki katalogów, w których skrypt będzie szukał plików do usunięcia, jeśli zajdzie taka potrzeba.</p>



<p><strong>Funkcja check_qnap:</strong> Ta funkcja sprawdza, czy dysk jest zamontowany i czy katalog montowania nie jest pusty. Jeśli są problemy, skrypt próbuje odmontować i ponownie zamontować dysk, używając sshfs z hasłem przekazanym przez sshpass.</p>



<p><strong>Usuwanie Plików:</strong> Skrypt monitoruje użycie dysku i, jeśli przekroczone jest TARGET_USAGE, znajduje i usuwa najstarsze pliki w określonych katalogach aż do osiągnięcia docelowego poziomu wolnej przestrzeni.</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">#!/bin/bash

TARGET_USAGE=70
MOUNT_POINT="/mnt/qnapskorupki"
TARGET_DIRS="$MOUNT_POINT/up*.soban.pl"

# Function to check and mount SSHFS
function check_qnap {
    local remote_path="/share/MD0_DATA/backup_proxmox/"
    local user_remote="remote_user"
    local remote_host="192.168.1.XX"
    local port=22
    local password='XXXXXXXXXXXXXXXXXXXXXXX'

    # Check if the mounting directory exists and is empty
    if [ ! -d "$MOUNT_POINT" ] || [ -z "$(ls -A $MOUNT_POINT)" ]; then
        echo "Problem: The directory $MOUNT_POINT is missing or empty. Attempting to remount..."

        # Unmount if anything is currently mounted
        if mountpoint -q $MOUNT_POINT; then
            echo "Unmounting $MOUNT_POINT..."
            fusermount -u $MOUNT_POINT
            sleep 5
        fi

        # Remount
        echo "Mounting SSHFS: $user_remote@$remote_host:$remote_path to $MOUNT_POINT..."
        echo $password | sshfs $user_remote@$remote_host:$remote_path $MOUNT_POINT -o password_stdin

        # Check if the mounting was successful
        if mountpoint -q $MOUNT_POINT; then
            echo "QNAP successfully mounted."
        else
            echo "Error: Failed to mount $remote_host:$remote_path to $MOUNT_POINT."
            exit 1
        fi
    fi
}

# Check and mount the disk
check_qnap

# Begin deleting files
current_usage=$(df --output=pcent "$MOUNT_POINT" | tail -n 1 | tr -d '%')
echo "Current usage: $current_usage%"
target_free_space=$((100 - $TARGET_USAGE))

# Continue deleting files until the required free space is achieved
while [[ $current_usage -gt $TARGET_USAGE ]]; do
    # Find the oldest file in the target directories
    oldest_file=$(find $TARGET_DIRS -type f -printf '%T+ %p\n' | sort | head -n 1 | cut -d' ' -f2)

    if [ -z "$oldest_file" ]; then
        echo "No files to delete."
        break
    fi

    # Delete the oldest file
    echo "Deleting file $oldest_file..."
    rm -f "$oldest_file"

    # Check usage again
    current_usage=$(df --output=pcent "$MOUNT_POINT" | tail -n 1 | tr -d '%')
    echo "New usage after deletion: $current_usage%"
done

echo "Target disk usage achieved."</pre></div>



<h3 class="wp-block-heading">Przykładowe wywołanie skryptu:</h3>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="795" height="164" src="https://soban.pl/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-07-153719-4.png" alt="skrypt zaczyna pracę i stopniowo usuwa pliki" class="wp-image-579" srcset="https://soban.pl/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-07-153719-4.png 795w, https://soban.pl/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-07-153719-4-300x62.png 300w, https://soban.pl/wp-content/uploads/2025/02/Zrzut-ekranu-2025-02-07-153719-4-768x158.png 768w" sizes="auto, (max-width: 795px) 100vw, 795px" /></figure>



<p>skrypt będzie pracować aż do osiągnięcia 70% zgodnie z założeniem:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="778" height="232" src="https://soban.pl/wp-content/uploads/2025/02/2.jpg" alt="Skrypt pracuje do osiągniecia 70%" class="wp-image-580" srcset="https://soban.pl/wp-content/uploads/2025/02/2.jpg 778w, https://soban.pl/wp-content/uploads/2025/02/2-300x89.jpg 300w, https://soban.pl/wp-content/uploads/2025/02/2-768x229.jpg 768w" sizes="auto, (max-width: 778px) 100vw, 778px" /></figure>



<h3 class="wp-block-heading">Pobieranie skryptu i dodawanie do crontaba</h3>



<p>Skrypt oczywiście należy dostosować pod swoje wymagania, jednak jeśli chcesz go pobrać i dodać do crontaba to:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">wget soban.pl/bash/remove_old_files.sh
chmod +x remove_old_files.sh</pre></div>



<p>Jeśli chcemy zautomatyzować proces usuwania np pod koniec dnia, to warto dodać do crontaba następujący wpis:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">crontab -e</pre></div>



<p>Skrypt będzie się uruchamiać w tym przypadku o 23:55 każdego dnia:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag">45 23 * * * /root/scripts/remove_old_files.sh &gt; /dev/null 2&gt;&amp;1</pre></div>



<p>Należy zachować powyżej odpowiednią ścieżkę do skryptu.</p>



<h3 class="wp-block-heading">Bezpieczeństwo i optymalizacja</h3>



<p>Skrypt używa hasła wprost w linii komend, co może stanowić ryzyko bezpieczeństwa. W praktycznym zastosowaniu zaleca się użycie bardziej zaawansowanych metod autentykacji, na przykład kluczy SSH, które są bezpieczniejsze i nie wymagają jawnej obecności hasła w skrypcie. Jednak w przypadku QNAPa posłużyliśmy się hasłem pisząc ten skrypt.</p>



<h3 class="wp-block-heading">Podsumowanie</h3>



<p>Prezentowany skrypt jest przykładem, jak można automatyzować codzienne zadania administracyjne, takie jak zarządzanie przestrzenią dyskową, zwiększając tym samym efektywność i niezawodność operacji. Jego implementacja w realnych środowiskach IT może znacznie usprawnić procesy zarządzania danymi, zwłaszcza w sytuacjach, gdzie szybkie reagowanie na zmiany w użyciu dysku jest krytyczne.</p>
<p>Artykuł <a href="https://soban.pl/pl/automatyczne-usuwanie-najstarszych-plikow-na-zdalnym-dysku-qnap-przez-sshfs/">Automatyczne usuwanie najstarszych plików na zdalnym dysku QNAP przez SSHFS</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>iftop jako dobre narzędzie do monitorowania ruchu sieciowego</title>
		<link>https://soban.pl/pl/iftop-jako-dobre-narzedzie-do-monitorowania-ruchu-sieciowego/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Thu, 04 Nov 2021 13:52:56 +0000</pubDate>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=772</guid>

					<description><![CDATA[<p>iftop to narzędzie wiersza poleceń służące do monitorowania przepustowości sieci w czasie rzeczywistym. Wyświetla na bieżąco aktualizowaną listę połączeń sieciowych wraz z ilością przesłanych danych między nimi. Połączenia prezentowane są w formie tabeli i mogą być sortowane według wykorzystania pasma. iftop oferuje różne opcje filtrowania, które pozwalają ograniczyć wyświetlane dane do konkretnych hostów, sieci lub [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/iftop-jako-dobre-narzedzie-do-monitorowania-ruchu-sieciowego/">iftop jako dobre narzędzie do monitorowania ruchu sieciowego</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>iftop</strong> to narzędzie wiersza poleceń służące do monitorowania przepustowości sieci w czasie rzeczywistym. Wyświetla na bieżąco aktualizowaną listę połączeń sieciowych wraz z ilością przesłanych danych między nimi. Połączenia prezentowane są w formie tabeli i mogą być sortowane według wykorzystania pasma.</p>



<p>iftop oferuje różne opcje filtrowania, które pozwalają ograniczyć wyświetlane dane do konkretnych hostów, sieci lub portów. Obsługuje IPv6 oraz umożliwia wyświetlanie adresów IP źródłowych i docelowych, numerów portów oraz używanych protokołów.</p>



<p>Narzędzie to jest szczególnie przydatne do monitorowania ruchu w czasie rzeczywistym i identyfikowania usług lub hostów zużywających najwięcej przepustowości. Może również pomóc w wykrywaniu problemów wydajnościowych sieci oraz w diagnozowaniu usterek.</p>



<p>Podsumowując, iftop to lekkie, a jednocześnie bardzo skuteczne narzędzie stanowiące wartościowe uzupełnienie zestawu narzędzi każdego administratora systemów i sieci.</p>



<p>Jednym z najbardziej przydatnych narzędzi do monitorowania sieci, z których korzystam, jest <strong>iftop</strong>. Staje się szczególnie pomocne, gdy łącze sieciowe jest wysycone. W praktyce może również pomóc wykryć nietypowe wzorce ruchu, w tym ataki typu DoS. W poniższym przykładzie prześlę duży plik na maszynę zdalną z ograniczeniem przepustowości i będę obserwował ruch przy użyciu iftop.</p>



<p>Najpierw instalujemy iftop na maszynie lokalnej (w tym przypadku Kali Linux):</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block">
<pre class="urvanov-syntax-highlighter-plain-tag"># apt install iftop</pre>
</div>



<figure class="wp-block-image size-full">
<img loading="lazy" decoding="async" width="904" height="422" src="https://soban.pl/wp-content/uploads/2021/11/image-4.png" alt="Instalacja iftop w Kali Linux" class="wp-image-286" srcset="https://soban.pl/wp-content/uploads/2021/11/image-4.png 904w, https://soban.pl/wp-content/uploads/2021/11/image-4-300x140.png 300w, https://soban.pl/wp-content/uploads/2021/11/image-4-768x359.png 768w" sizes="auto, (max-width: 904px) 100vw, 904px" />
</figure>



<p>Dystrybucja nie ma większego znaczenia — iftop jest dostępny w większości repozytoriów Linuksa, w tym w Debianie.</p>



<p>Następnie instalujemy iftop na maszynie zdalnej (Debian Linux):</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block">
<pre class="urvanov-syntax-highlighter-plain-tag"># apt install iftop</pre>
</div>



<figure class="wp-block-image size-full">
<img loading="lazy" decoding="async" width="928" height="396" src="https://soban.pl/wp-content/uploads/2021/11/image-6.png" alt="Instalacja iftop w Debian Linux" class="wp-image-288" srcset="https://soban.pl/wp-content/uploads/2021/11/image-6.png 928w, https://soban.pl/wp-content/uploads/2021/11/image-6-300x128.png 300w, https://soban.pl/wp-content/uploads/2021/11/image-6-768x328.png 768w" sizes="auto, (max-width: 928px) 100vw, 928px" />
</figure>



<p>Aby rozpocząć monitorowanie ruchu sieciowego, uruchamiamy iftop z parametrami <code>-PpNn</code>:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block">
<pre class="urvanov-syntax-highlighter-plain-tag"># iftop -PpNn</pre>
</div>



<figure class="wp-block-image size-full">
<img loading="lazy" decoding="async" width="963" height="509" src="https://soban.pl/wp-content/uploads/2021/11/image-9.png" alt="iftop w trakcie monitorowania ruchu" class="wp-image-292" srcset="https://soban.pl/wp-content/uploads/2021/11/image-9.png 963w, https://soban.pl/wp-content/uploads/2021/11/image-9-300x159.png 300w, https://soban.pl/wp-content/uploads/2021/11/image-9-768x406.png 768w" sizes="auto, (max-width: 963px) 100vw, 963px" />
</figure>



<p>Ponieważ jestem połączony z maszyną zdalną przez SSH, widzę swoją aktywną sesję SSH na liście połączeń.</p>



<p>Teraz wracamy na maszynę lokalną i tworzymy duży plik:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block">
<pre class="urvanov-syntax-highlighter-plain-tag"># truncate -s 1G 1G-file.txt</pre>
</div>



<p>Po utworzeniu pliku 1GB przesyłamy go na maszynę zdalną z ograniczeniem przepustowości:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block">
<pre class="urvanov-syntax-highlighter-plain-tag"># scp -l 800 -P2222 1G-file.txt soban@soban.pl:~</pre>
</div>



<figure class="wp-block-image size-full">
<img loading="lazy" decoding="async" width="960" height="128" src="https://soban.pl/wp-content/uploads/2021/11/image-10.png" alt="Transfer pliku przez scp z ograniczeniem prędkości" class="wp-image-293" srcset="https://soban.pl/wp-content/uploads/2021/11/image-10.png 960w, https://soban.pl/wp-content/uploads/2021/11/image-10-300x40.png 300w, https://soban.pl/wp-content/uploads/2021/11/image-10-768x102.png 768w" sizes="auto, (max-width: 960px) 100vw, 960px" />
</figure>



<p>Opcja <code>-l 800</code> ogranicza transfer do 800 Kbit/s. Aby przeliczyć to na KB/s, dzielimy przez 8 — otrzymujemy około 100 KB/s.</p>



<figure class="wp-block-image size-full">
<img loading="lazy" decoding="async" width="957" height="354" src="https://soban.pl/wp-content/uploads/2021/11/image-11.png" alt="Ruch wychodzący widoczny w iftop" class="wp-image-294" srcset="https://soban.pl/wp-content/uploads/2021/11/image-11.png 957w, https://soban.pl/wp-content/uploads/2021/11/image-11-300x111.png 300w, https://soban.pl/wp-content/uploads/2021/11/image-11-768x284.png 768w" sizes="auto, (max-width: 957px) 100vw, 957px" />
</figure>



<figure class="wp-block-image size-full">
<img loading="lazy" decoding="async" width="964" height="501" src="https://soban.pl/wp-content/uploads/2021/11/image-12.png" alt="Ruch przychodzący widoczny w iftop" class="wp-image-295" srcset="https://soban.pl/wp-content/uploads/2021/11/image-12.png 964w, https://soban.pl/wp-content/uploads/2021/11/image-12-300x156.png 300w, https://soban.pl/wp-content/uploads/2021/11/image-12-768x399.png 768w" sizes="auto, (max-width: 964px) 100vw, 964px" />
</figure>



<p>W ten sposób możemy obserwować zarówno ruch wychodzący, jak i przychodzący w czasie rzeczywistym. Choć iftop jest prostym narzędziem, zapewnia bardzo dobrą widoczność bieżącej aktywności sieciowej.</p>



<p>W przypadku prób brute-force widoczna będzie duża liczba krótkotrwałych połączeń. Natomiast atak DoS ma na celu wysycenie pasma, co objawia się znacznym ruchem przychodzącym. Jeśli wzrost ruchu jest uzasadniony, można rozważyć ograniczenie prędkości połączeń — pomocne będzie np. iptables.</p>
<p>Artykuł <a href="https://soban.pl/pl/iftop-jako-dobre-narzedzie-do-monitorowania-ruchu-sieciowego/">iftop jako dobre narzędzie do monitorowania ruchu sieciowego</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>skanowanie ssl i szyfrów nmap</title>
		<link>https://soban.pl/pl/nmap-skanowanie-szyfrow-ssl-tls/</link>
		
		<dc:creator><![CDATA[soban]]></dc:creator>
		<pubDate>Thu, 30 Sep 2021 14:14:27 +0000</pubDate>
				<category><![CDATA[Bash]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://soban.pl/?p=782</guid>

					<description><![CDATA[<p>Nmap – skanowanie SSL/TLS i szyfrów na Debianie 11 W tym przykładzie pracujemy na systemie Debian 11 (Bullseye). Najpierw sprawdźmy wersję systemu: Nmap to jedno z najpotężniejszych narzędzi do skanowania sieci w systemach Linux. Umożliwia skanowanie otwartych portów, wykrywanie uruchomionych usług, identyfikację wersji oprogramowania oraz analizę obsługiwanych protokołów SSL/TLS i pakietów szyfrów. Instalacja na Debianie [&#8230;]</p>
<p>Artykuł <a href="https://soban.pl/pl/nmap-skanowanie-szyfrow-ssl-tls/">skanowanie ssl i szyfrów nmap</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><strong>Nmap – skanowanie SSL/TLS i szyfrów na Debianie 11</strong></p>



<p>W tym przykładzie pracujemy na systemie <strong>Debian 11 (Bullseye)</strong>. Najpierw sprawdźmy wersję systemu:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag"># cat /etc/issue
Debian GNU/Linux 11 \n \l</pre></div>



<p><strong>Nmap</strong> to jedno z najpotężniejszych narzędzi do skanowania sieci w systemach Linux. Umożliwia skanowanie otwartych portów, wykrywanie uruchomionych usług, identyfikację wersji oprogramowania oraz analizę obsługiwanych <strong>protokołów SSL/TLS i pakietów szyfrów</strong>.</p>



<p>Instalacja na Debianie 11 jest bardzo prosta:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag"># apt install nmap</pre></div>



<p>Po instalacji możemy przeskanować zdalny serwer HTTPS. Przykład:</p>



<div class="wp-block-urvanov-syntax-highlighter-code-block"><pre class="urvanov-syntax-highlighter-plain-tag"># nmap -sV --script ssl-enum-ciphers -p 443 google.com</pre></div>



<p>Opcja <code>-sV</code> włącza wykrywanie wersji usług, natomiast <code>--script ssl-enum-ciphers</code> sprawdza obsługiwane wersje TLS oraz dostępne szyfry. Dzięki temu możemy zweryfikować:</p>
<ul>
<li>które wersje TLS są aktywne (TLS 1.0, 1.1, 1.2, 1.3),</li>
<li>czy serwer obsługuje słabe szyfry, np. 3DES,</li>
<li>czy występują potencjalne podatności kryptograficzne.</li>
</ul>



<p>Nmap działa wolniej niż narzędzia takie jak <strong>sslscan</strong>, ale dostarcza bardzo szczegółowych informacji, co jest szczególnie przydatne podczas testowania infrastruktury wewnętrznej.</p>



<p><strong>TLS 1.0:</strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="384" src="https://soban.pl/wp-content/uploads/2021/09/image-1-1024x384.png" alt="Skan TLS 1.0 przy użyciu Nmap" class="wp-image-37" srcset="https://soban.pl/wp-content/uploads/2021/09/image-1-1024x384.png 1024w, https://soban.pl/wp-content/uploads/2021/09/image-1-300x112.png 300w, https://soban.pl/wp-content/uploads/2021/09/image-1-768x288.png 768w, https://soban.pl/wp-content/uploads/2021/09/image-1.png 1086w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>TLS 1.1:</strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="399" src="https://soban.pl/wp-content/uploads/2021/09/image-2-1024x399.png" alt="Skan TLS 1.1 przy użyciu Nmap" class="wp-image-39" srcset="https://soban.pl/wp-content/uploads/2021/09/image-2-1024x399.png 1024w, https://soban.pl/wp-content/uploads/2021/09/image-2-300x117.png 300w, https://soban.pl/wp-content/uploads/2021/09/image-2-768x299.png 768w, https://soban.pl/wp-content/uploads/2021/09/image-2.png 1091w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p><strong>TLS 1.2:</strong></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="583" src="https://soban.pl/wp-content/uploads/2021/09/image-3-1024x583.png" alt="Obsługiwane szyfry TLS 1.2 wykryte przez Nmap" class="wp-image-40" srcset="https://soban.pl/wp-content/uploads/2021/09/image-3-1024x583.png 1024w, https://soban.pl/wp-content/uploads/2021/09/image-3-300x171.png 300w, https://soban.pl/wp-content/uploads/2021/09/image-3-768x437.png 768w, https://soban.pl/wp-content/uploads/2021/09/image-3.png 1084w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Najważniejsze podczas analizy konfiguracji SSL/TLS jest sprawdzenie, czy serwer nie używa przestarzałych lub podatnych szyfrów.</p>



<p>Jeżeli w wynikach zobaczysz komunikat:<br>
<em>&#8222;64-bit block cipher 3DES vulnerable to SWEET32 attack&#8221;</em><br>
oznacza to, że serwer obsługuje szyfr 3DES, który jest podatny na atak <strong>SWEET32</strong>. W środowisku produkcyjnym takie szyfry powinny zostać wyłączone.</p>



<p>Podczas testowania publicznych stron internetowych można również skorzystać z narzędzia online:<br>
<strong>https://www.ssllabs.com/ssltest/</strong></p>



<p>Jednak w przypadku serwerów wewnętrznych, środowisk testowych lub infrastruktury prywatnej, użycie <strong>Nmap bezpośrednio z systemu Debian</strong> jest często najlepszym rozwiązaniem. Regularne skanowanie SSL/TLS pozwala utrzymać wysoki poziom bezpieczeństwa i eliminuje przestarzałe protokoły oraz słabe mechanizmy szyfrowania.</p>
<p>Artykuł <a href="https://soban.pl/pl/nmap-skanowanie-szyfrow-ssl-tls/">skanowanie ssl i szyfrów nmap</a> pochodzi z serwisu <a href="https://soban.pl/pl">soban</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
