Закрыть все порты линукс

Закрыть все кроме 22, 80, 5432 портов через iptables?

Подскажите пожалуйста команды в iptables, для того что бы:

1. закрыть все входящие порты, кроме 22, 80, 5432

2. открыть все исходящие порты

3. открыть порт 80 для всех входящих соединений

4. открыть 22 и 5432 порты только для конкретного IP

1. закрыть все входящие порты
iptables -P INPUT DROP
2. открыть все исходящие порты
iptables -P OUTPUT ACCEPT
3. открыть порт 80 для всех входящих соединений
iptables -A INPUT —dport 80 -j ACCEPT
4. открыть 22 и 5432 порты только для конкретного IP
iptables -A INPUT -m multiport —dports 22,5432 -s IP_ADDRESS -j ACCEPT

И сохранить настройки вроде так: //sbin/iptables-save. Помнится вроде так и делал, но что-то не всё выходило. Отпишитесь, если всё получится (и скрипт тоже)).

iptables-save выдает список правил в формате, который можно скормить iptables-restore.
Можно это вручную, сохранять в файл, на автозапуск настроить iptables-restore < file, либо init-скрипты дистрибутивов это обычно умеют:
service iptables save в федоре
/etc/init.d/iptables save в gentoo

ГЛАВНОЕ не выполнять это по ssh, иначе после первой строчки настройка закончится.
Дополнительно советую сначала отправлять «остальные» пакеты не в дроп, а в лог — так можно обнаружить порты, которые изначально забыли открыть.

Не закончиться, если делать через &&…
Для пущей безопасности можно подстаховаться и сделать (sleep 120 && reboot) &

Ну, ты пишешь в консоле «iptables -P INPUT DROP» и отрубаешься от своего сервера до тех пор, пока он не перезапуститься =) VPS можно из панели управления перезапустить, а если сервер физический… придеться звонить ребятам тех. поддержки =)

Читайте также:  Kaspersky agent astra linux

При настройке через ssh лучше сначала сделать разрешающее правило на порт ssh, после чего убедиться что оно работает (посмотреть счетчик пакетов по нему). Если всё сделать с первого раза правильно, то проблем, конечно, не будет, однако береженого бог бережет. У меня поначалу случались такие ошибки.
И еще раз повторюсь про трюк с отправкой в лог по-умолчанию, пару раз это помогало найти порты, которые изначально открыть забыл.

С вашим конфигом исходящие соединения работать не будут. Необходимо ещё правило, разрешающее прохождение ответных пакетов (что-то вроде «iptables -A INPUT -i eth0 —match state —state ESTABLISHED,RELATED -j ACCEPT»). Ниже есть правильное решение.

cjey

должно получиться что-то вроде этого
# Настраиваем политики по умолчанию
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# удаляем все имеющиеся правила
iptables -F
iptables -t nat -F
iptables -t mangle -F

iptables -X
iptables -t nat -X
iptables -t mangle -X

# правила входящих соединений
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 —match state —state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp —dport 80 —match state —state NEW -j ACCEPT
iptables -A INPUT -i eth0 —source 192.168.0.10 -p tcp —dport 22 —match state —state NEW -j ACCEPT
iptables -A INPUT -i eth0 —source 192.168.0.10 -p tcp —dport 5432 —match state —state NEW -j ACCEPT

# Правила исходящих соединений
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -o eth0 —match state —state NEW, ESTABLISHED, RELATED -j ACCEPT

Источник

How to Find Open Ports and Close Them in Linux

Troubleshooting networks? Here’s how to find the open ports and close those open ports in the Linux command line.

So you are dealing with a critical server where you have to maintain security at any cost. And closing ports to block unwanted traffic is the first step you’d take.

Читайте также:  Все форматы пакетов linux

Find open ports in Linux

In this tutorial, I am going to use the ss command to find open ports.

You can use the -l option with the ss command to get listening ports. But to be more specific, I’m going with -lt to get listening TCP ports:

list listening tcp ports in linux

Similarly, if you want to have a list of both TCP and UDP in the listening state, you can use the given command:

list of both TCP and UDP ports in the listening state

And to get the listening port of each service, you can use -n and for more fine-tuned results, you can always use the grep command:

get listening port of currently running service

Enough of finding open ports, let’s jump to how you can close them.

Close open ports in Linux

To close the port, first, you will need to stop the service and to find the service name, you can use the same ss command with -p option:

sudo ss -tulnp | grep LISTEN

find open ports with service names attactched to it

As you can see, the NGINX is utilizing port number 80. So let’s stop it using the given command:

sudo systemctl stop nginx

As it will enable itself on every boot and you can alter this behavior using the given command:

sudo systemctl disable nginx

For better results, I would recommend changing firewall rules.

Here, I’m going to block port no 80 (used by NGINX) in UFW (which is pre-installed in Ubuntu).

First, let’s check the status of UFW:

check status of ufw

And if it shows inactive , you can use the given command to enable it:

Now, you just have to pair the deny option with the port number :

deny nginx server from ufw

close port no 80

Wrapping Up

This was my take on how you can find and close open ports in Linux. I hope you will find this helpful.

And if you have any queries, let me know in the comments.

Читайте также:  Скрипт автоматической установки linux

Источник

iptables — закрыть все порты кроме веб и ssh

Сервер Ubuntu 16.04 + fail2ban + iptables. На сервере куча сайтов PHP + MySQL (c SSL и без). Задача закрыть все порты, кроме портов 80 для сайтов без SSL, 443 для сайтов в SSL таким образом, чтобы сайты были доступны для пользователей из вне, а все сервисы сервера закрыты для «злоумышленников». fail2ban хорошо справляется с брутфорсом (в данный момент временно заблокировано около 700 штук IP-адресов). Но хотелось бы полностью заблокировать доступ к серверу для всех без возможности перебора паролей. Идея такая: добавить в начало цепочки INPUT iptables

iptables -I INPUT 1 -s 123.123.123.123 -j ACCEPT iptables -I INPUT 2 -p tcp --dport 22 -j ACCEPT iptables -I INPUT 3 -dport !80,443 -j REJECT 

Первой строкой разрешаем все входящие пакеты с моего домашнего IP-адреса. Второй строкой делаем исключение для SSH разрешаем доступ к порту 22 для всех. Для всех потому что хоть у меня и белый IP, но провайдер может в будущем поменять мой IP-шник по своему усмотрению и я могу потерять доступ к серверу, если закрою порт 22 для всех. Третей строкой для всех (если не сработали два правила выше) закрываем все порты кроме веб (80 — http и 443 — https). REJECT (вместо DROP) — для того, чтобы не висели открытые соединения, а отправлялись обратно служебные сообщения о недоступности порта (согласно документации iptables). Вопросы: Верны ли мои рассуждения? Нужно ли прописывать отдельное правило для localhost/127.0.0.1 чтобы PHP имел доступ к базам mySQL да и вообще внутри сервера без ограничений? Что еще не предусмотрел, для корректной работы Ubuntu в качестве веб-сервера сайтов? Возможно браузеры пользователей и поисковые системы используют еще какие-то порты о которых я не знаю. Некоторые скрипты на сервере используют PHP-команду copy. Будет ли она корректно работать, если в цепочке INPUT для iptables открыты только порты 22,80,443?

Источник

Оцените статью
Adblock
detector