Dodatkowa przestrzeń wymiany (SWAP) w Linux

Ściąga Admina Komentarze (0) »

Jeśli czytasz ten wpis to pewnie znaczy że skończył się swap na maszynie.
Najprościej podpiąć kolejny dysk i na nim zrobić swap, ale co jeśli kolejny dysk odpada, wolnej przestrzeni też nie ma?
Pozostaje utworzyć na jednej z partycji plik, który będzie pracował jako swap.

Zakładam że masz sporo wolnego miejsca na /home.

Tworzymy pusty plik o pojemności kolejnego swap:
dd if=/dev/zero of=/home/swap bs=1M count=10240

Formatujemy plik:
mkswap /home/swap

Włączamy kolejny swap:
swapon /home/swap

Sprawdzamy czy faktycznie system obsługuje dwa pliki wymiany:
swapon -s

Pamiętaj o fstab!

Tuning linuxa – router 1GigE – ograniczenie przepustowości

Iptables, Ściąga Admina Komentarze (2) »

Standardowo skonfigurowany Linux, pracujący jako router w dużej sieci zaczyna się męczyć przy 250 Mbit/s. Okazało się tak na maszynie Debian / 2.80GHz / 1GB Ram / eth – 1GigE / ~800 klientów. Do tego oczywiście firewall oraz htb ( filtry mieszające ) no i BGP z dwoma operatorami. Taka maszyna w godzinach szczytu wykazywała load 1-2.5, ponadto poważnie wzrastała temperatura procesora.

Znasz ten problem?
Nasłuchałeś się o ograniczeniach transferu Linuxa?
Proponuje czytać dalej!

Jak zawsze rozwiązanie okazało się banalne, szybki tuning sysctl i nasza maszyna przy 600 Mbit/s pracuje z load 0.07 ;-)
Oczywiście komfort pracy w sieci wzrasta naprawdę zauważalnie.

Więc co zrobić?

net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_moderate_rcvbuf = 1
net.core.netdev_max_backlog = 2500
net.ipv4.core.rmem_default = 262144
net.ipv4.core.wmem_default = 262144

net.ipv4.tcp_rmem = 4096 87380 8388608

net.ipv4.tcp_wmem = 4096 87380 8388608
net.ipv4.tcp_mem = 8388608 8388608 8388608
net.ipv4.core.rmem_max = 8388608
net.ipv4.core.wmem_max = 8388608

Warto także stuningować obsługę arp:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter

Twój Linux zatrzymał się na 250 Mbit/s to zobacz to:

W przypadku Linuxa z Quagga ( BGP ), opis tutaj to absolutna podstawa konfiguracji.
Pamiętaj też o rozsądnym zastosowaniu smp_affinity oraz wyłączeniu ( jeśli to możliwe ) modułów NAT.

powodzonka ;-)

Masz problem z samodzielnym uruchomieniem routera 1GigE opartego o Linux?
Zapraszamy do współpracy:
Usługa Instalacji Routera BGP opartego o LINUX

Kompilacja

Ściąga Admina Komentarze (0) »

.h #pliki nagłówkowe

.c #pliki źródłowe

lib*.a #pliki bibliotek statycznych, kompilator umieszcza pliki bezpośrednio w pliku wykonywalnym za pomocą archiwizatora ar

.so #pliki bibliotek dzielonych, definicje dostępu znajdują się w /etc/ld.so.conf, do załadowania możemy użyć zmiennej $LD_LIBRARY_PATH, kompilator rejestruje jedynie informacje o bibliotece wewnątrz pliku wykonywalnego, która jest następnie dołączana przez linker dynamiczny podczas wykonania programu bezpośrednio przed wykonaniem funkcji main(), jeśli program nei może znaleźć tzw “shared object”, natychmiast zatrzymuje wykonanie z błędem,
wszystkie programy używają jednej dzielonej biblioteki przechowywanej w pamięci

configure #skrypt tworzący plik Makefile i zależności na podstawie Makefile.in

make clean #usuwa pliki obiektów i bibliotek skompilowanych przez make

make distclean #j.w. wraz ze skryptem stworzonym przez configure

make install #kopiuje skompilowane pliki do odpowiednich ścieżek

make uninstall #usuwa pliki skopiowane przez make install

