bash trumpiniai (shortcuts, hotkeys)

Designator Description
!! Skaitoma: bang-bang, si komanda iskviecia paskutine komanda. Sauktukas daznai vadinamas bang Linux ir Unix sistemose.
!n Iskviecia n-taja komanda isistorijos. history komandos pagalba galime pamatyti siuos numerius.
!-n Kreipiames i pries n enter paspaudimu vykdyta komanda is istorijos.
!string Kvieciame paskutine komanda, kuri prasidejo string.
!?string iskvieciam paskutine komanda, kurioje buvo pamineta string.
^str1^str2 Greitas pakeitimas. Pakartojame paskutine (ar anksciausiai rasta istorijoje) komanda pakeisdami pirma str1 i str2.
C-p ir ↑ Paskutini komanda
C-n ir ↓ Sekanti komanda
C-b ir ← Atgal vienu simboliu
C-f ir → Priekin vienu simboliu
C-a ir Home I eilutes pradzia
C-e ir End I eilutes pabaiga
C-l ir clear Isvalyti ekrana
M-< I istorijos pradzia
M-> I istorijos pabaiga
C-d ir delete Istrinti (delete) simboli is desines
C-k Istrinti (delete/Kill) viska nuo kursoriaus i desine iki EOL(end Of Line – eilutes pabaigos)
C-w Istrinti (delete/kill) viska nuo kursoriaus i kaire iki eilutes pradzios
C-y Iklijuoti (paste/Yank) istrinta teksta
M-d Istrinti (delete/kill) zodi
C-rtext Atbuline text paieska
Cstext Paieska i prieki text

iptables router

Sveiki,

susilaukiau klausimu, kaip pasidalinti internetu su kitu kompu turint dvi tinklo plokstes.

Taigi labai paprasta. Tikriausiai Jus naudojate standartini branduoliuka, del to ten bus visi branduolio moduliai ijungti.
Bet del viso ko galite pasibandyti, jei tingit, pereinam prie FW script’uko:


lsmod | grep ip_tables
lsmod | grep x_tables


Jei ten negauname rezultato:


~# lsmod | grep ip_tables
ip_tables 22042 3 iptable_filter,iptable_nat,iptable_mangle
x_tables 19073 11 ip_tables,iptable_filter,iptable_nat,ipt_MASQUERADE,xt_state,xt_tcpudp,ipt_LOG,ipt_REJECT,xt_limit,xt_multiport,iptable_mangle
~# lsmod | grep x_tables
x_tables 19073 11 ip_tables,iptable_filter,iptable_nat,ipt_MASQUERADE,xt_state,xt_tcpudp,ipt_LOG,ipt_REJECT,xt_limit,xt_multiport,iptable_mangle


Tuomet tiesiog pameginkime juos uzkrauti 🙂


modprobe ip_tables
modprobe x_tables


Ir issisaugoti automatiskai kraunamu moduliu sarase:


echo "ip_tables" >> /etc/modules
echo "x_tables" >> /etc/modules


SVARBU!

IPTABLES skaito taisykles EILES TVARKA!!! Taigi UZDAROME PABAIGOJE!

Taigi beliko tik pasirasyti FW script’uka (P.S. pas jus gal neveiks conntrack –ctstate , tai keiskite state –state):


