Когда я это сделал:
iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
Я получил ошибку:
iptables: Index of insertion too big.
Причина в том, что у меня нет никаких политик, и поэтому часть «INPUT 4» пытается вставить в индекс 4, когда он должен быть index = 1. Чтобы просмотреть ваши правила, выполните:
sudo iptables --list-rules
Затем вставьте по соответствующему индексу. (В большинстве случаев):
sudo iptables -I INPUT 1 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
Наконец-то это заработало!
My virtualbox settings are:
- host port 8080,
- guest IP 10.0.2.15
- guest port 80
Файл конфигурации nginx::
server {
listen 0.0.0.0:80;
location / {
proxy_pass http://localhost:9000;
}
}
Это, очевидно, требует либо физического доступа, либо «физического -эквивалентного» доступа (при работе с виртуальной машиной или VPS ), но это почти всегда работает, не заботится о том, какая у вас система инициализации, и не заботится о том, есть ли у вас пароль root.
Общий подход относительно прост:
Такое исправление работает, потому что оно полностью обходит средства управления доступом уязвимой системы, позволяя вам делать практически все, что вы хотите. Этот уровень неограниченного доступа к системе является частью того, почему физическая безопасность так важна.
Обратите внимание, что при таком подходе вам может потребоваться сделать что-то особенное при перезагрузке обратно в «нормальную» систему, чтобы все заработало правильно. При стандартной установке Ubuntu в этом нет необходимости, но если вы используете SELinux (или, что менее вероятно, IMA и EVM ), вам может потребоваться добавить дополнительные параметры загрузки, а затем запустить команду из загруженной системы. исправить защитные метки.
Systemd называет это «режимом спасения», но все остальные просто называют его однопользовательским -режимом.По сути, это загружает корневую оболочку, в которой почти ничего не работает, кроме критически важных служб. Он традиционно используется для устранения именно проблем такого типа.
Единственным недостатком этого является то, что в любой должным образом защищенной современной системе однопользовательский -пользовательский режим защищен паролем и требует возможности войти в систему как пользователь root (, причина этого заключается в том, что доступ к системе console по своей сути не подразумевает физического доступа к системному оборудованию, поэтому следует использовать некоторую аутентификацию ).
Всякий раз, когда вы планируете экспериментировать с конфигурацией sudo
, рекомендуется держать открытым еще один корневой терминал :на случай, если вы что-то сломаете, у вас уже будут права исправить это.
Если невозможно держать клемму открытой (, т.е. ваши эксперименты включают перезагрузку ), установите фактический пароль для пользователя root
. Затем, если sudo
не работает, вы можете просто войти в систему как root
(, открыть новую консоль или запуститьsu
)и исправить вашу систему.