Як закрити порт 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. Щоб знову закрити порт виконайте:
- Безпека сервера linux
- Nodejs. Клієнти і сервери.
- Список серверів openvpn
- Найкращі сервери 2016
- Як користуватися ssh
- Як користуватися nmap для сканування мережі
- Як захиститися від ddos-атак
- Як користуватися telnet
- Як відкрити порт ubuntu
- Установка ntp в ubuntu
- Налаштування shorewall для початківців
- Налаштування openvpn в ubuntu
- Роз`єми на системному блоці. Види і їх призначення
- Denwer і skype
- Зовнішні інтерфейси комп`ютера для підключення пристроїв
- Відкриті порти ubuntu
- Налаштування fail2ban centos 7
- Обробка закриття вкладки
- Налаштування iptables для чайників
- Налаштування dns в ubuntu
- Налаштування ont eltex nte-rg-1402f