#!/bin/bash
#
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# apsirasom IPTABLES
IPTABLES="/sbin/iptables"
# Isvalom esamas taisykles
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
# Local interface:
LOCAL_IF=eth1
# External (Internetas) interface:
INTER_IF=eth0
# jei Jusu IP statinis siulau nurotyri rankiniu budu:
INTER_IP="11.222.33.4"
# Pas mane dinaminis IP todel as ji gaudau per skriptuka... Jei Jusu statinis IP, uzkomentuokite sia eilute
INTER_IP=`ip addr show eth0 | grep "inet " | awk '{print $2}' | cut -f1 -d\/`
#
# Ijungiu FORWARDinima:
echo "1" > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -A POSTROUTING -o $INTER_IF -j MASQUERADE
# Tinklas LAN'ui
$IPTABLES -A FORWARD -i $INTER_IF -o $LOCAL_IF -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# Jei neveikia -m conntrack --ctstate ...
# $IPTABLES -A FORWARD -i $INTER_IF -o $LOCAL_IF -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A FORWARD -i $LOCAL_IF -o $INTER_IF -j ACCEPT
#
# Kuriu naujas/papildomas grandis:
$IPTABLES -N TCP_DROP_LOG
$IPTABLES -N UDP_DROP_LOG
$IPTABLES -N TCP_ACCEPT_LOG
$IPTABLES -N UDP_ACCEPT_LOG
$IPTABLES -N LOGDROP
$IPTABLES -N LOGDROP2
#
# Leidziu VISKA is VIDAUS
$IPTABLES -A INPUT -i $LOCAL_IF -j ACCEPT
#
# Accept PING, kartais naudinga, patikrint ar jusu servas gyvas
$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
#
# Leidziu uzmegstas sesijas
$IPTABLES -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#
# $IPTABLES -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#
# Visus kas kreipiasi i 22 poerta is isores, loginam :)
$IPTABLES -A INPUT -d $INTER_IP --proto tcp --dport 22 -j LOGDROP
#
### PORT FORWARDING
### PORT FORWARD
#
# SSH SERVER internete pasiekiamas per 212 porta, nors realiai kito LAN'e esancio kompo (192.168.168.192) 22 portas
# $IPTABLES -t nat -A PREROUTING -i $INTER_IP --proto tcp --dport 212 -j DNAT --to 192.168.168.192:22
#
# rdp forward i 192.168.111.252 win xp winxp XP masina
$IPTABLES -t nat -A PREROUTING -i $INTER_IP --proto tcp --dport 3389 -j DNAT --to 192.168.111.252:3389
#
#
$IPTABLES -A LOGDROP2 -j LOG --log-prefix "DROPPED " --log-level 4 --log-ip-options --log-tcp-options --log-tcp-sequence
$IPTABLES -A LOGDROP2 -j DROP
$IPTABLES -A LOGDROP -m limit --limit 1/second --limit-burst 10 -j LOGDROP2
$IPTABLES -A LOGDROP -m limit --limit 2/minute --limit-burst 1 -j LOG --log-prefix "LIMITED " --log-level 4
$IPTABLES -A LOGDROP -j DROP
#
##### Po sios komandos, isijungia FIREWALL! ATSARGIAI!
#
$IPTABLES -A INPUT -i $INTER_IF -j DROP
#
logger -p info -t syslog "firewall updated"
exit 0


Na va pas jus toks minimalus, noob’iskas firewall’as 🙂

External links

Gentoo iptables for newbies

skanaus 🙂

NTP (Network Time Protocol) ir ntpdate

Sveiki,

Dažnai susiduriate su problema, kad jūsų kompiuterio laikrodis rodo vieną laiką, namie esantys laikrodžiai rodo kitą laiką, kiek šiuo metu laiko, sužinoti, tampa ganėtinai sunku, anksčiau buvo telefono numeris, kuriuo paskambinus buvo pasakomas laikas… Jei turite interneto prieigą, tai galite užeiti į kokį puslapį… Bet ar ten rodo gerą laiką? Net jei ir puslapis yra iš Lietuvos ir Lietuvių kalba, ir skirtas Lietuvos auditoriai (lankytojams) vistiek, puslapio rodomas laikas gali sutapti su Jūsų kompiuterio rodomu laiku, nes galimi du variantai, Jūsų kompiuteris rodo tikslų laiką, arba Tiesiog puslapis nesivargina, o um parodo Jūsų kompiuteryje rodomą laiką… 🙂 Dauguma tinklapių kūrėju mano, kad Jūsų kompiuteris rodo Jums priimtiną laiką… Kaipgi dabar užtikrinti, kad Jūsų kompiuteris taip elgtųsi… Paprasta, Jei naudojame Linux:


ntpdate ntpdate.lpic.lt


Jei Windows, atidarykite komandinę eilutę, Paspaudus „Windows“ prekinį ženklą atsiradusio meniu apačioje, įvesties laukely, įraūykite cmd Jei tokio įvesties laukelio nėra, spauskite Run ir atsiradusiame lange įrašykite cmd. Dabar beliko pridėti:


