středa 16. listopadu 2016

Funkční Fortinet client na Linuxu

Linux a Fortigate se příliž v lásce nemají, ale na https://hadler.me/linux/forticlient-sslvpn-deb-packages/  lze stáhnout balíček do Ubuntu.

Klient lze v Debianu spustit pomocí
/opt/forticlient-sslvpn/fortisslvpn.sh  

A opravdu funguje !!!

neděle 13. listopadu 2016

Vlastní autorita+certifikát (nutné pro servery se zapnutým HSTS)

Je nutné si vygenerovat vlastní CA certifikát, naimportovat CA autoritu do prohlížeče a tímto certifikátem poté podepisovat certifikáty jednotlivých testovacích webů

Vytvoření root CA certifikátu
openssl genrsa -out rootCA.key 2048

Podepsání CA certifikátu
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem

Vytvořit nový klíč pro web
openssl genrsa -out device.key 2048

Vygenerovat požadavek na podpis
openssl req -new -key device.key -out device.csr

Do "Common Name" je třeba napsat onu "důvěryhodnou" adresu (bez https)

A podepsat pomocí dané certifikační autority
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 500 -sha256
 
Zdroj
https://datacenteroverlords.com/2012/03/01/creating-your-own-ssl-certificate-authority/

čtvrtek 10. listopadu 2016

Vytvoření qemu image s Debianem na jeden skriptík

Viz https://ayufan.eu/projects/debootstrap-kvm/

V případě problémů pomůže úprava skriptu (řádky 64,65)

echo "Partitioning $DISK..."
sfdisk $DISK << EOF || fail "cannot partition $FILE"
,200000,83,*
;
EOF

úterý 9. srpna 2016

Převedení .p12 na pem pro openvpn

Občas máte potřebu převést p12 na pem, protože některé verze openvpn p12 sooubory neumí (některé ano, pak lze v ovpn použít parametr pkcs12 soubor.p12)

openssl pkcs12 -nocerts -in soubor.p12 -out soubor.userkey.pem
openssl pkcs12 -nokeys -clcerts -in soubor.p12 -out soubor.usercert.pem
openssl pkcs12 -nokeys -cacerts -in soubor.p12 -out soubor.userca.pem

Použití s openvpn - v konfiguráku ovpn:
cert soubor.usercert.pem
ca soubor.userca.pem
key soubor.userkey.pem

úterý 14. června 2016

UML snadno

Dnes jsem narazil na úžasný nástroj na "malování" UML diagramů - http://plantuml.com/

Jeden příklad za všechno
http://plantuml.com/plantuml

středa 30. března 2016

Oxid 4.9.6 +Nginx + letsencrypt + phpfpm

 Funkční konfigurace nginx
server {
    listen 80;
    listen [::]:80;
    server_name site.cz;

        location ~ /.well-known {
                allow all;
        }

    access_log      /var/log/nginx/site.cz.access.log;
    error_log       /var/log/nginx/site.cz.error.log;


       server_name www.site.cz site.cz;

       set $script_name $fastcgi_script_name;
       set $fcgi_php unix:/var/run/php5-fpm.sock;

       root /var/www/oxid4;


       index index.php index.html;

      if ($request_method ~ ^(TRACE|TRACK)$ ) {
               return 403;
      }

       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }
       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

       location ~ (/\.|EXCEPTION_LOG\.txt|\.log$|\.tpl$|pkg.rev) {
                deny all;
       }

      location ~ /out/pictures/.*(\.jpg|\.gif|\.png)$ {
               try_files $uri /getimg.php;
      }

      location ~ ^/(admin|setup)/?$ {
      }

      location ~ /(core|export|modules|out|tmp|views)/ {
      }




       location = /oxseo.php {
                if ($args ~ "mod_rewrite_module_is=off") {
                       rewrite /oxseo.php /oxseo.php?mod_rewrite_module_is=on? break;
                }
           try_files $uri =404;
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_index index.php;
           include fastcgi_params.oxid;
           fastcgi_pass $fcgi_php;
       }
       location ~ \.php$ {
           try_files $uri =404;
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_index index.php;
           include fastcgi_params.oxid;
           fastcgi_pass $fcgi_php;
       }

       location / {
           fastcgi_index index.php;
           set $script_name $fastcgi_script_name;
           if (!-e $request_filename) {
               set $script_name /oxseo.php;
               fastcgi_pass $fcgi_php;
           }
           include fastcgi_params.oxid;
       }


}

