owncloud – сброс пароля

Забыл пароль на одном из серверов, поэтому сбрасываю:

Разрешаем шел для пользователя под каким работает owncloud:

# vipw
nginx:x:997:995:Nginx web server:/var/lib/nginx:/bin/bash

Логинимся и меняем пароль:

# sudo -u nginx /var/www/html/owncloud/./occ user:resetpassword _user_
$ Enter a new password:
$ Confirm the new password:

Возвращаем обратно:

# vipw
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin

Логинимся.

image_pdfimage_print

ssh – вход по ключу

Есть рабочий ПК (Linux) и сервер, нужно сделать вход на сервер по ключу с этого ПК. На ПК с которого будем заходить на сервер в терминале выполняем:

$ ssh-keygen

или

$ ssh-keygen -f .ssh/note

-f тут – указать на файл ключа. Если её не использовать – ssh-keygen предложит сохранить в файл с именем по умолчанию – .ssh/id_rsa.

В процессе вы увидите

Enter passphrase (empty for no passphrase):

здесь можно ввести парольную фразу для ключа, как еще одна из ступеней защиты.

The key's randomart image is:
+--[ RSA 2048]----+
|      ..o        |
|       E o= .    |
|       o. o      |
|          ..     |
|      ..S        |
|     o o.        |
|   =o.+.         |
|. =++..          |
|o=++.            |
+-----------------+

Теперь у вас есть открытый и закрытый ключи, которые можно использовать для аутентификации. После этого нужно скопировать открытый ключ на сервер, чтобы затем настроить беспарольную аутентификацию на основе SSH-ключей.

Передадим ключ на сервер утилитой ssh-copy-id

ssh-copy-id username@remote_host

Если будет ругаться

$ ssh-copy-id username@remote_host
Could not open a connection to your authentication agent.
no keys found

нужно помочь ключем -i:

$ ssh-copy-id -i .ssh/id_rsa.pub username@remote_host

Пробуем подключиться

$ ssh username@remote_host

В .ssh создаем файлик conf с таким содержанием:

$ cat .ssh/config

Host remote_host
    HostName 192.168.0.15
    User username

Теперь можно подключаться так:

$ ssh remote_host

Отключение парольной аутентификации

Теперь можно отключить механизм парольной аутентификации, чтобы защитить сервер от brute-force атак.

Важно! Прежде чем выполнять этот раздел, убедитесь, что на этом сервере вы настроили аутентификацию на основе SSH-ключей для учетной записи root или для пользователя с привилегиями sudo. Этот раздел заблокирует поддержку паролей для входа в систему, и вы можете случайно заблокировать себя на собственном сервере.

Убедившись, что ваша удаленная учетная запись имеет все необходимые привилегии, зайдите на свой удаленный сервер с помощью SSH-ключей (либо с правами администратора, либо через учетную запись с привилегиями sudo). Затем откройте файл конфигурации демона SSH:

$ sudo nano /etc/ssh/sshd_config

Внутри файла найдите директиву PasswordAuthentication. Она может быть закомментирована. Раскомментируйте строку и установите значение «no». Это отключит возможность входа в систему через SSH с использованием паролей учетных записей:

...
PasswordAuthentication no
...

Сохраните и закройте файл. Чтобы обновить настройки, необходимо перезапустить сервис sshd:

$ sudo systemctl restart sshd.service

В качестве меры предосторожности откройте новое окно терминала и проверьте работу сервиса SSH:

ssh username@remote_host

После того как вы подтвердите работу сервиса SSH, можете закрыть все текущие сеансы сервера.

Демон SSH теперь поддерживает только аутентификацию по SSH-ключам. Парольная аутентификация успешно отключена.

 

https://www.8host.com/blog/ustanovka-ssh-klyuchej-v-centos-7/

image_pdfimage_print

TRANSMISSION

Установка

# yum install epel-release
# yum -y update
# yum install -y transmission-daemon transmission-cli transmission-common