w32tm /config /syncfromflags:manual /manualpeerlist:ntpdate.lpic.lt,0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org
arba
net time /setsntp:"ntpdate.lpic.lt 0.pool.ntp.org 1.pool.ntp.org" Kažkaip taip… 🙂

Bash File Testing

Bash File Testing
-b filename Block special file
-c filename Special character file
-d directoryname Check for directory existence
-e filename Check for file existence
-f filename Check for regular file existence not a directory
-G filename Check if file exists and is owned by effective group ID.
-g filename true if file exists and is set-group-id.
-k filename Sticky bit
-L filename Symbolic link
-O filename True if file exists and is owned by the effective user id.
-r filename Check if file is a readable
-S filename Check if file is socket
-s filename Check if file is nonzero size
-u filename Check if file set-ser-id bit is set
-w filename Check if file is writable
-x filename Check if file is executable

cyberciti.biz OpenSSH Root user account restriction – revisited – Lietuviškai

Original

– čia pateikiamas tik vertimas!

Jei norite leisti prisijungti root naudotojui per SSH tik iš vieno IP, o kitiems naudotojams iš betkur kitur. Tokį sprendimą galime realizuoti per PAM autentifikacijos modulius. Naudosime pam_access PAM modulį, kuris naudojamas prieigos valdymui. Šis suteikia galimybę kontroliuoti prisijungimus atsižvelgiant į:

  • Naudotojo prisijungimo vardą (Login names)
  • Kompą ar domeną (Host or domain names)
  • IP ar IP tinklas (Internet addresses or network IP numbers)
  • Terminal line names etc

Kam naudojam pam_access?

Prie serverio gali reikėti prisijungti iš betkurio tinkle esančio kompiuterio. taigi turime pasirūpinti gera prieigos kontrole, naudojant OpenSSH servisą.

Kaip susikonfiguruoti pam_access?

Reikės keisti šiuos failiukus:

  1. /etc/pam.d/sshd
  2. Linux PAM konfiguracinis failas.

  3. /etc/security/access.conf
  4. Taisyklių paėmimui pagal nutylėjimą yra naudojamas šis failas.

Kai kasnors jungiasi, perbėgama per 2 bylos turinį ir jei yra sutapimas įvykdoma taisyklė. Mes galime nurodyti, ar priimti tokį prisijungimą ar atmesti. sintaksė: permission : username: origins kur:
permission : Teisių laukelis “+” (prieiga suteikiama) ar “-” (prieiga atšaukiama)
username : Linux sisteminis naudotojas (username)/login‘as (root ir kiti). Galima nurodyti ir grupės vardą. Arba galima nurodyti specialų trumpinį: ALL (Jei norime, kad tai būtų skirta visiems).
origins : Čia pateikiamas sąrašas terminalo langų, kompo vardų, IP adresų, domenų, kurie prasideda . ar specialų trumpinį ALL ar LOCAL

Visų pirma, kad tolesni pakeitimai veiktų reikia įjungti pam_access palaikymą byloje /etc/pam.d/sshd:


# vi /etc/pam.d/sshd
# Papildome eilute:
account required pam_access.so


Išsaugome ir uždarome.

Tarkime norime leisti naudotojam root ir lpic prisijungti tik iš IP adreso 1.1.1.1.

Atidarome bylą: /etc/security/access.conf su root’o teisėmis:


# vi /etc/security/access.conf
# Papildome eilute:
-: ALL EXCEPT root lpic:1.1.1.1


Išsaugome bylą.

Dabar SSH leis prisijungimus naudotojų root ir lpic tik iš 1.1.1.1 IP adreso. Jei naudotojas root ir lpic bandys jungtis iš kito IP adreso, jiems parašys: ‘Connection closed by xxx.xxx.xxx.xxx’ ir error pranešimu turėtų būti papildytas Jūsų žurnaliukas (log’as):


# tailf /var/log/message
Feb 20 19:02:39 hostname pam_access[2091]: access denied for user `lpic' from `xxx.xxx.xxx.xxx'