# Default server configuration
#
server {
    # SSL configuration
    #
    listen 443 ssl ;
    listen [::]:443 ssl ;

    access_log      /var/log/nginx/site.cz.access.log;
    error_log       /var/log/nginx/site.cz.error.log;

       server_name www.site.cz site.cz;

       set $script_name $fastcgi_script_name;
       set $fcgi_php unix:/var/run/php5-fpm.sock;

       root /var/www/oxid4;

       index index.php index.html;

      if ($request_method ~ ^(TRACE|TRACK)$ ) {
               return 403;
      }

       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }
       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

       location ~ (/\.|EXCEPTION_LOG\.txt|\.log$|\.tpl$|pkg.rev) {
                deny all;
       }

      location ~ /out/pictures/.*(\.jpg|\.gif|\.png)$ {
               try_files $uri /getimg.php;
      }

      location ~ ^/(admin|setup)/?$ {
      }

      location ~ /(core|export|modules|out|tmp|views)/ {
      }


       location ~ \.php$ {
           try_files $uri =404;
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_index index.php;
           include fastcgi_params.oxid;
           fastcgi_pass $fcgi_php;
       }

       location / {
           fastcgi_index index.php;
           set $script_name $fastcgi_script_name;
           if (!-e $request_filename) {
               set $script_name /oxseo.php;
               fastcgi_pass $fcgi_php;
           }
           include fastcgi_params.oxid;
       }


    location ^~ /redmine/ {
        rewrite ^/redmine/(.*) http://redmine.site.cz/$1 permanent;
    }




    ssl_certificate /etc/letsencrypt/live/site/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site/privkey.pem;
    ssl_prefer_server_ciphers On;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";

}

sobota 26. března 2016

Vypnutí systémového alarmu

Vypnutí systémového alarmu (pípnutí po stisku klávesy která se systému nelíbí) lze zajistit třeba pomocí

xset b 0 440 50

čtvrtek 10. března 2016

Debian + networkmanager+openvpn

Možná se Vám stane, že se při pokusu o přihlášení nic nestane a při spuštění z commandline
nmcli connection up <name>
 dostanete hlášku

Chyba: Selhala aktivace připojení: Could not find source connection.




Problémem v mém případě bylo, že v systému nebylo žádné zařízení, které bylo spravováno network managerem. Eth0 v debianu spravovano není, je proto potřeba jej zapnout

vim /etc/NetworkManager/NetworkManager.conf

[ifupdown]
managed=true

Po restartu network manageru by už připojení mohlo fungovat;)

úterý 1. března 2016

Odečet IEC62025 elekrtoměru z příkazové řádky, pro openwrt

Elektroměr má nastavenu navazovací i komunikační rychlost na 2400bd, odpověď se nijak neparsuje, počítá se s tím, že odečet bude do 10s hotový. Pro mne je důležitá pouze hodnota registru 1.8.L1 a mám nastaven pevný počet desetiných míst před i po desetiné čárce, proto si do výsledku beru pouze znaky 0-9.

#!/bin/sh
PORT=$1

readingThread() {
  dd if=$PORT of=/root/dump.txt &
  P=$!
  sleep 10
  kill -9 $P
}

writingThread() {
  echo -en '/?!\x0d\x0a' > $PORT
  sleep 1
  echo -en '\x06030\x0d\x0a' > $PORT
}

setup() {
  stty -F $PORT intr undef quit undef erase undef kill undef eof undef start undef stop undef susp undef rprnt undef werase undef lnext undef flush undef min 1 time 5 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
}

setup
readingThread &
sleep 1
writingThread
sleep 11
cat dump.txt | grep -e '1.8.L1' | sed -e 's/^.*(//' -e 's/[^0-9]//g'

neděle 28. února 2016

Překlad Openwrt Attitude Adjustment 12.09

Jde o to, že potřebuji přeložit balíček pro staré OpenWrt. Pravděpodobně se Vám nebude dařit, protože scripts/feed update nebude moci najít cestu.

Řešením je nahradit cestu k svn repozitáři v souboru feeds.conf.default na

src-git packages git://git.openwrt.org/12.09/packages.git

Po té už budete postupovat klasicky dle návodu https://wiki.openwrt.org/doc/howto/buildroot.exigence

./scripts/feeds update -a

./scripts/feeds install -a

A následovně
make world

neděle 21. února 2016

Redmine 2.6.6 + svn + plánování aktualizace repozitáře