Редактируем конфиг, обращая внимание на такие строки:

# vi /var/lib/transmission/.config/transmission-daemon/setting.json

"download-dir": "/home/video/transmission/downloads",
"download-queue-enabled": true,
"incomplete-dir": "/home/video/transmission/incomplete",
"incomplete-dir-enabled": true,
"message-level": 1,

"rpc-authentication-required": true,
"rpc-enabled": true,
"rpc-password": "mypassword", // ваш пароль
"rpc-username": "mysuperlogin", //ваш логин
"rpc-whitelist-enabled": true,
"rpc-whitelist": "0.0.0.0",

"watch-dir": "/home/video/transmission/uploads",
"watch-dir-enabled": true

Запишите пароль! После перезагрузки он захешируется и станет нечитабельным.

Запуск

# systemctl start transmission-daemon
# systemctl enable transmission-daemon

Останавливаем демон и редактируем конфиг (если этого не сделать то при очкредном перезапуске он запустится с настройками, которые были при первом запуске, затерев текущие):

# service transmission-daemon stop 
# vi /var/lib/transmission/.config/transmission-daemon/setting.json

Веб интерфейс находится по адресу

http://192.168.1.41:9091

 

image_pdfimage_print

Monit

Monit — это легковесная система мониторинга серверов, имеющая открытый исходный код. Monit устанавливается на сервер и обеспечивает возможность отправки уведомлений в случае обнаружения проблем. Кроме того, Monit может автономно выполнять определенное действие в качестве реакции на заданные события.

$ sudo yum install monit

Расскоментируем такие строки:

$ sudo nano /etc/monitrc
set mailserver localhost
set mail-format { from: monit@domen.com }
set alert admin@domen.com
set httpd port 2812 and
    use address localhost # only accept connection from localhost
    allow localhost # allow localhost to connect to the server and
    allow admin:monit # require user 'admin' with password 'monit'
