IPTables: дозволяти доступ лише до SSH, нічого іншого не входити чи виходити


11

Як налаштувати IPTables так , що він буде тільки дозволить SSH в, і не допускати будь-якого іншого трафіку в або з ?

Будь-які заходи безпеки будь-хто може порекомендувати?

У мене є сервер, який, на мою думку , успішно переміщений з GoDaddy, і я вважаю, він більше не використовується.

Але я хочу переконатися лише тому, що ... ти ніколи не знаєш. :)

Зауважте, що це віртуальний виділений сервер від GoDaddy ... Це означає, що немає резервного копіювання і практично немає підтримки.

Відповіді:


13

Вам потрібно просто встановити політику за замовчуванням на DROP у ланцюгах INPUT та OUTPUT.

Щоб увімкнути SSH, вам потрібні наступні команди:

$ sudo iptables -P INPUT DROP
$ sudo iptables -P OUTPUT DROP
$ sudo iptables -A INPUT -i lo -j ACCEPT
$ sudo iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
$ sudo iptables -A OUTPUT -o lo -j ACCEPT
$ sudo iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

Останні дві команди дозволяють зворотний трафік, тому що деякі програми вимагають для правильної роботи. Ви можете обмежити доступ до SSH з певного IP, використовуючи -s source_ipопцію.

Виконання команд у порядку, як показано вище, призведе до зависання вашого поточного сеансу SSH. Це тому, що команди iptables набувають чинності негайно. Вам потрібно виконати їх у сценарії оболонки, щоб уникнути втрати можливості підключитися до машини при віддаленому виконанні.


4
--state RELATEDза останнім правилом це непотрібно; --state ESTABLISHEDдостатньо. Ви також можете дозволити DNS-трафік і, ймовірно, повинен дозволити що-небудь в інтерфейсі зворотного зв'язку, інакше всі речі можуть вести себе дуже дивно.
MadHatter

@MadHatter: Так, ти маєш рацію, особливо щодо речей із петлею :)
Халед

Дякую, чи вдалося б отримати весь файл від вас? тобто щось можу скопіювати та вставити прямо у / etc / sysconfig / iptables? Я недостатньо досвідчений з цим, щоб довіритися моїй інтуїції, щоб внести правильні зміни.
Дискотека

2
пс. встановити з'єднання буде закрито після першої команди
user956584

3
Вам слід дійсно змінити порядок цих команд. Рядки політики повинні з’являтися як останні. Усі, хто просто копіює це в сеанс ssh, буде HUPed і негайно
вимкнеться

4

Щось на зразок цього:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -j REJECT  # or iptables -P INPUT DROP

iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT # or iptables -P OUTPUT DROP

1
Я думаю, ти -i loне маєш на увазі -s lo; знову ж таки, ESTABLISHEDце потрібно лише в державних правилах, і, мабуть, --sport 22там теж має бути . Чому всі так хочуть дозволити RELATED?
MadHatter

@MadHatter: Про RELATED: Це насправді корисно для того, щоб відповідати речам, які не є TCP, як відповіді на ping і відповіді DNS. Принаймні, це я завжди припускав.
Стівен у понеділок,

2
Я вважаю, що це не відповідатиме жодному з них. Наприклад, це відповідало б, наприклад, забороненій адміністративно-забороненою відповіддю ICMP, але це настільки ж корисно, як це отримується; і якщо він не кваліфікований, він буде відповідати будь-якому пов'язаному трафіку, а не лише трафіку, пов'язаному з попереднім рядком.
MadHatter

@MadHatter: Напевно, мені доведеться пройти кілька тестів, щоб побачити, чи ти маєш рацію. Дякую, що оскаржив моє припущення.
Стівен у понеділок,

Так, встановлений стан - це все, що потрібно, щоб відповідати UDP-відповідям DNS та відповідям ICMP.
Стівен у понеділок,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.