ldd [prog] #pokazuje zależności shared libraries niezbędnych do uruchomienia [prog]

nm [file].o #pokazuje listę symboli do których odnosi się plik obiektu lub plik wykonywalny

nm -guA *.o | grep [unresolved_symbol]

nm -gA /usr/lib/* | grep [unresolved_symbol]

strace [prog] #pokazuje co dzieje się z programem

strace -p [pid] #dopina program strace pod konkretny pid

strace -p [pid] -c #zlicza tzw. wait-y programu

Polityka haseł

Ściąga Admina Komentarze (0) »

W przypadku logowania się do naszego systemu wielu użytkowników, jesteśmy zobligowani niejako do wymuszenia pewnej polityki odnośnie haseł do systemu jak np.:
zmiana co 30 dni, znaki specjalne, długość hasła etc., najprostszym sposobem aby tego dokonać jest skorzystanie z modułu pam_cracklib.so który znajdziemy w /lib/security/, konfigurację natomiast będziemy wpisywac do pliku /etc/pam.d/system-auth

I tak dla ustawienia:
1) poziomu skomplikowania hasła
wpisujemy do system-auth:
password requisite pam_cracklib.so try_first_pass retry=3 minlen=8 dcredit=-2 ucredit=-1 lcredit=-1 ocredit=-1

co oznacza, że w przypadku wpisania błędnego hasła podczas logowania dostaniemy szansę na wpisanie poprawnego kolejne trzy razy – retry=3,
nowe hasło ma mieć minimum długość ośmiu znaków – minlen=8, mają się w nim znaleźć co najmniej dwie cyfry – dcredit=-2,
co najmniej jedna duża litera – ucredit=-1,
co najmniej jedna mała litera – lcredit=-1,
co najmniej jeden znak specjalny – ocredit=-1

2) dla ustawienia czasu ważności hasła
modyfikujemy wpisy w pliku /etc/shadow za pomocą programu chage:

chage -l [username] #sprawdzenie bieżących ustawień uzytkownika
chage -E “YYYY-MM-DD” [username] #ustawienie daty wygaśnięcia konta, wartość -1 równoznaczne z nigdy
chage -d “YYYY-MM-DD” [username] #ustawienie ostatniej zmiany hasła, dla wartości -1 patrz wyżej
chage -M [nr] [username] #ustawienie liczby dni [nr] od ostatniej zmiany hasła przez którą hasło będzie ważne
chage -W [nr] [username] #ustawienie liczby dni [nr] przez którą będzie wyświetlane ostrzeżenie o zmianie hasła i tak:

dla użytkowników którzy są w systemie ustawiamy:
chage -M 10 stefan
chage -d “2010-05-06″ stefan
chage -W 3 stefan
oznacza to że userowi stefan wygaśnie hasło 2010-05-16, dle monity o koniecznej zmianj\nie będzie dostawał podczas logowania już od 2010-05-03

dla użytkowników którzy dopiero co zostaną utworzeni defaultowe ustawienia wpisujemy w pliku /etc/login.defs

3) dla ustawienia powtarzalności hasła wpisuemy w /etc/pam.d/system-auth:
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

gdzie parametr remember=2 oznacza, że system będzie pamiętał do dwóch haseł wstecz, których nie będziemy mogli użyć, informacja o starych hasłach zostaje wpisana do pliku /etc/security/opasswd

Git

Ściąga Admina Komentarze (0) »

Postanowiłem przedstawić kilka użytecznych komend systemu kontroli wersji GIT

ustawienia:
git config –list
git config –global user.name “dupa jas”
git config –global user.email fdsf@das.pl
git config –global core.editor vim
git config –global merge.tool diff

git help command
man git-command
git status

git init #create git structure in .git directory

podstawowe komendy:
git add . #dodaje wszystkie pliki bieżącego katalogu do śledzenia
git rm file #usuwanie pliku
git mv file1 file2 #przeniesienie
git commit -a m “comment” #commit zmian z pominięciem warstwy stage
git commit -v #pokazuje zmiany do commit-a
git commit –amend

branchowanie:
git branch -a #lista branchy, bieżący oznaczony gwiazdką
git branch [branch_name] #tworzy nowy branch
git checkout [branch_name] #przechodzi do branch-a
git checkout -b [branch_name] #tworzy i przechodzi do branch-a
git checkout — [file]
git branch [branch_name] [hash|tag] #nowy branch utworzony z hash-a lub tag-a
git branch -d [branch_name] #usuwa branch
git branch –merged
git branch –no-merged

logi:
git log
git log -1 #pokazuje ostatni commit
git log -p -2 #pokazuje różnice między dwoma ostatnimi commit-ami
git log –pretty=oneline|short|medium|full|fuller|email
git log –pretty=format:”%h – %an, %ar : %s”
git log –pretty=format:”%h %s” –graph
git log –merged #tylko merged commit

różnice:
git diff #różnice między warstwą tzw. “working directory” i “staged”
git diff –staged #różnice między warstwą “stage” i ostatnim commit-em
git diff –cached

tagowanie:
git tag #pokazuje tag-i
git tag -a v1 -m ‘comment’ #dodanie taga
git show v1
git tag -a v1.1 [hash] #tagowanie starych commit-ów

pozostałe:
git merge [branch_name] #do bieżącego branch-a merguje zmiany z branch-a [branch_name]
git ls-files –stage #pokazuje pliki z warstwy “stage”
git hash-object [file] #tworzy SHA1 hash dla pliku [file]
git mergetool #wybór nażędzia do mergowania
.gitignore #lista ignorowanych plików

praca zdalna:
inicjalizacja projektu na serwerze bez “working directory”:
mkdir project-01.git
cd project-01.git
git –bare init

inicjalizacja projektu w lokalnym katalogu:
git init
git add .
git commit -m “initialize project”

wysłanie na serwer zdalny:
git remote add origin [user]@[server]:/[path on server to git project dir]
git push origin master
git remote -v #sprawdzenie zdalnego serwera
git remote add [alias] user@server:path/project.git #dodanie zdalnego repozytorium
git remote show origin
git remote rename file1 file2git remote rm file

git clone [url] #klonowanie repozytorium, nie checkout, z pełną historią
git clone git://url [dir_name] #klonowanie z utworzeniem lokalnego katalog dir_name
git clone http(s)://git clone user@server:/path

git fetch origin #pobranie danych z serwera z aliasu “origin”, od ostatniego pobrania
git pull origin #j.w. wraz z mergowaniem

git push origin [branch_name] #wysłanie branch-a branch_name do zdalnego repozytorium
git push origin [branch_name] [remote_branch_name] #j.w. ze zmianą nazwy
git push origin :[branchname] #usunięcie zdalnego branch-a

schemat warstw:
working dir——-staging area——–git dir

układ katalogów:
.git/objects #all content
.git/refs #branches
.git/HEAD #currently checked out
.git/index #staging area (index)

Hak na bruteforce – SSH blacklist

Iptables, Ściąga Admina Komentarze (4) »

Bruteforce na SSH to strasznie irytująca plaga, szanse na udane włamanie są niewielkie gdy admin dba o serwer.
Jednakże wiecznie zaśmiecone logi i sam fakt … no krew zalewa.
Opisałem już wcześniej metodę opartą o haslimit, działa dobrze ale… dziś dodamy jeszcze jedno rozwiązanie.

Powstał fajny projekt, sshbl.org – (the SSH blacklist), co 15 minut tworzona jest czarna lista adresów IP z których przeprowadzane są ataki.
W prosty sposób wykorzystamy tą listę.

mkdir /etc/ssh-brute
cd /etc/ssh-brute
touch ssh.brute
chmod +x ssh.brute

w plik ssh.brute umieszczamy zawartość:

————————————————————————————————–
#!/bin/bash

PATH=”/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin”

adresy=`cat /tmp/ipki | grep [0-9] | grep -v “#”`
for x in $adresy
do
iptables -D INPUT -s $x -j DROP
done

wget http://www.sshbl.org/lists/base.txt -O /tmp/ipki

adresy=`cat /tmp/ipki | grep [0-9] | grep -v “#”`
for x in $adresy
do
iptables -I INPUT -s $x -j DROP
done
————————————————————————————————–

Teraz do crona dodamy wywołanie skryptu:
*/15 * * * * root /etc/ssh-brute/ssh.brute &>/dev/null

