Показват се публикациите с етикет linux. Показване на всички публикации
Показват се публикациите с етикет linux. Показване на всички публикации

вторник, април 05, 2022

Linux, allow SFTP only users (with shared and chroot-ed env)

Users must upload/download files only via sftp/scp (no ssh, local login) to a pre-defined directory.

Users must not browse other directories or list directory tree.

Multiply users may share single directory (e.g. list of users assotiated with particular organization)

1. Creating of local users and home/upload dir structure

adduser --no-create-home --home /opt/sftp/chroot/org1 --shell /bin/nosuch u1

adduser --no-create-home --home /opt/sftp/chroot/org1 --shell /bin/nosuch u2

addgroup sftp

adduser u1 sftp

adduser u2 sftp

mkdir -p /opt/sftp/chroot/org1/upload

chmod -R 0755 /opt/sftp/chroot/org1  # 755 is must

chown -R root:root /opt/sftp/chroot/org1 # owner=root is must

chgrp sftp /opt/sftp/chroot/org1/upload

chmod 0764 /opt/sftp/chroot/org1/upload


2. Edit sshd_config (after UsePAM yes)


Subsystem sftp internal-sftp -l VERBOSE -f LOCAL3 # VERBOSE and LOCAL3 are used for logging via rsyslog.d/sftp.log

Match Group sftp # only users members of sftp group are allowed

ChrootDirectory %h # chrooted to $HOME_DIR e.g. /opt/sftp/chroot/org1

 AllowTcpForwarding no

 X11Forwarding no

 ForceCommand internal-sftp  -l VERBOSE -f AUTHPRIV # force to use only sftp/scp but not ssh -> shell=/bin/such helps too


service sshd restart


3. Update rsyslog configuration by editing /etc/rsyslog.d/sftp_log.conf

input(type="imuxsock" Socket="/opt/sftp/chroot/org1/dev/log" CreatePath="on")

local3.*                                                /var/log/sftp_org1.log

AUTHPRIV.*                                                /var/log/sftp_org1.log


4. Test 

tail -n 20 /var/log/sftp_org1.log

Apr  5 17:42:53 vs sshd[32700]: pam_unix(sshd:session): session opened for user u1 by (uid=0)

Apr  5 17:42:54 vs internal-sftp[32723]: session opened for local user u1 from [1.2.3.4]

Apr  5 17:42:54 vs internal-sftp[32723]: received client version 3

Apr  5 17:42:54 vs internal-sftp[32723]: realpath "."

Apr  5 17:43:04 vs internal-sftp[32723]: realpath "/up"

Apr  5 17:43:05 vs internal-sftp[32723]: stat name "/up"

Apr  5 17:43:06 vs internal-sftp[32723]: opendir "/up"

Apr  5 17:43:06 vs internal-sftp[32723]: closedir "/up"

Apr  5 17:43:19 vs internal-sftp[32723]: opendir "/up/"

Apr  5 17:43:19 vs internal-sftp[32723]: closedir "/up/"

Apr  5 17:43:19 vs internal-sftp[32723]: lstat name "/up/file1.txt"

Apr  5 17:43:20 vs internal-sftp[32723]: remove name "/up/file1.txt"

Apr  5 17:43:23 vs internal-sftp[32723]: open "/up/file2.sftp" flags WRITE,CREATE,TRUNCATE mode 0644

Apr  5 17:43:23 vs internal-sftp[32723]: close "/up/file2.sftp" bytes read 0 written 854

Apr  5 17:43:27 vs internal-sftp[32723]: lstat name "/up/file2.sftp"

Apr  5 17:43:27 vs internal-sftp[32723]: stat name "/up/file2.sftp"

Apr  5 17:43:27 vs internal-sftp[32723]: open "/up/file2.sftp" flags READ mode 0666

Apr  5 17:43:27 vs internal-sftp[32723]: close "/up/file2.sftp" bytes read 854 written 0

Apr  5 17:43:36 vs internal-sftp[32723]: session closed for local user u1 from [1.2.3.4]

Apr  5 17:43:36 vs sshd[32700]: pam_unix(sshd:session): session closed for user u1



четвъртък, май 20, 2021

Access files between WSL instances

 Preamble:

C:\Users\Ivan Popov>ver && wsl --list
Microsoft Windows [Version 10.0.19041.985]
Windows Subsystem for Linux Distributions:
Debian (Default)
kali-linux

