Zobrazují se příspěvky se štítkemNetworking. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemNetworking. Zobrazit všechny příspěvky

čtvrtek 21. června 2018

Qotom Mini PC 4 Gigabit - Q355G4 with pfSense

Po roce jsem se opět viděl s kolegy z FG. Radek na mě myslel a přinesl mi na oběd ukázat černou krabku vhodnou jako router. Byl jsem nesmělý, ale Radek mi Qotom doslova vnutil, za což mu moc děkuji.

Qotom vyrábí mnoho variací tohoto Q Series Mini PC. Mě se do ruky dostal model Q355G4. Vyráběny jsou variace s Core i3, i5 a i7. V pfSense se procesor identifikuje jako Intel(R) Core(TM) i5-5250U CPU @ 1.60GHz 4 CPUs: 1 package(s) x 2 core(s) x 2 hardware threads AES-NI CPU Crypto: Yes (inactive).

Tento 4 portový model je vhodný pro použití jako router, pro malé nebo střední firmy. Prodáva se opět v několika variacích s nebo bez RAM a stejně tak i s nebo bez SSD. Nejvhodnější se si pořídit holé těžítko a RAM s SSD dodat z lokálních zdrojů se zárukou.
Qotom Q355G4


Poříditelný je v číně na AliExpress nebo v EU na Amazon, prodejce Kettop.

Mě nenapadlo nic jiného než na tohoto černocha nainstalovat mnou oblíbený pfSense. Nejprve jsem si připravil USB instalaci.

zcat pfSense-CE-memstick-2.4.3-RELEASE-amd64.img.gz | dd of=/dev/sdX bs=16k
244615+1 vstoupivších záznamů
244615+1 vystoupivších záznamů
4 007 775 744 bajtů (4,0 GB) zkopírováno, 857,294 s, 4,7 MB/s



Oproti PC Engines nelze použít image pfSense-CE-memstick-serial-*. Qotom disponuje seriovým portem, ale nedostaneme se po seriové konzoli do BIOSu. Proto použijeme klasickou image. Qotom disponuje HDMI vstupem ke grafické kartě.
Deska s procesorem a chladičem

S HDMI jsem si užil. Protože mám v LABu monitor, který má jen DVI a tak mam kabel DVI > HDMI. Např. malina skrze tento kabel bootuje a je vidět vše. U Qotom se signál probral až během boot sequence. Protože na disku byl Ubuntu Server, nemel jsem možnost dostat se do BIOSu a změnit boot nastaveni. Řešením bylo Qotom připojit k plnohodnotnému HDMI display.

Opět budu tento HW srovnávat s mnou hodně používanými deskami PC Engines. Qotom se díky výkonějšímu procesoru chová velmi svižně. Testy rychlosti síťování jsem neprováděl.

pfSense 2.4.3 WebGUI


Pokud chceme po instalaci používat sériovou konzoli, stačí ji jen zapnout.

Povolení seriové konzole
Na závěr velmi letmého seznámení se s Qotom musím poznamenat, že poměr cena a výkon je u tohoto kousku velmi zajímavý.

pondělí 27. června 2016

pfSense 2.3.1_5 + LTE modem Huawei ME909u-521


V jedné lokalitě jsem se rozhodl provozovat LTE připojení. Volba nemohla padnout na nic jiného než mou oblíbený pfSense provozovaný na desce od PC Engines model APU 1D. Do routeru jsem si pořídil Mini PCI Express LTE modem Huawei ME909u-521. Dále je samozřejmě nutná anténa a pigtail viz ilustrační obrázek.

pfSense LTE

Již v minulosti jsem tento modem chtěl pořizovat, ale ve FreeBSD potažmo v pfSense nebyla podpora. To se ale nedávno změnilo.

Kontrolováno ve zdrojácích FreeBSD 10.3

