Перевірка відкритих портів на Ubuntu може знадобитися, щоб переконатися, що в системі не запущені зайві служби. Якщо ви пам'ятаєте, порт це число, яке додаток буде використовувати для зв'язку з іншою програмою, надавати сервіс і т.д. Щоб отримати уявлення про те, які служби працюють в системі, необхідно перевірити відкриті порти системи.
Часто ми встановлюємо програму, яка є сервісом, а потім забуваємо про неї, тому наша машина може прослуховувати порти в очікуванні з'єднання. Зловмисники люблять, коли порти відкриті, так як додатки, що прослуховують ці порти, є простими цілями. Щоб забезпечити нашій системі Ubuntu Linux (або будь-який інший системі в цьому відношенні) максимальну безпеку, ми повинні знати про те, які порти відкриті і для яких служб.
Перевірка відкритих портів на Ubuntu
Щоб перевірити, які порти відкриті на нашій робочої станції Ubuntu, можна виконати команду, показану нижче. Зверніть увагу, що вона повинна працювати і для інших різновидів Linux, якщо встановлена утиліта netstat.
Виконайте в терміналі наступну команду:
netstat -anltp | grep «LISTEN»
Звичайний веб-сервер, на якому запущені FTP, SSH і MySQL, виведе наступну інформацію:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 21432 / mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4090 / apache2
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7213 / sshd
tcp6 0 0. 21. * LISTEN 19023 / proftpd
tcp6 0 0. 22. * LISTEN 7234 / sshd
Вищевказана команда запускає утиліту netstat з відповідними прапорами і передає висновок функції grep, яка витягує рядки, що містять слово «LISTEN». В результаті ми отримуємо список відкритих портів і імена процесів, що прослуховують ці порти.
Всі команди netstat, ss, netcat відноситься до мережевих утиліт і доступні за замовчуванням в більшості linux-дистрибутивах.
Команда netstat вміє показувати мережеві з'єднання (вхідні / вихідні), таблицю маршрутизації, статистику по мережних інтерфейсів і т.д.
Читати також Чому погано працювати під рутом?
Список всіх відкритих портів (TCP)
Список всіх відкритих портів (UDP)
Список тільки прослуховує портів (TCP)
Статистика по всіх відкритих портів
Детальний відображення списку з відкритими портами - доданий PID і ім'я процесів
Список підключених хостів
Утиліта ss дозволяє переглядати інформацію про використовувані сокетах в системі. Ця команда має схожий функціоналом до netstat. але є і унікальні можливості. Наприклад можна фільтрувати висновок за встановленими з'єднанням з певним портом.
Список процесів, що використовують з'єднання в даний момент
Список сокетов в режимі прослуховування
Приклад фільтра - список всіх з'єднань до порту 80
Утиліта lsof вміє відображати процеси, які працюють з певним файлом або сокетом.
Список всіх мережевих з'єднань
Список процесів, що працюють з портом 80
Утиліта netcat дозволяє передавати / приймати дані через TCP / UDP з'єднання.
Шаблон виклику утиліти
Відкриємо прийом (ключ -l) даних на порте +1234 з докладним виведенням інформації (ключ -v) і продовженням роботи після розриву з'єднання (ключ -k), по-замовчуванню nc розриває з'єднання після першого дісконект.
Підключаємося до відкритого порту і відправимо import antigravity 😉
Приклад більш корисного використання nc - передача файлу. На приймаючій стороні
На відправляє стороні
Або можна віддавати файл будь-якого підключився. На передавальній стороні
На приймаючій стороні
Приклад відкриття shell'а на певному порте (джерело). На стороні, де потрібно відкрити йшов
Ще один корисний приклад з netcat - запуск процесу, з можливістю відстеження його роботи через мережу
Які порти відкриті для зовнішнього світу?
Читати також Трохи про Linux
Зверніть увагу, що сервіс може мати відкритий порт, який можна прослуховувати тільки на поточній машині. Тобто, порт відкритий, але ви не зможете отримати до нього доступ з мережі.
Це корисно для безпеки, наприклад, веб-сервер повинен мати відкритий для решти світу порт 80, але світ не повинен знати про (або мати можливість підключення) порте 3306, який прослуховує сервер MySQL, що підтримує вебсайт.
В ідеалі, якщо ви використовуєте веб-сервер, єдині порти, які повинні бути видні ззовні це HTTP-порт 80, і можливо, SSH порт 22, оскільки вам знадобиться підключатися до веб-сервера для виконання команд.
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 21432 / mysqld
Джерело статті - SEO Блог