Powodzenia ;-)

Update:

Kilka maszyn szalało przy dodaniu kolejnych paru tysięcy wpisów w iptables. Dlatego też pomyślałem o innej metodzie blokowania listy hostów z sshbl.org.
Padło na routing.

Gotowy skrypt:
######################################

#!/bin/bash

PATH=”/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin”

rm /tmp/ipki
wget -q http://www.sshbl.org/lists/base.txt -O /tmp/ipki

adresy=`route -n | grep \!H | awk ‘{print $1}’`
for x in $adresy
do
route del -host $x reject
done

adresy=`cat /tmp/ipki | grep [0-9] | grep -v “#”`
for x in $adresy
do
route add -host $x reject
done

###########################################

Działa wyśmienicie ;-)

LINUX PACKAGES

Ściąga Admina Komentarze (0) »
file list installing by package rpm -ql [package] dpkg -L [package]
show package which is owner of file rpm -qf [file] yum provides [file] dpkg -S [file]
package info rpm -qi [package] yum info [package] dpkg -s [package]
package version rpm -q [package] dpkg-query -W [package]
packages list rpm -qa yum list installed dpkg –list
list available packages (about 15 tys.) yum list
dependencies yum deplist [pakiet]
file dependencies rpm -qR [package]
check packages actualizations yum check-update
yum list updates
using cache yum -C
content check rpm -qlp [package].rpm
get rpm package yumdownloader [package]
get source package yumdownloader –source [package]
unpack rpm2cpio [package].rpm | cpio -idv
download only yum –downloadonly update
inside package rpm -qpl [package].rpm