ToDo: access files in $HOME on Debian wsl instance from kali-linux wsl instance 

Dunno how (and don't care actually) rootfs is mounted in Windows, but files are located here: 

C:\Users\%USERNAME%\AppData\Local\Packages\TheDebianProject.DebianGNULinux_76v4gfsz19hv4\LocalState\rootfs\home

(TheDebianProject.DebianGNULinux depends of installed distro)

In WSL current disk partitions are already mounted under /mnt/Disk_Letter

To access my debian_home from kali I executed: 

echo "sudo mount -B /mnt/c/Users/My\ Current\ WinUserName/AppData/Local/Packages/TheDebianProject.DebianGNULinux_76v4gfsz19hv4/LocalState/rootfs/ /mnt/deb/
" >> ~/.bashrc

[fstab entry should be in format /old_dir /new_dir none bind but for some reason didn't work]

The result:

$ls /mnt/deb/
total 620
drwxr-xr-x 1 root root   4096 May  3 23:31 .
drwxr-xr-x 1 root root   4096 May 20 15:59 ..
drwxr-xr-x 1 root root   4096 May 17 19:04 bin
drwxr-xr-x 1 root root   4096 Mar 20 00:44 boot
drwxr-xr-x 1 root root   4096 Apr  6 14:47 dev
drwxr-xr-x 1 root root   4096 May 17 19:04 etc
drwxr-xr-x 1 root root   4096 May  3 23:33 home
-rwxr-xr-x 1 root root 632048 May  5 00:48 init
drwxr-xr-x 1 root root   4096 Apr  6 14:48 lib
drwxr-xr-x 1 root root   4096 Apr  6 14:47 lib64
drwxr-xr-x 1 root root   4096 Apr  6 14:47 media
drwxr-xr-x 1 root root   4096 May  5 22:31 mnt
drwxr-xr-x 1 root root   4096 Apr  6 14:47 opt
drwxr-xr-x 1 root root   4096 Mar 20 00:44 proc
drwx------ 1 root root   4096 May  3 23:35 root
drwxr-xr-x 1 root root   4096 Apr  6 14:47 run
drwxr-xr-x 1 root root   4096 May  3 23:31 sbin
drwxr-xr-x 1 root root   4096 Apr  6 14:47 srv
drwxr-xr-x 1 root root   4096 Mar 20 00:44 sys
drwxrwxrwt 1 root root   4096 May 20 14:49 tmp
drwxr-xr-x 1 root root   4096 Apr  6 14:47 usr
drwxr-xr-x 1 root root   4096 Apr  6 14:47 var


петък, март 12, 2021

HA with ExaBGP

The idea is simple: convenient way to blackhole some prefixes (bogus, wellknown C&C, spam,malicious, personally predefined, etc)

I'm using Linux + exaBGP + python script to collect some prefixes from a list of sources; exaBGP holding BGP session with our 2 RR and announce generated list of prefixes with blackhole community.

 exaBGP  is a python application to interact with BGP networks

List of prefixes is generated by generate_blacklists.py 

https://drive.google.com/file/d/1XgksQVcb2rpabv8OVCBkFabR6YuQpxV9

The configuration itself is pretty straightforward  and self-explanatory 

1. to announce a single static route:

neighbor 192.168.0.1 {
router-id 192.168.0.10;
local-address 192.168.0.10;
local-as 12345;
peer-as 12345;

### optional

### hold-time 180;
### outgoing-ttl 1;
### capability {
### multi-session;
### }


family {
ipv4 unicast;
}
static {
route 10.0.0.1/32 next-hop self;

route 10.0.0/24 origin IGP as-path [10 20 30 30 30  ]  next-hop 192.168.2.1;

route 172.10.0.0/22 next-hop 192.168.2.1 med 200 community [30303:30303] split /24;

route 9.9.9.9/32 next-hop 192.168.2.1 extended-community [ target:120000L:123 origin:130000:1234 ];
}
}

### Or 

announce {
        ipv4 {
            unicast 10.0..0/24 next-hop 192.168.2.1 local-preference 200 community 30303:30303;
        }
    } 

A direct API command (via exabgcli <- for systemd https://github.com/Exa-Networks/exabgp/blob/master/etc/systemd/exabgp.service)

announce route 10.0.0/24 origin IGP as-path [10 20 30 30 30  ]  next-hop 192.168.2.1

2 servers; preview VIP is assigned as secondary IP; nginx listening on this "VIP"; if no output from curl == stop announcing VIP i.e. no incoming connections (ToDo: more detailed explanation about healthcheck and route announce)

process service-nginx {
run python3 -m exabgp healthcheck -s --name nginx --cmd "curl --fail --verbose --max-time 2 http://localhost" --start-ip 0;
encoder text;
}
neighbor 192.168.0.1 {
router-id 192.168.0.10;
local-address 192.168.0.10;
local-as 12345;
peer-as 12345;

api services {
processes [ service-nginx ];
}

} 

ExaBGP could be used for DDoS protection (with NetFlow/syslog/monitoring), Internet Watch Inerception, Traffic Engineering, Server's HA and any other SDN variations


Some useful links:

https://github.com/Exa-Networks/exabgp

https://vincent.bernat.ch/en/blog/2013-exabgp-highavailability

https://thepacketgeek.com/exabgp/

Part 1 : https://www.dasblinkenlichten.com/working-with-exabgp-4/

Part 2: https://www.dasblinkenlichten.com/building-static-routes-with-exabgp/

https://blog.plessis.info/blog/2020/02/11/haproxy-exabgp.html

 

 

Simple example from developer:

neighbor 192.168.127.128 {        
description "will flap a route until told otherwise";        
router-id 198.111.227.39;        
local-address 192.168.127.1;        
local-as 65533;        
peer-as 65533;        
### add and remove routes when flap.sh prints
### flap.sh should produce readable for ExaBGP output
### in proper ExaBGP API syntax
process loving-flaps {                
run etc/processes/flap.sh;        
}

1 - take your favourite language : perl, python, lua, C, shell, french !
2 - create a forever loop3 - print what you want to do ...
#!/bin/sh
# ignore Control C
trap
'' SIGINT
while `true`;

### that echo result is understandable for ExaBGP API
do echo "announce route 192.0.2.1 next-hop 10.0.0.1"
sleep 10
echo "withdraw route 192.0.2.1 next-hop 10.0.0.1"
sleep 10
done

Real life example:








neighbor 10.255.1.254 {
    router-id 10.255.42.1;
    local-as 65042;
    peer-as 65001;

    api services {
        processes [ watch-loghost, watch-mailhost ];
    }
}

process watch-loghost {
    encoder text;
    run python -m exabgp healthcheck --cmd "nc -z -w2 -u localhost 514" --no-syslog --label loghost --withdraw-on-down --ip 10.255.255.1/32;
}

process watch-mailhost {
    encoder text;
    run python -m exabgp healthcheck --cmd "nc -z -w2 localhost 25" --no-syslog --label mailhost --withdraw-on-down --ip 10.255.255.2/32;
}


 

сряда, май 09, 2018

Linux LVM

Create a LVM managed volumes
HDD (/dev/sda; dev/sdb2; etc) - PV (phisycal volume) - VG (volume group) - LV (logical volume)

apt-get install lvm2
apt-get install system-config-lvm (GUI tool) 
apt-get install liblinux-lvm-perl
service lvm2 start



1. HDD (/dev/sda; dev/sdb2; etc)
cfdisk /dev/sda -> create a partition with type Linux LVM (8e RHL/CentOS/Ubuntu 31Debian)
2.  PV (phisycal volume)
pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb5
3.  VG (volume group)
 vgcreate -A y --addtag VG1 -v VG1 /dev/sdb1 /dev/sdb2 /dev/sdb5
4. LV (logical volume)  --> create a 2 partitons with 3GB allocated space
lvcreate -L 3G -n lvm_docs VG1
lvcreate -L 3G -n lvm_pics VG1
5. makefs
mkfs.ext4 /dev/VG1/lvm_pics
mkfs.ext4 /dev/VG1/lvm_docs
 6. mount & use

Extend LVM volume for VMWare VM 
1.  Increasing the virtual hard disk
echo "- - -" > /sys/class/scsi_host/host0/scan

2. Partition the new disk space
cfdisk /dev/sda
rescan partitions: partprobe -s or partx -a /dev/sda3

3. Increasing the logical volume
pvcreate /dev/sda3
  Device /dev/sda3 not found (or ignored by filtering) --> partscan/partx/kpartx
pvcreate /dev/sda3
  Physical volume "/dev/sda3" successfully created
vgdisplay | grep -i "VG name"
vgextend VG1 /dev/sda3


Using the pvscan command we scan all disks for physical volumes

lvdisplay | grep -i path
  LV Path                /dev/VG1/lvm_docs
  LV Path                /dev/VG1/lvm_pics

lvextend /dev/VG1/lvm_docs /dev/sda3
resize2fs /dev/VG1/lvm_docs 


https://www.tecmint.com/create-lvm-storage-in-linux/
https://wiki.debian.org/LVM

събота, януари 20, 2018

Upgrade from Ubuntu 14.04 LTS to 16.04 LTS

A have a Ubuntu server 14.04 LTS working as a mail server for a several users and serving a few virtual domains with a nearly 3y uptime. Today I decide to upgrade.
#do-release-upgrade
bla-bla-bla
When we come to mysql upgrade :

dpkg: dependency problems prevent configuration of mysql-server:
 mysql-server depends on mysql-server-5.7; however:
  Package mysql-server-5.7 is not configured yet.

dpkg: error processing package mysql-server (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                                                                                                          Processing triggers for libc-bin (2.23-0ubuntu5) ...
Processing triggers for systemd (229-4ubuntu16) ...
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
 mysql-server-5.7
 mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)

apt-get install --reinstall mysql-server 
apt-get -f install 
apt-get install --fix-missing
apt-ger remove --purge mysql-server 
even dpkg -i latest.mysql.binary.from.oracle.deb 
Nothing help... reading manuals, logs and shits ... troubleshooting, searching and drinking more coffee don't help either
Fleeting flash: It's always apparmor !!!

# service apparmor stop
# service apparmor teardown
# update-rc.d -f apparmor remove
# apt-get --purge remove apparmor apparmor-utils libapparmor-perl libapparmor1
# apt-get update && apt-get upgrade && apt-get install mysql-server 
Nice... to see the rising sun!

After that - another fail in migration from 14.04 to 16.04
saslauthd[2060]: pam_mysql - something went wrong when invoking crypt() - No such file or directory
saslauthd[2060]: DEBUG: auth_pam: pam_authenticate failed: Authentication failure
mail saslauthd[2060]: do_auth         : auth failure: [user=user@domain.com] [service=smtp] [realm=domain.com] [mech=pam] [reason=PAM auth error]

libpam is deprecated ... dirty fix: change pam auth with Remote IMAP auth:
Change in /etc/default/saslauthd next options (if we have a working courier auth daemon)
 MECHANISMS="rimap"
MECH_OPTIONS="127.0.0.1"
 
find /etc/init.d/ | grep courier | while read line; do $line restart; done

And ... another one ... 
When user trying to sending/receiving mails got error: status=deferred (address resolver failure) 
and
 postfix/trivial-rewrite[8584]: warning: mysql query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'virtual FROM domains WHERE domain='domain.com'' at line 1
postfix/trivial-rewrite[8584]: fatal: mysql:/etc/postfix/mysql-virtual_domains.cf(0,lock|fold_fix): table lookup problem

In my /etc/postfix/mysql-virtual_domains.cf I have:
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
so ... I just edited that file and removed ' AS virtual '

For now everything looks great and users are able to connect via pop3(s)/imap(s), sends and receive mails to internal and external domains.

сряда, август 28, 2013

Proftpd & FileZilla troubles

Като допълнение на това: FTP access-2
[ Нещата явно са се случили след ъпдейта от Debian 6 към Debian 7 Поне нищо друго не ми хрумва ]
Като цяло оплакването, е че не работи FTP съръвъра... в частност - не работи през FileZilla
Status:    Connection established, waiting for welcome message...
Response:    220 DMT FTP Server
Command:    USER down
Response:    331 Password required for down
Command:    PASS ****
Response:    230 Anonymous access granted, restrictions apply
Command:    OPTS UTF8 ON
Response:    200 UTF8 set to on
Status:    Connected
Status:    Retrieving directory listing...
Command:    PWD
Response:    257 "/" is the current directory
Command:    TYPE I
Response:    200 Type set to I
Command:    PORT 194,12,234,123,242,221
Response:    200 PORT command successful
Command:    MLSD
Error:    Connection closed by server
Error:    Failed to retrieve directory listing


Драмата е в новите версии на proftpd (явно над proftpd -v ProFTPD Version 1.3.4a) и по-специално в mod_facts.c
Текущата версия е :  proftpd -vv | grep facts -->   mod_facts/0.3 (* $Id: mod_facts.c,v 1.45 2011/05/23 21:11:56 castaglia)
докато старата е : proftpd -vv | grep facts -->   mod_facts/0.1 ($Id: mod_facts.c,v 1.26.2.1 2010/03/02 18:08:07 castaglia)

Решението на проблема е :
< IfModule mod_facts.c > 
FactsAdvertise off 
</IfModule > 
добавено в /etc/proftpd/proftpd.conf.

Описанието:  
1. http://www.proftpd.org/docs/modules/mod_facts.html
2. https://forum.filezilla-project.org/viewtopic.php?f=2&t=22464&start=0  


петък, август 23, 2013

LSI MegaRAID Storage Manager + Ubuntu

Server: Ubuntu 12.04 LTS 64b
RAID Controller: LSI 8704epl

Целта на занятието беше мониторинг и управление на RAID volumes.
I. Console tools:
echo "deb http://hwraid.le-vert.net/debian wheezy main" >> /etc/apt/sources.list
wget -O - http://hwraid.le-vert.net/debian/hwraid.le-vert.net.gpg.key | sudo apt-key add -
apt-get update
apt-get install megaclisas-status  megacli megaraidsas-status megasasctl
cat /etc/init.d/megaraid-statusd | grep MAILTO
MAILTO=root   # Where to report problems

Като краен резултат:
megasasctl -vv -l 0x05
a0       MegaRAID SAS 8704ELP     bios:2.07.00 fw:1.40.42-0615 encl:1 ldrv:2  rbld:30% mem:128MiB batt:FAULT, module missing, pack missing, charge failed/0mV/0C
a0d0      1861GiB RAID 1   1x2  optimal
      row  0:  a0e252s2  a0e252s3
a0d1       297GiB RAID 1   1x2  optimal
      row  0:  a0e252s0  a0e252s1
a0e252s0      ATA WDC WD3201ABYS-0 rev:1C02 s/n:WD-WCARW4849895         298GiB  a0d1  online   errs: media:0  other:812
a0e252s1      ATA WDC WD5003ABYX-0 rev:1S02 s/n:WD-WMAYP5632935         465GiB  a0d1  online   errs: media:0  other:749
a0e252s2      ATA WDC WD2003FYYS-0 rev:1D02 s/n:WD-WCAY00537638        1863GiB  a0d0  online   errs: media:0  other:750
a0e252s3      ATA WDC WD2003FYYS-0 rev:1D02 s/n:WD-WCAY01502649        1863GiB  a0d0  online   errs: media:0  other:567

II. GUI - LSI MegaRAID Storage Manager -- това е ми трябваше.
Вариантите са 2 - рънвам го локално и правя X11-forwarding през SSH или си инсталирам този софтуер някъде и от това някъде се свързвам към локално стартираният сървър. Писана е цялата дивотия на java. Иска си net-snmp
cd /tmp/
wget http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/13.04.03.01_Linux(x64)_MSM.tar.gz
apt-get install alien
tar xfvz 13.04.03.01_Linux(x64)_MSM.tar.gz
cd disk/
alien --scripts *.rpm
dpkg -i *.deb
Логина от remote machine иска Local credentials и за да може да се правят промени по RAID-a трябва да е root или поне sudo.

вторник, октомври 30, 2012

Grub - Grub2 upgrade

Поради факта, че съм явно доста глуповат и не можах да се оправя в конзолата Божията Милост се спусна над мен недостойният във вид на Ubuntu Secure Remix / Boot Repair с чиято помощ успях да си запаля тъпият сървър със строшеният mdadm и недоклатеният cryptoLVM.
Силно препоръчителни тулчета с глуповато-мързеливи (като мен) с проблеми с MBR / BootLoader / OS boot (като мен)

неделя, октомври 28, 2012

Debian Lenny

deb http://archive.debian.org/debian/ lenny contrib main non-free

to use in sources.list if Debian Squeeze is not desired.

сряда, октомври 24, 2012

DoS via SquirrelMail (webmail)

Схемата е Baracuda Mail Firewall - LinuxBox (postfix,courier,SquirrelMail)
Някой някъде са му хакнали РС-то/browser-a където най-вероятно и имал save-ната user/pass за достъп дo webmail-a и през тази дупка почва да изпраща хиляди спам писма към хиляди дестинации със source 127.0.0.1 (в логовете на postfix-a така ги пише...)
Squirrel Logger &  Restrict Senders + добавка към fail2ban да чете от лог-файла на Squirrel Logger-a когато CAPTCHA plugin-a е неудачно да се ползва

четвъртък, октомври 06, 2011

Console

Това което променям на Linux console [debian and derivates](глезотийка ама красотата ще промени света)
/etc/update-motd.d
/etc/update-motd.d$ diff 00-header ../update-motd.d.orig/00-header
< printf "%s\n" < printf "%s\n" "$(hostname -f) $(lsb_release -s -d)" < printf "%s\n" --- > uname -a
> printf "%s\n" "$(lsb_release -s -d)"

Manualy edit ~/.bashrc
timestamp in history
export HISTTIMEFORMAT="%F %T ""
Да се записват в history и дупликатите
#export HISTCONTROL=ignoredups
fancy colors on man-pages
export PAGER="/usr/bin/most -s"
(apt-get install most)

fancy epigram on login
fortune /usr/share/games/fortunes/bg | cowsay -b -f /usr/share/cowsay/cows/tux.cow -n
(apt-get install fortune-mod fortunes-bg cowsay)
Color promt
case "$TERM" in
xterm*|rxvt*)
PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"';;
*) ;;
esac
Aliases:
alias ls='ls -alh --color=auto'
alias grep='grep -i --color=auto' # -i ignore case
alias rm='rm -i' # interactive -> ask before delete can be overrode with -f(orce)
alias mv='mv -i' # interactive -> ask before delete can be overrode with -f(orce)

Junos
edit
set system login message "\n Thinking doesn't hurt anyone! \n"
commit and-quit
[sho ver and haiku]

Mikrotik RouterOS
file edit sys-note.txt
paste от тук нещо по избор примерно

ToDo: да си довърша research-a за cmd replacement и въобще shell change

събота, август 20, 2011

CentOS yum

Някакъв наличен сървър с MySQL който трябва да се мигрира към PostgreSQL

cat /etc/issue.net
CentOS release 5.5 (Final)
Kernel \r on an \m

Драмата:
[root@db ~]# yum list postgres
Traceback (most recent call last):
File "/usr/bin/yum", line 28, in ?
import yummain
ImportError: No module named yummain
[root@db ~]# yum search postgresql
Traceback (most recent call last):
File "/usr/bin/yum", line 28, in ?
import yummain
ImportError: No module named yummain

Проверката:
ls -lh /usr/share/yum-cli/
total 552K
-rw-r--r-- 1 root root 8.4K Feb 1 2011 callback.py
-rw-r--r-- 1 root root 6.1K Feb 1 2011 callback.pyc
-rw-r--r-- 1 root root 6.1K Feb 1 2011 callback.pyo
-rw-r--r-- 1 root root 58K Feb 1 2011 cli.py
-rw-r--r-- 1 root root 43K Feb 1 2011 cli.pyc
-rw-r--r-- 1 root root 43K Feb 1 2011 cli.pyo
-rw-r--r-- 1 root root 53K Feb 1 2011 output.py
-rw-r--r-- 1 root root 45K Feb 1 2011 output.pyc
-rw-r--r-- 1 root root 45K Feb 1 2011 output.pyo
-rw-r--r-- 1 root root 13K Feb 1 2011 shell.py
-rw-r--r-- 1 root root 9.9K Feb 1 2011 shell.pyc
-rw-r--r-- 1 root root 9.9K Feb 1 2011 shell.pyo
-rw-r--r-- 1 root root 4.8K Feb 1 2011 utils.py
-rw-r--r-- 1 root root 4.4K Feb 1 2011 utils.pyc
-rw-r--r-- 1 root root 4.4K Feb 1 2011 utils.pyo
======> липсват
yummain.* & yumcommands.*

Dirty fix:
RPM Advanced Search
wget ftp://ftp.muug.mb.ca/mirror/centos/5.6/os/i386/CentOS/yum-3.2.22-33.el5.centos.noarch.rpm
rpm -Uv yum-3.2.22-33.el5.centos.noarch.rpm
yum update
--------------
Transaction Summary
================================================================================
Install 4 Package(s)
Upgrade 158 Package(s)

Total download size: 211 M
Is this ok [y/N]: y

петък, май 27, 2011

makefs.ext3

This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.


Кое ли ще настъпи първо - 38 месеца или 180 дни.

P.S. аз съм глупавият защото mount не е баш същото като month

неделя, август 08, 2010

Linksys WRT54GL with dd-wrt

Задача: 2 тунела до една централана точка. 1 префикс разнасян от рутинг протокол с различна метрика (за бекъп)
Цена: до 100 лв.
Реализция:
Устройство: Linksys WRT54GL (по препоръка като най-стабилен SOHO router, а и наличен в необходимите количества на склад) - микротик рутербордове по това време на БГ пазара нямаше
Software: dd-wrt tomato-не предлагаше нужната функционалност; open-wrt-по мненията из разни форуми и етц не толкова стабилен, и по-малък брой поддържани устройства; други проекти както и варинта да се инсталира пълноценна Linux дистрибуция отпаднаха по една или друга причина (като цяло крайната реализация трябваше да бъде не произведение на изкуството, а нещо достатъчно стабилно и лесно да подръжка, обслужване и евентуален extend/expand )
Configuration:
1. 30/30/30 Hard reset procedure
2. Избран е този image заради размера, възможността да се mount-не router flash-a with read&write permissions, подръжка на необходимите неща + още някоя и друга глезотийка която може и да не се ползва, но е добре да я има в случай на нужда
3. Заради големият брой устройства които трябва да се конфигурират и разпратят така, че само да се закачат и всичко да тръгне almost zero-day install се реализира така:
а) basic config На един от рутерите - всички необходими неща които са еднакви за всички nodes - firewall, QoS, disable DHCP on LAN, remote access, enable/disable services, NAT, etc и цялото това нещо се запази като backup bin file през WEB интерфейса.
firewall-а e стандартен iptables чиято конфигурация се записва в /tmp/.rc_firewall, но може да се пишат тези правила през WEB-Administration-Commands-Save firewall
b) за спецефичните за всеки node неща (WAN IP, LAN IP,Tunnel IP, BGP neighbor, static routes, etc) се използва startup script (/tmp/.rc_startup или през WEB-Administration-Commands-Save Startup). StratUp script-a е последователност от nvram set name=value
формат:
nvram set lan_ipaddr=10.134.254.253
nvram set lan_netmask=255.255.255.252
nvram set routing_bgp_neighbor_ip=172.16.254.253
nvram commit

