Як встановити Tiny Tiny RSS Reader на FreeBSD 11 FAMP VPS
Використання іншої системи? Tiny Tiny RSS Reader — це безкоштовний зчитувач і агрегатор новин (RSS/Atom) із відкритим вихідним кодом, що розміщується на власному веб-сторінці.
Сервери VPS часто стають мішенню зловмисників. Поширений тип атаки відображається в системних журналах у вигляді сотень несанкціонованих спроб входу через ssh. Налаштування брандмауера дуже корисно, але само по собі може не контролювати руйнівні спроби вторгнення.
У цьому підручнику показано, як створити розширений бар’єр вторгнення для FreeBSD за допомогою двох програм, ipfw
брандмауера та sshguard
. SSHGuard — це невелика додаткова програма, яка відстежує системні журнали на наявність «зловживаючих» записів. Коли правопорушники намагаються отримати доступ, sshguard
інструкція ipfw
блокувати трафік, що надходить з IP-адреси порушника. Тоді правопорушника фактично закривають.
Коли ви зрозумієте, як працюють ці програми, керувати захистом сервера досить просто. Хоча цей посібник зосереджено на налаштуванні FreeBSD, його частини застосовуються до інших ОС і програмного забезпечення брандмауера.
FreeBSD надає 3 брандмауери в GENERIC
ядрі за замовчуванням ( ) ipfw
, pf
, і ipfilter
. Кожен з них має переваги та шанувальники, але ipfw
є рідним програмним забезпеченням брандмауера FBSD і досить простим у використанні для наших цілей. Варто зазначити, що він ipfw
виконує багато речей, як показує його сторінка керівництва , однак такі можливості, як NAT, формування трафіку тощо, не потрібні для типової ситуації VPS. На щастя, основні функції брандмауера легко відповідають нашим вимогам.
Щоб запустити брандмауер під час завантаження, додайте наступне до /etc/rc.conf
:
firewall_enable="YES"
firewall_script="/usr/local/etc/IPFW.rules"
firewall_logging="YES"
Доступна service
команда для запуску/зупинки брандмауера вручну:
[user@vultr ~]$ sudo service ipfw start
Природно, ipfw
не буде робити нічого, доки не додасть правила, часто з файлу, у цьому прикладі, розташованому за адресою /usr/local/etc/IPFW.rules
. Фактично, файл правил може розташовуватися де завгодно або мати будь-яку назву, якщо він відповідає параметру «firewall_script». Файл правил детально описано нижче.
sshguard
представлений у кількох варіантах для використання з різними брандмауерами. Використовуйте pkg
утиліту для отримання та встановлення sshguard-ipfw
:
[user@vultr ~]$ sudo pkg install sshguard-ipfw
У більшості випадків це все, що потрібно зробити. Відповідна змінна автоматично вставляється /etc/rc.conf
для запуску під час завантаження:
sshguard_enable="YES"
Значення за замовчуванням зазвичай працюють добре. Якщо потрібні інші значення, sshguard
сторінка man надає детальну інформацію про параметри:
# sshguard--program defaults, so don't need to be in rc.conf unless assigning different value
# sshguard_pidfile="/var/run/sshguard.pid"
# sshguard_watch_logs="/var/log/auth.log:/var/log/mail"
# sshguard_blacklist="40:/var/db/sshguard/blacklist.db"
# sshguard_safety_thresh="40"
# sshguard_pardon_min_interval="420"
# sshguard_prescribe_interval="1200"
Ви можете почати sshguard
зі звичайного service
виклику:
[user@vultr ~]$ sudo service sshguard start
Найважче створити набір правил брандмауера. ipfw
може використовувати наданий /etc/rc.firewall
сценарій, але його потрібно змінити, щоб пристосувати SSHGuard, а також різні сценарії роботи. Кілька веб-сторінок і посібник з FreeBSD містять корисну інформацію про це. Однак написати файл правил не так вже й складно, крім того, користувацький набір правил легше зрозуміти та змінити, коли це необхідно.
Важливою особливістю ipfw
правил є те, що перший матч перемагає, а це означає, що порядок правил важливий. У ipfw
кожне правило є командою, а файл правила є виконуваним сценарієм оболонки. Це дозволяє змінювати набір правил, змінюючи правила, а потім запускаючи файл правил як сценарій оболонки:
[user@vultr /usr/local/etc]$ sudo ./IPFW.rules
Як правило, файл правил визначає змінну для ipfw
команди, потім очищає поточні правила, видає загальні правила, а потім переходить до встановлення правил «out», а потім «вхідних». Сторінка посібника ipfw та інші ресурси містять велику кількість інформації про структуру правил і параметрів, яких, м’яко кажучи, багато.
Оскільки версія FreeBSD sshguard була оновлена до версії 1.6.2, метод вставки правил блокування для порушників змінився. Тепер адреси правопорушників зберігаються в таблиці ipfw (точніше таблиця 22), а не вставляються в правила вище 55000, як раніше.
На щастя, налаштувати файл правил для використання таблиці досить просто. Це просто питання розміщення правила таблиці в потрібному місці та використання правильного синтаксису під час написання правила.
Знайшовши sshguard
правопорушника, він поміщає адресу порушника до свого чорного списку, а також вставляє адресу в ipfw
таблицю, щоб «запустити» заборону доступу. Це правило досягне таких цілей:
01000 deny ip from table\(22\) to any
У цьому випадку все одно необхідно встановити правила, що дозволяють вхідні послуги вище 01000. Наприклад, припустимо, що адреса 10.20.30.40
є злочинцем у таблиці 22, і ми маємо таке правило ipfw:
56420 allow tcp from any to me dst-port 22 in via $vif
Оскільки ipfw
зустріч правити 01000 перед тим правилом 56420 , 10.20.30.40
буде заблоковано . Правило «дозволити 22 увійти» взагалі ніколи не побачить цього. Якби правило дозволу мало "звичайний" номер, наприклад 00420 , поганий трафік буде пропущений і ніколи не заблокований (оскільки 00420 менше 01000 і "перемагає перший матч").
Приємною особливістю оновленої версії є те, що тепер, коли sshguard запускається, всі адреси з чорного списку додаються до таблиці та доступні для блокування вхідних правопорушників без затримки. Чорний список накопичується і зберігається між сеансами.
На цьому етапі, ймовірно, доцільно показати повний ipfw
набір правил, змінений для sshguard
. Коментарі мають полегшити дотримання логіки правила:
#!/bin/sh
# ipfw config/rules
# from FBSD Handbook, rc.firewall, et. al.
# Flush all rules before we begin.
ipfw -q -f flush
# Set rules command prefix
cmd="ipfw -q add "
vif="vtnet0"
# allow all for localhost
$cmd 00010 allow ip from any to any via lo0
# checks stateful rules. If marked as "keep-state" the packet has
# already passed through filters and is "OK" without futher
# rule matching
$cmd 00101 check-state
# allow DNS out
$cmd 00110 allow tcp from me to any dst-port 53 out via $vif setup keep-state
$cmd 00111 allow udp from me to any dst-port 53 out via $vif keep-state
# allow dhclient connection out (port numbers are important)
$cmd 00120 allow udp from me 68 to any dst-port 67 out via $vif keep-state
# allow HTTP HTTPS replies
$cmd 00200 allow tcp from any to any dst-port 80 out via $vif setup keep-state
$cmd 00220 allow tcp from any to any dst-port 443 out via $vif setup keep-state
# allow outbound mail
$cmd 00230 allow tcp from any to any dst-port 25 out via $vif setup keep-state
$cmd 00231 allow tcp from any to any dst-port 465 out via $vif setup keep-state
$cmd 00232 allow tcp from any to any dst-port 587 out via $vif setup keep-state
# allow icmp re: ping, et. al.
# comment this out to disable ping, et.al.
$cmd 00250 allow icmp from any to any out via $vif keep-state
# alllow timeserver out
$cmd 00260 allow tcp from any to any dst-port 37 out via $vif setup keep-state
# allow ntp out
$cmd 00270 allow udp from any to any dst-port 123 out via $vif keep-state
# allow outbound SSH traffic
$cmd 00280 allow tcp from any to any dst-port 22 out via $vif setup keep-state
# otherwise deny outbound packets
# outbound catchall.
$cmd 00299 deny log ip from any to any out via $vif
# inbound rules
# deny inbound traffic to restricted addresses
$cmd 00300 deny ip from 192.168.0.0/16 to any in via $vif
$cmd 00301 deny ip from 172.16.0.0/12 to any in via $vif
$cmd 00302 deny ip from 10.0.0.0/8 to any in via $vif
$cmd 00303 deny ip from 127.0.0.0/8 to any in via $vif
$cmd 00304 deny ip from 0.0.0.0/8 to any in via $vif
$cmd 00305 deny ip from 169.254.0.0/16 to any in via $vif
$cmd 00306 deny ip from 192.0.2.0/24 to any in via $vif
$cmd 00307 deny ip from 204.152.64.0/23 to any in via $vif
$cmd 00308 deny ip from 224.0.0.0/3 to any in via $vif
# deny inbound packets on these ports
# auth 113, netbios (services) 137/138/139, hosts-nameserver 81
$cmd 00315 deny tcp from any to any dst-port 113 in via $vif
$cmd 00320 deny tcp from any to any dst-port 137 in via $vif
$cmd 00321 deny tcp from any to any dst-port 138 in via $vif
$cmd 00322 deny tcp from any to any dst-port 139 in via $vif
$cmd 00323 deny tcp from any to any dst-port 81 in via $vif
# deny partial packets
$cmd 00330 deny ip from any to any frag in via $vif
$cmd 00332 deny tcp from any to any established in via $vif
# allowing icmp re: ping, etc.
$cmd 00310 allow icmp from any to any in via $vif
# allowing inbound mail, dhcp, http, https
$cmd 00350 allow udp from any 53 to me in via $vif
$cmd 00360 allow tcp from any 53 to me in via $vif
$cmd 00370 allow udp from any 67 to me dst-port 68 in via $vif keep-state
$cmd 00400 allow tcp from any to me dst-port 80 in via $vif setup limit src-addr 2
$cmd 00410 allow tcp from any to me dst-port 443 in via $vif setup limit src-addr 2
# SSHguard puts offender addresses in table 22. Set up the table rule
# Please note the '\(22\)' syntax, necessary since it's run as shell command
$cmd 01000 deny ip from table\(22\) to any
# allow inbound ssh, mail. PROTECTED SERVICES: numbered ABOVE sshguard blacklist range
$cmd 56420 allow tcp from any to me dst-port 22 in via $vif setup limit src-addr 2
$cmd 56530 allow tcp from any to any dst-port 25 in via $vif setup keep-state
$cmd 56531 allow tcp from any to any dst-port 465 in via $vif setup keep-state
$cmd 56532 allow tcp from any to any dst-port 587 in via $vif setup keep-state
# deny everything else, and log it
# inbound catchall
$cmd 56599 deny log ip from any to any in via $vif
# ipfw built-in default, don't uncomment
# $cmd 65535 deny ip from any to any
Потреби системи відрізняються, і різні варіанти портів для блокування або розблокування відображаються в наборі правил. Після завершення набору правил збережіть файл у /usr/local/etc/IPFW.rules
та запустіть служби FBSD:
# service ipfw start
# service sshguard start
Тепер розширений брандмауер має працювати! Перевірити sshguard
:
[user@vultr ~]$ sudo pgrep -lfa ssh
Якщо sshguard
запущено, відображаються його pid і повний командний рядок:
720 /usr/local/sbin/sshguard -b 40:/var/db/sshguard/blacklist.db -l /var/log/auth.log -l /var/log/maillog -a 40 -p 420 -s 1200 -w /usr/local/etc/sshguard.whitelist -i /var/run/sshguard.pid
Це показує набір правил брандмауера зі статистикою та останній раз, коли пакет відповідав правилу:
[user@vultr ~]$ sudo ipfw -cat list
Через години чи дні адреси правопорушників додаються до чорного списку, а також до таблиці 22. Щоб переглянути всі адреси в таблиці, скористайтеся цією командою:
ipfw table 22 list
Результат друкується як:
10.10.10.118/32 0
10.10.10.72/32 0
...
Як описано вище, підключення з цих адрес заборонено. Звичайно, під час першого запуску sshguard
в списку не буде жодної адреси, але з часом він може стати досить довгим. Одним з варіантів є створення окремих правил блокування для адрес із кількома записами в таблиці, а потім видалення їх із чорного списку.
Бажано час від часу перевіряти журнали, щоб переконатися, що вторгнення контролюються. Загалом /var/log/auth.log
і /var/log/security
інформативні. Можуть стати очевидними прогалини або помилки в охопленні мережевих послуг. Змінення набору правил брандмауера за потреби є звичайною частиною адміністрування сервера.
У попередніх версіях sshguard, коли /var/db/sshguard/blacklist.db
файл збільшувався, він міг запобігти sshguard
запуску під час завантаження системи. Видалення або перейменування файлу чорного списку дозволено sshguard
почати. Здається, цю проблему вирішено в останній версії sshguard, тому цей обхідний шлях, ймовірно, більше не потрібен.
Обов’язково внесіть в білий список IP-адресу, з якої ви підключені до сеансу SSH. Якщо ви випадково заблокуєте себе, ви завжди можете підключитися до консолі noVNC на https://my.vultr.com і додати свою IP-адресу в білий список.
Підводячи підсумок, використання комбінації ipfw
та sshguard
допомагає підтримувати вашу систему FreeBSD в безпеці та виконувати свою роботу. Зведення до мінімуму нав’язливої мережевої активності має додаткову перевагу: менше «шуму» полегшує відстеження та налаштування роботи системи, сприяючи безпечнішому та краще працюючому серверу.
Ефективний захист системи/сервера FreeBSD не є особливо складним. Хоча для його запуску потрібні скромні зусилля, це окупається значно більшою безпекою VPS та проектом.
Використання іншої системи? Tiny Tiny RSS Reader — це безкоштовний зчитувач і агрегатор новин (RSS/Atom) із відкритим вихідним кодом, що розміщується на власному веб-сторінці.
Використання іншої системи? Wiki.js — це безкоштовний сучасний вікі-додаток з відкритим вихідним кодом, побудований на Node.js, MongoDB, Git і Markdown. Вихідний код Wiki.js є публічним
Використання іншої системи? Pagekit 1.0 CMS – це красива, модульна, розширювана та легка, безкоштовна система керування вмістом (CMS) з відкритим вихідним кодом.
Використання іншої системи? MODX Revolution — це швидка, гнучка, масштабована система управління вмістом (CMS) корпоративного рівня з відкритим кодом, написана на PHP. Це я
У цій статті ви дізнаєтеся, як налаштувати OpenBSD 5.5 (64-розрядна версія) на KVM за допомогою Vultr VPS. Крок 1. Увійдіть в панель керування Vultr. Крок 2. Натисніть РОЗВЕРНУТИ
Використання іншої системи? osTicket — це система продажу квитків з відкритим вихідним кодом. Вихідний код osTicket відкрито розміщено на Github. У цьому підручнику
Використання іншої системи? Flarum — це безкоштовне програмне забезпечення нового покоління з відкритим вихідним кодом, яке робить онлайн-обговорення веселими. Вихідний код Flarum розміщений o
Використання іншої системи? TLS 1.3 — це версія протоколу безпеки транспортного рівня (TLS), який був опублікований у 2018 році як запропонований стандарт у RFC 8446.
Вступ WordPress є домінуючою системою керування вмістом в Інтернеті. Він забезпечує все, від блогів до складних веб-сайтів із динамічним вмістом
Використання іншої системи? Subrion 4.1 CMS — це потужна та гнучка система керування вмістом із відкритим кодом (CMS), яка забезпечує інтуїтивно зрозумілий та зрозумілий вміст
Цей підручник покаже вам, як налаштувати службу DNS, яку легко підтримувати, легко налаштовувати і яка, як правило, є більш безпечною, ніж класичний BIN
Стек FEMP, який можна порівняти зі стеком LEMP в Linux, являє собою набір програмного забезпечення з відкритим вихідним кодом, яке зазвичай встановлюється разом для забезпечення FreeBS
MongoDB — це база даних NoSQL світового класу, яка часто використовується в нових веб-додатках. Він забезпечує високопродуктивні запити, шардінг та реплікацію
Використання іншої системи? Monica — це відкрита система управління особистими відносинами. Подумайте про це як про CRM (популярний інструмент, який використовується відділами продажів у м
Вступ У цьому підручнику демонструється OpenBSD як рішення для електронної комерції з використанням PrestaShop і Apache. Apache потрібен, оскільки PrestaShop має складну UR
Використання іншої системи? Fork — це CMS з відкритим кодом, написана на PHP. Вихідний код Forks розміщено на GitHub. Цей посібник покаже вам, як встановити Fork CM
Використання іншої системи? Directus 6.4 CMS — це потужна та гнучка, безкоштовна система керування вмістом без голови (CMS) з відкритим вихідним кодом, яка надає розробнику
Сервери VPS часто стають мішенню зловмисників. Поширений тип атаки відображається в системних журналах у вигляді сотень несанкціонованих спроб входу через ssh. Налаштовуючи
Вступ OpenBSD 5.6 представив новий демон під назвою httpd, який підтримує CGI (через FastCGI) і TLS. Для встановлення нового http не потрібно додатково працювати
Цей підручник покаже вам, як встановити групове програмне забезпечення iRedMail на нову інсталяцію FreeBSD 10. Ви повинні використовувати сервер з принаймні одним гігабайтом o
Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.
Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.
Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.
Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.
Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…
Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.
Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.
Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.
У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.
Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше