Какие функции безопасности GCC следует использовать для защиты сетевого демона?

Я пишу сетевой демон C++ для Linux, который по своей природе должен слушать общедоступный Интернет.

Какие переключатели GCC следует использовать для включения функций безопасности, чтобы злоумышленнику было сложнее использовать ошибки в моей программе?

В настоящее время я использую протектор стека. (GCC: -fstack-protector, LD: -Wl, -z, relro, -z, сейчас).

Какие другие функции я должен включить (кроме всех предупреждений и т. д. о проблемах в моей программе)? А ПИЕ?

Как проверить, действительно ли эта функция активна в запущенном процессе? Я нашел lsexec, но, например, он не показывает любой процесс, использующий PIE в моей системе, поэтому я не уверен, насколько он надежен.

Обновление:

На данный момент я нашел руководства по усилению защиты от Debian и Ubuntu и этот похожий вопрос. Но пока ничего о том, как проверить, что на самом деле активно в исполняемом файле.


person Gene Vincent    schedule 05.09.2013    source источник
comment
Имейте в виду, что никакой набор опций компилятора не усложнит написание небезопасного кода. (Возможно, вы это уже знаете.)   -  person Keith Thompson    schedule 06.09.2013
comment
Я полностью это осознаю, но это также факт жизни, что даже в самом лучшем коде остаются некоторые ошибки. Так что хорошо быть готовым.   -  person Gene Vincent    schedule 06.09.2013
comment
Если бы флаги компилятора могли все это делать, эксплойтов не было бы повсюду. Даже ASLR и DEP иногда дают сбой.   -  person devnull    schedule 06.09.2013
comment
Я не прошу делать все это. Я спрашиваю, как включить то, что доступно, помимо лучшего программирования, которое я могу сделать. Итак, как мне включить ASLR и DEP в Linux и что еще есть?   -  person Gene Vincent    schedule 06.09.2013