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

Tuning linuxa – router 1GigE

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

Standardowo skonfigurowany linux, pracujący jako router w dużej sieci zaczyna się męczyć przy 250 – 300 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 ). Taka maszyna w godzinach szczytu wykazywała load 1-2.5, ponadto poważnie wzrastała temperatura procesora.

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

Więc co zrobić?
Proszę wykonać:
echo “net.ipv4.tcp_no_metrics_save = 1 ” > /etc/sysctl.conf
echo “net.ipv4.tcp_moderate_rcvbuf = 1 ” >> /etc/sysctl.conf
echo “net.core.netdev_max_backlog = 2500 ” >> /etc/sysctl.conf
echo “net.ipv4.core.rmem_default = 262144 ” >> /etc/sysctl.conf
echo “net.ipv4.core.wmem_default = 262144 ” >> /etc/sysctl.conf
echo “net.ipv4.tcp_rmem = 4096 87380 8388608 ” >> /etc/sysctl.conf
echo “net.ipv4.tcp_wmem = 4096 87380 8388608 ” >> /etc/sysctl.conf
echo “net.ipv4.tcp_mem = 8388608 8388608 8388608 ” >> /etc/sysctl.conf
echo “net.ipv4.core.rmem_max = 8388608 ” >> /etc/sysctl.conf
echo “net.ipv4.core.wmem_max = 8388608 ” >> /etc/sysctl.conf

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

powodzonka ;-)

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 (0) »

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 ;-)

ORACLE AS

Oracle Komentarze (0) »

OPMNCTL (Oracle Process Management and Notification Server)
$ORACLE_AS_HOME/opmn/bin/opmnctl help
$ORACLE_AS_HOME/opmn/bin/opmnctl status help
$ORACLE_AS_HOME/opmn/bin/opmnctl status -l
$ORACLE_AS_HOME/opmn/bin/opmnctl stopall
$ORACLE_AS_HOME/opmn/bin/opmnctl startall

check AS version:
cat $ORACLE_AS_HOME/config/ias.properties | grep Version
$ORACLE_AS_HOME/OPatch/opatch lsinventory -detail

ORACLE AWR

Oracle Komentarze (0) »
Oracle Enterprise Manager => Advisor Central


AWR (Automatic Workload Repository)
statystyki przechowywane w tabelach WRH$ w przestrzeni SYSAUX
warunki:
STATISTICL_LEVEL= TYPICAL | ALL
widoki:
memory:
DBA_HIST_SGA
DBA_HIST_PGASTAT
DBA_HIST_PGA_TARGET_DEVICE
DBA_HIST_SGASTAT
DBA_HIST_BUFFER_POOL_STAT
DBA_HIST_DB_CACHE_ADVICE
DBA_HIST_SHARED_POOL_ADVICE
sql:
DBA_HIST_SQL_SUMMARY
DBA_HIST_SQLSTAT
DBA_HIST_SQL_PLAN

other:
DBA_HIST_SYSSTAT
DBA_HIST_FILESTATXS

