Kasutaja:Jj

Allikas: Kuutõrvaja
Redaktsioon seisuga 18. jaanuar 2011, kell 11:52 kasutajalt Jj (arutelu | kaastöö) (NB Mitte puududa)

Personaalne jj arendusnurk ehk sodinurk kuutõrvajas

NB Mitte puududa

Must materjal

Võrk rc.conf


HOSTNAME="test_db"
eth0="eth0 192.168.100.2 netmask 255.255.255.0 broadcast 192.168.100.255"
INTERFACES=(eth0)
gateway="default gw 192.168.100.1"
ROUTES=(gateway)

Mitu kaarti

INTERFACES=(eth1 eth0)

Uuendab andmebaasi pakkidel

pacman -Syy

uuendused teeb

pacman -Su

Paketi paigaldamine

pacman -S openssh

sshd käivitamine

/etc/rc.d/sshd start

Mysql serveri installimiseks

# pacman -S mysql
# /etc/rc.d/mysqld start && mysql_secure_installation

Vaikimisi seadistatud /etc/hosts.allow tühi ja hosts.deny kõiki ühendusi blokeerima.

/etc/rc.conf faili täiendada

DAEMONS=(syslog-ng network netfs crond mysqld sshd)


A Socket is the place where you plug in the CPU. So normaly you use: cores: 1 socket: 1

Not to beat the subject to death, but let me ask this as well. Assuming the sofrware license is for one CPU and in the computer I have 2 quad core CPUs. Can I tell KVM 1 CPU Socket with 8 Socket/Cores?

---

Use TCP syn-proxy for mysql port - normally when a client initiates a TCP connection to a mysql server, PF will pass the handshake packets between the two endpoints as they arrive. PF has the ability, however, to proxy the handshake. With the handshake proxied, PF itself will complete the handshake with the client, initiate a handshake with the server, and then pass packets between the two. The benefit of this process is that no packets are sent to the server before the client completes the handshake. This eliminates the threat of spoofed TCP SYN floods affecting the server because a spoofed client connection will be unable to complete the handshake.

pass in on $ext_if proto tcp from any to $mysql_server port 3306 flags S/SA synproxy state

Google tegi Apachele mooduli, mis sisaldab hunnikut filtreid lehekülgede järeltoimetamiseks, et brauserisse laadimine oleks kiirem:

Host/Subnet Quantities Table

Class B                   Effective  Effective
# bits        Mask         Subnets     Hosts
-------  ---------------  ---------  ---------
  1      255.255.128.0           2     32766
  2      255.255.192.0           4     16382
  3      255.255.224.0           8      8190
  4      255.255.240.0          16      4094
  5      255.255.248.0          32      2046
  6      255.255.252.0          64      1022
  7      255.255.254.0         128       510
  8      255.255.255.0         256       254
  9      255.255.255.128       512       126
  10     255.255.255.192      1024        62
  11     255.255.255.224      2048        30
  12     255.255.255.240      4096        14
  13     255.255.255.248      8192         6
  14     255.255.255.252     16384         2

Class C                   Effective  Effective
# bits        Mask         Subnets     Hosts
-------  ---------------  ---------  ---------
  1      255.255.255.128      2        126 
  2      255.255.255.192      4         62
  3      255.255.255.224      8         30
  4      255.255.255.240     16         14
  5      255.255.255.248     32          6
  6      255.255.255.252     64          2

C klass 193.40.45.0/24

  1. gw ise 193.40.45.1/245 (cisco)
  2. ruuteri esimene kaart 193.40.45.2/252 (2 aadressiga võrk, st niipalju läheb kaduma)
  3. ruuteri teine kaart 193.40.45.32/192 (62 aadressi)
  4. teisel kaardil olev klient 193.40.45.34/192 ja gw 193.40.0.32

Ja

gateway_enable="YES"

Traceroute