include /etc/monit.d/*.conf

Проверяем синтаксис:

$ sudo monit -t

Запускаем:

$ sudo systemctl start monit
$ sudo systemctl status monit
$ sudo systemctl enable monit
$ monit status

Создаем конфигурации мониторинга

cd /etc/monit.d/
$ sudo nano filesystem.conf
check device root with path /dev/mapper/centos-home
    if space usage > 85% for 5 times within 15 cycles then alert
    if inode usage > 85% then alert
    check device home with path /dev/sdb
    if space usage > 85% for 5 times within 15 cycles then alert
    if inode usage > 85% then alert
$ sudo nano mariadb.conf
# Monitor MariaDB
check process mysql with pidfile /var/run/mariadb/mariadb.pid
    group database
    start program = "/usr/bin/systemctl start mariadb"
    stop program = "/usr/bin/systemctl stop mariadb"
    #if failed host 127.0.0.1 port 3306 then restart
    #if 5 restarts within 5 cycles then timeout
$ sudo nano system.conf
check system host.domen.com
        if loadavg (1min) > 4 then alert
        if loadavg (5min) > 2 then alert
        if memory usage > 75% then alert
        if swap usage > 25% then alert
        if cpu usage (user) > 70% then alert
        if cpu usage (system) > 30% then alert
        if cpu usage (wait) > 20% then alert

$ sudo nano nginx.conf
check process nginx with pidfile /var/run/nginx.pid
    start program = "/usr/sbin/nginx start"
    stop program = "/usr/sbin/nginx stop"
$ sudo nano postfix.conf
# Monitor postfix mailserver
check process postfix with pidfile /var/spool/postfix/pid/master.pid
    group mail
    start program = "/usr/bin/systemctl start postfix"
    stop program = "/usr/bin/systemctl stop postfix"
    if failed port 25 protocol smtp then restart
    if 5 restarts within 5 cycles then timeout
$ sudo nano proftpd.conf
# Monitor the Proftpd service
check process proftpd with pidfile /var/run/proftpd/proftpd.pid
    start program = "/usr/bin/systemctl start proftpd"
    stop program = "/usr/bin/systemctl stop proftpd"
    #if failed port 21 protocol ftp then restart
    #if 5 restarts within 5 cycles then timeout
image_pdfimage_print

Как посмотреть SYN queue и Accept queue

accept queue: можно смотреть в netstat/ss для LISTEN сокетов, текущий размер в колонке Recv-Q, лимит в колонке Send-Q, например:

$ ss -lnt
State       Recv-Q Send-Q                                 Local Address:Port                                                Peer Address:Port
LISTEN      0      100                                        127.0.0.1:25                                                             *:*
LISTEN      0      128                                                *:443                                                            *:*
LISTEN      0      32                                    194.44.219.164:1021                                                           *:*
LISTEN      0      5                                                  *:3551                                                           *:*
LISTEN      0      128                                        127.0.0.1:9000                                                           *:*
LISTEN      0      5                                                  *:873                                                            *:*
LISTEN      0      50                                                 *:3306                                                           *:*
LISTEN      0      128                                        127.0.0.1:11211                                                          *:*
LISTEN      0      128                                                *:80                                                             *:*
LISTEN      0      32                                    194.44.219.164:21                                                             *:*
LISTEN      0      32                                    194.44.219.164:8022                                                           *:*
LISTEN      0      128                                                *:22

для этого сокета текущий размер = 0, лимит 128

syn queue: насколько я понимаю нельзя посмотреть текущий размер, но при переполнении увеличивается счетчик netstat -st |grep TCPBacklogDrop.

image_pdfimage_print

Посмотреть статистику ошибок на сетевых интерфейсах

Windows

C:\Users\User>netstat -e
Статистика интерфейса

                          Получено            Отправлено

Байт                     3009576412            308758415
Одноадресные пакеты         3453076              2403332
Многоадресные пакеты           1176               120378
Отброшено                         0                    0
Ошибки                            0                    0
Неизвестный протокол              0

Centos

# ifconfig
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.1.41 netmask 255.255.255.0 broadcast 192.168.1.255
        ether 94:de:80:92:7b:69 txqueuelen 1000 (Ethernet)
        RX packets 92103601 bytes 123628327915 (115.1 GiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 51833927 bytes 17815171773 (16.5 GiB)
        TX errors 0 dropped 0 overruns 0 carrier 1 collisions 0

enp3s1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
        inet 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
        ether 00:30:84:b3:9b:83 txqueuelen 1000 (Ethernet)
        RX packets 11412016 bytes 1009181130 (962.4 MiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 16045098 bytes 19419306716 (18.0 GiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
        device interrupt 19

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
        inet 127.0.0.1 netmask 255.0.0.0
        loop txqueuelen 1000 (Local Loopback)
        RX packets 1323571 bytes 182038484 (173.6 MiB)
        RX errors 0 dropped 0 overruns 0 frame 0
        TX packets 1323571 bytes 182038484 (173.6 MiB)
        TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

# netstat -i
Kernel Interface table
Iface       MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
enp2s0     1500 92081824      0      0      0 51803600      0      0      0 BMRU
enp3s1     1500 11389083      0      0      0 16028904      0      0      0 BMRU
lo        65536  1322812      0      0      0  1322812      0      0      0 LRU
# ethtool -S enp4s0
NIC statistics:
     tx_packets: 4528157
     rx_packets: 5406495
     tx_errors: 0
     rx_errors: 0
     rx_missed: 0
     align_errors: 0
     tx_single_collisions: 0
     tx_multi_collisions: 0
     unicast: 5035625
     broadcast: 370870
     multicast: 0
     tx_aborted: 0
     tx_underrun: 0
$ ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes packets errors dropped overrun mcast 
    28581322  60784   0      0       0       0 
    TX: bytes packets errors dropped carrier collsns 
    28581322  60784   0      0       0       0 
2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:19:db:b0:82:3e brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets errors dropped overrun mcast 
    2539243166 2738591 0      0       0       0 
    TX: bytes  packets errors dropped carrier collsns 
    2168390161 2524122 0      0       0       0 
3: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:30:84:0a:99:af brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets errors dropped overrun mcast 
    31744395   276980  0      0       0       0 
    TX: bytes  packets errors dropped carrier collsns 
    347239827  317135  0      0       0       0 
4: enp5s1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:02:44:b8:7c:46 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets errors dropped overrun mcast 
    0          0       0      0       0       0 
    TX: bytes  packets errors dropped carrier collsns 
    0          0       0      0       0       0 
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 100
    link/none 
    RX: bytes  packets errors dropped overrun mcast 
    56235459   580109  0      0       0       0 
    TX: bytes  packets errors dropped carrier collsns 
    1947316937 1551680 0      0       0       0

FreeBSD

# netstat -id
Name   Mtu  Network        Address           Ipkts  Ierrs Idrop Opkts  Oerrs Coll Drop
bge0  1500  <Link#1>       00:30:84:b3:9a:b0 138143     0     0 121642     0    0    0
bge0     -  192.168.112.0  192.168.113.163   137396     -     - 121526     -    -    -
xl0*  1500  <Link#2>       00:11:2f:4c:c0:c1      0     0     0      0     0    0    0
lo0   16384 <Link#3>       lo0                    0     0     0      0     0    0    0
lo0      -  localhost      localhost              0     -     -      0     -    -    -
lo0      -  fe80::%lo0/64  fe80::1%lo0            0     -     -      0     -    -    -
lo0      -  your-net       localhost              0     -     -      0     -    -    -


# netstat -I bge0 -d
Name   Mtu  Network        Address           Ipkts  Ierrs Idrop Opkts  Oerrs Coll Drop
bge0  1500  <Link#1>       00:30:84:b3:9a:b0 138185     0     0 121673     0    0    0
bge0     - 192.168.112.0   192.168.113.163   137435     -     - 121555     -    -    -
image_pdfimage_print

icecast

Icecast — свободное ПО для организации потокового цифрового аудио и видеовещания. Icecast является серверной программой, которая может осуществлять раздачу цифровых потоков различных форматов, таких как Ogg Vorbis, Opus, MP3, Theora, AAC, AAC Plus и NSV. Передача данных осуществляется по стандартному протоколу HTTP, либо по протоколу SHOUTcast. Icecast поддерживает теги в UTF-8, что позволяет организовывать трансляцию с русской аннотацией.

Установка с репозитория epel:

# yum install epel-release
# yum install icecast

Настройка

vi /etc/icecast.xml

<icecast> <!-- location and admin are two arbitrary strings that are e.g. visible
          on the server info page of the icecast web interface
          (server_version.xsl). -->
 <location>RING</location>
 <admin>icemaster@domen.com</admin>
 <limits>
     <clients>1000</clients>
     <sources>200</sources>
     <threadpool>500</threadpool>
     <queue-size>524288</queue-size>
     <client-timeout>30</client-timeout>
     <header-timeout>15</header-timeout>
     <source-timeout>10</source-timeout>
     <burst-on-connect>1</burst-on-connect>
     <burst-size>65535</burst-size>
 </limits>
 <authentication>
     <source-password>hackme</source-password>
     <relay-password>hackme</relay-password>
     <admin-user>admin</admin-user>
     <admin-password>hackme</admin-password>
     </authentication>
     <hostname>host.dome.com</hostname>
 <listen-socket>
     <port>8000</port>
     <bind-address>192.168.113.1</bind-address>
 </listen-socket>
<!-- Nashe Radio -->
 <relay>
     <server>185.128.234.102</server>
     <port>8000</port>
     <mount>/nashe</mount>
     <local-mount>/nashe</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- hitfm.ua 96.4 -->
 <relay>
     <server>195.95.206.17</server>
     <port>8000</port>
     <mount>/HitFM</mount>
     <local-mount>/HitFM</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- jamfm.ua 95.6 -->
 <relay>
     <server>185.128.234.102</server>
     <port>8000</port>
     <mount>/jamfm</mount>
     <local-mount>/jamfm</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- Shanson 101.9 Kiev -->
 <relay>
     <server>media2.brg.ua</server>
     <port>8000</port>
     <mount>/shanson_h</mount>
     <local-mount>/shanson</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- KissFM -->
 <relay>
     <server>195.95.206.14</server>
     <port>8000</port>
     <mount>/KissFM</mount>
     <local-mount>/kissfm</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- EuropaPlus -->
 <relay>
     <server>185.128.234.102</server>
     <port>8000</port>
     <mount>/europaplus</mount>
     <local-mount>/europaplus</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- Radiopyatnica -->
 <relay>
     <server>185.128.234.101</server>
     <port>80</port>
     <mount>/radiopyatnica</mount>
     <local-mount>/radiopyatnica</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- AvtoRadio -->
 <relay>
     <server>cast.radiogroup.com.ua</server>
     <port>8000</port>
     <mount>/avtoradio</mount>
     <local-mount>/avtoradio</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- Radio ROKS -->
 <relay>
     <server>online-radioroks.tavrmedia.ua</server>
     <port>8000</port>
     <mount>/RadioROKS</mount>
     <local-mount>/radioROKS</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- Radio Melodia -->
 <relay>
     <server>online-radiomelodia.tavrmedia.ua</server>
     <port>80</port>
     <mount>/RadioMelodia</mount>
     <local-mount>/radioMelodia</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- NRJ RU -->
 <relay>
     <server>ic3.101.ru</server>
     <port>8000</port>
     <mount>/s20</mount>
     <local-mount>/NRJ</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
<!-- RETRO RU -->
 <relay>
     <server>retroserver.streamr.ru</server>
     <port>8043</port>
     <mount>/retro256.mp3</mount>
     <local-mount>/retro</local-mount>
     <on-demand>1</on-demand>
     <relay-shoutcast-metadata>1</relay-shoutcast-metadata>
 </relay>
 <fileserve>1</fileserve>
 <paths>
    <basedir>/usr/share/icecast</basedir>
    <logdir>/var/log/icecast</logdir>
    <webroot>/usr/share/icecast/web</webroot>
    <adminroot>/usr/share/icecast/admin</adminroot>
    <alias source="/" dest="/status.xsl"/>
 </paths>
 <logging>
    <accesslog>access.log</accesslog>
    <errorlog>error.log</errorlog>
    <loglevel>4</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error -->
    <logsize>100000</logsize>
 </logging>
 <security>
    <chroot>0</chroot>
    <changeowner>
         <user>icecast</user>
         <group>icecast</group>
    </changeowner>
 </security>
</icecast>

Добавляем правила в iptables

....
# ICECAST
iptables -I INPUT 1 -p tcp --dport 8000:8003 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 9500 -j ACCEPT

#----------
# Logs
#----------
#iptables -A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 4
....

Стартуем сервис:

# systemctl start icecast
# systemctl status icecast
# systemctl enable icecast

Проверяем набирая в браузере:

http://192.168.113.1:8000/

Слушаем например HitFM так:

http://192.168.113.1:8000/HitFM

Для удобства создаем на ПК с которого будем слушать радио файлик с расширением *.m3u с таким содержимым:

#EXTM3U
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/HitFM
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/jamfm
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/nashe
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/shanson
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/kissfm
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/europaplus
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/nrj
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/avtoradio
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/radioROKS
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/radioMelodia
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/teuphoria
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/NRJ
#EXTVLCOPT:network-caching=1000
http://192.168.113.1:8000/retro

И открываем его, например, VLC player. Теперь все станции в одном плейлисте и не нужно прыгать по вкладкам.

 

image_pdfimage_print