За routing demon се използва bird - трябва да се прочете повече дали и как може да се правят повече неща с него в тази му реализация (load balance, prefix filters, BGP attributes change, etc). Има възможност да се инсталират стандартни *.deb и *.ipk packages през ipkg, но quagga не можах да инсталирам (а и нямах време да дебъгвам)
По интересно е нещото което не се поддържа директно от конкретният image - IPinIP/GRE tunnels. Беше избран IPinIP тунелинг заради по-малкият овърхед, през него не минава мултикаст (сиреч no OSPF,no RIP), но пък GRE тунелите използват protocol 47 (също като pptp) който се филтрира от някои доставчици.Повече инфо тук и тук Като алтернатива могат да се използват подържаните от image pptp, openvpn и EoIP tunnels, но най-лесно и чисто като че ли е варианта с IPinIP tunnel
Наличието на iproute2 пакета улесни и опрости много нещата тъй че в моят случай сетъпа изглежда така:
#tunnel specific
insmod ipip.o
# local == Tunnel Source
ip tu ad tun0 mode ipip local $Tunnel_source_IP remote $Tunnel_dest_IP ttl 250 dev vlan1
# 172.17.254.254 == Tunnel IP spoke side; peer 172.17.254.253/32 == tunnel IP remote side
ip ad ad dev tun0 172.17.254.254 peer 172.17.254.253/32
ip li se dev tun0 up