# traceroute www.ut.ee
traceroute to www.ut.ee (193.40.5.73), 64 hops max, 52 byte packets
 1  193.40.45.32 (193.40.45.32)  0.364 ms  0.373 ms  0.352 ms
 2  193.40.45.1 (193.40.45.1)  0.785 ms
 3  ut-gw1.bb.eenet.ee (193.40.133.210)  1.269 ms  1.189 ms  1.141 ms
 4  sein.ut.ee (193.40.12.10)  1.088 ms  1.221 ms  1.203 ms
 5  ak-gw.ut.ee (193.40.12.14)  1.171 ms  1.321 ms  1.051 ms
 6  www.ut.ee (193.40.5.73)  1.135 ms  1.025 ms *

http://www.cisco.com/en/US/tech/tk365/technologies_tech_note09186a00800a67f5.shtml lisalugemiseks klassidest ja ruutingust.

IPMI seadistamine FreeIPMI abil.

Salvestame hetke ipmi seadistusfaili kettale nimega ipmi.conf

# bmc-config --checkout --filename=ipmi.conf

Teeme muudatused failis ja laadime selle tagasi ipmi seadmesse

# bmc-config --commit -f ipmi.conf 
ERROR: Failed to commit `Lan_Conf:MAC_Address': Read Only Field

Errorit võib ignoreerida.

# bmc-config -D open -o --section=User2        
Section User2
	## Give Username
	Username                                      admin
	## Give password or blank to clear. MAX 16 chars (20 chars if IPMI 2.0 supported).
	## Password                                   
	## Possible values: Yes/No or blank to not set
	## Enable_User                                
	## Possible values: Yes/No
	Lan_Enable_IPMI_Msgs                          Yes
	## Possible values: Yes/No
	Lan_Enable_Link_Auth                          Yes
	## Possible values: Yes/No
	Lan_Enable_Restricted_to_Callback             Yes
	## Possible values: Callback/User/Operator/Administrator/OEM_Proprietary/No_Access
 	Lan_Privilege_Limit                           Administrator
	## Possible values: 0-17, 0 is unlimited; May be reset to 0 if not specified
	## Lan_Session_Limit                          
	## Possible values: Yes/No
	SOL_Payload_Access                            No
EndSection

I’ve got a FreeBSD system which is lacking some of the tools which I’ve gotten used to having, whether from Linux or Solaris.

I’ll often use the GNU tool seq to iterate through things on the command line… for example, if I’m going to ping 192.168.1.20-40, I might, at my bash prompt,

for i in `seq 20 40`; do ping 192.168.1.${i}; done

Quite handy, though FreeBSD doesn’t have it, and I haven’t installed whatever port contains it.

So… I’ll use jot, now that I’ve once again looked up what it is and how it works.

The equivalent line to that above?

for i in `jot 21 20`; do ping 192.168.1.${i}; done

Mis ubuntu serveril viga ?

Lühidalt saan seda ühe sõnaga öelda -- upstart :-)

Natukese pikemalt kirjeldades on lugu selline, et upstart käivitab teenuseid sõltuvalt teatud tingimustest (teiste tööde käivitamisest ja süsteemi olekust tingitud sündmused jms) ning võimalikult paralleelselt. Osad asjad aga hakkavad selle tulemusel aeg-ajalt katki minema.

Paar huvitavat bugi sel teemal: https://bugs.launchpad.net/ubuntu/+source/upstart/+bug/543506?comments=all https://bugs.launchpad.net/ubuntu/+source/mountall/+bug/478392

Kirjutada tõrvajasse apache seadistamise probleemidest FreeBSD opsüsteemis.

Kasutaja loomise skript

adduser.sh

 #!/usr/local/bin/bash
 
 if [ "$ID" == "0" ]; then
         echo Must be root for now.
         exit 1
 fi
 
 echo "----- ----- ----- -----"
 echo "kirjuta kasutajanimi:"
 read username
 echo "kirjuta grupinimi kuhu kasutaja lisatakse:"
 read grp
 echo "kirjuta ees ja perenimi:"
 read userfullname
 
 while [ $pass1 != $pass2 ]
 do
   echo "...."
   echo "parool #1:"
   read -s pass1
   echo "parool #2:"
   read -s pass2
 done
 
 echo $username $grp $userfullname # $pass1 $pass2
 
 echo "----- ----- ----- -----"
 
 cp /usr/home/samba/netlogon/k.bat /usr/home/samba/netlogon/"$username".bat
 
 echo $pass1 | pw add user $username -c "$userfullname" -d "/usr/home/$grp/$username" -G $grp -m -s \
 /usr/local/bin/bash -h0 (echo $pass1; echo $pass1 ) | smbpasswd -s -a $username
 chmod 750 /usr/home/$grp/$username

Väikekooli arvutivõrku sobiv konf

Võrk ise

 [ COMP1 ]    [ COMP3 ]
     |            |                               
  ---+------+-----+------- em0 [ Server ] em0 -------- ( Internet )
            |
        [ COMP2 ]

tulemüüri fail meeles tuleb pidada, et reegleid tuleb kirjutada sellises järjestuses

  • MAKROS. Makrod ehk anname maakeeli muutujatele väärtusi, näiteks
  • TABLES, tabelid milles hoiame igasuguseid põnevaid ja pahasid IP aadresse
  • GLOBAL OPTIONS globaalsed ühendustele seatavad seaded
  • TRAFFIC NORMALIZATION
  • QUEUEING RULES, liikluse prioritiseerimiseks mõeldud järjekorrad
  • TRANSLATION RULES (ehk NAT)
  • FILTER RULES, ehk siis reeglid mis keelvad ja lubavad ühendusi, näiteks lubame kõik liikluse igas suunas selliselt
 pass in log all keep state 
 pass out log all keep state 

Reaalne seadistusfail

 # välimine (rl0) ja sisemine (em0) võrguseade 
 ext_if="rl0"
 int_if="em0"
 
 icmp_types = "echoreq"
 
 # arvutiklassi IP aadressid
 klass="{192.168.1.201, 192.168.1.202, 192.168.1.203 }"
 
 # ühenduste optimiseerimised
 set optimization high-latency
 set timeout tcp.established 7200
 set timeout udp.multiple 2
 set limit states 40000
 set skip on lo0
 set ruleset-optimization basic
 
 scrub in all
 scrub out all random-id max-mss 1440
 
 # suuname kogu veebiliikluse squid vahendusserverile
 rdr on $int_if inet proto tcp from any to any port www -> 127.0.0.1 port 3128
 
 # NAT välisvõrgust
 nat on $ext_if from !($ext_if) -> ($ext_if:0)
  
 # blokeerime esialgu kõik
 block log all label "blocked"
 
 # vaatame, et sisevõrgust saaks ühenduda vaid meie enda mailiserveriga, see vähendab rämpsposti teadmatut saatmist 
 pass in quick on $int_if inet proto tcp from $int_if:network to 192.168.1.1 port 25 keep state
 block in quick on $int_if inet proto tcp from $int_if:network to any port 25
 
 # blokeerime arvutiklassis toimuva õppetöö jaoks ühe ohtliku aadress :)
 block in quick on $int_if inet proto tcp from $klass to 58.35.11.23
 
 #spoofikaitse
 antispoof for $ext_if inet
 
 # lubame vaid ühe icmp tüübi, ehk pingi
 pass in inet proto icmp all icmp-type $icmp_types
 
 # avame serverile hulga porte teenuste kasutamiseks
 pass in on $ext_if proto tcp from any to $ext_if port 22 keep state label "ssh"
 pass in on $ext_if proto tcp from any to $ext_if port 80 keep state label "www"
 pass in on $ext_if proto tcp from any to $ext_if port 25 keep state label "mail"
 pass in on $ext_if proto tcp from any to $ext_if port 143 keep state label "imap"
 pass in on $ext_if proto tcp from any to $ext_if port 443 keep state label "https"
 pass in on $ext_if proto tcp from any to $ext_if port 993 keep state label "imaps"
 
 # lubame välja kõik tcp ja udp ühendused
 pass out on $ext_if proto { tcp, udp } all keep state
  • normal - suitable for almost all networks.
  • high-latency - high latency networks such as satellite connections.
  • aggressive - aggressively expires connections from the state table. This can greatly reduce the *memory requirements on a busy firewall at the risk of dropping idle connections early.
  • conservative - extremely conservative settings. This avoids dropping idle connections at the expense of greater memory utilization and slightly increased processor utilization.

Parandusideed vormistamise mõttes:

1. rakendaksin selgelt vaikimisi block reeglid kõigil suundadel (st neljal suunal kui tal on kaks liidest)

2. kasutaksin tag'isid, nii on lihtsam tihedat tulemüüri kirjeldada

http://kuutorvaja.eenet.ee/wiki/Kahe_v%C3%B5rgukaardiga_aadressteisendav_tulem%C3%BC%C3%BCr

---

Jälle noSQL rindelt teateid, kuid seekord pisut teise suunitlusega.

GlusterFS alternatiivina võiks äkki kaaluda Facebooki arendatud Cassandrat: http://cassandra.apache.org/

Niipalju kui mina aru sain, siis see on neil (ja Diggil ja Twitteril ja Redditil jne) kasutusel, et talletada terabaite andmeid klastrisse, nii et see on kättesaadav igast nodest ja ka kirjutatav igast nodest (lihtsalt proxytakse, kuhu vaja), samas on selle peamine eesmärk skaleeruvus (O(1)) ja huvitaval kombel, tehnoloogilistel põhjustel on kirjutamine isegi kaks suurusjärku kiirem kui lugemine, mis võrreldes nt MySQL-iga on ka suurusjärgu võrra kiirem.

Cassandrale on pea kõigis levinuimates keeltes kõrgtaseme-teegid ja läbi Thrifti veel tosinale keelele madala-taseme teegid.

Tuunida saab CAP (Consistency, Availability, Partition tolerance) osas korraga kahe väärtuse nõuet, nt konsistentsuse vajaduse puhul nõuda, et 1/2 + 1 vajalikest koopiatest oleks alati kirjutatud, enne kui operatsioon lõpetab jne.

Kirjelduse järgi tundub, et Cassandra sobiks väga hästi klastris kasutamiseks, eriti juhul, kui igast nodest on vaja kogu andmehulgale kiiresti ligi pääseda.

Ainuke miinus on, et see tähendaks failidesse kirjutamise asemel pisukest progemistööd rakenduse arendajale. Esmane guugeldamine ei andnud ka tulemust, et keegi näiteks FUSE peal Cassandra failisüsteemiga valmis oleks saanud (mõnel oli vaid idee).

PS. kui failisüsteem oleks olemas, siis võiks isegi mõelda, et KVM masinate sisemised kettad niiviisi kokku ühendada ja moodustada terviklik storage masinate endi kõhus. Kui masinaid on piisavalt palju (nt 4-5) peaks selline süsteem isegi 1-2 hosti kokkuvarisemise üle elama.

---

Väga huvitav andmete salvestamise meetod on "dokumendiadmebaas", mille keyword guugeldamiseks on noSQL.

Tegemist on andmebaasidega, mis ei ole relatsioonilised, st objektide vahel ei ole otseselt seoseid, igaüks moodustab ise tervikliku dokumendi koos kõikide väärtustega. Andmebaas ei ole tihti normaalkujul (vahel vähendatakse normaalsust meelega - denormaliseerimine), objektid vastavad enamasti üks-ühele mingisuguse andmestruktuuriga programmeerimiskeeles - sellest dokument.

Näiteks sellistest: Redis, Memcached (kuigi see on rohkem cache, kui admebaas), MongoDB jt. Neist viimane on väga huvitav, kuna on iseenesest JavaScripti objektide hoidla (JSON), millega suhtlemine käib JavaScripti kaudu (loomulikult on sellele teegid kõikidesse peamistesse progekeeltesse ka olemas). Kiirustestides on ta ikka tohutult kiirem kui MySQL ja isegi Memcachedil sammub kannul või mõnes testis ka kiirem, olles samas ikkagi täisväärtuslik, indekseeritud andmebaas.

http://www.mongodb.org/

Kõige silmatorkavam erinevus relatsioonilise baasiga on selles, et kahel ühes "kollektsioonis" oleval objektil ei pruugi mitte ükski atribuut kokku langeda ja atrbuutide väärtused võivad olla mh ka massiivid.

Kes hakkab asja vastu lähemat huvi tundma, siis esimene segadust tekitav koht nende dokumentatsioonis oli minu jaoks Map/Reduce selgitus. See on MongoDB töövahend, mis keedab mune, peseb autot ja toob lapse lasteaiast ära. Kahjuks dokumentatsiooni järgi läks mul kaua aega, enne kui pihta sain, kuidas seda kasutada.

Map/Reduce kasutusvaldkonnaks on näiteks artiklite kogumi pealt kõigi tag-ide kogumi genereerimine (arvestades, et tagid on ilmselt artikli objekti sees olev massiiv).

Rubysti jaoks on alternatiivne selgitus: Map/Reduce on sama, mis Rubys on map/inject - map funktsioon käib üle kõigi leitud objektide ja tagastab neist igaühekohta mingi alternatiivse tulemuse; reduce funktioon käbi üle kõikide tagastatud tulemuste ja arvutab mingisuguse uue väärtuse nende pealt, kasutades selleks kaasa veetavat vahemuutujat (nagu inject).

Üks koht, kus seda katsetada annaks, olekski just see nn kesksüsteem, mis haldaks mingit tsentraalset objekti (asutus, isik, domeen, teenus vmt) ja koondaks linke ning andmeid meie teistest süsteemidest, mida me ükskord arutasime. Sel puhul oleks just abi dokumendibaasi paindlikkusest, kuna objektid on erineva sisuga.

MongoDB ja Rails: http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails


Probleem spamassassini uuendamisega

_die can t locate mail spamassassin compiledregexps body_0 pm  
# sa-compile
# sa-update -D
Dec  6 20:44:57 muheleja amavis[14891]: extra modules loaded after daemonizing/chrooting:   Mail/SpamAssassin/CompiledRegexps/body_0.pm, Mail/SpamAssassin/Plugin/FreeMail.pm


 568  mergemaster -p
 569  mergemaster -a

http://forum.nginx.org/read.php?23,41517 openssl freebsd baasi ülekirjutamine

http://www.cyberls.com/forum/Thread-HOWTO-ProFTPD-Antivirus-using-CLAMAV

http://www.ibm.com/developerworks/linux/library/l-linux-kernel/index.html?S_TACT=105AGX03&S_CMP=ART

http://www.ibm.com/developerworks/linux/library/l-linux-filesystem/index.html S_TACT=105AGX03&S_CMP=ART

http://selectparks.net/~julian/levelhead/install.html


# freshclam 
ClamAV update process started at Mon Nov 29 16:06:25 2010
main.cld is up to date (version: 53, sigs: 846214, f-level: 53, builder: sven)
daily.cld is up to date (version: 12333, sigs: 6732, f-level: 54, builder: ccordes)
bytecode.cld is up to date (version: 93, sigs: 16, f-level: 54, builder: edwin)

Kataloogi kontrollimiseks

# clamscan -ri /kataloog

Vsftp conf

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
ftpd_banner=FTP.ZOO.TARTU.EE
chroot_local_user=YES
file_open_mode=0755
ascii_download_enable=YES
ascii_upload_enable=YES
syslog_enable=YES

ssl_enable=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem
force_local_data_ssl=NO
force_local_logins_ssl=NO

pasv_min_port=12400
pasv_max_port=12500

Proftpd teeb mugavaks tema modulaarne ehitus mis võimaldab koostada üsna keerukaid ftp teenuseid.

Seadistus mis autentib pami abil süsteemsete kasutajate vastu oleks

ServerName          "ftp.zoo.tartu.ee"
ServerType          standalone
DefaultServer       on
RequireValidShell   off
AuthPAM             on
AuthPAMConfig       ftp
Port				21

PassivePorts 49152 65535

#punktiga failidele
ListOptions "-a"

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask				022

MaxInstances			30

# Set the user and group under which the server will run.
User				ftp
Group				ftp

DebugLevel	5
DefaultRoot	~

# Autendi nii mysql-ist kui ka systeemitabelitest
AuthOrder	mod_auth_unix.c

# Normally, we want files to be overwriteable.
<Directory />
  AllowOverwrite		on
</Directory>

Passiivsete ühenduste lubamiseks tuleb näiteks pf.conf lisada

pass in on $ext_if proto tcp from any to any port > 49151 keep state label "passive ftp"

Mysqlist autentimiseks tuleb lisada AuthOrder reale lisada mod_auth_unix.c kõrvale mod_sql.c

AuthOrder	mod_sql.c mod_auth_unix.c

Ja seadistada mysqliga suhtlemise kasutaja ning parool

# MySQL conf
SQLAuthTypes	Crypt
SQLAuthenticate	users
SQLConnectInfo	andmebaas@db.zoo.tartu.ee kasutaja parool
SQLDefaultUID	20000
SQLDefaultGID	20000
SQLMinUserUID	20000
SQLMinUserGID	20000
SQLUserInfo	users username passwd uid gid ftpdir homedir

Viimase reaga on defineeritud kasutajaid sisaldava tabeli struktuur.

SSL toe lisamiseks

<IfDefine TLS>
 TLSEngineon
 TLSRequiredon
 TLSRSACertificateFile		/etc/vsftpd/proftp.pem
 TLSRSACertificateKeyFile	/etc/vsftpd/proftp.pem
 TLSCipherSuiteALL:!ADH:!DES
 TLSOptionsNoCertRequest
 TLSVerifyClientoff
 TLSRenegotiatectrl 		3600 data 512000 required off timeout 33 00
 #TLSLog/var/log/proftpd/tls.log

<IfModule mod_tls_shmcache.c>
 TLSSessionCacheshm:/file=/var/run/proftpd/sesscache
</IfModule>
</IfDefine>


Proftp failide kontroll läbi ClamAv viirusetõrje.

Paigalda Clamav op-süsteemi töövahenditega. Paigalda samamoodi Proftp server koos mod_clamav toega

clamd.conf tuleb teha järgnevad muudatused, ehk tuleb lahti kommenteerida rida kus öeldakse, et ta töötaks deemonina ja kuulaks 3310 porti

# TCP port address.
# Default: no
TCPSocket 3310

proftpd.conf tuleks lisada <global></blobal> markerite vahele lõpuossa järgnev blokk

<IfModule mod_clamav.c>
   ClamAV on
   ClamServer localhost
   ClamPort 3310
   ClamMaxSize 5 Mb
</IfModule>

5 Mb tähendab mis on maksimaalne failisuurus millest üle enam faile ei kontrollita.

Mõlemad teenused restartida.

Testimiseks võib üritada ühte Eicar signatuuri sisaldavat faili üles laadida http://www.eicar.org/anti_virus_test_file.htm

# ftp zoo.tartu.ee
Connected to zoo.tartu.ee.
220 ProFTPD 1.3.3c Server (zoo.tartu.ee) [::ffff:192.168.1.22]
Name (zoo.tartu.ee:ants): ants
331 Password required for ants
Password:
230 User ants logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> put test
local: test remote: test
200 PORT command successful
150 Opening BINARY mode data connection for test
550 Virus Detected and Removed: Eicar-Test-Signature
71 bytes sent in 0.00 secs (745.5 kB/s)