Як закрити порт iptables

Сервери і комп`ютери, підключені до інтернету схильні до атак і скануванню різних скриптів, програм і зловмисників. А оскільки відомо, що у всіх системах можуть бути уразливості, то краще, щоб ззовні було видно мінімум портів.

Деякі порти повинні бути видні постійно, наприклад, порт веб-сервера, інші використовуються тільки системними адміністраторами, а ще одні, взагалі, повинні бути доступні тільки локально. Незважаючи на те що всі сервіси мають методи авторизації, і не дозволять підключитися кому попало, вони можуть бути уразливі, тому все зайве краще закрити. У цій статті ми розглянемо як закрити порт iptables. Ми закриємо потрібні порти повністю, а також зробимо деякі з них доступними на час, після спроби підключення до певного порту.

Як закрити порт Iptables

У цій статті я не стану детально розглядати всі можливості Iptables, види ланцюжків і як працює ця служба. Все це ми розглянули в статті настройка Iptables для початківців. Замість цього, перейдемо ближче до справи. Щоб заблокувати порт нам спочатку потрібно зрозуміти які порти відкриті в Linux і за що вони відповідають. Щоб подивитися які порти слухаються локально, можна використовувати утиліту netstat:

Відео: Як відкрити порти. Докладна інструкція. Налаштування роутера і Firewall

$ Nmap localhost

Як бачите, ззовні у нас, крім стандартних портів веб-сервера, доступні mysql, ftp, dns і інші сервіси. Деякі з них не повинні бути доступні публічно. Це не критично, але і небажано. Ми можемо дуже просто закрити такі порти за допомогою iptables. Загальний синтаксис команди для блокування порту буде виглядати ось так:

$ Iptables -A INPUT -p tcp --dport номер_порту -j DROP




Наприклад, якщо ми хочемо заблокувати порт iptables mysql, то необхідно виконати:

$ Sudo iptables -A INPUT -i eth1 -p tcp --dport 3306 -j DROP

Або навіть для ip і цілої підмережі. Наприклад, закрити всі підключення до порту 22 SSH крім IP адреси 1.2.3.4:

$ Sudo iptables -A OUTPUT -p tcp --dport 25 -j DROP

Також, як і раніше, ви можете вказати вихідний мережевий інтерфейс, тільки тепер він вказується опцією -o:

$ Sudo iptables-save

Щоб подивитися поточні правила для кожної з ланцюжків виконайте:

Відео: 13. Просунута захист ssh за допомогою iptables. Обмеження кількості підключень в хвилину, годину, день ..

$ Sudo iptables -L -n -v | grep -i DROP


Очистити всі правила в разі виникнення проблем можна командою:

$ Sudo iptables -P INPUT DROP

Потім дозволяємо всі вхідні з`єднання від локального інтерфейсу:

$ Sudo iptables -A INPUT -i eth0 -p tcp --dport 80 --match state --state NEW -j ACCEPT
$ Sudo iptables -A INPUT -i eth0 -p tcp --dport 80 --match state --state NEW -j ACCEPT

Як приховати порт iptables?

Закрити порт, це дуже добре, але що якщо він потрібен нам відкритим і бажано, щоб для інших цей же порт був недоступний. Існує така технологія, як Port Knocking, яка дозволяє відкривати потрібний порт тільки для певного ip адреси і тільки після звернення його до потрібного порту. Наприклад, нам потрібно захистити SSH від перебору паролів і несанкціонованого доступу. Для цього всі пакети, які будуть приходити на порт 22, 111 і 112 ми будемо перенаправляти в ланцюжок SSH.

Як ви вже здогадалися, порт 22 нам безпосередньо потрібен, на порти 111 і 112 будуть включати його і відключати відповідно. Коли користувач звернеться до порту 111 ми вкажемо системі, що потрібно присвоїти всім його пакетам ім`я ssh, при зверненні до порту 112 приберемо цей прапор. А якщо користувач вирішить зайти на 22 порт, то перевіримо присвоєно чи цього пакету ім`я SSH, якщо так, то пропустимо, в іншому випадку - відкинемо.

Спочатку створюємо ланцюжок SSH:

Відео: Як захиститися від вірусу WannaCryptor (WannaCry) за допомогою маршрутизатора і закрити 445 порт?

$ Sudo iptables -A INPUT -p tcp --dport 22 -j SSH
$ Sudo iptables -A INPUT -p tcp --dport 111 -j SSH
$ Sudo iptables -A INPUT -p tcp --dport 112 -j SSH

При зверненні до порту 111 присвоюємо IP адресою ім`я, сам пакет далі не пускаємо:

$ Sudo iptables -A SSH -p tcp -m state --state NEW -m tcp --dport 112 -m recent --remove --name SSH --rsource -j DROP

І нам залишилося тільки перевірити чи має наш пакет, який намагається звернутися до 22 порту ім`я SSH і якщо так, то ми його схвалюємо:

$ Telnet ip_адрес 111

Але зате тепер ви можете отримати доступ до сервісу SSH на порту 22. Щоб знову закрити порт виконайте:

Поділися в соціальних мережах:

Схожі
Обробка закриття вкладкиОбробка закриття вкладки
Налаштування dns в ubuntuНалаштування dns в ubuntu
Nodejs. Клієнти і сервери.Nodejs. Клієнти і сервери.
Налаштування ont eltex nte-rg-1402fНалаштування ont eltex nte-rg-1402f
Найкращі сервери 2016Найкращі сервери 2016
Налаштування fail2ban centos 7Налаштування fail2ban centos 7
Список серверів openvpnСписок серверів openvpn
Безпека сервера linuxБезпека сервера linux
Налаштування openvpn в ubuntuНалаштування openvpn в ubuntu
Відкриті порти ubuntuВідкриті порти ubuntu
» » Як закрити порт iptables