Това присъства в startup script-a и се изпълнява при всеки (re)start на рутера.
Linksys WRT54 има един WAN порт + switch module в който членуват останалите 4 порта. За да има реална бекъп връзка до Spoke през вторият тунел най-чистият вариант беше да се "осигури" втори WAN порт. В случая е реализирано така:
# vadim port 1 ot switch-modula i go prawim WAN
# nvram show | grep vlan.ports
#0 = port 4
#1 = port 3
#2 = port 2
#3 = port 1
#4 = WAN
#5 = CPU internal
#5* = CPU internal default

nvram set vlan0ports="0 1 2 5*"
nvram set vlan1ports="3 4 5"
nvram commit

Правилната статия по темата е тук
Най-сериозният проблем (който в момента не ми е толкова критичен, но си е сериозен) е добавянето на user с ограничени права...
Номерът с echo 'admin:$1$bLL3EQ3А$3SNexDssIzKZx9KmUP1.O.:0:0:Admin User,,,:/tmp/root:/bin/sh' >> /etc/passwd работи като ми добавя User: admin с root права;
Но пък:
mkdir /tmp/user
echo 'user:$1$unix crypted pass here.:1234:1234:LimitedUser,,,:/tmp/user:/bin/sh' >> /etc/passwd
echo 'user:x:1234' >> /etc/group