Někdy se stane, že je třeba vypnout automatickou aktializaci svn repozitářů (v mém případě mě k tomu donutil nedostatek RAM při aktualizaci hodně rozsáhlého repozitáře.

Synchronizace svn a redmine se poté dá spustit povelem
script/rails runner "Repository.fetch_changesets" -e production
v domovském adresáři redmine

sobota 20. února 2016

Chromium přístup z lokální stránky na jiné sítě - Access-Control-Allow-Origin

Ladíte js stránku a snažíte se, aby vyčítala data ze služby někde na netu...a ono to nejde, protože javascript za normálních okolností nesmí posílat požadavky jinam než v rámci své domény.

Řešení:
Pokud jde o web, mělo by do stačit přidat do hlavičky Access-Control-Allow-Origin. Pokud jde o lokální stránku, pomůže --disable-web-security v Chromiu. Není to nejbezpečnější, ale funguje to;)

středa 17. února 2016

Nginx + OxidCommerce + HTTPS

oxid/config.inc.php - zcela nelogicky funguje nasledující nastavení
$this->sShopURL = 'https://www.domain.com'; // eShop base url, required
$this->sSSLShopURL  = 'https://www.domain.com';
$this->sAdminSSLURL = null;
sites-enabled/domain.com - standartní instalace s ssl a přesměrováním
server {
    listen 80;
    server_name domain.com;
    location ^~ /redmine/ {
        rewrite ^/redmine/(.*) http://redmine.domain.com/$1 permanent;
    }
    location / {
        rewrite     ^   https://$server_name$request_uri? permanent;
    }
}

server {
    listen 443 ssl ;
    listen [::]:443 ssl ;

       server_name www.domain.com domain.com;

       set $script_name $fastcgi_script_name;
       set $fcgi_php unix:/var/run/php5-fpm.sock;

       root /var/www/oxid4;

       index index.php index.html;

      if ($request_method ~ ^(TRACE|TRACK)$ ) {
               return 403;
      }

       location = /favicon.ico {
                log_not_found off;
                access_log off;
       }
       location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
       }

       location ~ (/\.|EXCEPTION_LOG\.txt|\.log$|\.tpl$|pkg.rev) {
                deny all;
       }

      location ~ /out/pictures/.*(\.jpg|\.gif|\.png)$ {
               try_files $uri /core/utils/getimg.php;
      }

      location ~ ^/(admin|setup)/?$ {
      }

      location ~ /(core|export|modules|out|tmp|views)/ {
      }


       location ~ \.php$ {
           try_files $uri =404;
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_index index.php;
           include fastcgi_params.oxid;
           fastcgi_pass $fcgi_php;
       }

       location / {
           fastcgi_index index.php;
           set $script_name $fastcgi_script_name;
           if (!-e $request_filename) {
               set $script_name /oxseo.php;
               fastcgi_pass $fcgi_php;
           }
           include fastcgi_params.oxid;
       }


    location ^~ /redmine/ {
        rewrite ^/redmine/(.*) http://redmine.domain.com/$1 permanent;
    }




    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
    ssl_prefer_server_ciphers On;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";

}

Postfixadmin + Nginx + Debian na subdoméně


/etc/nginx/sites-enabled/postfixadmin.domain.cz
server {
    listen 80;
    listen [::]:80;
    server_name postfixadmin.domain.cz;

    index index.php index.html index.htm;
    root /usr/share/postfixadmin/;

    access_log /var/log/nginx/postfixadmin_access.log;
    error_log /var/log/nginx/postfixadmin_error.log;


    location / {
        try_files $uri $uri/ index.php;
        index index.php;
    }

    location ~* \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;

        set $script_name $fastcgi_script_name;
        set $fcgi_php unix:/var/run/php5-fpm.sock;
        fastcgi_pass $fcgi_php;

        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

}

Dobrou volnou je povolit postfixadmin pouze pro localhost, popř. pro omezený rozsah adres.

/etc/nginx/fastcgi_params

#fastcgi_param  SCRIPT_FILENAME    $document_root$fastcgi_script_name;
fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;
fastcgi_param  HTTPS              $https if_not_empty;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;

Redmine 2.6.6 + Nginx + na subdomeně


Nastavení Redmine

redmine/config/enviromment.rb

# Initialize the rails application
:shallow_path => '/redmine' }
RedmineApp::Application.routes.default_scope = { :path => '/', :shallow_path => '/' }
RedmineApp::Application.initialize!
# Tento prázdný řetězec je důležitý!!!
Redmine::Utils::relative_url_root = ''

Nastavení Nginx

/etc/nginx/sites-enabled/redmine
server {
    listen 80;
    listen [::]:80;
    server_name redmine.domain.com;
    root /opt/redmine-2.6.6/public;
    passenger_enabled on;
    client_max_body_size      50m;
    location / {
        root /opt/redmine-2.6.6/public/;
        passenger_enabled on;
        client_max_body_size      50m; # Max attachemnt size
    }
}