<?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>Tietoturva Archives - Lassin kotisivut</title>
	<atom:link href="https://lassinsivut.eu/category/tietoturva/feed/" rel="self" type="application/rss+xml" />
	<link>https://lassinsivut.eu/category/tietoturva/</link>
	<description>Blogi täynnä tietotekniikan juttuja, tervetuloa!</description>
	<lastBuildDate>Mon, 30 Mar 2026 20:33:53 +0000</lastBuildDate>
	<language>fi</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://lassinsivut.eu/wp-content/uploads/2021/11/cropped-cropped-pic-Transparent-32x32.png</url>
	<title>Tietoturva Archives - Lassin kotisivut</title>
	<link>https://lassinsivut.eu/category/tietoturva/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Nginx Proxy Manager GeoBlocking</title>
		<link>https://lassinsivut.eu/nginx-proxy-manager-geoblocking/</link>
		
		<dc:creator><![CDATA[lassi]]></dc:creator>
		<pubDate>Mon, 30 Mar 2026 19:45:28 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Palvelin]]></category>
		<category><![CDATA[Tietoturva]]></category>
		<guid isPermaLink="false">https://lassinsivut.eu/?p=3108</guid>

					<description><![CDATA[<p>GeoBlocking Nginx Proxy Managerilla Geoblokki tarkoittaa tiettyjen maiden tai alueiden IP-osoitteiden estämistä pääsemästä palveluun. Sen tarkoituksena on parantaa tietoturvaa ja vähentää turhaa liikennettä esimerkiksi silloin, kun palvelua käytetään vain tietyssä maassa. Näin voidaan estää haitallisia kirjautumisyrityksiä ja pienentää palvelimen kuormitusta. Dockerin asennus Asennetaan Docker ensin kätevästi heidän valmiilla bash scriptillä. curl -fsSL https://get.docker.com &#124; sudo sh Tehdään kansio Nginxille. mkdir -p /docker/npm cd /docker/npm Luodaan Docker compose tiedosto johon kaikki konfiguraatiot tulevat. nano compose.yaml 🐳 compose.yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 services: app: image: &#039;jc21/nginx-proxy-manager:latest&#039; restart: unless-stopped ports: # These ports are in format &#60;host-port&#62;:&#60;container-port&#62; - &#039;80:80&#039; # Public HTTP Port - &#039;443:443&#039; # Public HTTPS Port - &#039;81:81&#039; # Admin Web Port # Add any other Stream port you want to expose # - &#039;21:21&#039; # FTP environment: # Mysql/Maria connection parameters: DB_MYSQL_HOST: &#34;db&#34; DB_MYSQL_PORT: 3306 DB_MYSQL_USER: &#34;npm&#34; DB_MYSQL_PASSWORD: &#34;npm&#34; DB_MYSQL_NAME: &#34;npm&#34; # Uncomment this if IPv6 is not enabled on your host # DISABLE_IPV6: &#039;true&#039; volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt - ./data/nginx/custom:/etc/nginx/conf.d/custom depends_on: - db db: image: &#039;jc21/mariadb-aria:latest&#039; restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: &#039;npm&#039; MYSQL_DATABASE: &#039;npm&#039; MYSQL_USER: &#039;npm&#039; MYSQL_PASSWORD: &#039;npm&#039; volumes: - ./mysql:/var/lib/mysql geoip-upd: container_name: geoip-upd image: maxmindinc/geoipupdate:latest restart: unless-stopped volumes: - ./data/geoip2:/usr/share/GeoIP environment: TZ: &#34;Europe/Helsinki&#34; GEOIPUPDATE_ACCOUNT_ID: 1234567 GEOIPUPDATE_LICENSE_KEY: &#34;keykeykeykeykeykeykeykey&#34; GEOIPUPDATE_EDITION_IDS: &#34;GeoLite2-City GeoLite2-Country GeoLite2-ASN&#34; #Databaset joita tarvimme GEOIPUPDATE_FREQUENCY: 12 #Kuinka usein database päivittyy GEOIPUPDATE_PRESERVE_FILE_TIMES: 1 #Todellinen aika tiedostolle Seuraavaksi ladataan tarvittavat moduulit. nano /docker/npm/data/nginx/custom/root_top.conf root_top.conf load_module /usr/lib/nginx/modules/ngx_http_geoip2_module.so; load_module /usr/lib/nginx/modules/ngx_stream_geoip2_module.so; Uudelleen käynnistetään containeri jotta muutokset tulevat voimaan. docker exec -it docker-npm nginx -s reload Tarkista kuitenkin oman containerin nimi seuraavalla komennolla. docker ps Tietokannan lataaminen Mene osoitteeseen https://www.maxmind.com/en/geolite2/signup Käytämme maxmindin tarjoavaa geoip datasettejä, ne päivittyvät yllättävän nopeasti. Luo uusi license key ja ota talteen account ID, License Key sekä nämä: GeoLite2-ASN, GeoLite2-Country ja GeoLite2-City Lisättyäsi tarvittavat tunnukset Docker Compose tiedostoon ja käynnistämällä Containerin näemme tiedostot. docker compose up -d ls -l /docker/npm/data/geoip2 Tietokannan konfigurointi Nginx Proxy Managerille Luodaan uusi tiedosto joka käsittelee tietokannan sisällön ja parsii sieltä mm.country coden, nimen, cityn sekä regionin. Tässä ohjeessa päästämme vain Saksasta liikenteen. nano /docker/npm/data/nginx/custom/http_top.conf http_top.conf charset utf-8; geoip2 /data/geoip2/GeoLite2-City.mmdb { auto_reload 3h; $geoip2_metadata_country_build metadata build_epoch; $geoip2_data_country_code default=XX source=$remote_addr country iso_code; $geoip2_data_country_name default=- country names de; $geoip2_data_city_name default=- city names de; $geoip2_data_region_name default=- subdivisions 0 names de; } geo $allowed_ip { default no; # Blockaa oletuksena 10.10.1.0/24 yes; # Whitelistaa locaali verkko } map $geoip2_data_country_code $allowed_country { default $allowed_ip; DE yes; # Vain Saksa voit lisätä lisää maita } #Formaatti logille, myöhemmin myös Grafanaa varten log_format json_analytics escape=json &#039;{&#039; &#039;&#34;time_local&#34;: &#34;$time_local&#34;, &#039; &#039;&#34;remote_addr&#34;: &#34;$remote_addr&#34;, &#039; &#039;&#34;request_uri&#34;: &#34;$request_uri&#34;, &#039; &#039;&#34;status&#34;: &#34;$status&#34;, &#039; &#039;&#34;server_name&#34;: &#34;$server_name&#34;, &#039; &#039;&#34;request_time&#34;: &#34;$request_time&#34;, &#039; &#039;&#34;request_method&#34;: &#34;$request_method&#34;, &#039; &#039;&#34;bytes_sent&#34;: &#34;$bytes_sent&#34;, &#039; &#039;&#34;http_host&#34;: &#34;$http_host&#34;, &#039; &#039;&#34;http_x_forwarded_for&#34;: &#34;$http_x_forwarded_for&#34;, &#039; &#039;&#34;http_cookie&#34;: &#34;$http_cookie&#34;, &#039; &#039;&#34;server_protocol&#34;: &#34;$server_protocol&#34;, &#039; &#039;&#34;upstream_addr&#34;: &#34;$upstream_addr&#34;, &#039; &#039;&#34;upstream_response_time&#34;: &#34;$upstream_response_time&#34;, &#039; &#039;&#34;ssl_protocol&#34;: &#34;$ssl_protocol&#34;, &#039; &#039;&#34;ssl_cipher&#34;: &#34;$ssl_cipher&#34;, &#039; &#039;&#34;http_user_agent&#34;: &#34;$http_user_agent&#34;, &#039; &#039;&#34;remote_user&#34;: &#34;$remote_user&#34; &#039; &#039;}&#039;; Login näet tällä komennolla. tail -f /dockers/nginx-proxym/data/logs/proxy-host-%HOSTID%_access-geo.log Lisätään vielä Proxy Manageriin. Avaa Nginx Proxy manager WebUI ja paina Proxy Hosts, sen jälkeen Add proxy Host. Kirjoita haluamasi domain, paikallinen osoite sekä portti. Lisää vielä asetukset Block Common Exploits sekä Websocket Support. Seuraavaksi paina oikealta ylhäältä asetus kuvaketta ja lisää seuraava koodi. if ($allowed_country = no) { return 444; } Nyt on kaikki valmista, että geoblokki on yksinkertainen mutta tehokas keino parantaa palvelun turvallisuutta ja hallittavuutta. Toteuttamalla sen Nginx Proxy Managerin avulla saamme helposti ylläpidettävän ratkaisun, jota voidaan tarvittaessa muokata nopeasti. Näin varmistamme, että palvelu pysyy suojattuna ja toimii optimaalisesti vain halutuille käyttäjille.</p>
<p>The post <a href="https://lassinsivut.eu/nginx-proxy-manager-geoblocking/">Nginx Proxy Manager GeoBlocking</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3108" class="elementor elementor-3108">
				<div class="aux-parallax-section elementor-element elementor-element-7eac5e6 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent" data-id="7eac5e6" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-4c5d7bd elementor-widget elementor-widget-spacer" data-id="4c5d7bd" data-element_type="widget" data-e-type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
				</div>
		<div class="aux-parallax-section elementor-element elementor-element-37546e0 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent" data-id="37546e0" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-b9bff38 elementor-widget elementor-widget-heading" data-id="b9bff38" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">GeoBlocking Nginx Proxy Managerilla</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-93f2a24 elementor-widget elementor-widget-text-editor" data-id="93f2a24" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Geoblokki tarkoittaa tiettyjen maiden tai alueiden IP-osoitteiden estämistä pääsemästä palveluun. Sen tarkoituksena on parantaa tietoturvaa ja vähentää turhaa liikennettä esimerkiksi silloin, kun palvelua käytetään vain tietyssä maassa. Näin voidaan estää haitallisia kirjautumisyrityksiä ja pienentää palvelimen kuormitusta.</p>								</div>
				</div>
					</div>
				</div>
		<div class="aux-parallax-section elementor-element elementor-element-8809174 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent" data-id="8809174" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-8671b7a elementor-widget elementor-widget-heading" data-id="8671b7a" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Dockerin asennus</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-50d0371 elementor-widget elementor-widget-text-editor" data-id="50d0371" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Asennetaan Docker ensin kätevästi heidän valmiilla bash scriptillä.</p><p><strong>curl -fsSL https://get.docker.com | sudo sh</strong></p><p>Tehdään kansio Nginxille.</p><p><strong>mkdir -p /docker/npm</strong></p><p><strong>cd /docker/npm</strong></p><p>Luodaan Docker compose tiedosto johon kaikki konfiguraatiot tulevat.</p><p><strong>nano compose.yaml</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-29972bd elementor-widget elementor-widget-eael-code-snippet" data-id="29972bd" data-element_type="widget" data-e-type="widget" data-widget_type="eael-code-snippet.default">
				<div class="elementor-widget-container">
					      <div class="eael-code-snippet-wrapper theme-dark view-mode-default" data-language="dockerfile" data-copy-button="1" data-snippet-id="eael-code-snippet-29972bd" id="eael-code-snippet-29972bd" >
               <div class="eael-code-snippet-header eael-file-preview-header">
            <div class="eael-file-preview-left">
                           <div class="eael-file-info">
                                    <div class="eael-file-icon">
                                             <span class="eael-file-icon-emoji"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f433.png" alt="🐳" class="wp-smiley" style="height: 1em; max-height: 1em;" /></span>
                                          </div>
                                    <div class="eael-file-name">
                     <span class="file-name-text">
                        compose.yaml                     </span>
                  </div>
                                 </div>
            </div>

                        <div class="eael-file-preview-right">
               <div class="eael-code-snippet-copy-container">
                  <button data-clipboard-target="#eael-code-snippet-29972bd .eael-code-snippet-code code" class="eael-code-snippet-copy-button" type="button" aria-label="Copy code to clipboard Copy code to clipboard">
                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                           <path d="M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z" fill="currentColor"/>
                        </svg>
                  </button>
                                 </div>
            </div>
                     </div>
      
         <div class="eael-code-snippet-content">
                        <div class="eael-code-snippet-line-numbers" aria-hidden="true">
                                 <div class="line-number">1</div>
                                 <div class="line-number">2</div>
                                 <div class="line-number">3</div>
                                 <div class="line-number">4</div>
                                 <div class="line-number">5</div>
                                 <div class="line-number">6</div>
                                 <div class="line-number">7</div>
                                 <div class="line-number">8</div>
                                 <div class="line-number">9</div>
                                 <div class="line-number">10</div>
                                 <div class="line-number">11</div>
                                 <div class="line-number">12</div>
                                 <div class="line-number">13</div>
                                 <div class="line-number">14</div>
                                 <div class="line-number">15</div>
                                 <div class="line-number">16</div>
                                 <div class="line-number">17</div>
                                 <div class="line-number">18</div>
                                 <div class="line-number">19</div>
                                 <div class="line-number">20</div>
                                 <div class="line-number">21</div>
                                 <div class="line-number">22</div>
                                 <div class="line-number">23</div>
                                 <div class="line-number">24</div>
                                 <div class="line-number">25</div>
                                 <div class="line-number">26</div>
                                 <div class="line-number">27</div>
                                 <div class="line-number">28</div>
                                 <div class="line-number">29</div>
                                 <div class="line-number">30</div>
                                 <div class="line-number">31</div>
                                 <div class="line-number">32</div>
                                 <div class="line-number">33</div>
                                 <div class="line-number">34</div>
                                 <div class="line-number">35</div>
                                 <div class="line-number">36</div>
                                 <div class="line-number">37</div>
                                 <div class="line-number">38</div>
                                 <div class="line-number">39</div>
                                 <div class="line-number">40</div>
                                 <div class="line-number">41</div>
                                 <div class="line-number">42</div>
                                 <div class="line-number">43</div>
                                 <div class="line-number">44</div>
                                 <div class="line-number">45</div>
                                 <div class="line-number">46</div>
                                 <div class="line-number">47</div>
                                 <div class="line-number">48</div>
                                 <div class="line-number">49</div>
                                 <div class="line-number">50</div>
                                 <div class="line-number">51</div>
                           </div>
                        <pre class="eael-code-snippet-code language-dockerfile"><code>services:
  app:
    image: &#039;jc21/nginx-proxy-manager:latest&#039;
    restart: unless-stopped
    ports:
      # These ports are in format &lt;host-port&gt;:&lt;container-port&gt;
      - &#039;80:80&#039; # Public HTTP Port
      - &#039;443:443&#039; # Public HTTPS Port
      - &#039;81:81&#039; # Admin Web Port
      # Add any other Stream port you want to expose
      # - &#039;21:21&#039; # FTP
    environment:
      # Mysql/Maria connection parameters:
      DB_MYSQL_HOST: &quot;db&quot;
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: &quot;npm&quot;
      DB_MYSQL_PASSWORD: &quot;npm&quot;
      DB_MYSQL_NAME: &quot;npm&quot;
      # Uncomment this if IPv6 is not enabled on your host
      # DISABLE_IPV6: &#039;true&#039;
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
      - ./data/nginx/custom:/etc/nginx/conf.d/custom
    depends_on:
      - db

  db:
    image: &#039;jc21/mariadb-aria:latest&#039;
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: &#039;npm&#039;
      MYSQL_DATABASE: &#039;npm&#039;
      MYSQL_USER: &#039;npm&#039;
      MYSQL_PASSWORD: &#039;npm&#039;
    volumes:
      - ./mysql:/var/lib/mysql

  geoip-upd:
    container_name: geoip-upd
    image: maxmindinc/geoipupdate:latest
    restart: unless-stopped
    volumes:
      - ./data/geoip2:/usr/share/GeoIP
    environment:
      TZ: &quot;Europe/Helsinki&quot;
      GEOIPUPDATE_ACCOUNT_ID: 1234567
      GEOIPUPDATE_LICENSE_KEY: &quot;keykeykeykeykeykeykeykey&quot;
      GEOIPUPDATE_EDITION_IDS: &quot;GeoLite2-City GeoLite2-Country GeoLite2-ASN&quot;    #Databaset joita tarvimme
      GEOIPUPDATE_FREQUENCY: 12                #Kuinka usein database päivittyy
      GEOIPUPDATE_PRESERVE_FILE_TIMES: 1       #Todellinen aika tiedostolle</code></pre>
                     </div>
      </div>
      				</div>
				</div>
				<div class="elementor-element elementor-element-6a3c2c1 elementor-widget elementor-widget-text-editor" data-id="6a3c2c1" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Seuraavaksi ladataan tarvittavat moduulit.</p><p><strong>nano /docker/npm/data/nginx/custom/root_top.conf</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-62b7a70 elementor-widget elementor-widget-eael-code-snippet" data-id="62b7a70" data-element_type="widget" data-e-type="widget" data-widget_type="eael-code-snippet.default">
				<div class="elementor-widget-container">
					      <div class="eael-code-snippet-wrapper theme-dark view-mode-default" data-language="bash" data-copy-button="1" data-snippet-id="eael-code-snippet-62b7a70" id="eael-code-snippet-62b7a70" >
               <div class="eael-code-snippet-header eael-file-preview-header">
            <div class="eael-file-preview-left">
                           <div class="eael-file-info">
                                    <div class="eael-file-name">
                     <span class="file-name-text">
                        root_top.conf                     </span>
                  </div>
                                 </div>
            </div>

                        <div class="eael-file-preview-right">
               <div class="eael-code-snippet-copy-container">
                  <button data-clipboard-target="#eael-code-snippet-62b7a70 .eael-code-snippet-code code" class="eael-code-snippet-copy-button" type="button" aria-label="Copy code to clipboard Copy code to clipboard">
                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                           <path d="M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z" fill="currentColor"/>
                        </svg>
                  </button>
                                 </div>
            </div>
                     </div>
      
         <div class="eael-code-snippet-content">
                        <pre class="eael-code-snippet-code language-bash"><code>load_module /usr/lib/nginx/modules/ngx_http_geoip2_module.so;
load_module /usr/lib/nginx/modules/ngx_stream_geoip2_module.so;</code></pre>
                     </div>
      </div>
      				</div>
				</div>
				<div class="elementor-element elementor-element-bbf55ee elementor-widget elementor-widget-text-editor" data-id="bbf55ee" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Uudelleen käynnistetään containeri jotta muutokset tulevat voimaan.</p><p><strong>docker exec -it docker-npm nginx -s reload</strong></p><p>Tarkista kuitenkin oman containerin nimi seuraavalla komennolla.</p><p><strong>docker ps</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-70d1b06 elementor-widget elementor-widget-heading" data-id="70d1b06" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Tietokannan lataaminen</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-3a0f957 elementor-widget elementor-widget-text-editor" data-id="3a0f957" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Mene osoitteeseen <a href="https://www.maxmind.com/en/geolite2/signup">https://www.maxmind.com/en/geolite2/signup</a></p><p>Käytämme maxmindin tarjoavaa geoip datasettejä, ne päivittyvät yllättävän nopeasti. Luo uusi license key ja ota talteen account ID, License Key sekä nämä:</p><p><strong>GeoLite2-ASN, GeoLite2-Country ja GeoLite2-City</strong></p><p>Lisättyäsi tarvittavat tunnukset Docker Compose tiedostoon ja käynnistämällä Containerin näemme tiedostot.</p><p><strong>docker compose up -d</strong></p><p><strong>ls -l /docker/npm/data/geoip2</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-d189a48 elementor-widget elementor-widget-heading" data-id="d189a48" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Tietokannan konfigurointi Nginx Proxy Managerille</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-56b45e7 elementor-widget elementor-widget-text-editor" data-id="56b45e7" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Luodaan uusi tiedosto joka käsittelee tietokannan sisällön ja parsii sieltä mm.country coden, nimen, cityn sekä regionin. Tässä ohjeessa päästämme vain Saksasta liikenteen.</p><p><strong>nano /docker/npm/data/nginx/custom/http_top.conf</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-8c1ef23 elementor-widget elementor-widget-eael-code-snippet" data-id="8c1ef23" data-element_type="widget" data-e-type="widget" data-widget_type="eael-code-snippet.default">
				<div class="elementor-widget-container">
					      <div class="eael-code-snippet-wrapper theme-dark view-mode-default" data-language="bash" data-copy-button="1" data-snippet-id="eael-code-snippet-8c1ef23" id="eael-code-snippet-8c1ef23" >
               <div class="eael-code-snippet-header eael-file-preview-header">
            <div class="eael-file-preview-left">
                           <div class="eael-file-info">
                                    <div class="eael-file-name">
                     <span class="file-name-text">
                        http_top.conf                     </span>
                  </div>
                                 </div>
            </div>

                        <div class="eael-file-preview-right">
               <div class="eael-code-snippet-copy-container">
                  <button data-clipboard-target="#eael-code-snippet-8c1ef23 .eael-code-snippet-code code" class="eael-code-snippet-copy-button" type="button" aria-label="Copy code to clipboard Copy code to clipboard">
                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                           <path d="M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z" fill="currentColor"/>
                        </svg>
                  </button>
                                 </div>
            </div>
                     </div>
      
         <div class="eael-code-snippet-content">
                        <pre class="eael-code-snippet-code language-bash"><code>charset utf-8;
geoip2 /data/geoip2/GeoLite2-City.mmdb {
        auto_reload 3h;
        $geoip2_metadata_country_build metadata build_epoch;
        $geoip2_data_country_code default=XX source=$remote_addr country iso_code;
        $geoip2_data_country_name default=- country names de;
        $geoip2_data_city_name default=- city names de;
        $geoip2_data_region_name default=- subdivisions 0 names de;
}
geo $allowed_ip {
        default no;             # Blockaa oletuksena
        10.10.1.0/24 yes;     # Whitelistaa locaali verkko
}

map $geoip2_data_country_code $allowed_country {
        default $allowed_ip;
        DE yes;                 # Vain Saksa voit lisätä lisää maita
}

#Formaatti logille, myöhemmin myös Grafanaa varten
log_format json_analytics escape=json &#039;{&#039;
       &#039;&quot;time_local&quot;: &quot;$time_local&quot;, &#039;
       &#039;&quot;remote_addr&quot;: &quot;$remote_addr&quot;, &#039;
       &#039;&quot;request_uri&quot;: &quot;$request_uri&quot;, &#039;
       &#039;&quot;status&quot;: &quot;$status&quot;, &#039;
       &#039;&quot;server_name&quot;: &quot;$server_name&quot;, &#039;
       &#039;&quot;request_time&quot;: &quot;$request_time&quot;, &#039;
       &#039;&quot;request_method&quot;: &quot;$request_method&quot;, &#039;
       &#039;&quot;bytes_sent&quot;: &quot;$bytes_sent&quot;, &#039;
       &#039;&quot;http_host&quot;: &quot;$http_host&quot;, &#039;
       &#039;&quot;http_x_forwarded_for&quot;: &quot;$http_x_forwarded_for&quot;, &#039;
       &#039;&quot;http_cookie&quot;: &quot;$http_cookie&quot;, &#039;
       &#039;&quot;server_protocol&quot;: &quot;$server_protocol&quot;, &#039;
       &#039;&quot;upstream_addr&quot;: &quot;$upstream_addr&quot;, &#039;
       &#039;&quot;upstream_response_time&quot;: &quot;$upstream_response_time&quot;, &#039;
       &#039;&quot;ssl_protocol&quot;: &quot;$ssl_protocol&quot;, &#039;
       &#039;&quot;ssl_cipher&quot;: &quot;$ssl_cipher&quot;, &#039;
       &#039;&quot;http_user_agent&quot;: &quot;$http_user_agent&quot;, &#039;
       &#039;&quot;remote_user&quot;: &quot;$remote_user&quot; &#039;
   &#039;}&#039;;</code></pre>
                     </div>
      </div>
      				</div>
				</div>
				<div class="elementor-element elementor-element-9f67385 elementor-widget elementor-widget-text-editor" data-id="9f67385" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Login näet tällä komennolla.</p><p><strong>tail -f /dockers/nginx-proxym/data/logs/proxy-host-%HOSTID%_access-geo.log</strong></p><p>Lisätään vielä Proxy Manageriin.</p><p>Avaa Nginx Proxy manager WebUI ja paina <strong>Proxy Hosts</strong>, sen jälkeen <strong>Add proxy Host.</strong></p><p>Kirjoita haluamasi domain, paikallinen osoite sekä portti. Lisää vielä asetukset <strong>Block Common Exploits</strong> sekä <strong>Websocket Support.</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-ef102fd elementor-widget elementor-widget-image" data-id="ef102fd" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img fetchpriority="high" decoding="async" width="768" height="768" src="https://lassinsivut.eu/wp-content/uploads/2026/03/npm_add-768x768.png" class="attachment-medium_large size-medium_large wp-image-3112" alt="" srcset="https://lassinsivut.eu/wp-content/uploads/2026/03/npm_add-768x768.png 768w, https://lassinsivut.eu/wp-content/uploads/2026/03/npm_add-300x300.png 300w, https://lassinsivut.eu/wp-content/uploads/2026/03/npm_add-150x150.png 150w" sizes="(max-width: 768px) 100vw, 768px" />															</div>
				</div>
				<div class="elementor-element elementor-element-b3e2e28 elementor-widget elementor-widget-text-editor" data-id="b3e2e28" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Seuraavaksi paina oikealta ylhäältä asetus kuvaketta ja lisää seuraava koodi.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-7d88f38 elementor-widget elementor-widget-eael-code-snippet" data-id="7d88f38" data-element_type="widget" data-e-type="widget" data-widget_type="eael-code-snippet.default">
				<div class="elementor-widget-container">
					      <div class="eael-code-snippet-wrapper theme-dark view-mode-default" data-language="html" data-copy-button="1" data-snippet-id="eael-code-snippet-7d88f38" id="eael-code-snippet-7d88f38" >
               <div class="eael-code-snippet-header eael-file-preview-header">
            <div class="eael-file-preview-left">
                           <div class="eael-file-info">
                                 </div>
            </div>

                        <div class="eael-file-preview-right">
               <div class="eael-code-snippet-copy-container">
                  <button data-clipboard-target="#eael-code-snippet-7d88f38 .eael-code-snippet-code code" class="eael-code-snippet-copy-button" type="button" aria-label="Copy code to clipboard Copy code to clipboard">
                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                           <path d="M16 1H4C2.9 1 2 1.9 2 3V17H4V3H16V1ZM19 5H8C6.9 5 6 5.9 6 7V21C6 22.1 6.9 23 8 23H19C20.1 23 21 22.1 21 21V7C21 5.9 20.1 5 19 5ZM19 21H8V7H19V21Z" fill="currentColor"/>
                        </svg>
                  </button>
                                 </div>
            </div>
                     </div>
      
         <div class="eael-code-snippet-content">
                        <pre class="eael-code-snippet-code language-html"><code>if ($allowed_country = no) {
	return 444;
}</code></pre>
                     </div>
      </div>
      				</div>
				</div>
				<div class="elementor-element elementor-element-6768f3d elementor-widget elementor-widget-text-editor" data-id="6768f3d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Nyt on kaikki valmista, että geoblokki on yksinkertainen mutta tehokas keino parantaa palvelun turvallisuutta ja hallittavuutta. Toteuttamalla sen Nginx Proxy Managerin avulla saamme helposti ylläpidettävän ratkaisun, jota voidaan tarvittaessa muokata nopeasti. Näin varmistamme, että palvelu pysyy suojattuna ja toimii optimaalisesti vain halutuille käyttäjille.</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://lassinsivut.eu/nginx-proxy-manager-geoblocking/">Nginx Proxy Manager GeoBlocking</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3108</post-id>	</item>
		<item>
		<title>[Tulossa] Android modaaminen sekä LineageOS asennus</title>
		<link>https://lassinsivut.eu/lineageos-asennus/</link>
		
		<dc:creator><![CDATA[lassi]]></dc:creator>
		<pubDate>Sun, 13 Aug 2023 19:09:08 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Tietoturva]]></category>
		<guid isPermaLink="false">https://www.lassinsivut.eu/?p=3017</guid>

					<description><![CDATA[<p>The post <a href="https://lassinsivut.eu/lineageos-asennus/">[Tulossa] Android modaaminen sekä LineageOS asennus</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The post <a href="https://lassinsivut.eu/lineageos-asennus/">[Tulossa] Android modaaminen sekä LineageOS asennus</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3017</post-id>	</item>
		<item>
		<title>[Tulossa] OPNsense asennus sekä käyttöönotto</title>
		<link>https://lassinsivut.eu/opnsense-asennus/</link>
		
		<dc:creator><![CDATA[lassi]]></dc:creator>
		<pubDate>Sun, 13 Aug 2023 19:06:29 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Palvelin]]></category>
		<category><![CDATA[Tietoturva]]></category>
		<guid isPermaLink="false">https://www.lassinsivut.eu/?p=3014</guid>

					<description><![CDATA[<p>The post <a href="https://lassinsivut.eu/opnsense-asennus/">[Tulossa] OPNsense asennus sekä käyttöönotto</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The post <a href="https://lassinsivut.eu/opnsense-asennus/">[Tulossa] OPNsense asennus sekä käyttöönotto</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3014</post-id>	</item>
		<item>
		<title>Linux palvelimen perusturvallisuus</title>
		<link>https://lassinsivut.eu/palvelimen-perusturvallisuus/</link>
		
		<dc:creator><![CDATA[lassi]]></dc:creator>
		<pubDate>Wed, 22 Mar 2023 13:55:17 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Palvelin]]></category>
		<category><![CDATA[Tietoturva]]></category>
		<guid isPermaLink="false">https://www.lassinsivut.eu/?p=2916</guid>

					<description><![CDATA[<p>Linux palvelimen perusturvallisuuden takaaminen LOGIEN TARKISTUS #tarkistetaan kirjautumisyritykset palvelimelle reaaliaikaisesti tail -f /var/log/auth.log #LOGIEN VÄRITYS apt install grc grc tail -f /var/log/auth.log (multitail myös useammalle logille kerralla) FAIL2BAN apt-get update apt-get install fail2ban systemctl status fail2ban nano /etc/fail2ban/jail.conf #ignoraa lokaalin koneen ignoreip = 127.0.0.1/8 #määritellään bannin kesto bantime = 600 #määritellään monta yritystä kirjautumisessa on maxretry = 3 #tämä lähettää postia root käyttäjälle että joku on bannattu destemail = root@localhost sendername = Fail2Ban banned user! mta = sendmail action = %(action_mwl)s #tällä saadaan postiin logitedot kätevästi action_mw #tällä kuitenkin saa eniten action_mwl #tällä komennolla pysäytetään fail2ban systemctl fail2ban stop #tällä aloitetaan systemctl fail2ban start #tällä tarkistetaan nykyinen tilanne systemctl status fail2ban # tarkistetaan jaili sekä estetyt ipt sekä niiden määrä fail2ban-client status sshd UFW PALOMUURI apt install ufw systemctl enable ufw systemctl start ufw systemctl status ufw #avataan palomuuriin portti ufw allow &#8221;portti&#8221; #avataan portti 80 ufw allow 80 OPENSSH #Asennetaan ssh apt install openssh-server #Otetaan ssh käyttöön samalla myös koneen startuppiin systemctl enable ssh #Tarkistetaan nykyinen tilanne ssh systemctl status sshd #Pysäytetään ssh systemctl stop sshd nano /etc/ssh/sshd_config #vaihdetaan oletus portti toiseen #Port22 port222 #Kielletään roottina kirjautuminen #PermitRootLogin PermitRootLogin no #Annetaan lassi käyttäjälle lupa kirjautua AllowUsers lassi #käynnistetään ssh uudestaan systemctl restart sshd netstat -tulpn netstat -tulpn &#124; grep 22 ufw allow ssh ufw allow 22 SSH PARANTELU #Asenntaan moduulit ja sovellukset jotka yhdistävät hyökkääjän ip-osoitteen maahan apt-get install geoip-bin geoip-database #Luodaan scripti joka hallitsee pääsyn nano /usr/local/bin/ipfilter.sh #!/bin/bash ALLOW_COUNTRIES=&#8221;IN US&#8221; LOGDENY_FACILITY=&#8221;authpriv.notice&#8221; if [ $# -ne 1 ]; then echo &#8221;Usage: `basename $0` &#8221; 1&#62;&#38;2 exit 0 # return true in case of config issue fi if [[ &#8221;`echo $1 &#124; grep &#8217;:&#8217;`&#8221; != &#8221;&#8221; ]] ; then COUNTRY=`/usr/bin/geoiplookup6 &#8221;$1&#8221; &#124; awk -F &#8221;: &#8221; &#8217;{ print $2 }&#8217; &#124; awk -F &#8221;,&#8221; &#8217;{ print $1 }&#8217; &#124; head -n 1` else COUNTRY=`/usr/bin/geoiplookup &#8221;$1&#8221; &#124; awk -F &#8221;: &#8221; &#8217;{ print $2 }&#8217; &#124; awk -F &#8221;,&#8221; &#8217;{ print $1 }&#8217; &#124; head -n 1` fi [[ $COUNTRY = &#8221;IP Address not found&#8221; &#124;&#124; $ALLOW_COUNTRIES =~ $COUNTRY ]] &#38;&#38; RESPONSE=&#8221;ALLOW&#8221; &#124;&#124; RESPONSE=&#8221;DENY&#8221; if [[ &#8221;$RESPONSE&#8221; == &#8221;ALLOW&#8221; ]] ; then logger -p $LOGDENY_FACILITY &#8221;$RESPONSE sshd connection from $1 ($COUNTRY)&#8221; exit 0 else logger -p $LOGDENY_FACILITY &#8221;$RESPONSE sshd connection from $1 ($COUNTRY)&#8221; exit 1 fi #Tämä muutos pitää tehdä jos halutaan että scripti juoksee! chmod +x /usr/local/bin/ipfilter.sh #Lisätään ssh listalle omat muutokset jotta järjestelmää ohjaa tuo uusi scripti ja muut asennetut ohjelmat. nano /etc/hosts.deny sshd: ALL vsftpd: ALL #Määritellään vielä mistä scripti löytyy. nano /etc/hosts.allow sshd: ALL: spawn /usr/local/bin/ipfilter.sh %a vsftp: ALL: spawn /usr/local/bin/ipfilter.sh %a</p>
<p>The post <a href="https://lassinsivut.eu/palvelimen-perusturvallisuus/">Linux palvelimen perusturvallisuus</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="2916" class="elementor elementor-2916">
				<div class="aux-parallax-section elementor-element elementor-element-fb7eda3 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent" data-id="fb7eda3" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-a445efa elementor-widget elementor-widget-spacer" data-id="a445efa" data-element_type="widget" data-e-type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
					</div>
				</div>
		<div class="aux-parallax-section elementor-element elementor-element-e7dc3dd e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent" data-id="e7dc3dd" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-080fd19 elementor-widget elementor-widget-heading" data-id="080fd19" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Linux palvelimen perusturvallisuuden takaaminen</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-19c8e4a elementor-widget elementor-widget-text-editor" data-id="19c8e4a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>LOGIEN TARKISTUS</strong></p><p><strong>#tarkistetaan kirjautumisyritykset palvelimelle reaaliaikaisesti</strong><br />tail -f /var/log/auth.log</p><p><strong>#LOGIEN VÄRITYS</strong></p><p>apt install grc</p><p>grc tail -f /var/log/auth.log</p><p><strong>(multitail myös useammalle logille kerralla)</strong></p><p><strong>FAIL2BAN</strong></p><p>apt-get update<br />apt-get install fail2ban<br />systemctl status fail2ban<br />nano /etc/fail2ban/jail.conf</p><p><strong>#ignoraa lokaalin koneen</strong><br />ignoreip = 127.0.0.1/8</p><p><strong>#määritellään bannin kesto</strong><br />bantime = 600</p><p><strong>#määritellään monta yritystä kirjautumisessa on</strong><br />maxretry = 3</p><p><strong>#tämä lähettää postia root käyttäjälle että joku on bannattu</strong><br />destemail = root@localhost<br />sendername = Fail2Ban banned user!<br />mta = sendmail<br />action = %(action_mwl)s</p><p><strong>#tällä saadaan postiin logitedot kätevästi</strong><br />action_mw<br /><strong>#tällä kuitenkin saa eniten</strong> <br />action_mwl</p><p><strong>#tällä komennolla pysäytetään fail2ban</strong><br />systemctl fail2ban stop</p><p><strong>#tällä aloitetaan</strong><br />systemctl fail2ban start</p><p><strong>#tällä tarkistetaan nykyinen tilanne</strong><br />systemctl status fail2ban</p><p><strong># tarkistetaan jaili sekä estetyt ipt sekä niiden määrä</strong><br />fail2ban-client status sshd</p><p><strong>UFW PALOMUURI</strong></p><p>apt install ufw<br />systemctl enable ufw<br />systemctl start ufw<br />systemctl status ufw</p><p><strong>#avataan palomuuriin portti</strong><br />ufw allow <strong>&#8221;portti&#8221;</strong></p><p><strong>#avataan portti 80</strong><br />ufw allow 80</p><p><strong>OPENSSH</strong></p><p><strong>#Asennetaan ssh</strong><br />apt install openssh-server</p><p><strong>#Otetaan ssh käyttöön samalla myös koneen startuppiin</strong><br />systemctl enable ssh</p><p><strong>#Tarkistetaan nykyinen tilanne ssh</strong><br />systemctl status sshd</p><p><strong>#Pysäytetään ssh</strong><br />systemctl stop sshd</p><p>nano /etc/ssh/sshd_config</p><p><strong>#vaihdetaan oletus portti toiseen</strong><br />#Port22</p><p>port222</p><p><strong>#Kielletään roottina kirjautuminen</strong><br />#PermitRootLogin<br />PermitRootLogin no</p><p><strong>#Annetaan lassi käyttäjälle lupa kirjautua</strong><br />AllowUsers lassi</p><p><strong>#käynnistetään ssh uudestaan</strong><br />systemctl restart sshd</p><p>netstat -tulpn</p><p>netstat -tulpn | grep 22</p><p>ufw allow ssh</p><p>ufw allow 22</p><p>SSH PARANTELU</p><p><strong>#Asenntaan moduulit ja sovellukset jotka yhdistävät hyökkääjän ip-osoitteen maahan</strong><br />apt-get install geoip-bin geoip-database</p><p><strong>#Luodaan scripti joka hallitsee pääsyn</strong><br />nano /usr/local/bin/ipfilter.sh</p><p>#!/bin/bash<br />ALLOW_COUNTRIES=&#8221;IN US&#8221;<br />LOGDENY_FACILITY=&#8221;authpriv.notice&#8221;</p><p>if [ $# -ne 1 ]; then<br />echo &#8221;Usage: `basename $0` &#8221; 1&gt;&amp;2<br />exit 0 # return true in case of config issue<br />fi</p><p>if [[ &#8221;`echo $1 | grep &#8217;:&#8217;`&#8221; != &#8221;&#8221; ]] ; then<br />COUNTRY=`/usr/bin/geoiplookup6 &#8221;$1&#8221; | awk -F &#8221;: &#8221; &#8217;{ print $2 }&#8217; | awk -F &#8221;,&#8221; &#8217;{ print $1 }&#8217; | head -n 1`<br />else<br />COUNTRY=`/usr/bin/geoiplookup &#8221;$1&#8221; | awk -F &#8221;: &#8221; &#8217;{ print $2 }&#8217; | awk -F &#8221;,&#8221; &#8217;{ print $1 }&#8217; | head -n 1`<br />fi<br />[[ $COUNTRY = &#8221;IP Address not found&#8221; || $ALLOW_COUNTRIES =~ $COUNTRY ]] &amp;&amp; RESPONSE=&#8221;ALLOW&#8221; || RESPONSE=&#8221;DENY&#8221;</p><p>if [[ &#8221;$RESPONSE&#8221; == &#8221;ALLOW&#8221; ]] ; then<br />logger -p $LOGDENY_FACILITY &#8221;$RESPONSE sshd connection from $1 ($COUNTRY)&#8221;<br />exit 0<br />else<br />logger -p $LOGDENY_FACILITY &#8221;$RESPONSE sshd connection from $1 ($COUNTRY)&#8221;<br />exit 1<br />fi</p><p><strong>#Tämä muutos pitää tehdä jos halutaan että scripti juoksee!</strong><br />chmod +x /usr/local/bin/ipfilter.sh</p><p><strong>#Lisätään ssh listalle omat muutokset jotta järjestelmää ohjaa tuo uusi scripti ja muut asennetut ohjelmat.</strong><br />nano /etc/hosts.deny</p><p>sshd: ALL<br />vsftpd: ALL</p><p><strong>#Määritellään vielä mistä scripti löytyy.</strong><br />nano /etc/hosts.allow</p><p>sshd: ALL: spawn /usr/local/bin/ipfilter.sh %a<br />vsftp: ALL: spawn /usr/local/bin/ipfilter.sh %a</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://lassinsivut.eu/palvelimen-perusturvallisuus/">Linux palvelimen perusturvallisuus</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2916</post-id>	</item>
		<item>
		<title>Saastuneelta kovalevyltä virusten poisto Linuxilla</title>
		<link>https://lassinsivut.eu/virusten-poisto/</link>
		
		<dc:creator><![CDATA[lassi]]></dc:creator>
		<pubDate>Wed, 25 Jan 2023 11:09:53 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tietoturva]]></category>
		<guid isPermaLink="false">https://www.lassinsivut.eu/?p=2670</guid>

					<description><![CDATA[<p>Virusten poisto Linuxilla Virusten poisto saatttaa kuulostaa vaikealta, se on oikeastaan helppo toimenpide. Tässä esimerkissä käytän ClamAV ohjelmaa joka on erittäin helppokäyttöinen. Se skannaa valitulta kovalevyltä lukuiset haittaohjelmat. ClamAv tunnistaa Windowsiin, Linuxiin sekä Macos ympäristöihin kohdistuvat haittaohjelmat sekä pakatut haittaohjelmat kuten .tar tai .zip sisältävät. Luodaan bootable Luodaan ensin bootable live usb Linuxista, jakelulla ei ole väliä. Minulla on esimerkissä Debian 11. Tässä ohje live usb tekemiseen jos et ole sitä aikaisemmin tehnyt. Clamav asennus avataan terminaali ja päivitetään paketti repositoryt. sudo -i apt-get update Nyt asennetaan itse ClamAV. apt-get install clamav-daemon apt-get install clamtk mkdir /var/lib/clamav freshclam Kovalevyn mounttaaminen Jotta kovalevyä voidaan käyttää linuxissa, se täytyy mountata kokoonpanoon. Esimerkiksi Windows tekee tämän automaattisesti. lsblk (Muista valita oikea levy! Esimerkiksi minulla se on sda, sinulla se voi olla sdb tai sda1) mkdir /root/mnt/ mount -t ntfs /dev/sda /mnt Juostaa ClamAv töllö komennolla. Voit itse päättää parametrit, suosittelen kuitenkin tätä: clamscan –infected –remove –recursive /root/mnt/ Skannaus kestää riippuen kovalevyn koosta. Nyt ei tarvitse muuta kuin odottaa että skannaus on valmi, ohjelma ilmoittaa automaattisesti jos haittaohjelmia löytyy sekä poistaa ne välittömästi parametrin -remove ansiosta. Tästä linkistä lisäätietoa komennoista ja käytöstä.</p>
<p>The post <a href="https://lassinsivut.eu/virusten-poisto/">Saastuneelta kovalevyltä virusten poisto Linuxilla</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="2670" class="elementor elementor-2670">
				<div class="aux-parallax-section elementor-element elementor-element-67596a3 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent" data-id="67596a3" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
					</div>
				</div>
		<div class="aux-parallax-section elementor-element elementor-element-31c6aa4 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent" data-id="31c6aa4" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-3b54532 elementor-widget elementor-widget-spacer" data-id="3b54532" data-element_type="widget" data-e-type="widget" data-widget_type="spacer.default">
				<div class="elementor-widget-container">
							<div class="elementor-spacer">
			<div class="elementor-spacer-inner"></div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-25b3a2d elementor-widget elementor-widget-heading" data-id="25b3a2d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Virusten poisto Linuxilla</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-85d5bec elementor-widget elementor-widget-text-editor" data-id="85d5bec" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Virusten poisto saatttaa kuulostaa vaikealta, se on oikeastaan helppo toimenpide. Tässä esimerkissä käytän <strong>ClamAV</strong> ohjelmaa joka on erittäin helppokäyttöinen. Se skannaa valitulta kovalevyltä lukuiset haittaohjelmat. ClamAv tunnistaa Windowsiin, Linuxiin sekä Macos ympäristöihin kohdistuvat haittaohjelmat sekä pakatut haittaohjelmat kuten .tar tai .zip sisältävät.</p>								</div>
				</div>
					</div>
				</div>
		<div class="aux-parallax-section elementor-element elementor-element-bdd5829 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent" data-id="bdd5829" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-d371983 elementor-widget elementor-widget-heading" data-id="d371983" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Luodaan bootable</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-9717d2b elementor-widget elementor-widget-text-editor" data-id="9717d2b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Luodaan ensin bootable live usb Linuxista, jakelulla ei ole väliä. Minulla on esimerkissä <strong>Debian 11. </strong><a href="https://lassinsivut.eu/debian-asennus/">Tässä</a> ohje live usb tekemiseen jos et ole sitä aikaisemmin tehnyt.</p>								</div>
				</div>
					</div>
				</div>
		<div class="aux-parallax-section elementor-element elementor-element-1ea0ef2 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-equal-height-no e-con e-parent" data-id="1ea0ef2" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-3464426 elementor-widget elementor-widget-heading" data-id="3464426" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Clamav asennus</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-d3576d9 elementor-widget elementor-widget-text-editor" data-id="d3576d9" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>avataan terminaali ja päivitetään paketti repositoryt.</p><p><strong>sudo -i</strong></p><p><strong>apt-get update</strong></p><p>Nyt asennetaan itse ClamAV.</p><p><strong>apt-get install clamav-daemon</strong></p><p><strong>apt-get install clamtk</strong></p><p><strong>mkdir /var/lib/clamav</strong></p><p><strong>freshclam</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-83d5866 elementor-widget elementor-widget-heading" data-id="83d5866" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Kovalevyn mounttaaminen</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-d75b876 elementor-widget elementor-widget-text-editor" data-id="d75b876" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Jotta kovalevyä voidaan käyttää linuxissa, se täytyy mountata kokoonpanoon. Esimerkiksi Windows tekee tämän automaattisesti.</p><p><strong>lsblk </strong>(Muista valita oikea levy! Esimerkiksi minulla se on <strong>sda</strong>, sinulla se voi olla <strong>sdb</strong> tai <strong>sda1</strong>)</p><p><strong>mkdir /root/mnt/</strong></p><p><strong>mount -t ntfs /dev/sda /mnt</strong></p>								</div>
				</div>
				<div class="elementor-element elementor-element-8675f3d elementor-widget elementor-widget-image" data-id="8675f3d" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
																<a href="https://lassinsivut.eu/wp-content/uploads/2023/01/54q45g45g45g45gq.png" data-elementor-open-lightbox="yes" data-elementor-lightbox-title="54q45g45g45g45gq" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Mjg0NywidXJsIjoiaHR0cHM6XC9cL2xhc3NpbnNpdnV0LmV1XC93cC1jb250ZW50XC91cGxvYWRzXC8yMDIzXC8wMVwvNTRxNDVnNDVnNDVnNDVncS5wbmcifQ%3D%3D">
							<img decoding="async" width="350" height="146" src="https://lassinsivut.eu/wp-content/uploads/2023/01/54q45g45g45g45gq.png" class="attachment-large size-large wp-image-2847" alt="" srcset="https://lassinsivut.eu/wp-content/uploads/2023/01/54q45g45g45g45gq.png 350w, https://lassinsivut.eu/wp-content/uploads/2023/01/54q45g45g45g45gq-18x8.png 18w" sizes="(max-width: 350px) 100vw, 350px" />								</a>
															</div>
				</div>
				<div class="elementor-element elementor-element-e9331be elementor-widget elementor-widget-text-editor" data-id="e9331be" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Juostaa ClamAv töllö komennolla. Voit itse päättää parametrit, suosittelen kuitenkin tätä:</p><p><strong>clamscan –infected –remove –recursive /root/mnt/</strong></p><p>Skannaus kestää riippuen kovalevyn koosta. Nyt ei tarvitse muuta kuin odottaa että skannaus on valmi, ohjelma ilmoittaa automaattisesti jos haittaohjelmia löytyy sekä poistaa ne välittömästi parametrin <strong>-remove</strong> ansiosta. <a href="https://docs.clamav.net/manual/Usage.html">Tästä</a> linkistä lisäätietoa komennoista ja käytöstä.</p>								</div>
				</div>
					</div>
				</div>
				</div>
		<p>The post <a href="https://lassinsivut.eu/virusten-poisto/">Saastuneelta kovalevyltä virusten poisto Linuxilla</a> appeared first on <a href="https://lassinsivut.eu">Lassin kotisivut</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2670</post-id>	</item>
	</channel>
</rss>
