19 Temmuz 2018 Perşembe

iptables OUTPUT Modülü

Giriş
Akış şöyledir.
local process -> output-> post routing -> network card

-d seçeneği - destination
IP adresi belirtilir. Şöyle yaparız.
## Block every IP address in ~/blocking.txt
## DROP incoming packets to avoid information leak about your hosts firewall
## (HT to Conor Mancone) REJECT outgoing packets to avoid browser wait
for i in $(cat ~/blocking.txt); do
  echo "Blocking all traffic to and from $i"    
  /sbin/iptables -I INPUT -s $i -j DROP
  /sbin/iptables -I OUTPUT -d $i -j REJECT
done
-j seçeneği
Örnek
Gönderilen paketi loglama için şöyle yaparız
# iptables -A OUTPUT -p tcp -m tcp --dport 465 -j LOG
limit modülü 
Saniyede gönderilebilecek paket sayısını sınırlamak için şöyle yaparız.
iptables -A OUTPUT -d 192.168.1.2 -m limit --limit 6/minute --limit-burst 10 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.2 -j DROP
Her 10 saniyede bir kurala uyan 10 paketi kabul et.
İlk kuralı geçen gider. İlk kuralı geçemeyen ikinci kural yüzünden drop edilir.

Sonucu görmek için şöyle yaparız.
iptables --list

-p seçeneği - protocol
Şöyle yaparız.
iptables -I OUTPUT -p udp --dport 999 -j DROP

15 Temmuz 2018 Pazar

env komutu

Giriş
bash ile iki çeşit değişken tanımlama imkanı var.
1. export kullanarak
2. export kullanmadan

env export ile tanımlanan ortam değişkenlerini gösterir. Eğer tüm değişkenleri görmek istersek set komutunu kullanırız.

Not : env komutu ile printenv komutu benzer işler yaparlar.

1. export kullanmadan
Örnek
Şöyle yaparız.
$ foo="bar"
$ env | grep foo ## returns nothing
$ export foo
$ env | grep foo ## now, env will print it
foo=bar
Örnek
Şöyle yaparız.
$ var='$test'
$ test="my string"
Çıktı olarak şunu alırız.
$ echo $var
$test

$ echo $test
my string

10 Temmuz 2018 Salı

printenv komutu

Giriş
Açıklaması şöyle.
The printenv utility prints out the names and values of the variables in
 the environment, with one name/value pair per line.  If name is speci-
 fied, only its value is printed.
Açıklaması şöyle.
printenv - print all or part of environment
Not : printenv komutu ile env komutu benzer işler yaparlar.

9 Temmuz 2018 Pazartesi

Windows sc komutu

Giriş
Söz dizimi şöyle
sc \\pcismi stop|start|query servis_ismi

8 Temmuz 2018 Pazar

/dev/urandom Özel Dosyası

Giriş
/dev/urandom dosyasındaki u harfi unlimited anlamına gelir.  Açıklaması şöyle.
The /dev/urandom device does not have this limit [...]
Bloke Olma
/dev/urandom yeterince entropy toplayıncaya kadar bloke olur

Cryptographically Secure Random Number Generator
CSPRNG kısaltması "Cryptographically Secure Random Number Generator" anlamına gelir.
CSPRNGs based on /dev/urandom (if you're familiar with Linux), for example, have to call the crypto kernel module driver every time.
random ve urandom arasındaki ilişkiyi şekille anlatan bir yazı burada.

Sanal makinelerde şöyle bir problem olabiliyor. Açıklaması şöyle
Using /dev/urandom to generate cryptographic keys or secrets can be an issue when the state of the OS is not unique. This is the typically case when a VM was just booted from a template: the state of the CSPRNG could be shared among multiple VMs. In cases similar to this one, it is important to use /dev/random or getrandom() instead of /dev/urandom, so that the output of the CSPRNG blocks until it has collected enough entropy.
urandom Dosyasından Okuma Üst Sınıfı
Bu dosyadan tek seferde yapılan okumanın bir üst sınırı var. Şöyledir.
#define ENTROPY_SHIFT 3

static ssize_t
urandom_read(struct file *file, char __user *buf, size_t nbytes, loff_t *ppos)
{
    nbytes = min_t(size_t, nbytes, INT_MAX >> (ENTROPY_SHIFT + 3));
    ...
}
Örnek
dd komutu kullanılabilir.

Örnek
Bu device okunarak 0x00 ve 0xFF arasında byte üretilebilir. Şöyle yaparız.
void test(void){
  char random[4];
  int filedescriptor = open("/dev/urandom", O_RDONLY);
  read(filedescriptor, random, 4);
  close(filedescriptor);
}


tty komutu

Giriş
Bu komut stty komutu ile ilgili.

Not : Sanal Konsol (Virtual Console) Nedir yazısına bakılabilir

chvt komutu
Sanal konsola geçişi komutu ile yapmak istersek şöyle yaparız.
sudo chvt 1
tty komutu
Linux'ta stdin dışında kullanıcı tuşlarını okumak için kullanılabilir. Açıklaması şöyle.
less reads the user’s keystrokes from the terminal. It explicitly opens /dev/tty, the controlling terminal; that gives it a file descriptor, separate from standard input, from which it can read the user’s interactive input. It can simultaneously read data to display from its standard input if necessary. (It could also write directly to the terminal if necessary.)
Böylece less komutunu şöyle çalıştırmak mümkün olur.
some_command | less
Açıklaması şöyle.
Later UNIX versions did (around 1979) add a /dev/tty driver interface that allows to open the controlling tty of a process. Since there are processes without a controlling tty, it is possible that an attempt to open /dev/tty fails. Friendly written software therefore has a fallback to the original method and then tries to read from stderr.
Örnek
Eğer sanal konsol'da isek şu çıktıyı alırız.
$ tty
/dev/tty0
Eğer GUI terminalindeysek şu çıktıyı alırız.
$ tty
/dev/pts/0