ми дава един мноооого limited user който дори и ping команда не може да изпълни въпреки, че върху /bin/ping са UID bits
Anyway... за целите на first level support-a по-скоро ще се мисли за някакъв вариант в който се изпълнява някой script който да се логва на устройството и взима Output-a на няколкото команди необходими за това да се отвори или затвори тикет или ще получава същите работи през snmp

ToDo: всичкото това със сигурност може да се постигне с един startup script т.е. да се избегне стъпката с изливането на basic_config.bin, но искаше повече копане и време (което нямах). Някой ден ще трябва да го направя (но защо да отлагам днешната работа за утре, като мога да я отложа за вдругиден)

P.S. 3 седмици след старта иснталациите изглежда като да работят нещата добре, въпреки, че имаме 2 (засега) рутера които след някакви токови удари и/или други незнайни причини са си загубили напълно конфига и на практика са brick-нати. Да се надяваме, че са "случайни случки", а не някакъв посевместен бъг в имиджа който изливаме

сряда, януари 13, 2010

NS4300 + VMware ESXi

Е... не работи! Генералната идея беше на този low-cost SOHO NAS да се използва възможността за NFS sharing като export-не конкретна доректория и тя да се Mount-не на ESXi като допълнителен datastore.Е... не работи!
The nfs server does not support mount version 3 over tcp.

