Linux - абсолютно безпечна система? Ні в якому разі. Linux безпечний рівно настільки, наскільки він малопоширених. А перемоги Ubuntu з кожним днем наближають нас до того, що Linux стане цікаво зламувати, і тоді з'явиться весь зоопарк шкідливого ПО, який вже знайомий користувачам Windows і Mac OS X. Так що ж робити, щоб робота з Linux була більш безпечною?
Репозиторії, PPA та інше
На відміну від Windows / Mac OS X, в більшості дистрибутивів Linux практикується централізована установка програм і оновлень з репозиторіїв. Зазвичай в таких репозиторіях є все, що потрібно, але якщо вам не пощастило і якийсь дуже потрібної софтина немає - все одно шукайте репозиторії. В Ubuntu існують Personal Package Archives, які містять практично весь софт світу, але пам'ятайте - PPA заповнюють люди, і потрібно перед підключенням чергового PPA подивитися - а які відгуки залишають люди, і що звідти тягнеться? Особливо це стосується PPA з маловідомими і підозрілими програмами. Ну і вже на крайній випадок користуйтеся офіційними сайтами програм і їх пакетами. Але будьте пильні - троян в скрінсейвер в Ubuntu-пакет уже запихали!
unSecure Shell
З метою полегшення адміністрування та віддаленої установки системи деякі дистрибутиви можуть запускати SSH після установки при запуску системи. Ви можете перевірити, чи запущений у вас SSH, так:
$ Ps aux | grep sshd
Якщо у вихлопі є щось типу такого:
значить, у вас запущений SSH. Вимкнути його ви можете через управління сервісами. Наприклад, в Ubuntu:
$ Sudo service ssh stop
зупиняє сервіс. А команда:
$ Sudo update-rc.d -f ssh remove
прибирає сервіс SSH з автозавантаження (Варто зазначити, що прибирає рівно до першого оновлення пакету openssh-server. Так що простіше його взагалі видалити, якщо не потрібен. Прим. ред.).
# Вимкнути можливість логіна під root
PermitRootLogin no
# Вимкнути можливість логінитися з порожнім паролем
PermitEmptyPasswords no
# Заборонити тупий підбір пароля: обмежити кількість спроб трьома
MaxAuthTries 3
# Вимкнути багатосесійність режим: ви не зможете зайти по SSH, якщо інша SSH-сесія вже активна!
MaxSessions 1
# Дозволити лише певним учасникам вхід по SSH
AllowUsers me mymom mygrandma
Багато ще рекомендують переназначать порт з 22-го на який-небудь інший, але якщо вами раптом зацікавляться, nmap покаже начіліе «входу» на незрозумілій порту, і це буде більшою приманкою. Втім, існують так звані honeypot, вирішальні завдання відволікання уваги, але про них як-небудь іншим разом.
закрийся фаєрволом
У Linux існує потужний фаєрвол iptables, який дозволяє закрити всі небажані з'єднання. Якщо у вас невибагливе використання мережі, і підключення до вашого комп'ютера, ініційовані ні з вашого комп'ютера, вам не потрібні, ви можете подивитися ваші мережеві інтерфейси командою ifconfig (вона видасть всі інтерфейси, за якими у вас йде мережевий обмін, і невелику статистику по ним), і для всіх з них, крім lo (loopback-інтерфейс петлі комп'ютера на самого себе), зробити заборону вхідного неіціірованного вами трафіку:
$ Sudo iptables -A INPUT -i ваш_інтерфейс (наприклад, eth0) -j DROP
Після чого весь непотрібний вам вхідний трафік буде блокований.
Однак, NetworkManager може пориватися ігнорувати iptables-правила, тому ми повинні «розповісти» йому про них. В першу чергу, збережемо правила для поточної конфігурації iptables:
$ Sudo bash -c "iptables-save> /etc/iptables.rules"
Тепер ми можемо записати в /etc/NetworkManager/dispatcher.d/01firewall скрипт, що дозволяє відновити NetworkManager-у при старті наші правила iptables. Скрипт виглядає так:
if [-x / usr / bin / logger]; then
LOGGER = "/ usr / bin / logger -s -p daemon.info -t FirewallHandler"
else
LOGGER = echo
fi
case "$ 2" in
up)
if [. -r /etc/iptables.rules]; then
$ "No iptables rules exist to restore."
return
fi
if [. -x / sbin / iptables-restore]; then
$ "No program exists to restore iptables rules."
return
fi
$ "Restoring iptables rules"
/ Sbin / iptables-restore -c ;;
down)
if [. -x / sbin / iptables-save]; then
$ "No program exists to save iptables rules."
return
fi
$ "Saving iptables rules."
/ Sbin / iptables-save -c> /etc/iptables.rules
;;
*)
;;
esac
Після перезапуску NetworkManager буде поважати правила iptables і сюблюдать їх.
Ну а якщо ви вирішили, що вам потрібен SSH, то вам необхідно налаштувати прийом вхідних з'єднань з нього:
$ Sudo iptables -A INPUT 1 -p tcp --dport ssh -j ACCEPT
Після виконання даної команди SSH-трафік не буде блокуватися. Поточні правила iptables ви завжди можете перевірити командою:
$ Sudo iptables -L
і якщо вони вас влаштовують, зберегти для автозапуску вже згадуваної вище командою:
$ Sudo bash -c "iptables-save> /etc/iptables.rules"
замість висновку
Описані вище дії допоможуть вам зробити свій Linux трохи захищеності, але як не дивно, головний захисник вашої системи - той, хто розташований між монітором і стільцем. І якщо ви будете думати про свою безпеку, не влазити на сумнівні сайти і не запускати сумнівні програми / скрипти - то ваша система стане найбільш безпечною. Адже, як відомо, людський фактор завжди є вирішальним. Удачі, і будьте пильні!