DBA_HIST_WR_CONTROL
DBA_HIST_SNAPSHOT
DBA_HIST_DATABASE_INSTANCE
DBA_HIST_ACTIVE_SESS_HISTORY
sprawdzenie częstotliwości:
SELECT * FROM DBA_HIST_WR_CONTROL
ustawienie częstotliwości:
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS ([retention - min],[interwal - min]);
manualny snapshot:
DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
drop snapshot:
DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE([low_id],[end_id]);
raporty AWR:
$oracle_home/rdbms/admin/awrrpt.sql
$oracle_home/rdbms/admin/awrrpti.sql – z wyborem instancji
raporty ADDM (Automatic Database Diagnostic Monitor:
analiza danych z AWR pod względem wąskich gardeł
$oracle_home/rdbms/admin/addmrpt.sql

ORACLE DBLINKS

Oracle Komentarze (0) »

SELECT * FROM dba_db_links;
SELECT * FROM user_db_links;
DROP DATABASE LINK [link_name];
CREATE DATABASE LINK [link_name] CONNECT TO [user] IDENTIFIED BY [password] USING ‘[tns_alias]‘;
SELECT count(*) FROM user_tables@[link_name];

ORACLE UNDO

Oracle Komentarze (0) »

shrink undo tablespace:
* CREATE UNDO TABLESPACE [name] DATAFILE ‘[path]‘ size [nr]G ;
* ALTER SYSTEM SET UNDO_TABLESPACE = [name];
* DROP TABLESPACE [old_name] including contents and datafiles;

check rollback status:
SELECT used_urec FROM v$transaction; –records
SELECT used_ublk FROM v$transaction; –blocks
SELECT time_remaning FROM v$session_longops WHERE sid = [sid];

ORACLE CREATE

Oracle Komentarze (0) »

create database manualy:


* create PFILE
main changes:
- db_name
- control_files
- audit_file_dest
- background_dump_dest
- user_dump_dest
- core_dump_dest

example init[dbname].ora

*.__db_cache_size=939524096
*.__java_pool_size=16777216
*.__large_pool_size=16777216
*.__shared_pool_size=587202560
*.__streams_pool_size=33554432
*.control_files=’[path]/control1.ora’,’[path]/control2.ora’,’[path]/control3.ora’
*.audit_file_dest=’[path]/admin/adump’
*.core_dump_dest=’[path]/admin/cdump’
*.user_dump_dest=’[path]/admin/udump’
*.background_dump_dest=’[path]/admin/bdump’
*.compatible=’10.2.0.1′
*.db_block_size=8192
*.db_domain=”
*.db_file_multiblock_read_count=16
*.db_files=1500
*.db_name=’[dbname]‘
*.global_names=FALSE
*.job_queue_processes=10
*.log_archive_format=’[dbname]%t%s%r.arc’
*.log_checkpoint_interval=10000
*.max_dump_file_size=’10240′
*.open_cursors=1000
*.optimizer_mode=’CHOOSE’
*.pga_aggregate_target=629145600
*.processes=400
*.query_rewrite_enabled=’true’
*.remote_login_passwordfile=’EXCLUSIVE’
*.service_names=’[dbname]‘
*.session_max_open_files=40
*.sga_target=1610612736
*.shared_pool_reserved_size=0
*.undo_management=’AUTO’
*.undo_retention=100000
*.undo_tablespace=’UNDO_TS’

* create password file for new database:
orapwd file=orapw[dbname] password=[pass]

* add new database to listener.ora and tnsnames.ora,

* create dirs for new database file,

* create dirs for trace logs as admin with subdirectories: adump, udump, cdump, bdump,

* run script:

spool crt_db.spool
startup nomount
create database [dbname]
user sys identified by [pass]
user system identified by [pass]
maxinstances 5
maxloghistory 5
maxlogfiles 10
maxlogmembers 5
maxdatafiles 1000
character set EE8ISO8859P2
national character set AL16UTF16
datafile ‘[path]/system01.dbf’ size 512M autoextend on next 10M maxsize unlimited
sysaux datafile ‘[path]/sysaux01.dbf’ SIZE 1024M
logfile group 1 (’[path]/redo01.log’) size 100m,
group 2 (’[path]/redo02.log’) size 100m,
group 3 (’[path]/redo03.log’) size 100m
default temporary tablespace TEMP tempfile ‘[path]/temp01.dbf’ size 2048M
undo tablespace UNDO_TS datafile ‘[path]/undotbs01.dbf’ size 3000M autoextend off,
‘[path]/undotbs02.dbf’ size 512M autoextend on next 10M maxsize unlimited;
spool off

* run script:

spool catalog.spool
@$ORACLE_HOME/rdbms/admin/catalog.sql
spool off
spool catproc.spool
@$ORACLE_HOME/rdbms/admin/catproc.sql
spool off
spool catrep.spool
@$ORACLE_HOME/rdbms/admin/catrep.sql
spool off
spool initjvm.spool
@$ORACLE_HOME/javavm/install/initjvm.sql
spool off
spool dbmsrand.spool
@$ORACLE_HOME/rdbms/admin/dbmsrand.sql
spool off
spool utlrp.spool
@$ORACLE_HOME/rdbms/admin/utlrp.sql
spool off
WordPress - Hosting: Twój hosting - Skórka: N.Design Studio - Spolszczenie: Adam Klimowski.
RSS wpisów RSS komentarzy Zaloguj