суббота, 23 января 2016 г.

Замена стандарного порта ssh в панели VestaCP на Debian сервер

После взлома сайта спамерами решил обезопасить свой VPS хостинг.
Сперва решил поменять порт ssh со стандартного 22 на например 12345
Полной информации в одном месте не нашел, поэтому решил написать себе памятку.

Для начала меняем порт в конфигурации сервиса ssh

sudo nano /etc/ssh/sshd_config

Находим строку Port 22 и меняем порт на свой.

Перезапускаем ssh

sudo /etc/init.d/sshd restart

Проверяем на каком порту запустился ssh

sudo netstat -anp | grep ssh

Видим новый порт и ни в коем случае не закрываем  текущее соединение ssh, а то без дальнейших изменений вы не зайдете. Придется подключатся через VNC хостинг панели.

Как правило на этом все статьи заканчиваются, иногда кто-то упоминает вскользь, что нужно открыть новый порт в firewall.

Но поскольку на сервере стоит панель  управления хостингом, то открытие нового порта оказалось не тривиальной задачей.

По умолчанию все настройки фаервола для VestaCP хранятся в двух файлах

Для исходящих соединений

sudo nano /usr/local/vesta/data/firewall/ports.conf

содержимое по умолчанию

PROTOCOL='TCP' PORT='20'
PROTOCOL='TCP' PORT='21'
PROTOCOL='TCP' PORT='22'
PROTOCOL='TCP' PORT='25'
PROTOCOL='UDP' PORT='53'
PROTOCOL='TCP' PORT='80'
PROTOCOL='TCP' PORT='443'
PROTOCOL='TCP' PORT='110'
PROTOCOL='UDP' PORT='123'
PROTOCOL='TCP' PORT='143'
PROTOCOL='TCP' PORT='3306'
PROTOCOL='TCP' PORT='5432'
PROTOCOL='TCP' PORT='8080'
PROTOCOL='TCP' PORT='8433'
PROTOCOL='TCP' PORT='8083'
PROTOCOL='TCP' PORT='12000:12100


Для входящих соединений

sudo nano /usr/local/vesta/data/firewall/rules.conf

Содержимое по умолчанию

RULE='1' ACTION='ACCEPT' PROTOCOL='ICMP' PORT='0' IP='0.0.0.0/0' COMMENT='PING' SUSPENDED='no' TIME='17:13:48' DATE='2014-09-16'
RULE='2' ACTION='ACCEPT' PROTOCOL='TCP' PORT='8083' IP='0.0.0.0/0' COMMENT='VESTA' SUSPENDED='no' TIME='07:40:16' DATE='2014-05-25'
RULE='3' ACTION='ACCEPT' PROTOCOL='TCP' PORT='3306,5432' IP='0.0.0.0/0' COMMENT='DB' SUSPENDED='no' TIME='07:40:16' DATE='2014-05-25'
RULE='4' ACTION='ACCEPT' PROTOCOL='TCP' PORT='143,993' IP='0.0.0.0/0' COMMENT='IMAP' SUSPENDED='no' TIME='07:40:16' DATE='2014-05-25'
RULE='5' ACTION='ACCEPT' PROTOCOL='TCP' PORT='110,995' IP='0.0.0.0/0' COMMENT='POP3' SUSPENDED='no' TIME='07:40:16' DATE='2014-05-25'
RULE='6' ACTION='ACCEPT' PROTOCOL='TCP' PORT='25,465,587,2525' IP='0.0.0.0/0' COMMENT='SMTP' SUSPENDED='no' TIME='07:40:16' DATE='2014-05-25'
RULE='7' ACTION='ACCEPT' PROTOCOL='UDP' PORT='53' IP='0.0.0.0/0' COMMENT='DNS' SUSPENDED='no' TIME='07:40:16' DATE='2014-05-25'
RULE='8' ACTION='ACCEPT' PROTOCOL='TCP' PORT='21,12000-12100' IP='0.0.0.0/0' COMMENT='FTP' SUSPENDED='no' TIME='07:40:16' DATE='2014-05-25'
RULE='9' ACTION='ACCEPT' PROTOCOL='TCP' PORT='80,443' IP='0.0.0.0/0' COMMENT='WEB' SUSPENDED='no' TIME='17:04:27' DATE='2014-09-24'
RULE='10' ACTION='ACCEPT' PROTOCOL='TCP' PORT='22' IP='0.0.0.0/0' COMMENT='SSH' SUSPENDED='no' TIME='23:05:15' DATE='2016-01-23'


Также есть третий файл в котором прописан порт ssh, в той же папке где хранятся и предыдущие файлы. Но я пока не понял его назначения)) Но но на всякий случай поменял порт и в нем

sudo nano /usr/local/vesta/data/firewall/chains.conf

Содержимое по умолчанию

