понедельник, 27 октября 2014 г.

Узнать каталог, из которого запущен процесс

Как узнать, кто слушает определённый порт?
# ss -tpunl | grep 3780
udp    UNCONN     2754   0           10.100.10.22:3780                  *:*      users:(("python",4313,6))
Что же это за процесс?
# ps ax|grep 4313
4313 pts/4    Rl+  29106:08 python ./server.py
Некий server.py, не ясно откуда запущенный. Что ж:
# pwdx 4313
4313: /home/username/conntrackd/conntrack-decoder
Нашли :)

P.S. Проще даже так:
# ls -l /proc/4313/cwd
lrwxrwxrwx 1 username username 0 Окт 27 14:48 /proc/4313/cwd -> /home/username/conntrackd/conntrack-decoder

пятница, 1 августа 2014 г.

Bridge с помощью iproute2

Всех админов в пределах досягаемости бью по рукам за использование ifconfig/route на linux-серверах. К счастью в новых дистрибутивах эти анахронизмы даже не установлены по умолчанию и народ рано или поздно начнёт переучиваться. Сегодня попробуем создать бридж с помощью всемогущей утилиты ip из пакета iproute2
ip l s dev eth1 up
ip l s dev eth0.1999 up
ip l add name br0 type bridge
ip l s dev eth1 master br0
ip l s dev eth0.1999 master br0
ip l s dev br0 up
That's all, folks!

вторник, 22 июля 2014 г.

FTP через TELNET

Для академических целей попробуем подключиться к FTP с использованием утилиты telnet.

Для успешного скачивания файла нам потребуется две открытые консоли и калькулятор. Вместо telnet можно использовать nc/netcat. Подключаться будем в пассивном режиме.
Авторизируемся:
$ telnet mirror.yandex.ru 21
Trying 213.180.204.183...
Connected to mirror.yandex.ru.
Escape character is '^]'.
220-Welcome to Yandex Mirror FTP service. Your served by: node01d.mirror.yandex.net
220 
USER anonymous
331 Please specify the password.
PASS a@b.ru
230 Login successful.
Открываем на сервере порт для "пассивного" подключения:
PASV
227 Entering Passive Mode (213,180,204,183,221,153).
Здесь мы видим параметры для ВТОРОГО подключения. Первые четыре числа -- это ip-адрес сервера, пятое и шестое -- это порт для подключения. Вычисляется по формуле: первое*256 + второе.
Не закрывая первую консоль во второй консоли пишем:
$ telnet mirror.yandex.ru 56729
Trying 213.180.204.183...
Connected to mirror.yandex.ru.
Escape character is '^]'.
В рамках этого соединения мы можем только получать данные. Вот примерный список FTP-команд:
    ABOR - прервать передачу
    CWD - сменить директорию
    DELE - удалить файл на сервере
    LIST - детальный список файлов на сервере
    MDTM - узнать время модификации файла
    MKD - создать каталог на сервере
    NLST - упрощенный список файлов на сервере
    PASS - отправить пароль
    PASV - перейти в пассивный режим
    PORT - заставить сервер подключиться к клиенту на определенный порт (активный режим)
    PWD - вывести название текущего каталога
    QUIT - окончить соединение
    RETR - скачать файл с сервера
    RMD - удалить каталог на сервере
    RNFR - переименовать из
    RNTO - переименовать в
    SITE - серверо-специфицеские команды
    SIZE - узнать размер файла
    STOR - залить файл на сервер
    TYPE - установить режим передачи
    USER - отправить пользовательский логин
