Поиск по сайту:

Как заблокировать SSH и FTP-доступ к определенному IP-адресу и сетевому диапазону в Linux


Обычно мы все часто используем службы SSH и FTP для доступа к удаленным серверам и виртуальным частным серверам. Как администратор Linux, вы должны знать, как заблокировать SSH и FTP-доступ к определенному IP-адресу или сетевому диапазону в Linux, чтобы еще больше усилить безопасность.

  1. 25 советов по усилению безопасности серверов Linux
  2. 5 полезных советов по обеспечению безопасности и защите SSH-сервера

Из этого туториала вы узнаете, как заблокировать доступ по SSH и FTP к определенному IP-адресу и/или сетевому диапазону на серверах CentOS 6 и 7. Это руководство было протестировано на версиях CentOS 6.x и 7.x, но, вероятно, оно будет работать и на других дистрибутивах Linux, таких как Debian, Ubuntu, SUSE/openSUSE и т. д.

Мы сделаем это двумя способами. Первый метод использует IPTables/firewallD, а второй метод использует оболочки TCP с помощью hosts.allow. > и файл hosts.deny.

Обратитесь к следующим руководствам, чтобы узнать больше об IPTables и Firewalld.

  1. Базовое руководство по IPTables (межсетевой экран Linux) Советы/команды
  2. Как настроить брандмауэр Iptables для обеспечения удаленного доступа к службам в Linux
  3. Как настроить FirewallD в RHEL/CentOS 7 и Fedora 21
  4. Полезные правила FirewallD для настройки и управления брандмауэром в Linux

Теперь вы знаете, что такое IPTables и FirewallD, а также их основы.

Способ 1: заблокируйте доступ по SSH и FTP с помощью IPTables/FirewallD

Теперь давайте посмотрим, как заблокировать доступ по SSH и FTP к определенному IP-адресу (например, 192.168.1.100) и/или сетевому диапазону (например, 192.168.1.0/24). использование IPtables в версиях RHEL/CentOS/Scientific Linux 6.x и FirewallD в CentOS 7.x.

Заблокировать или отключить доступ по SSH

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j REJECT
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport ssh -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j REJECT

Чтобы новые правила вступили в силу, вам необходимо использовать следующую команду.

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

Теперь попробуйте подключиться к серверу по SSH с заблокированного хоста. Обратите внимание, что здесь 192.168.1.150 находится заблокированный хост.

ssh 192.168.1.150

Вы должны увидеть следующее сообщение.

ssh: connect to host 192.168.1.150 port 22: Connection refused

Разблокировать или включить доступ по SSH

Чтобы разблокировать или включить доступ по SSH, перейдите на удаленный сервер и выполните следующую команду:

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport ssh -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j ACCEPT

Сохраните изменения, используя следующую команду для доступа к вашему серверу через SSH.

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

Заблокировать или отключить доступ по FTP

Обычно портами по умолчанию для FTP являются 20 и 21. Итак, чтобы заблокировать весь FTP-трафик с помощью IPTables, выполните следующую команду:

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j REJECT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT

Чтобы новые правила вступили в силу, вам необходимо использовать следующую команду.

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

Теперь попробуйте получить доступ к серверу с заблокированного хоста (192.168.1.100) с помощью команды:

ftp 192.168.1.150

Вы получите сообщение об ошибке, подобное приведенному ниже.

ftp: connect: Connection refused

Разблокировать или включить FTP-доступ

Чтобы разблокировать и снова включить FTP-доступ, запустите:

--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT

Сохраните изменения командой:

service iptables save         [On IPtables Firewall]
firewall-cmd --reload         [On FirewallD]

Теперь попробуйте получить доступ к серверу через FTP:

ftp 192.168.1.150

Введите имя пользователя и пароль FTP.

Connected to 192.168.1.150.
220 Welcome to TecMint FTP service.
Name (192.168.1.150:sk): tecmint
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Способ 2: заблокируйте доступ по SSH и FTP с помощью TCP-оболочек

Если вы не хотите возиться с IPTables или FirewallD, то TCP-оболочки — лучший способ заблокировать доступ SSH и FTP к определенному IP и/или диапазон сети.

OpenSSH и FTP скомпилированы с поддержкой оболочек TCP, что означает, что вы можете указать, каким хостам разрешено подключаться, не затрагивая брандмауэр, в следующих двух важных файлах:

  1. /etc/hosts.allow
  2. /etc/hosts.deny

Как следует из названия, первый файл содержит записи разрешенных хостов, а второй — адреса заблокированных хостов.

Например, давайте заблокируем доступ по SSH и FTP к хосту с IP-адресом 192.168.1.100 и сетевым диапазоном 192.168.1.0. Этот метод одинаков для серий CentOS 6.x и 7.x. И, конечно же, он будет работать в других дистрибутивах, таких как Debian, Ubuntu, SUSE, openSUSE и т. д.

Откройте файл /etc/hosts.deny и добавьте следующие IP-адреса или диапазон сети, которые вы хотите заблокировать, как показано ниже.

##### To block SSH Access #####
sshd: 192.168.1.100
sshd: 192.168.1.0/255.255.255.0

##### To block FTP Access #####
vsftpd: 192.168.1.100
vsftpd: 192.168.1.0/255.255.255.0

Сохраните и выйдите из файла.

Теперь перезапустите службы sshd и vsftpd, чтобы новые изменения вступили в силу.

--------------- For SSH Service ---------------
service sshd restart        [On SysVinit]
systemctl restart sshd      [On SystemD]
--------------- For FTP Service ---------------
service vsftpd restart        [On SysVinit]
systemctl restart vsftpd      [On SystemD]

Теперь попробуйте подключиться по SSH к серверу или с заблокированного хоста.

ssh 192.168.1.150

Вы увидите следующий результат:

ssh_exchange_identification: read: Connection reset by peer

Теперь попробуйте подключиться к FTP-серверу или с заблокированного хоста.


ftp 192.168.1.150

Вы увидите следующий результат:

Connected to 192.168.1.150.
421 Service not available.

Чтобы снова разблокировать или включить службы SSH и FTP, отредактируйте файл hosts.deny, закомментируйте все строки и, наконец, перезапустите службы vsftpd и sshd.

Заключение

Это все на данный момент. Подводя итог, сегодня мы узнали, как заблокировать определенный IP-адрес и сетевой диапазон с помощью IPTables, FirewallD и TCP-оболочек. Эти методы довольно просты и понятны.

Даже начинающий администратор Linux сможет сделать это за пару минут. Если вы знаете другие способы заблокировать доступ по SSH и FTP, поделитесь ими в разделе комментариев. И не забудьте поделиться нашими статьями во всех социальных сетях.