LINUX LVM

Ściąga Admina Komentarze (0) »

1. create LVM partition:

fdisk /dev/[disk]

change partition type from LINUX to LVM

2. initialization LVM partition:

pvcreate /dev/[disk_partiton1] /dev/[disk_partition2]

check commands:

pvs
pvdisplay

3. create LVM group:

vgcreate [group_name] /dev/[disk_partition1] /dev/[disk_partition2]

check commands:

vgs
vgdisplay

4. create logical volumes which is attached to group:

lvcreate -L[size]M -n [vol_name] [group_name]

check commands:

lvs
lvdisplay

5. format volumes:

mkfs.ext3 [LV_name_from_lvdisplay]


EXTEND
change size volume:
lvextend -L +[size]M [LV_name_from_lvdisplay]

change size partition:

resize2fs [LV_name_from_lvdisplay]

REDUCE

fsck -f [LV_name_from_lvdisplay]

change size partition:

resize2fs [LV_name_from_lvdisplay] [size]G

change size volume:

lvreduce -L -[size]G [LV_name_from_lvdisplay]

install lvm on ubuntu:
use ubuntu live:
* format LVM partition using fdisk without /boot
* install lvm2
* create pvs,vgs,lvs
use ubuntu install:
* before partition install lvm2
* activate previous lvm partitions using: vgchange -a y
* install system on previous partitions
after restart, system crashed because default ubuntu do not install lvm
use ubuntu live:
* install lvm2
* activate lvm partitions: vgchange -a y
* mount /dev/vg_system/lv_root /mnt/dupa
* mount /sda4/boot /mnt/dupa/boot
* mount –bind /dev/ /mnt/dupa/dev
* chroot /mnt/dupa
* mount -t sysfs sysfs /sys
* mount -t proc proc /proc
* install lvm2 in chroot

LINUX MUTT

Ściąga Admina Komentarze (0) »

mutt -f /mbox #open mail box

general mode:
@ #sender address
o #sort
enter #show email
d #mark to delete
D #as above with pattern
u #calcel delete
U #as above with pattern
f #forward
r #reply
m #send
K #previous mail
J #next mail
= #first mail
* #last mail
n #mail nr n

flags:
D #deleted
N #new not read yet
O #old not read yet
* #marked

letter mode:
i #exit
space #next page
- #previous page
v #attach

LINUX GNOME

Ściąga Admina Komentarze (0) »

SHORTCUTS:
ctrl+alt+tab – change window on all desktops
ctrl+alt+d – minimalize all windows on desktop
ctrl+alt+shift+right_arrow – move present window to next desktop
ctrl+alt+s – roll present window
shift+alt+up_arrow – show all windows on desktop

WordPress - Hosting: Twój hosting - Skórka: N.Design Studio - Spolszczenie: Adam Klimowski.
RSS wpisów RSS komentarzy Zaloguj