Пользуясь командами (и переподключаясь во второй консоли каждый раз на новый порт, который нам указывает сервер, скачиваем файл. Первая консоль:
LIST
150 Here comes the directory listing.
226 Directory send OK.
CWD pub
250 Directory successfully changed.
PASV
227 Entering Passive Mode (213,180,204,183,217,235).
LIST
150 Here comes the directory listing.
226 Directory send OK.
CWD tools
250 Directory successfully changed.
PASV
227 Entering Passive Mode (213,180,204,183,230,239).
LIST
150 Here comes the directory listing.
226 Directory send OK.
CWD crosstool 
250 Directory successfully changed.
PASV
227 Entering Passive Mode (213,180,204,183,230,34).
LIST
150 Here comes the directory listing.
226 Directory send OK.
PASV
227 Entering Passive Mode (213,180,204,183,202,255).
RETR index.html
150 Opening BINARY mode data connection for index.html (6922 bytes).
226 Transfer complete.
Вторая консоль:
$ telnet mirror.yandex.ru 56729
Trying 213.180.204.183...
Connected to mirror.yandex.ru.
Escape character is '^]'.
drwxr-xr-x   17 ftp      ftp          4096 Jul 22 03:27 altlinux
drwxr-sr-x   20 ftp      ftp          4096 Jul 21 10:29 altlinux-beta
drwxr-xr-x    7 ftp      ftp          4096 Jul 21 10:43 altlinux-nightly
drwxr-xr-x   17 ftp      ftp          4096 Jul 22 07:38 archlinux
drwxr-xr-x    7 ftp      ftp          4096 Jul 21 10:56 archserver
drwxr-sr-x    6 ftp      ftp          4096 Sep 17  2007 asplinux-tigro
drwxr-xr-x    4 ftp      ftp          4096 Jul 21 10:56 astra
drwxr-xr-x   39 ftp      ftp          4096 Jul 21 10:35 calculate
drwxrwxr-x   38 ftp      ftp          4096 Jul 22 05:06 centos
drwxr-xr-x    8 ftp      ftp          4096 Jul 22 03:53 debian
drwxrwsr-x    6 ftp      ftp          4096 Jul 22 03:22 debian-backports
drwxr-xr-x    5 ftp      ftp          4096 Jul 22 02:36 debian-cd
drwxrwxr-x    6 ftp      ftp          4096 Jul 22 01:04 debian-multimedia
drwxrwsr-x    6 ftp      ftp          4096 Jul 21 10:34 debian-security
drwxr-sr-x    7 ftp      ftp          4096 Jul 21 20:40 epel
drwxr-xr-x    7 ftp      ftp          4096 Jul 22 05:08 fedora
drwxrwxr-x   12 ftp      ftp          4096 Jul 22 04:21 freebsd
drwxr-xr-x    6 ftp      ftp          4096 Jul 22 07:32 gentoo-distfiles
drwxrwxr-x  169 ftp      ftp          4096 Jul 22 07:32 gentoo-portage
drwxr-xr-x   10 ftp      ftp         12288 Jul 21 10:08 knoppix
drwxr-xr-x    3 ftp      ftp          4096 Jul 22 02:04 libreoffice
drwxr-xr-x    7 ftp      ftp          4096 Jul 21 10:32 linuxmint
drwxr-xr-x    5 ftp      ftp          4096 Jul 22 04:24 macports
drwxr-xr-x    6 ftp      ftp          4096 Jul 22 07:32 mageia
drwxr-xr-x   39 ftp      ftp          4096 Jun 30 09:26 mirrors
drwxr-xr-x    6 ftp      ftp          4096 Mar 11 14:53 mopslinux
drwxr-xr-x    8 ftp      ftp          4096 Jul 22 07:40 mozilla
drwxr-xr-x   48 ftp      ftp          4096 Jul 22 02:18 openbsd
drwxr-xr-x    5 ftp      ftp          4096 Jul 22 05:06 openmandriva
drwxr-xr-x    8 ftp      ftp          4096 Jul 21 17:33 opensuse
drwxr-xr-x    8 ftp      ftp          4096 Jul 22 06:07 pub
drwxr-xr-x    8 ftp      ftp          4096 Jul 21 10:31 puppyrus
drwxr-xr-x   10 ftp      ftp          4096 Jul 22 05:32 rosa
drwxr-xr-x    4 ftp      ftp          4096 Jul 21 10:33 runtu
drwxrwxr-x    5 ftp      ftp          4096 Jul 22 04:32 sabayon
drwxr-xr-x   13 ftp      ftp          4096 Jul 22 04:32 scientificlinux
drwxr-xr-x    6 ftp      ftp          4096 Apr 02 17:53 simplelinux
drwxr-xr-x   42 ftp      ftp          4096 Jul 22 00:34 slackware
drwxr-xr-x    6 ftp      ftp          4096 Jul 22 02:09 ubuntu
drwxr-xr-x   30 ftp      ftp          4096 Jul 22 04:16 ubuntu-cdimage
drwxr-xr-x   12 ftp      ftp          4096 Jul 22 06:16 ubuntu-releases
Connection closed by foreign host.

$ telnet mirror.yandex.ru 55787
Trying 213.180.204.183...
Connected to mirror.yandex.ru.
Escape character is '^]'.
lrwxrwxrwx    1 ftp      ftp            11 Feb 17  2013 FreeBSD -> ../freebsd/
lrwxrwxrwx    1 ftp      ftp            11 Feb 17  2013 OpenBSD -> ../openbsd/
drwxr-xr-x   13 ftp      ftp          4096 Nov 16  2011 linux
drwxrwxr-x    3 ftp      ftp          4096 Sep 23  2008 media
drwxr-xr-x   15 ftp      ftp          4096 Aug 03  2013 scm
drwxrwxr-x    2 ftp      ftp          4096 Aug 09  2013 site
drwxr-xr-x   13 ftp      ftp          4096 Nov 27  2011 software
drwxr-xr-x    3 ftp      ftp          4096 Apr 30  2008 tools
Connection closed by foreign host.

$ telnet mirror.yandex.ru 59119
Trying 213.180.204.183...
Connected to mirror.yandex.ru.
Escape character is '^]'.
drwxrwxr-x    3 ftp      ftp          4096 May 22  2013 crosstool
Connection closed by foreign host.

$ telnet mirror.yandex.ru 58914
Trying 213.180.204.183...
Connected to mirror.yandex.ru.
Escape character is '^]'.
drwxrwxr-x    5 ftp      ftp          4096 Mar 28  2012 files
-rw-rw-r--    1 ftp      ftp          6922 May 22  2013 index.html
-rw-rw-r--    1 ftp      ftp           543 May 22  2013 index.html.sign
-rw-r--r--    1 ftp      ftp           962 Apr 02 07:57 sha256sums.asc
Connection closed by foreign host.

$ telnet mirror.yandex.ru 51967
Trying 213.180.204.183...
Connected to mirror.yandex.ru.
Escape character is '^]'.
[тут вырезано содержимое получаемого файла]
Connection closed by foreign host.

четверг, 5 июня 2014 г.

Сервер vsftpd с аутентификацией через radius

Настройка сервера VSFTPD с аутентификацией через Radius в Debian:
# aptitude install vsftpd libpam-radius-auth
# cat /etc/pam.d/vsftpd
# Standard behaviour for ftpd(8).

auth    sufficient      pam_radius_auth.so client_id=openvpn
account sufficient      pam_radius_auth.so client_id=openvpn
@include common-account
@include common-session
@include common-auth
auth    required        pam_shells.so
Client_id -- это атрибут Nas-identifier в радиус-запросе.
# cat /etc/pam_radius_auth.conf
# server[:port]  shared_secret      timeout (s)
10.100.4.100    mymegasecretkey       3
# cat /etc/vsftpd.conf
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
nopriv_user=ftp
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
user_sub_token=$USER
guest_username=ftp
guest_enable=YES

среда, 4 июня 2014 г.

Сервер OpenVPN с аутентификацией через Radius

Настройка сервера OpenVPN с аутентификацией через Radius в Debian:
# aptitude install openvpn openvpn-auth-radius
# cat /etc/openvpn/radiusplugin.cnf
NAS-Identifier=openvpn
Service-Type=2
Framed-Protocol=1
NAS-Port-Type=5
NAS-IP-Address=10.100.10.85
OpenVPNConfig=/etc/openvpn/server.conf
subnet=255.255.255.0
overwriteccfiles=true
server
{
        # The UDP port for radius accounting.
        acctport=1815
        # The UDP port for radius authentication.
        authport=1812
        # The name or ip address of the radius server.
        name=10.100.4.100
        # How many times should the plugin send the if there is no response?
        retry=1
        # How long should the plugin wait for a response?
        wait=1
        # The shared secret.
        sharedsecret=mymegasecretkey
}
# cat /etc/openvpn/server.conf
local my_public_ip
port 443
proto tcp
dev tun
tun-mtu 1500
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key 
dh /etc/openvpn/keys/dh1024.pem
server 10.8.0.0 255.255.255.0
client-cert-not-required
username-as-common-name
ifconfig-pool-persist ipp.txt
push "route 10.100.0.0 255.255.0.0"
push "route 10.102.0.0 255.255.0.0"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status /var/log/openvpn/status.log 1
plugin /usr/lib/openvpn/radiusplugin.so
log-append  /var/log/openvpn/openvpn.log
verb 3