grep -iR ME909U /usr/src/sys/dev/*        
/usr/src/sys/dev/usb/serial/u3g.c:    U3G_DEV(HUAWEI, ME909U,U3GINIT_HUAWEISCSI2),
/usr/src/sys/dev/usb/usbdevs:product HUAWEI ME909U        0x1573  LTE modem


Modem se na konzoli jeví např. takto.

dmesg | grep -i huawei
ugen3.2: at usbus3
u3g0: on usbus3


Podrobný výpis modemu. Vypis ala lsusb (Linux)

usbconfig -d ugen3.2 dump_device_desc
ugen3.2: at usbus3, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)

  bLength = 0x0012
  bDescriptorType = 0x0001
  bcdUSB = 0x0200
  bDeviceClass = 0x0000 
  bDeviceSubClass = 0x0000
  bDeviceProtocol = 0x0000
  bMaxPacketSize0 = 0x0040
  idVendor = 0x12d1
  idProduct = 0x1573
  bcdDevice = 0x0228
  iManufacturer = 0x0001 
  iProduct = 0x0002 
  iSerialNumber = 0x0003  0123456712ABCA17
  bNumConfigurations = 0x0003


Dostupné seriové porty modemu.

ls -1 /dev/cuaU0.*
/dev/cuaU0.0
/dev/cuaU0.1
/dev/cuaU0.2
/dev/cuaU0.3
/dev/cuaU0.4


Karta je osazena i GPS chipem, tak proto je tech portů vice.


Operátora jsem zvolil T-Mobile a SIM kartu a aktitovaným datovým tarifem a deaktivovaným PINem vložíme do SIM slotu na desce. Modem musí být vložen do Slotu (J16). Protože jen ten je propojen se SIM slotem viz popis k desce.

Pokud chceme modem otestovat ručně, můžeme z příkazové řádky.

Testovací AT příkazy převzaté z dokumentace.

cu -l /dev/cuaU0.0

Connected
AT^HCSQ?
^HCSQ: "LTE",56,49,158,20

ATI

Manufacturer: Huawei Technologies Co., Ltd.
Model: ME909u-521
Revision: 12.636.11.01.00
IMEI: 860461025220081
+GCAP: +CGSM

AT&V
&C: 1; &D: 2; &S: 0; E: 0; Q: 0; V: 1; X: 1; S0: 0; S3: 13; S4: 10;
S5: 8; S7: 0; S10: 14; +ICF: 3,3; +IFC: 0,0

AT+CGDCONT?
+CGDCONT: 1,"IP","internet.t-mobile.cz","0.0.0.0",0,0
+CGDCONT: 16,"IPV4V6","","0.0.0.0",0,0

AT^SYSINFOEX
^SYSINFOEX: 2,3,0,1,,6,"LTE",101,"LTE"


AT^IMEISV?
^IMEISV: 8604610252200816


Pokud nám modem takto reaguje je funkční a ovladače fungují. Pro zprovoznění LTE/4G musíme WAN interface nakonfigurovat pomocí PPP protokolu.

IPv4 Configuration Type     PPP
Country                     Czech Republic
Provider                    T-Mobile
Plan                        T-Mobile - internet.t-mobile.cz
Phone number                *99#
Access Point Name           internet.t-mobile.cz
Init string                 &F0E1Q0 +CMEE=2
Modem port                  /dev/cuaU0.0


Nastavení WAN_PPP




Status interface

Konfigurační soubor PPP který sestavil pfSense vypadá následovně.

cat /var/etc/mpd_wan.conf
startup:
    # configure the console
    set console close
    # configure the web server
    set web close

default:
pppclient:
    create bundle static wan
    set bundle enable ipv6cp
    set iface name ppp0
    set iface disable on-demand
    set iface idle 0
    set iface enable tcpmssfix
    set iface up-script /usr/local/sbin/ppp-linkup
    set iface down-script /usr/local/sbin/ppp-linkdown
    set ipcp ranges 0.0.0.0/0 10.64.64.0/0
    set ipcp enable req-pri-dns
    set ipcp enable req-sec-dns
    #log -bund -ccp -chat -iface -ipcp -lcp -link

    create link static wan_link0 modem
    set link action bundle wan
    set link disable multilink
    set link keep-alive 10 60
    set link max-redial 0
    set link disable chap pap
    set link accept chap pap eap
    set link disable incoming
    set link mtu 1492
    set auth authname "user"
    set auth password ��
    set modem device /dev/cuaU0.0
    set modem script DialPeer
    set modem idle-script Ringback
    set modem watch -cd
    set modem var $DialPrefix "DT"
    set modem var $Telephone "*99#"
    set modem var $InitString "&F0E1Q0 +CMEE=2"
    set modem var $APN "internet.t-mobile.cz"
    set modem var $APNum "1"
    open

pondělí 18. května 2015

Seznámení se s OpenOTP

Pracovně jsem se více seznámil se zajimavým autentizačním serverem nebo spíše systémem, který kombinuje řadu funkcí a vlastností v oblasti autentizace a authorizace. Je jím produkt společnosti RCDevs SA - Luxembourg - OpenOTP.

Systém se skládá z několika komponent:
  • WebADM
  • OpenOTP Server + RADIUS Bridge
  • TiQR Server
  • OpenID/SAML IdP
  • Self - services
  • Web Plugins
Osobně jsem vyzkoušel jen část funkcí. OpenOTP jsem použil pro vzdálené ověření OpenVPN uživatelů na routeru pfSense v kombinaci s TOTP nebo HOTP skrze RADIUS. Použil a testoval jsem dvě Self aplikace - User Self-Registration a LDAP Password Reset. Pořídil jsem si hardware token RCDevs RC200 podporuící TOTP, abych vyzkošel registrace tokenů atd.

Hardware Tokens:
Software Tokens:
Možností využití OpenOTP je mnoho. Výrobce uvádí porovnání vlastností. Na OpenOTP je velmí příjemné, že se jedná o Freeware. S tím že 40 uživatelů může systém využívat zcela zdarma.

čtvrtek 20. listopadu 2014

Lenovo IdeaPad G580 Ethernet Driver alx.ko

V milulosti jsem si poznamenával informaci, jak u notebooku Lenovo IdeaPad G580 oživit jednu z dvou grafických karet, pomocí projektu bumblebee. Je to už dva roky a majitel notebooku si později všiml, že mu nefunguje síťová karta. Primárně se používala jen Wifi a ta fungovala ihned po instalaci.

Jedná se o Qualcomm Atheros AR8162 Fast Ethernet, který nebyl přítomen v kernelu 3.2.0-70-generic.

V Ubuntu 12.04.5 LTS, byl defaultně instalován kernel 3.2.0-70-generic, který jaderný modul alx.ko zjevně neobsahoval. Po konzultaci s googlem jsem povýšil kernel na verzi 3.5.0-54-generic

Povýšení kernelu zajistil příkaz
apt-get install linux-generic-lts-quantal

Vypsání zmíněného modulu
lsmod | grep alx
alx                    63615  0
mdio                   13560  1 alx


Informace o driveru
ethtool -i eth0
driver: alx
version: 1.2.3
firmware-version: N/A
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: no
supports-register-dump: yes


 Tímto příkazem získame seznam všech dostupných kernelů
apt-cache show linux-image-3.* | grep Package | sort -V

čtvrtek 19. září 2013

FortiGate-100D vs Zabbix 2.0.8


V jedné lokalitě se postarší router Cisco PIX přesný model nevím, vyměnil za router od společnosti Fortinet s označením FortiGate-100D a to ještě v HA řešení. A bylo zapotřebí opět sledovat jednotlivé interface atd. Na routeru se povolil protokol SNMP verze 2c s patřičnou komunitou.

Našel jsem pro daný model Zabbix Template na GitHub u Jean-Jacques Martrès.

Jeho archív šablon obsahuje i celou řadu dalších vendorů. Template jsou vytvořevny velmi šikovně a hlavně naplno využívají nových vlastností Zabbix 2.x, tím mám na mysli Low Level Discovery.

Názvy použitých Template pro Fortinet devices:

zbx-fortinet-antivirus
zbx-fortinet-envmon             
zbx-fortinet-ha
zbx-fortinet-hardware           
zbx-fortinet-ids
zbx-fortinet-interfaces         
zbx-fortinet-vdom
zbx-fortinet-vpn


Některé template používají externí scripty např. pro vykonání discovery funkcí.

echo.something
if.speed
if.vdom
vpn.vdom


Psány jsou v jazyce Ruby a bylo třeba doinstalovat potřebný SNMP gem. Instalace Ruby rotšíření je v jednotlivých distribucích nebo OS jiná.

Ve FreeBSD jsem užil následující.

cd /usr/ports/net-mgmt/rubygem-snmp && make install clean

rubygem-snmp-1.1.1  SNMP library for Ruby

V nastavení v Zabbixu jsem užil všechny template. S tím že zafungují ty, které v routeru objeví adekvátní nastavení např. VPN, nebo Antivir. V případě rekonfigurace routeru není nutné v Zabbixu nic měnit, vše se objeví a začne adekvátně monitorovat.


čtvrtek 27. června 2013

Metasploit db_nmap

Většina adminů někdy použila mnou oblíbený program nmap. Tento nástroj slouží ke scanování sítě a dokáže zjistit, jaké služby na kterém počítači běží. Pokud chceme výsledky scanu uložit a např. porovnávat v čase, je třeba použít db_nmap, což je program, který je součástí Frameworku Metasploit.

Metasploit je produktem firmy Rapid7, která tento nástroj tvoří a prodává. Je to program pro penetrační testy. Metasploit má několik verzí nebo spíše edicí. Placená verze umožňuje pravidelně aktualizovat databáze chyb případně i exploitů a funkcionalita je hodně rozsáhlá.

Pro naše potřeby programu db_nmap nám postačí  "Metasploit Framework - Free Open Source Development Platform", která je např. snadno instalovatelná ve FreeBSD jako port. Celý framework je postaven na jazyce Ruby.

Před samotnou instalací doporučuji instalovat Vámi preferovanou verzi databáze PostgreSQL.

cd /usr/ports/databases/postgresql92-server/ && make install clean

cd /usr/ports/security/metasploit && make install clean

Po instalaci je možné již pustit samotnou konzoli.

[root@fbsd ~]# msfconsole
Call trans opt: received. 2-19-98 13:24:18 REC:Loc

     Trace program: running

           wake up, Neo...
        the matrix has you
      follow the white rabbit.

          knock, knock, Neo.

                        (`.         ,-,
                        ` `.    ,;' /
                         `.  ,'/ .'
                          `. X /.'
                .-;--''--.._` ` (
              .'            /   `
             ,           ` '   Q '
             ,         ,   `._    \
          ,.|         '     `-.;_'
          :  . `  ;    `  ` --,.._;
           ' `    ,   )   .'
              `._ ,  '   /_
                 ; ,''-,;' ``-
                  ``-..__``--`

                             http://metasploit.pro


       =[ metasploit v4.6.2-1 [core:4.6 api:1.0]
+ -- --=[ 1103 exploits - 621 auxiliary - 178 post
+ -- --=[ 300 payloads - 29 encoders - 8 nops

[*] Processing /root/.msf4/msfconsole.rc for ERB directives.
resource (/root/.msf4/msfconsole.rc)> db_connect -y /usr/local/share/metasploit/config/database.yml
[*] Rebuilding the module cache in the background...
resource (/root/.msf4/msfconsole.rc)> workspace -a SmEjDiL

[*] Added workspace: SmEjDiL
msf >

Z ukázky je vidět, že konzoje již využívá databázi pro ukládání výsledků scanů. Velmi podrobný a snadno pochopiletný postup, jak inicializovat databázi je popsán zde. Snad jen poznámka dríve byla podpora více databázi MySQL, SQLite a ta byla ukončena a podporována je pouze PostgreSQL. Metasploit je též součástí Linuxové distribuce Backtrack linux, kde je možná i nějaká modifikovaná verze.

Můžeme začít scanovat do DB

msf > db_status
[*] postgresql connected to msf_database
msf > db_nmap 192.168.42.0/24


Příkazem hosts si vypíšeme jednotlive výsledky, např. takto.

msf > hosts -R 81.95.98.2 -c address,name,os_name,os_flavor,updated_at,

Hosts
=====

address     name                os_name  os_flavor  updated_at
-------     ----                -------  ---------  ----------
81.95.98.2  gds39d.active24.cz  Linux    2.6.X      2013-06-26 19:24:57 UTC

RHOSTS => 81.95.98.2


Příkazem services si vypíšeme objevené služby na daném hostu.

msf > services -R 81.95.98.2

Services
========

host        port  proto  name   state  info
----        ----  -----  ----   -----  ----
81.95.98.2  25    tcp    smtp   open   Postfix smtpd
81.95.98.2  80    tcp    http   open  
81.95.98.2  443   tcp    https  open  

RHOSTS => 81.95.98.2


Pokud nechceme používat jen nmap Metasploit disponuje např. celou řadou scaneru. Zajímá mě jaké verze Windows se v mé síti nacházejí. Pěkný návod jak nato je např. zde.

msf > use auxiliary/scanner/smb/smb_version
msf auxiliary(smb_version) > set RHOSTS 192.168.42.40-50
RHOSTS => 192.168.42.40-100
msf auxiliary(smb_version) > set THREADS 11
THREADS => 11
msf auxiliary(smb_version) > run


Výsledkem je např. toto.

msf> hosts -c address,os_name,os_flavor,os_sp,purpose

Hosts
=====

address        os_name            os_flavor            os_sp  purpose
-------        -------            ---------            -----  -------

192.168.42.40  Microsoft Windows  7 Professional 7601  b1     client
192.168.42.42  Microsoft Windows  XP                   SP3    client


V minulosti jsem si koupil tuto knihu, která je pro msf3, ale i tak se z ní dá hodně čerpat.

Bezpečnosti zdar :-)

pátek 14. června 2013

VDSL modem Comtrend VR-3026e s pfSense/Alix

 Tak jsem se po nějaké době dostal opět k DSL technologii přesněji VDSL. Jeden Negr z DKnL ma hospodu v Hradci Králové a doposud byl připojenej pomocí modemu  Comtrend VR-3026e. Ovšem požadoval další funkcionalitu, kterou již modem nedokázal zastoupit.

Modem je to poměrně konfigurovatelnej ale hodně neintuitivni. A přijít na to jak jej přepnout do režimu bridge byl poměrně velkejk oříšek. Nápomocný byl např. tento návod.

Je třeba dopředu vědět, do jakého režimu je u O2 linka přepnutá. ADSL režim (ATM mode) a VDSL2 režim (PTM mode). Zde je též pár hodnotných informací.


Nastavení bridge pro ATM - ADSL2+
Nastavení bridge pro PTM - VDSL2

Po přepnutí modemu do bridge je již možno přistoupit ke konfiguraci routeru pfSense na desce Alix, kde se už jen nadefinuje PPPoE WAN interface, který se autentizuje pomoci usera O2 a sofistikovaného hesla O2 :-)

pondělí 4. února 2013

pfSense package Zabbix 2


Oblibená Firewall distribuce - FreeBSD / pfSense má nově možnost instalovat balíček Zabbix agent verze 1.8.x i 2.0.x formou pfSense balíčků.

Package Name    Category    Package Version
Zabbix-2 Agent  Services    zabbix2-agent-2.0.4 pkg v0.5

Nový aktuální balíček zabbix2-agent je příjemným rozšířením, které nám umožní podrobně monitorovat firewall s tímto systémem.

Verze zabbix 2 má mnoho rozšíření, hlavně je přínosný Low-level discovery, který umožňuje automatickou detekci fs, net devices a SNMP oid.
  • discovery of file systems;
  • discovery of network interfaces;
  • discovery of SNMP OIDs.

sobota 8. prosince 2012

Squid3 with SNMP vs Zabbix 2.0


Na domácím testovacim serveru jsem si zprovoznil web proxy Squid verze 3. Chtěl jsem Squid nějak monitorovat. Existují v zásadě dva způsoby, jak na to.
 squid-3.2.3_2       HTTP Caching Proxy

Na wiki zabbix je popsán postup, jak monitorovat pomoci definovaných hodnot v zabbix agentu na serveru, kde Squid běží. Program squidclient, který je součástí Squida dokáže kontaktovat managera Squid, který předá potřebné informace o stavu cache.

Druhá možnost je Squid monitorovat pomocí SNMP. Squid v sobě integruje tuto funkcionalitu, která se musí nadefinovat v konfiguračním souboru. Ve FreeBSD jsem si Squid kompiloval z portů a SNMP je jedna z voleb, ktera musí být zakompilována.

[root@fbsd /var/db/ports/squid32]# make config && make install clean

# snmp config
acl snmp_host src 127.0.0.1
acl snmp_lmnet src 192.168.42.13/32
snmp_port 3401
acl snmppublic snmp_community public
snmp_access allow snmppublic
snmp_access allow snmp_host
snmp_access allow snmp_lmnet
snmp_access deny all


Vlastnosti použítí SNMP ve Squidu jsou podrobně popsány na Wiki projektu. Jsou zde pordobně popsány jednotlivé OID a podpora v jednotlivých verzích web proxy. Ve foru zabbix je ke stažení template zabbix_squid_smnp.xml. Import do Zabbix 2.0.x zobrazuje drobnou chybku, ale položky se vytvoří korektně. Mnou opětovně vyexportovaný template mám zde.

ukázka některých hodnot:
cd /usr/local/etc/squid

snmpwalk -m mib.txt -v2c -Cc -c public fbsd:3401 .1.3.6.1.4.1.3495.1.1
SQUID-MIB::cacheSysVMsize.0 = INTEGER: 71328
SQUID-MIB::cacheSysStorage.0 = INTEGER: 85036
SQUID-MIB::cacheUptime.0 = Timeticks: (16534677) 1 day, 21:55:46.77


snmpwalk -m mib.txt -v2c -Cc -c public fbsd:3401 .1.3.6.1.4.1.3495.1.2
SQUID-MIB::cacheAdmin.0 = STRING: webmaster
SQUID-MIB::cacheSoftware.0 = STRING: squid
SQUID-MIB::cacheVersionId.0 = STRING: "3.2.3"
SQUID-MIB::cacheLoggingFacility.0 = STRING: ALL,1
SQUID-MIB::cacheMemMaxSize.0 = INTEGER: 256
SQUID-MIB::cacheSwapMaxSize.0 = INTEGER: 100
SQUID-MIB::cacheSwapHighWM.0 = INTEGER: 95
SQUID-MIB::cacheSwapLowWM.0 = INTEGER: 90
SQUID-MIB::cacheUniqName.0 = STRING: fbsd


Do template asi jestě přidám nějaký graf, Počet příchozích a odchozích dat, počet aktuálně přihlášených klientů atd. Nasbíraných hodnot je celá řada.

pátek 19. října 2012

RHEL 6.3 Bonding

Na OS RHEL 6.3 jsem rešil zprovoznění dvou síťovek za pomocí Bondingu. Konfigurace v režimu active-backup nebo 1. Nastavení je vcelku jednoduché. Vycházel jsem z oficiálná RedHat dokumentace Using Channel Bonding. Pěkný a ucelený návod je např. zde.

Nalezl jsem i bug, který je spojen s obdobným driverem, který používám na daném serveru. Naštěstí se mě netýkal.

Pro fungování bondigu je nutné aby byli síťovky zapojeny do Switch1 a Switch2. Konfiguraci na úrovni switchů jsem neřešil. Nevím, zda je tam pro bonding něco třeba. To třeba až zase někdy příště.

Driver "Ethernet Channel Bonding Driver" je možno konfigurovat složitěji. Např. se dají síťovky združovat a využít tak protokol LACP atd.

Výpis a informace o driveru pomocí ethtool.

ethtool -i eth0
driver: bnx2
version: 2.2.1
firmware-version: bc 5.2.3
bus-info: 0000:09:00.0


nebo

ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   1000baseT/Full
                                10000baseT/Full
        Supports auto-negotiation: Yes
        Advertised link modes:  1000baseT/Full
                                10000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Speed: Unknown!
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown
        Supports Wake-on: g
        Wake-on: d
        Link detected: yes


Info z lspci

09:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709S Gigabit Ethernet (rev 20)
09:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709S Gigabit Ethernet (rev 20)


Prověříme, zda je přítomen patřičný balik kvuli programu ifenslave.

yum install iputils

Začneme konfigurovat interface eth0 a eth1

cd /etc/sysconfig/network-scripts/

DEVICE="bond0"
IPADDR="192.168.42.13"
NETMASK="255.255.255.0"
GATEWAY="192.168.42.1"
DNS1="192.168.42.10"

HOSTNAME="rhel63-test"
ONBOOT="yes"
BOOTPROTO="none"
USERCTL="no"
NAME="bond0"
BONDING_OPTS="miimon=80 mode=1"

DEVICE="eth0"
NAME="System eth0"
BOOTPROTO="none"
HWADDR="E8:39:35:C0:11:BC"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
UUID="9ae66694-cff1-4cab-99d4-fc7de045369c"
SLAVE="yes"
MASTER="bond0"

DEVICE="eth1"
NAME="System eth1"
BOOTPROTO="none"
HWADDR="E8:39:35:C0:11:BE"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE="Ethernet"
UUID="badf918c-3cc1-4e77-94c2-c8dc24032133"
SLAVE="yes"
MASTER="bond0"


Nastavíme load kernel modulu.

vi /etc/modprobe.d/bond0.conf
alias netdev-bond0 bonding


Restart síťových rozhraní.

/etc/init.d/network

V /proc můžeme prověřit některé informace.

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 80
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: e8:39:35:c0:11:bc
Slave queue ID: 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: e8:39:35:c0:11:be
Slave queue ID: 0


ifenslave -a
The result of SIOCGIFFLAGS on lo is 49.
The result of SIOCGIFADDR is 7f.00.00.01.
The result of SIOCGIFHWADDR is type 772  00:00:00:00:00:00.
The result of SIOCGIFFLAGS on eth1 is 1043.
The result of SIOCGIFADDR is ffffffac.13.ffffffc8.20.
The result of SIOCGIFHWADDR is type 1  e8:39:35:c0:c0:e6.
 


Danou konfiguraci musím časem prověřit i ve FreeBSD. Zde je vodítko.

pondělí 30. července 2012

Netdisco v praxi

Již v minulosti jsem zkoušel zprovoznit system Netdisco a zde na blogu jsem o tom psal velmi obecné informace. Onehdá jsem už neměl čas systém více poznat a použít jej tam kde je jeho silná stránka a tou jsou sítě s Layer 2 přepínačema. Nyní jsem provedl vesměs naprosto stejnou instalaci na FreeBSD 8.2.

Pro instalaci jsem volil port net-mgmt/netdisco/ který mi nainstaluje aktuální verzi 1.1.

n e t  d i s c o
--------------------------------------------------
Netdisco Version   : 1.1
SNMP::Info Version : 2.06
Net-SNMP Version   : 5.0701
Perl Version       : 118.53.46.49.52.46.50

Netdisco je dle webu vývojářů vyvýjeno na FreeBSD a tudíž v dokumentaci nechybí ani informace potřebné k instalaci. Jistá zastaralost dokumentace znát ovšem je. Volil jsem použití Apache 2.2 a PostgreSQL 9.1 s tím že tuto volbu port akceptuje.

Během instalace jsem měl jen jeden problém s konfliktem dvou balíků pkg_config a pkgconf. Musel jsem pkg_config odinstalovat a s nim i zavislosti. Posléze jsem instaloval port graphics/graphviz, který si pkgconf žádal. Zbytek instalace již nevykazoval problémy.

Po instalaci portu netdisco bylo třeba provést úkony v  postinstalačním postupu, který jsem zmiňoval již v prvním příspěvku. Tímto postupem importujeme db schéma do PostgreSQL a nastavíme systém tak, aby služby nastartovaly atd.

Pro přihlášení do Web GUI bylo třeba si přidat patřičného uživatele.

netdisco -u admin

Pro fungování v praxi jsem testoval přidávat switch Dell PowerConnect 5448 s public komunitou.

Pro přídání switchů jsem nejprve užil web GUI, ale i s debug režimem se mi nechtěl přidat i přes prověření funkčnosti SNMP pomocí snmpwalk, které odpovídalo.

snmpwalk -Os -c public -v 2c 192.168.0.42 system
sysDescr.0 = STRING: PowerConnect 5448
sysObjectID.0 = OID: enterprises.674.10895.3021
sysUpTimeInstance = Timeticks: (361894700) 41 days, 21:15:47.00
sysContact.0 = STRING: SmEjDiL
sysName.0 = STRING: switch42
sysLocation.0 = STRING: DKnL
sysServices.0 = INTEGER: 2
sysORLastChange.0 = Timeticks: (0) 0:00:00.00
sysORID.1 = OID: enterprises.89.73
sysORDescr.1 = STRING: RS capabilities
sysORUpTime.1 = Timeticks: (0) 0:00:00.00


Dle manuálové stránky patřičného modulu jsem se dočetl o potřebných MIB souborech.

man SNMP::Info::Layer3::Dell

Dále jsem postupoval tak, že jsem zařížení přidával za pomocí cmd.

netdisco -d 192.168.0.42
n e t  d i s c o
--------------------------------------------------
[
192.168.0.42] Discover starting
[
192.168.0.42] [Trying SNMP Version 1]
[
192.168.0.42]  Fetching Device Info
[
192.168.0.42]  Fetching Device Info
[
192.168.0.42]  Fetching Interface Information
[
192.168.0.42]   32 Interfaces.
[
192.168.0.42]  Fetching VLAN Information
[
192.168.0.42]   Scrubbing VLANs from device_port_vlan table... 0 removed
[
192.168.0.42]   Scrubbing VLANs from device_vlan table... 0 removed
[
192.168.0.42]   28 VLAN Interfaces, 1 names.
[
192.168.0.42]  Fetching Power Information
[
192.168.0.42]   0 Power Modules
[
192.168.0.42]  Fetching Module Information
[
192.168.0.42]   0 Modules.
[
192.168.0.42]  Fetching Neighbor Information
[
192.168.0.42]   ! CDP not Enabled.

Tento příkaz již napovídal, že mu chybí potřebné SNMP MIB definice. Netdisco má jeden balík MIBů. Tento balík obsahuje velké množství MIB souborů od ruzných výrobců i ty normované RFC, ale i přesto bylo třeba stáhnout MIBy od výrobce.

netdisco-mibs-0.9   Mibs for use with ports-mgmt/netdisco (and snmp)

Po chvilce googlování jsem požadované soubory postahoval např. z http://www.oidview.com/.

Během používání Netdisco jsem narazil na dvě chybové hlášky.

/usr/local/www/netdisco/device.html 789

Popis problému je v konferenci.

## line 789
## replace:
%  for my $f qw(fw hw sw) {
## with:
%  for my $f (qw(fw hw sw)) {


Např. pří restartu apache se objevovala tato druhá chyba na řádku ...

/usr/local/lib/perl5/site_perl/5.14.2/netdisco.pm 337

Stejné řešení s popisem problému zde.

sobota 16. června 2012

DHCP discovery

Někdy se může stát, že se v LAN nachází nějaký DHCP server a my nevíme, kde běží. Pro odhalení, kde běží nám může být nápomocen nmap.

nmap -sU -p 67 --script=dhcp-discover 192.168.42.1
Starting Nmap 6.00 ( http://nmap.org ) at 2012-06-16 21:04 CEST
Nmap scan report for alix.hide.lm.net (192.168.42.1)
Host is up (0.00025s latency).
PORT   STATE SERVICE
67/udp open  dhcps
| dhcp-discover:
|   DHCP Message Type: DHCPACK
|   Server Identifier: 192.168.42.1
|   Subnet Mask: 255.255.255.0
|   Router: 192.168.42.1
|   Domain Name Server: 192.168.42.1, 192.168.42.250
|   Domain Name: hide.lm.net
|_  NTP Servers: 195.113.144.201, 195.113.144.238
MAC Address: 00:0D:9B:10:DF:42 (PC Engines GmbH)

Podrobnější výpis je zajištěn tímto příkazem.

nmap -sU -p 67 -v -d -PN --script=dhcp-discover 192.168.42.1

Script v jazyce Lua dhcp-discover zajistí DHCP request, simuluje tedy chování DHCP klienta a vypíše nám hodnoty, které DHCP server poskytuje.

pátek 15. června 2012

ADSL pfSense 2.0.1

Připojení pomocí ADSL se mi vyhýbá a tak s ním nemám žádné technické zkušenosti. Změna nastala v momentě, kdy jsem byl požádán o použití routeru Alix/pfSense s ADSL konektivitou. Problém je v tom, že Alix deska nemá žádný modem. Jediným řešením je v pfSense nastavit WAN interface s použitím protokolu PPPoE. pfSense 2.0 má protokol PPPoE implomentován po novu.

ADSL modem, který jsem řešil byl dodán ISP model Zyxel Prestige P-660HW-T3 je nutno přenastavit /  Connection Setup- ISP Parameters for Internet Access / Mode - Bridge a vypnout DHCP server.

Snad jen IP modemu LAN musí být z jiného rozsahu než je LAN pfSense. Na strane ADSL routeru je LAN např. 10.1.1.1 a na straně pfSense se žádná IP na WAN nenastavuje, jen se tento interface nakonfiguruje na typ PPPoE, kde musíme znát username a password, které nám poskytne ISP.

pondělí 28. května 2012

NetSetMan


Většina OS mají spávce síťových připojení jakožto součást sama sebe. Např. v Linuxu s Gnome je Network Manager a Mac OS X ma asi network configuration. Win 7 nemá nic :-( Jen někteří výrobci dodávají s HW i kupu svých aplikaci např. Lenovo má nějaká spravce připojení. Pro widle mi jeden znamý doporučil aplikaci NetSetMan. Za Pro verzi asi nebudu váhat zaplatit.

čtvrtek 22. března 2012

Zabbix - SNMP vs Mikrotik

Chtěl jsem začít pomocí Zabbixu monitorovat routery s RouterOS Mikrotik. Jednou z možností je si vytvořit template z textového výstupu příkazu snmpwalk pomoci patřičného perlového scriptu. Tím, ale získáme template pro dané zařízení, což asi nechceme. Pro univerzálnější použití je vhodné si vytvořit template pro obecné užití na routerech Mikrotik.

Pod ruku se mi dostalo velké spektrum verzí Mikrotiků. Nejstarší byla verze 3.30, dále 4.x a aktuální 5.x verze. Nutno dodat, že implementace SNMP se s verzí MK dost odlišuje. Snažil jsem se vytvořit Template pro sekci /system resources, vycházel jsem z těchto hodnot. Byl jsem nucen si vytvořit template pro 4kovou verzi a pro 5kovou.

Zabbix umí používat jak OID číselné tak i textové. Pro textové je třeba mít v systému doinstalovanou sadu MIB od IETF obecných definičních souborů. Pak můžeme lépe získat některé informace o zařízení.

aptitude install snmp-mibs-downloader

snmpwalk -On -c public -v 2c 10.10.1.2 IF-MIB::ifType
.1.3.6.1.2.1.2.2.1.3.1 = INTEGER: ethernetCsmacd(6)
.1.3.6.1.2.1.2.2.1.3.2 = INTEGER: ethernetCsmacd(6)
.1.3.6.1.2.1.2.2.1.3.3 = INTEGER: ethernetCsmacd(6)
.1.3.6.1.2.1.2.2.1.3.4 = INTEGER: ieee80211(71)
.1.3.6.1.2.1.2.2.1.3.5 = INTEGER: ieee80211(71)
.1.3.6.1.2.1.2.2.1.3.6 = INTEGER: ieee80211(71)

Tento Mikrotik má tři ethery a tři wlan karty.

snmpwalk -c public -v 2c 10.10.1.2 IF-MIB::ifNumber
IF-MIB::ifNumber.0 = INTEGER: 6
snmpwalk -On -c public -v 2c 10.10.1.2 .1.3.6.1.2.1.2.1
.1.3.6.1.2.1.2.1.0 = INTEGER: 6

Zde je názorná ukázka ja se dá použít jak textový název OID tak jmenný dle definice MIB.

snmpwalk -c public -v 2c 10.10.1.2 IF-MIB::ifTable
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.2 = INTEGER: 2
IF-MIB::ifIndex.3 = INTEGER: 3
IF-MIB::ifIndex.4 = INTEGER: 4
IF-MIB::ifIndex.5 = INTEGER: 5
IF-MIB::ifIndex.6 = INTEGER: 6
IF-MIB::ifDescr.1 = STRING: ether1
IF-MIB::ifDescr.2 = STRING: ether2
IF-MIB::ifDescr.3 = STRING: ether3
IF-MIB::ifDescr.4 = STRING: ap54a
IF-MIB::ifDescr.5 = STRING: ap54b
IF-MIB::ifDescr.6 = STRING: ap54c
IF-MIB::ifType.1 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.2 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.3 = INTEGER: ethernetCsmacd(6)
IF-MIB::ifType.4 = INTEGER: ieee80211(71)
IF-MIB::ifType.5 = INTEGER: ieee80211(71)
IF-MIB::ifType.6 = INTEGER: ieee80211(71)
IF-MIB::ifMtu.1 = INTEGER: 1500
IF-MIB::ifMtu.2 = INTEGER: 1500
...

OID IF-MIB::ifTable nám vypíše veškeré informace o síťových interface, název, rychlost, MTU, chyby, status atd. Více je pěkně popsáno zde.

Mikrotik má i svůj MIB, který když nepřidáme do správného adresáře, objeví se nám tato hláška.

snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mikrotik
MIB search path: /home/smejdil/.snmp/mibs:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp
Cannot find module (MIKROTIK-MIB): At line 1 in (none)
MIKROTIK-MIB::mikrotik: Unknown Object Identifier


Tento soubor MIKROTIK-MIB.mib musíme umístit do některé z těchto cest.

snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mikrotik
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtxrSystem
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtXRouterOs
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtxrWireless
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtxrLicense
snmpwalk -Os -c public -v 2c 10.10.1.2 MIKROTIK-MIB::mtxrScripts

Takto se dostaneme k hodotám popisovaných v MIBu.

Nutno ještě dodat, že při snaze monitorovat interface několika mikrotiků, narážel jsem na nejednotnost ifIndex hodnot. U zařízení, kde je např. 6 interface bych očekával, že ifIndexy budou 1,2,3,4,5,6, ale u některých Mikrotiků jsem běžně vídal ifIndexy 4,7,8,12,15,16, asi je to způsobeno přidáváním a ubíráním karet. Jeden 1U x86 router s Mikrotik 5.x měl 4 interface a ifIndex byl 96,97,98,99, což mě skutečně zaskočilo. Řešením je mít template ifIndex_1 a ten si dle potřeb naklonovat a upravit dle hodnoty požadované v konkrétním routeru.

Zabbix umožňuje vytvořit Template_RB443, který tvoří dílčí Template. např. CPU, Ifindex1-6 atd. Má zkušenost se SNMP a Mikrotikama je dosti rozpačitá :-)

čtvrtek 5. ledna 2012

Juniper SRX650 prvni kroky

Hnedle drudý den v nové práci jsem byl s kolegou vyzvednou router Juniper SRX650, jako testovací kousek od DNS a.s. CITY EMPIRIA. Router jsem přivezl do kanclu a druhý den jsem se v něm již musel vrtat. Hodil se mi seriový kabel, který mám od nějakého Cisco routeru.

Routery Juniper mají v sobě systém JUNOS, což je v základu FreeBSD, které nám umožňuje pouštět klasické userland aplikace, netstat, ping, tcpdump atd. V systému je jediný balíček a to je junos. FreeBSD je patřičně modifikováno, ale je tam hodně cejtit.

ntb:$ ssh 192.168.10.42
--- JUNOS 10.4R4.5 built 2011-05-06 06:14:23 UTC
smejdil@juniper> start shell
% pwd
/cf/var/home/smejdil
% uname -a
JUNOS juniper 10.4R4.5 JUNOS 10.4R4.5 #0: 2011-05-06 06:14:23 UTC builder@warth.juniper.net:/volume/build/junos/10.4/release/10.4R4.5/obj-octeon/bsd/sys/compile/JSRXNLE octeon
% pkg_info
junos JUNOS Software Release [10.4R4.5]


Dostal jsem za úkol router nakonfigurovat tak, aby se dal umístit do serverovny s veřejným IP. Dále jsem přidal nějakého uživatele a nastavili patřičné politiky.

Pomocí sériové konzole a patřičného kabelu jsem se již přihlásil na daný box.

sudo screen /dev/ttyUSB0 9600

login: root
--- JUNOS 10.4R4.5 built 2011-05-06 06:14:23 UTC
root@%
root@% cli
root>


Prompt: root@% - FreeBSD
Prompt: root> - konfigurační režim
Prompt: root# - editační režim

Jakožto naprostý zčátečník jsem použil config-wizard, který mě provede základním nastavením.

root@% config-wizard
Enter host name: juniper
Please enter root password:
Retype root password:

Would you like to configure domain name? [yes,no] (no): y
Enter domain name: juniper.smejdil.cz

Would you like to configure name server? [yes, no] (no): y
Enter IP address for the name server: 195.113.144.194

Configure the following network interfaces

Identifier Interface Identifier Interface
1 ge-0/0/0 2 ge-0/0/1
3 ge-0/0/2 4 ge-0/0/3
...

Would you like to configure any of the above interfaces? [yes,no] (yes): no

Enter a new user name: smejdil
Please enter user password:
Retype user password:

Would you like to configure SNMP Network Management? [yes,no] (no): y
Enter a SNMP V2 read-only mode community string [public]:

Would you like to review configuration commands? [yes,no] (no): y
The following configuration command(s) were created:

set system host-name juniper
set system root-authentication encrypted-password-value "********"
set system name-server 195.113.144.194
set system services web-management http
set system services telnet
set system services ssh
set system domain-name smejdil.cz
set system login user smejdil class super-user authentication encrypted-password "********"
set system services web-management http
set system services telnet
set system services ssh
set snmp community "public" authorization read-only

Would you like to commit the initial configuration and exit? [yes,no]: yes

Building configuration ...
Finished.

Please type 'cli' to enter JUNOS CLI operation mode.

Další nastavení je prováděno např takto:

root@juniper> configure
Entering configuration mode
set interfaces ge-0/0/0 unit 0 family inet address 192.168.10.42/30
set routing-options static route 0.0.0.0/0 next-hop 192.168.10.41
set system ntp server 195.113.144.238
set system ntp server 195.113.144.201
set system time-zone Europe/Prague
commit


Toto pro seznámení zatím postačuje.

čtvrtek 8. prosince 2011

AnyDATA ADU520L od U:fon v Ubuntu 10.04.3

Již delší dobu jsem hledal nějaký mobilní internet za rozumnou cenu, pro použití na chatě, kde jsou možnosti internetu dosti špatné. Primárně je to pro rodiče, kteří maji notebook s OS Linux Ubuntu 10.04.3 LTS. Před samotným objednáním HW u U:fon jsem kontaktoval operátora, který nevěděl zda dané zařízení je funkční pod Linuxem. Ale ujišťoval mě, že výmena HW za jiný podporovaný model je možná, což mě lehce uspokojilo. Nechal jsem se též uchlácholit článkem, který vypadl z Googlu na první dotaz.

Z článku jsem použil jen některé pasáže. Uvedu zde relativně jednoduché kroky pro zprovoznění 3G internetu s tímto USB modemem.

  • sudo aptitude install usb-modeswitch
  • sudo /lib/udev/rules.d/61-option-modem-modeswitch.rules /etc/udev/rules.d
  • sudo vi /etc/udev/rules.d/61-option-modem-modeswitch.rules
  • zakomentujte (pomocí #) řádek ATTRS{idVendor}=="05c6", ATTRS{idProduct}=="1000", RUN+="modem-modeswitch
  • Odpojte a znovu připojte zařízení, měla by se objevit CD-ROM mechanika
  • Nastavíme NetworkManager přidáním U:fon v záložce "Mobilní širokopásmová"
Nastavení je uvedeno v dokumentaci.
  • jméno: ufon
  • heslo: ufon
  • tel. číslo: #777
  • IP: automaticky
  • ověřování: PAP/CHAP
Časem doplním obrazovky nastavení NetworkManageru. Je velmi příjemné, že používání tohoto modemu je integrováno do Gnome GUI a je plně klikací. Rychlost tohoto zařízení není nikterak valná, ale přečíst si email a kouknout na net se s tím dá. Je zarážející, že U:fon nedoplní své manuály i o Linux nastavení. A když né manuály tak aspoň web. Určitě by se pár Linuxových userů rozhodlo pro daný model.

UPDATE: 20111209

Dnes jsem si modem půjčil a chtěl jsem jej testnout v novějším systému. Aktuálně používám Linux Mint 12. Tato distribuce je postavená na Ubuntu, takže naprostá většina balíčků pochází z Ubuntu 11.10. Balík usb-modeswitch jsem v systému již měl. Kopírování udev rules není nutno, po připojení USB modemu, je detekce v pořádku.

Přihlášen jsem byl v Gnome-shell, kde je NetworkManager upraven. I přesto, že se modem v menu objevil, ale nepodařilo se mi nastavit uživatele a heslo ufon. Tak jsem se odlogoval a přilogoval do Gnome Clasic (Gnome2), kde je konfigurace plně možná. Po zpětném přihlášení je Gnome-shell je modem již funkční. Tlačítko nastavit je vyšedlé.


středa 16. listopadu 2011

Feitian ePass PKI token

Kolega nalezl tento USB token Feitian ePass PKI token na jednom francouském shopu. Již dříve jsem po obdobném HW toužil. Pátral jsem zda by jej nechtělo koupit více lidí, ale ve finále měl danej shop pouze dva kousky. Celkově dva USB tokeny s poštovným stály 78,53€.

K čemu taková USB fleška je :-) ? Vypadá sice jako fleška, ale uvnitř je čtečka Smard Card - Feitian R-310 a Feitian PKI smartcard (FTCOS / PK-01C). Na token je možno uložit certifikát nebo ssh klíč. Výhodou je, že se dá RSA klíč přímo generovat na daném zařízení s tím, že privátní klíč nikdy token neopustí, což je jedna z klíčových vlastností .

Spolu s tokenem bylo dodáno i malé 92M CD s dokumentací. Aktuální ISO obraz je dostupný zde.

Hnedle co jsem jej dostal do ruky, strčil jsem jej do USB.

Nov 14 13:35:44 ntb kernel: [19615.418112] usb 5-1: New USB device found, idVendor=096e, idProduct=0503
Nov 14 13:35:44 ntb kernel: [19615.418115] usb 5-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Nov 14 13:35:44 ntb kernel: [19615.418117] usb 5-1: Product: SCR301
Nov 14 13:35:44 ntb kernel: [19615.418119] usb 5-1: Manufacturer: Feitian
Nov 14 13:35:44 ntb mtp-probe: checking bus 5, device 5: "/sys/devices/pci0000:00/0000:00:1d.0/usb5/5-1"
Nov 14 13:35:44 ntb mtp-probe: bus: 5, device: 5 was not an MTP device

Pro práci s tokenem budeme v Linux/UNIX systémech potřebovat free software OpenSC. Výrobcem tokenu je spolešnost Feitian. Ovladač FTCOS/PK-01C v OpenSC se jmenuje "entersafe", více je popsáno zde.

Nejprve jsem si instaloval tyto balíky v distribuci LMDE. K OpenSC je ječtě třeba ovladač čtečky atd. pcsc+ccid.

sudo aptitude install opensc
sudo aptitude install libccid
sudo aptitude install libacsccid1
sudo aptitude install pcsc-tools
sudo aptitude install pcscd


Kominikace s čtečkou mi nějak nefungovala, proto jsem si manuálně zkompiloval aktuální verzi. Popis instalace pěkně zdokumentován na GOOZE.

Ověření instlace je dokumentováno zde. LMDE verze.

opensc-tool --verbose --info
opensc 0.12.1 [gcc 4.6.1]
Enabled features: zlib openssl pcsc(libpcsclite.so.1)


Aktuální manuálně kompilovaná verze.

opensc 0.12.2 [gcc 4.6.1]
Enabled features: zlib readline openssl pcsc(libpcsclite.so.1)

Vypíšeme si čtečky --list-readers, -l Lists all configured readers

opensc-tool -l
# Detected readers (pcsc)
Nr. Card Features Name
0 Yes Feitian SCR301 00 00

Inicializace karty je opět pěkně zdokumentována zde.

Vypíšeme si ATR ma kartě --atr, -a Prints the ATR bytes of the card

opensc-tool --atr
Using reader with a card: Feitian SCR301 00 00
3b:9f:95:81:31:fe:9f:00:65:46:53:05:30:06:71:df:00:00:00:80:6a:82:5e


Vypíšeme si seriové číslo karty. --serial Prints the card serial number

opensc-tool --serial
Using reader with a card: Feitian SCR301 00 00
29 15 33 21 10 23 08 11 ).3!.#..

Preventivě smažeme kartu, na které od výrobve stejně nic není. Prověříme tím komunikaci čtečky s smart card.

pkcs15-init -vE
Using reader with a card: Feitian SCR301 00 00
Connecting to card in reader Feitian SCR301 00 00...
Using card driver entersafe.
About to erase card.


Dále si na kartě inicializujeme profil, nastavíme pin a puk

pkcs15-init --create-pkcs15 --profile pkcs15+onepin --use-default-transport-key --pin 1234 --puk 654321 --label "Jan Novak"

Pomocí dump si vypíšeme co Smard Card obsaduje.

pkcs15-tool --dump
Using reader with a card: Feitian SCR301 00 00
PKCS#15 Card [
Jan Novak]:
Version : 0
Serial number : 2915332110230811
Manufacturer ID: EnterSafe
Last update : 20111115124249Z
Flags : EID compliant

PIN [User PIN]
Object Flags : [0x3], private, modifiable
ID : 01
Flags : [0x32], local, initialized, needs-padding
Length : min_len:4, max_len:16, stored_len:16
Pad char : 0x00
Reference : 1
Type : ascii-numeric
Path : 3f005015


Můžeme do karty importovat existující RSA klíč, který musíme nejprve dešifrovat.

openssl rsa -in ~/.ssh/id_rsa -outform pem > id_rsa.pem
Enter pass phrase for /home/novak/.ssh/id_rsa:
writing RSA key


Posléze jej uložíme na Smard Card.

pkcs15-init --store-private-key id_rsa.pem --auth-id 01 --pin 1234

Lepší možnost je si klíč generovat přímo na token.

pkcs15-init --generate-key 2048-rsa --auth-id 01 --pin 1234

Veřejný klíč si vygenerujeme následovně. Návod opět zde. Vypíšeme si nejprve informaci o veřejném klíčí na smard card.

pkcs15-tool --list-public-keys
Using reader with a card: Feitian SCR301 00 00
Public RSA Key [Public Key]
Object Flags : [0x2], modifiable
Usage : [0x4], sign
Access Flags : [0x0]
ModLength : 2048
Key ref : 0
Native : no
Path : 3f0050153000
ID : c70982******a14eb3

pkcs15-tool --read-ssh-key c70982
******a14eb3

Using reader with a card: Feitian SCR301 00 00
2048 65537 259843
******67908u
ssh-rsa AAAAB3Nz
******
Bw2Tfg

Pak se již můžeme přihašovat na vzdálený server pomocí Secure Shell.

ssh -v -I /usr/lib/opensc-pkcs11.so server.domena.cz

Provider tokenu je možno zavést do patřičného souboru.

vim ~/.ssh/ssh_config
PKCS11Provider /usr/lib/pkcs11/opensc-pkcs11.so


Alternativy USB tokenu, u kterých se o Linuxu moc nepíše, ale funkční pod OpenSC budou.
Tyto alternativy jsem si zde uvedl jen proto, že jsem na rychlo hledal, zda se da nějaký USB token koupit v čechach. Patrně nebudou fungovat pod Linuxem.

pátek 11. listopadu 2011

NetworkManager vs pfSense OpenVPN

Doposud jsem se domů připojoval jen pomocí Secure Shell a když bylo třeba pomoci Wake on LAN jsem si zapnul domácí PC. Jelikož se občas potřebuji připopjit domů a dostat se na nějaké to domací HTTP je již potřeba VPN.

Oblíbený router pfSense založený na FreeBSD má podporu několika VPN implementací. Testnul jsem právě OpenVPN. Jako velký pomocník mi byl tento návod. Který mě navedl na použití velmi užitečné aplikace TinyCA, která mi výrazně usnadnila vytvoření všech certifikátů pro server i pro klienta.

Samotné certifikáty jsem si nastavil v oblíbené aplikaci NetworkManager, který je dnes již v mnoha distribucí a výrazně usnaddnuje práci s připojením kde kam :-)