Dziś ponownie zastanawiałem się jak to zamieniałem w pliku tabulacje na spacje.
zadanie wykonałem i w celu utrwalenia informacji dodaje to tutaj, przyda się dla potomnych
expand -t 2 plik.tabulacje > plik.spacje
Dziś ponownie zastanawiałem się jak to zamieniałem w pliku tabulacje na spacje.
zadanie wykonałem i w celu utrwalenia informacji dodaje to tutaj, przyda się dla potomnych
expand -t 2 plik.tabulacje > plik.spacje
czasem pytanie, który proces ile pamięci zabiera staje się kluczowe.
Jest top jest atop… ale nie do końca tego szukałem, szukałem po google i .. nic ciekawego w ręce nie wpadło.
Dlatego napisałem na szybko drobny skrypt:
#!/bin/bash
rm /tmp/mem
for data in `ps -A | awk ‘{print $1,$4}’ | grep [0-9]`
do
let n=n+1
case $n in
1)
pid=$data
;;
2)
nazwa=$data
echo $nazwa: | tr \\n ” ” >> /tmp/mem
pmap $pid | grep total | awk ‘{print $2}’ >> /tmp/mem
let n=0
;;
esac
done
cat /tmp/mem | sort -g -k 2
Czasem chcemy ukryć nasze wypociny napisane w bash’u.
Najprościej skompilować skrypt i udostępniać jako binarkę
do dzieła:
wget http://www.datsi.fi.upm.es/~frosal/sources/shc-3.8.7.tgz
tar -xzvf shc-3.8.7.tgz
cd shc-3.8.7
make
make install
a teraz:
shc -f skrypt.sh
w wyniku otrzymamy plik
skrypt.sh.x
powodzonka
Co mam na myśli przedstawię na podstawie domeny e-zabrze.pl.
Wiadomo, w DNS mamy ileś tam wpisów i dla nich vhosty w Apache, wszystko działa.
Ale… chcemy aby dla nieistniejących subdomen serwer zwracał adres IP i kierował na stronę www, która będzie informować że ta właśnie domena jest na sprzedaż. Skoro wolna…to warto sprzedać
Więc na warsztat bierzemy DNS. W strefie e-zabrze.pl dodajemy wpis:
* CNAME e-zabrze.pl.
Od teraz wszelkie zapytania o nieistniejące nazwy zostaną skierowane do hosta e-zabrze.pl
Kolejny krok to Apacze.
Instalujemy moduł:
libapache2-mod-vhost-hash-alias
apt-get install libapache2-mod-vhost-hash-alias
Dodajemy vhosta:
<VirtualHost *:80>
ServerAdmin admin@antynet.pl
VirtualDocumentRoot /home/sites/dynamic/mass
CustomLog /var/log/apache2/dynamic.e-zabrze.pl.log combined
ErrorLog syslog:facility
</VirtualHost>
Restart apache i zapytania będą kierowane do /home/sites/dynamic/mass.
Tam tworzymy index.php o zawartości zbliżonej do:
<?php
$host = $_SERVER['HTTP_HOST'];
?>
Sprzedam domenę <? echo $host; ?>
No i po całej zabawie.
Proste a ile radości
Postanowiłem opisać tutaj konfigurację aplikacji AuditConsole na którą będą wysyłane logi z mod_security i prezentowane na www (szczegóły na http://jwall.org/about)
Będę pisał w równoważnikach zdań bo tak jest krótko i treściwie,
a orginalna wersja jest pisana pod emacs-em w trybie org-mode więc sorrki za ewentualny rozjazd
inspiracja – amon
Date: 2011-06-10 15:26:56 CEST
HTML generated by org-mode 6.33x in emacs 23
Teraz z grubej rury blokada
iptables -N apache_dos
iptables -A INPUT -p tcp –dport 80 –syn -j apache_dos
iptables -A apache_dos -m hashlimit –hashlimit 10/sec –hashlimit-burst 30 \
–hashlimit-mode srcip –hashlimit-name apache_DDOS \
–hashlimit-htable-expire 30000 \
–hashlimit-htable-max 65535 -j ACCEPT
iptables -A apache_dos -j DROP
Metoda chyba najpewniejsza i najprostsza, można zobaczyć efekty wykonując polecenie:
iptables -vL apache_dos
inspiracja – sow
Skoro dziś tak o DoS i DDoS to nie może zabraknąć mod_mod_evasive dla apache2.
apt-get install libapache2-mod-evasive
mcedit /etc/apache2/mods-available/mod-evasive.load
i wpisujemy:
#################################
LoadModule evasive20_module /usr/lib/apache2/modules/mod_evasive20.so
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 200
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 10
DOSLogDir “/var/log/evasive”
DOSEmailNotify amon@antynet.pl
</IfModule>
######################################
Pamiętamy utworzeniu i nadaniu odpowiednich uprawnień dla:
/var/log/evasive
Dla pewności włączamy moduł:
a2enmod mod-evasive
restart apache2:
/etc/init.d/apache2 restart
inspiracja – sow
Jest fajny moduł do apacha2, który w pewnym stopniu blokuje ataki DoS oraz DDoS.
Oczywiście wszystko zależy od możliwości atakującego i naszych zasobów sieciowych oraz sprzętowych.
Ale do rzeczy.
Mowa o mod_qos
aktualna wersja na 10.06.2011:
cd /usr/src
wget http://netcologne.dl.sourceforge.net/project/mod-qos/mod_qos-9.57.tar.gz
tar zxvf mod_qos-9.57.tar.gz
cd mod_qos-9.57/apache2
apxs2 -i -c mod_qos.c
cd / etc/apache2/mods-available
mcedit qos.load
w zawartości:
##########################
LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so## QoS module Settings<IfModule mod_qos.c># zezwalamy na polaczenia z 1000 różnych IP.QS_ClientEntries 1000# Kazde IP moze wykonac 40 polaczenQS_SrvMaxConnPerIP 40# Maksymalna ilosc rownoczesnych polaczen TCPMaxClients 256# Wylacz keep-alive gdy aktywnych jest polaczenQS_SrvMaxConnClose 180# zapytanie / czas odpowiedzi ( ubij polaczenia niczego niezadajace, DoS)QS_SrvMinDataRate 150 1200CustomLog logs/qsaudit_log ”%{qos-path}n%{qos-query}n”</IfModule>LoadModule qos_module /usr/lib/apache2/modules/mod_qos.so
## QoS module Settings
<IfModule mod_qos.c>
# zezwalamy na polaczenia z 1000 różnych IP.
QS_ClientEntries 1000
# Kazde IP moze wykonac 40 polaczen
QS_SrvMaxConnPerIP 40
# Maksymalna ilosc rownoczesnych polaczen TCP
MaxClients 256
# Wylacz keep-alive gdy aktywnych jest polaczen
QS_SrvMaxConnClose 180
# zapytanie / czas odpowiedzi ( ubij polaczenia niczego niezadajace, DoS)
QS_SrvMinDataRate 150 1200
</IfModule>
#####################################
Teraz aktywujemy moduł:
a2enmod qos
no i restartujemy apache2:
/etc/init.d/apache2 restart
Oczywiście gdy DDoS będzie pochodził z większej ilości IP jak określonych w QS_ClientEntries to się powiedzie.
Dlatego ważne jest ustalić dokładnie parametry pracy modułu mając na uwadze wydolność naszej sieci oraz moc obliczeniową serwera.
inspiracja – sow
Automatyczne skanery bezpieczeństwa skanują na ślepo,
odpalają bazę sygnatur i wykonują skanowanie.
Tego typu operacja z oczywistych względów wywoła całą masę 404 w logach apache2.
Więc dlaczego nie wykorzystać tego typu zależności?
SecRule RESPONSE_STATUS “@streq 404″ \
“phase:5,t:none,nolog,pass,setvar:ip.not_found_counter=+1,expirevar:ip.not_found_counter=60″
SecRule IP:NOT_FOUND_COUNTER “@gt 5″ “phase:1,t:none,log,block,msg:’Zbyt wiele 404′,id:’100003′,setvar:’tx.msg=%{rule.msg}’,setvar:tx.anomaly_score=+%{tx.error_anomaly_score}”
powodzenia
inspiracja – sow
W logach OSPF można zobaczyć wpis:
No buffer space available; perhaps a kernel limit on # of multicast group membership
s has been exceeded
Powodem jest domyślna wartość
net.ipv4.igmp_max_memberships
wynosząca 20.
Nie pozostaje nic innego jak zmienić tę wartość na większą, np:
sysctl -w net.ipv4.igmp_max_memberships=80sysctl -p
powodzenia
Ostatnie komentarze