Kur, jau kaip ir minėjau xxx.xxx.xxx.xxx1.1.1.1.
Beje, jei įrašėte savo naudotojo vardą ir išsaugojote… VISOS TAISYKLĖS taikomos IŠKART po IŠSAUGOJIMO /etc/security/access.conf bylos! Būkite atsargūs!

Daugiau pavyzdukų:

a) Kartais reiktų sukurti taisykles, kurios leistų prisijungti visiems išskyrus rootbetkur, o root tik iš localhost:


-:root:ALL EXCEPT LOCAL
# ar
-:root:ALL EXCEPT localhost


b) Deny network and local login to all users except for user root and vivek:

-:ALL EXCEPT root vivek:ALL

c) Tik iš 192.168.1.0/24 leisti prisijungti root naudotoju:


+ : root : 192.168.1.0/24


Pastebėjimas: taip galime leisti ir drausti jungtis visoms tarnyboms, kurios naudoja PAM, pvz.: ftpd, telnet ir t.t.

P.S. + : root : yyy.yyy.yyy.yyy
- : root : ALL

Sambos serveris mano namuose HowTo Debian squeeze stable

Sveiki, kaip sekas?

Aišku jei Jumi labai paranojikas ir niekuom nepasitikit, ir suprantat, kad kiekviena programulka, su papildoma funkcija, Jūsų serveryje, suteikia įsilaužėliui po papildomą įsilaužimo įrankį tai Jūs galite susikompiliuoti SAMBA iš sources ir štai sambos HowTo. Mes taip nedarysime, juk kaip iš pavadinimo matome tai: naminis serveris, kuris NĖRA pasiekiamas iš išorės.

Taigi mums prireiks:

Taigi, parsisiunčiame SAMBA:


aptitude install samba


sutikime su viskuom, tik įdėmiai paskaitykite ką jis jums siūlo…

Taigi nusikopinkime egzistuojantį sambos configūracinį failiuką ir įmeskime šį, ara pasikeiskite Jau esamą, taip Jūs daugiau sužinorsite apie sambos teikiamus malonumus… taigi:


mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
vi /etc/samba/smb.conf


[global]
workgroup = LINUX
server string = %h server
dns proxy = no
hosts allow = 127.0.0.1 192.168.0.0/16 10.0.0.0/8 172.16.0.0/12
log file = /var/log/samba/log.%m
log level = 2
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
printing = cups
printcap name = cups
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536 SO_KEEPALIVE
deadtime = 15
vfs objects = full_audit
full_audit:prefix = %u|%I|%m|%S
full_audit:success = mkdir rename unlink rmdir pwrite
full_audit:failure = none
full_audit:facility = LOCAL7
full_audit:priority = NOTICE
[homes]
comment = Home Directories
browseable = no
read only = yes
create mask = 0700
directory mask = 0700
valid users = %S
[printers]
security = share
comment = All Printers
browseable = yes
path = /var/spool/samba
printable = yes
guest only = yes
public = yes
read only = yes
create mask = 0700
create mode = 0700
use client driver = yes
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
[DL]
path=/home/Downloads
writeable = no
valid users = USERNAME
public = no
browseable = no
available = yes


