Как заблокировать SSH и FTP-доступ к определенному IP-адресу и сетевому диапазону в Linux
Обычно мы все часто используем службы SSH и FTP для доступа к удаленным серверам и виртуальным частным серверам. Как администратор Linux, вы должны знать, как заблокировать SSH и FTP-доступ к определенному IP-адресу или сетевому диапазону в Linux, чтобы еще больше усилить безопасность.
- 25 советов по усилению безопасности серверов Linux
- 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.
- Базовое руководство по IPTables (межсетевой экран Linux) Советы/команды
- Как настроить брандмауэр Iptables для обеспечения удаленного доступа к службам в Linux
- Как настроить FirewallD в RHEL/CentOS 7 и Fedora 21
- Полезные правила 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, что означает, что вы можете указать, каким хостам разрешено подключаться, не затрагивая брандмауэр, в следующих двух важных файлах:
- /etc/hosts.allow
- /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, поделитесь ими в разделе комментариев. И не забудьте поделиться нашими статьями во всех социальных сетях.