Оказа се, че ESXi NFS client-а работи само по ТСР, докато NS4300 NFS server-a само на UDP.
От SmartStore ме почерпиха културно: SmartStor products are not qualified for VMWare ESX(i) environment. They won't work at all. At the moment there is no planning to support this.
Реших да се правя на интересен: NS4300 export over UDP -> Linux NFS client + NFS server re-export over TCP before mounted NFS (UDP) share -> ESXi -- строшена схема ама като в онзи виц: така и така не кълве, що не вземеш да се изкъпеш поне?
apt-get install nfs-kernel-server nfs-common portmap
mount.nfs 192.168.0.100:/VOLUME1/NFS /mnt/nfs/
cat /etc/exports | grep nfs
/mnt/nfs 192.168.0.253(rw,sync,insecure)

Е... не работи! След малко четене се оказа, че неможе да се re-експортват преди импортнати NFS shares. Simlink-a м/у NFS mount и NFS export folder-a пак не върши работа - ESXi монтира каквото съм му експортнал, но не отваря simbolyc link-a
Next try по идея на K0b3 - NS4300 smb share -> Linux smb client + NFS server re-export over TCP before mounted SMB share -> ESXi

apt-get install smbfs smbclient
modprobe smbfs
echo 'smbfs' >> /etc/modules
mount -t cifs //192.168.0.100/NFS /mnt/nfs -o username=DOMAIN/eol,password=*********
/mnt/nfs 192.168.0.253(rw,sync,insecure)

Е... не работи!
Определено е ден за гаври:

apt-get install fuse-utils sshfs
modprobe fuse
sshfs root@192.168.0.253:/vmfs/volumes/datastore1/ /home/eol/ssh-mount/

Не че ми трябва или ще ми свърши някаква работа, ама поне частично щях да си оправдая износването на клавиатурата ако проработеше.Е... не работи!
Изчерпах се откъм гениални идеи и се чувствам празен като главата на хибрид м/у чалга певица и футболист от А група.
Извод: два дни блъскане спестява два реда четене!

П.С. и на всичкото отгоре:
lguest.c:1027: warning: implicit declaration of function ‘eventfd’
make[1]: *** [lguest] Error 1
make[1]: Leaving directory `/usr/src/linux-2.6.32.3/Documentation/lguest'
make: *** [debian/stamp/build/kernel] Error 2

Song of the Post: тази