Taigi Šiame konfigūraciniame faile matome 4 pagrindines sekcijas (P.S. kas redaguojate originalų sambos failiuką… # ir ; reiškia komantarą, viskas kas už šių ženklų iki naujos eilutės, nebus traktuojama sambos serverio)

  1. [global]
  2. [homes]
  3. [printers]
  4. [print$]
  5. [DL]

Vienetuku ir dvejetuku pažymėtos sekcijos yra SAMBA išmyslas… 🙂 [global] skiltyje aprašomi bendri samba parametrai, kurie bus taikomi visai SAMBA’i ir visiems padalintiems resursams, kuriuose nepasakysime kitaip. Tuo tarpu [homes] tai yra paviešintas/padalintas/už’share’intas resursas, kurio funkcija, paviešinti naudotojo namų katalogus. T.Y. naudotojas prisijungęs, praėjęs autentifikaciją, užėjus į serverį per windows’us, pamatys savo namų katalogą SAMBA sistemoje.
SAMBA naudotojai turi egzistuoti ne tik Linux/Unix sistemoje, bet ir SAMBOS autentifikavimo sistemoje, nes SAMBA saugo slaptažodį tokiu pat formatu, kaip ir WINDOWS OS.

Taigi, sekančios sekcijos [printers] ir [print$] yra reikalingos, jei mes norime per Linux paviešinti spausdintuvą.

Taigi paskutinė opcija [DL] yra mano paviešintas resursas tinkle.


[DL]
path=/home/Downloads
writeable = no
valid users = USERNAME
public = no
browseable = no
available = yes


  • DL – tokiu pavadinimu yra pasiekiamas resursas vietiniame tinkle \\Serverio_IP\DL
  • path=/home/Downloads – čia nurodoma, kurią direktoriją norime paviešinti…
  • writeable = no – Į šį resursą, nebus galima įrašyti duomenų
  • valid users = USERNAME – ši opcija nėra būtina, bet aš nenoriu, kad į šią direktoriją patektų betkas, o tik naudotojai kurie praėjo autorizaciją
  • public = no – Resursas nėra viešai pieinamas, neautorizuoti naudotojai nealės čia patekti
  • browseable = no – Resursas nėra MATOMAS užėjus į serverį per explorer.exe į \\Server_IP jo nepamatysite, nebent pakeisite į yes
  • available = yes – resursas yra įjungtas, kai jums jo nebereikės, bet nesinorės trinti visų nustaytymų bei tingėsite komentuoti, tiesiog parašome čia no ir viskas 😉

Taigi, beliko sužinoti, kaip pridėti naudotoją prie SAMBA sistemos… Tam mums reiktų, dėl viso pikto perkrauti SAMBA serverį ir tuomet pridėti naudotoją, kuris jau yra mūsų sistemoje, o jei jo nėra jį ten sukurti:


/etc/init.d/samba restart # perkrovem SAMBA
useradd -s /bin/false -m naudotojas # Sukuriame sisteminį naudotoją tik sambai
smbpasswd -a naudotojas # pridedame jį prie SAMBA duomenų bazės.

tai tiek… nor yra dar daug ko čia papasakoti.

backup script bash tar bzip2

touch /backup.sh
mkdir /backup
chmod a+x /backup.sh

#!/bin/bash
cd /backup
file="`date +%Y%m%d-%H%M%S`.tar"
#echo $file
tar -cf new.backup/$file folder_to_backup
cd /backup/new.backup
bzip2 -zq9 $file
#rm $failas
echo "backed up `date` \n" >> /backup/backup.made
#remove older then 3 days to /backup/old.backup
find -type f -mtime +3 -exec mv {} ../old.backup/ \;
cd ../old.backup
# completely remove backups, older then 7 days
find -type f -mtime +7 -exec rm -f {} ../old.backup/ \;

enlightenment repozitoriju diegimas debian terpei

Žinau, jūs jau daugybe kartų esate girdėję apie enlightenment aplinką. Tikriausiai esate ją ir išbandę debian repozitorijuose?! Deja, tokie bandymai būna nelabai vykę. Dažniausiai įsidiegia e16, o jeigu ir e17 tai be visų galimų modulių… o tuo tarpu prisidėję į resursus http://packages.enlightenment.org/ resursą mes galėsime pasisipūsti vieną iš naujausių versijų ir ne tik naujausių, bet ir PILNĄ, kas yra labiausiai aktualu.
Taigi atsidarome failiuką /etc/apt/sources.list su jūsų pamegtu teksto redaktorium:
# vi /etc/apt/sources.list
Tuomet įrašome ten eilutę:
deb http://packages.enlightenment.org/debian lenny main extras

Tuomet pridedame repozitorijaus raktą ir paleidžiame atnaujinimą paketų sąrašo:
# wget http://packages.enlightenment.org/repo.key -o /tmp/b && apt-key add /tmp/b && rm /tmp/b && apt-get update

Taip pat jums bus smalsu žvilgtelt čia