CHAIN='SSH' PORT='22' PROTOCOL='TCP'
CHAIN='MAIL' PORT='25,465,587,2525,110,995,143,993' PROTOCOL='TCP'
CHAIN='VESTA' PORT='8083' PROTOCOL='TCP'
CHAIN='FTP' PORT='21' PROTOCOL='TCP'


Вот как выглядит iptables

sudo iptables -L --line-number

Chain INPUT (policy DROP)
num  target     prot opt source               destination        
1    fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
2    fail2ban-FTP  tcp  --  anywhere             anywhere             tcp dpt:ftp
3    fail2ban-VESTA  tcp  --  anywhere             anywhere             tcp dpt:8083
4    fail2ban-MAIL  tcp  --  anywhere             anywhere             multiport dports smtp,ssmtp,submission,2525,pop3,pop3s,imap2,imaps
5    fail2ban-SSH  tcp  --  anywhere             anywhere             tcp dpt:22
6    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:22
7    ACCEPT     tcp  --  anywhere             anywhere             multiport dports http,https
8    ACCEPT     tcp  --  anywhere             anywhere             multiport dports ftp,12000:12100
9    ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
10   ACCEPT     tcp  --  anywhere             anywhere             multiport dports smtp,ssmtp,submission,2525
11   ACCEPT     tcp  --  anywhere             anywhere             multiport dports pop3,pop3s
12   ACCEPT     tcp  --  anywhere             anywhere             multiport dports imap2,imaps
13   ACCEPT     tcp  --  anywhere             anywhere             multiport dports mysql,postgresql
14   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:8083
15   ACCEPT     icmp --  anywhere             anywhere           
16   ACCEPT     all  --  mszerg.pp.ua         anywhere           
17   ACCEPT     all  --  localhost            anywhere           
18   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:ftp-data
19   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:ftp
20   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:22
21   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:smtp
22   ACCEPT     udp  --  anywhere             anywhere             udp spt:domain
23   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:http
24   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:https
25   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:pop3
26   ACCEPT     udp  --  anywhere             anywhere             udp spt:ntp
27   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:imap2
28   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:mysql
29   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:postgresql
30   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:http-alt
31   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:8433
32   ACCEPT     tcp  --  anywhere             anywhere             tcp spt:8083
33   ACCEPT     tcp  --  anywhere             anywhere             tcp spts:12000:12100
34   ACCEPT     tcp  --  anywhere             anywhere             state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination        

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination        

Chain fail2ban-FTP (1 references)
num  target     prot opt source               destination        
1    RETURN     all  --  anywhere             anywhere           

Chain fail2ban-MAIL (1 references)
num  target     prot opt source               destination        
1    RETURN     all  --  anywhere             anywhere           

Chain fail2ban-SSH (1 references)
num  target     prot opt source               destination        
1    RETURN     all  --  anywhere             anywhere           

Chain fail2ban-VESTA (1 references)
num  target     prot opt source               destination        
1    RETURN     all  --  anywhere             anywhere           

Chain fail2ban-ssh (1 references)
num  target     prot opt source               destination        
1    RETURN     all  --  anywhere             anywhere           

Chain vesta (0 references)
num  target     prot opt source               destination         



В общем меняем в этих трех фалах порт 22 на свой, после чего пере запускаем фаервол VestaCP

sudo /usr/local/vesta/bin/v-update-firewall


После этого вы сможете подключится к ssh по новому порту

Например в Ubuntu это можно сделать так

ssh -p 12345 admin@ip.saita

Если что-то пошло не так, как получилось у меня))
По какой-то причине, после того как я пытался добавить новое правило в фаервол через веб-панель VestaCP у меня обнулились первые два файла ports.conf и rules.conf

Естественно пропал любой доступ на хостин и перестал работать сайт в
браузере.


Пришлось заходить на сервер через по VNC через хостинг панель. А далее открыть себе хоть какой-нибудь порт что бы приступить к востановлению сервер.
Мне пригодились следующие команды


Просмотр действующих правил фаервола
sudo iptables -L --line-number



Открыть порт, например что бы заработала панель VestaCP в браузере и доступ по ssh на старом или новом порте, в зависимости что у вас стоит в
/etc/ssh/sshd_config
sudo iptables -I INPUT 1 -p tcp --dport 8083 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT

Удаление правила по его номеру
sudo iptables -D INPUT 8

Сохранение правил фаервола

sudo iptables-save


Для надежности я еще останавливал fail2ban, что бы он убрал свои правила из iptables
sudo /etc/init.d/fail2ban stop


Удаление всех правил из iptables
iptables -t nat -F
iptables -t filter -F
iptables -t mangle -F



Просмотр портов с котороыми работает ваш сервер
sudo netstat -tupln | grep LISTEN

Путем разных комбинаций этих команд мне удалось восстановить доступ к серверу и правильно настроить изменение порта ssh на альтернативный в панели управления хостингом VestaCP на сервере Debian.

Комментариев нет:

Отправить комментарий