Anregungen Sammlung Systemhärtung

Rund um die Sicherheit des Systems und die Applikationen
Post Reply
ddm3ve
Moderator
Moderator
Posts: 1237
Joined: 2011-07-04 10:56
 

Anregungen Sammlung Systemhärtung

Post by ddm3ve »

Da es mal wieder neue Systeme gibt stellt sich die Frage, ob und in welcher Form wir ggf. bei der Absicherung vom bisherigen Vorgehen abweichen und suche nach Anregungen.

Ein 2 stufiges Konzept mit HW-Firewall besteht hierbei.
Auch muss der jeweilige Webserver über eine Mailgateway sprechen, welches z.B. eine Kontenfilterung übernimmt.
-> Schutz vor versenden von Spam.

Datenbank liegt aus Sicherheit und Performance Gründen getrennt vom Webserver.

Die üblichen Verdächtigen kennt man ja, Apache Webserver, ftp...
Aber was gibt es z.B. mit php 5.6 oder sogar php 7.0 zu beachten?
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
ddm3ve
Moderator
Moderator
Posts: 1237
Joined: 2011-07-04 10:56
 

Re: Anregungen Sammlung Systemhärtung

Post by ddm3ve »

Hier eine 1. Entwurf einer php.ini zur Diskussion gestellt.

Code: Select all

[PHP]
extension=apcu.so
apc.enable_cli=1
apc.enabled=1
apc.shm_segments=1
apc.shm_size =64M
apc.optimization=1
apc.num_files_hint=1000
apc.user_entries_hint=4096
apc.ttl=3600
apc.user_ttl=0
apc.gc_ttl=3600
apc.cache_by_default=1
apc.filters=NULL
apc.mmap_file_mask=NULL
apc.slam_defense=1
apc.file_update_protection=2
apc.max_file_size=1M
apc.use_request_time=1
apc.stat=1
apc.write_lock=1
apc.report_autofilter=0
apc.include_once_override=0
apc.rfc1867=0
apc.rfc1867_prefix=upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
apc.localcache=0
apc.localcache.size=512M
apc.coredump_unmap=0
apc.stat_ctime=0
apc.preload_path=NULL
apc.file_md5=0
apc.canonicalize=1
apc.lazy_functions=0
apc.lazy_classes=0
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=4000
opcache.revalidate_freq=600
opcache.fast_shutdown=1
opcache.enable=1


short_open_tag = Off
asp_tags = Off
precision = 14
output_buffering = 4096
;output_handler =
zlib.output_compression = Off
;zlib.output_compression_level = -1
;zlib.output_handler =
implicit_flush = Off
unserialize_callback_func =
serialize_precision = 17
;open_basedir =
disable_functions = php_uname, getmyuid, getmypid, passthru, leak, listen, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system, highlight_file, source, show_source, fpaththru, virtual, posix_ctermid, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, phpinfo

disable_classes =
;ignore_user_abort = On

realpath_cache_size = 16k
realpath_cache_ttl = 120

zend.enable_gc = On
;zend.multibyte = Off
;zend.script_encoding =

expose_php = Off

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time = 60
max_input_time = 120
max_input_nesting_level = 64
max_input_vars = 1000

memory_limit = 128M

error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT

display_errors = Off

display_startup_errors = Off

log_errors = On

log_errors_max_len = 1024

ignore_repeated_errors = On

ignore_repeated_source = On

report_memleaks = On

;report_zend_debug = 0

track_errors = Off

;xmlrpc_errors = 0

;xmlrpc_error_number = 0

html_errors = Off

;docref_root = "/phpmanual/"

;docref_ext = .html
;error_prepend_string = "<span style='color: #ff0000'>"
;error_append_string = "</span>"
error_log = php_errors.log
;error_log = syslog

;arg_separator.output = "&"
;arg_separator.input = ";&"
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
enable_post_data_reading = On
post_max_size = 1024M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
;default_charset = "UTF-8"

always_populate_raw_post_data = Off


; UNIX: "/path1:/path2"
include_path = ".:/usr/share/php5:/usr/share/php5/PEAR"
doc_root =
user_dir =
enable_dl = Off
;cgi.force_redirect = 1
;cgi.nph = 1
;cgi.redirect_status_env =
cgi.fix_pathinfo=1
;fastcgi.impersonate = 1
fastcgi.logging = 1
cgi.rfc2616_headers = 0

file_uploads = On
upload_tmp_dir = /var/tmp
upload_max_filesize = 1024M
max_file_uploads = 40
allow_url_fopen = Off
allow_url_include = Off
default_socket_timeout = 120
;auto_detect_line_endings = Off


;;;;;;;;;;;;;;;;;;;
; Module Settings ;
;;;;;;;;;;;;;;;;;;;

[CLI Server]
; Whether the CLI web server uses ANSI color coding in its terminal output.
cli_server.color = On
date.timezone = 'UTC'
;date.default_latitude = 31.7667
;date.default_longitude = 35.2333
;date.sunrise_zenith = 90.583333
;date.sunset_zenith = 90.583333
;filter.default = unsafe_raw
;filter.default_flags =

[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1

[intl]
;intl.default_locale =
;intl.error_level = E_WARNING

[sqlite]
;sqlite.assoc_case = 0

[sqlite3]
;sqlite3.extension_dir =

[Pcre]
;PCRE library backtracking limit.
;pcre.backtrack_limit=100000

;pcre.recursion_limit=100000

[Pdo]
;pdo_odbc.connection_pooling=strict

;pdo_odbc.db2_instance_name

[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=

[Phar]
phar.readonly = On
phar.require_hash = On
;phar.cache_list =

[mail function]
SMTP = localhost
smtp_port = 25
;mail.force_extra_parameters =
mail.add_x_header = On

[SQL]
sql.safe_mode = Off

[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
;birdstep.max_links = -1

[MySQL]
mysql.allow_local_infile = On
mysql.allow_persistent = Off
mysql.cache_size = 2000
mysql.max_persistent = -1
mysql.max_links = -1
mysql.default_port =
mysql.default_socket =
mysql.default_host =
mysql.default_user =
mysql.default_password =
mysql.connect_timeout = 60
mysql.trace_mode = Off

[MySQLi]

mysqli.max_persistent = -1
;mysqli.allow_local_infile = On
mysqli.allow_persistent = Off
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket =
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off

[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off
;mysqlnd.net_cmd_buffer_size = 2048
;mysqlnd.net_read_buffer_size = 32768

[OCI8]

;oci8.privileged_connect = Off
;oci8.max_persistent = -1
;oci8.persistent_timeout = -1
;oci8.ping_interval = 60
;oci8.connection_class =
;oci8.events = Off
;oci8.statement_cache_size = 20
;oci8.default_prefetch = 100
;oci8.old_oci_close_semantics = Off

[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0

sybct.allow_persistent = On
sybct.max_persistent = -1
sybct.max_links = -1
sybct.min_server_severity = 10
sybct.min_client_severity = 10
;sybct.timeout=
;sybct.packet_size
;sybct.login_timeout=
;sybct.hostname=
;sybct.deadlock_retry_count=

[bcmath]
bcmath.scale = 0

[browscap]
;browscap = extra/browscap.ini

[Session]
session.save_handler = files
session.save_path = "/var/lib/php5"
session.use_cookies = 1
;session.cookie_secure =
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.bug_compat_42 = Off
session.bug_compat_warn = Off
session.referer_check =
session.entropy_length = 32
session.entropy_file = /dev/urandom
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = sha512
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
;session.upload_progress.enabled = On
;session.upload_progress.cleanup = On
;session.upload_progress.prefix = "upload_progress_"
;session.upload_progress.name = "AMA_PHP_SESSION_UPLOAD_PROGRESS"
;session.upload_progress.freq =  "1%"
;session.upload_progress.min_freq = "1"

[MSSQL]
mssql.allow_persistent = On
mssql.max_persistent = -1
mssql.max_links = -1
mssql.min_error_severity = 10
mssql.min_message_severity = 10
mssql.compatability_mode = Off
;mssql.connect_timeout = 5
;mssql.timeout = 60
;mssql.textlimit = 4096
;mssql.textsize = 4096
;mssql.batchsize = 0
;mssql.datetimeconvert = On
mssql.secure_connection = Off
;mssql.max_procs = -1
;mssql.charset = "ISO-8859-1"

[Assertion]
;assert.active = On
;assert.warning = On
;assert.bail = Off
;assert.callback = 0
;assert.quiet_eval = 0

[COM]
;com.typelib_file =
;com.allow_dcom = true
;com.autoregister_typelib = true
;com.autoregister_casesensitive = false
;com.autoregister_verbose = true
;com.code_page=

[mbstring]
;mbstring.language = Japanese
;mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
;mbstring.http_output = SJIS
;mbstring.encoding_translation = Off
;mbstring.detect_order = auto
;mbstring.substitute_character = none;
mbstring.func_overload = off
;mbstring.strict_detection = Off
;mbstring.http_output_conv_mimetype=

[gd]
;gd.jpeg_ignore_warning = 0

[exif]
;exif.encode_unicode = ISO-8859-15
;exif.decode_unicode_motorola = UCS-2BE
;exif.decode_unicode_intel    = UCS-2LE
;exif.encode_jis =
;exif.decode_jis_motorola = JIS
;exif.decode_jis_intel    = JIS

[Tidy]
;tidy.default_config = /usr/local/lib/php/default.tcfg
tidy.clean_output = Off

[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5

[sysvshm]
;sysvshm.init_mem = 10000

[ldap]
ldap.max_links = -1

[mcrypt]
;mcrypt.algorithms_dir=
;mcrypt.modes_dir=

[dba]
;dba.default_handler=

[curl]
;curl.cainfo =
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
paykoman
Posts: 81
Joined: 2006-07-16 14:18
 

Re: Anregungen Sammlung Systemhärtung

Post by paykoman »

Hey, Du lebst ja noch =)

Verstehe nur die Hälfte aber vllt. kann man daraus am Ende ein kleines How-Tow für die Community erstellen, was man zum Thema der neuen PHP-Sachen beachten muss/sollte. Wäre dann was für alle und mich würde es auch interessieren.

Die ini sieht so doch schon garnicht übel aus!


MFG: Paykoman
PS: Du hattest mal Interesse gezeigt an nem Projekt (online-arbeitsplatz) mitzuwirken für das ich einen Sys-Admin suche, leider kann man dir keine Nachrichten schicken und meine Suche besteht immer noch, wäre schön wenn du vllt. noch mal ins Topic schauen würdest!
ddm3ve
Moderator
Moderator
Posts: 1237
Joined: 2011-07-04 10:56
 

Re: Anregungen Sammlung Systemhärtung

Post by ddm3ve »

Nachrichten kannst Du mir nun schicken.
Das war wohl deaktiviert.

Beim aktuellen Thema gut es um eine generelle Renovierung der Servierinfrastruktur.
Dabei steht natürlich auch im Raum, dass wir Erkenntnisse aus einem Honeypot aber leider auch aus einem entdeckten Einbruch, in das neue Sicherheitskonzept einarbeiten wollen.

Aktuell suche ich noch Anregungen zum Thema, Ideen einige Inspirationen una natürlich muss ich mich mal wieder um neuere Dinge kümmern.

Part 1. ist erstmal zu verstehen, was sich bei php 5.6 grundlegend geändert hat, was aus Security Sicht besonders berücksichtigt werden sollte.

Die angebrachte php.ii können wir so leider nicht wirklich nutzen. Diverse Applikationen wie roundcube, Wordpress, phpBB usw. benötigen viele der deaktivieren Funktionen, wie z.B Exec.

Da stelle ich mir nun die Frage, wie man das erlauben dieser Funktionen anderweitig bestmöglich absichern kann.
Leider haben wir auch nicht immer Einfluss darauf, ob unsere Kunden Ihre Webseiten aktuell halten.

Daher stellt sich in Part 2 die Frage, in wie weit wir das z.B. mit mod_security schützen können.
Auch das Thema Systemhärtung oder absichern von bestimmten Dateien um Beute Force Attacken zu verhindern, sollen berücksichtigt werden.

Ja, daraus kann dann gerne eine Anleitung vielleicht auch Leitfaden für die Community entstehen.
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
ddm3ve
Moderator
Moderator
Posts: 1237
Joined: 2011-07-04 10:56
 

Re: Anregungen Sammlung Systemhärtung

Post by ddm3ve »

Ich fasse hier mal die potentiellen Probleme auf, welche bestenfalls verhindert / vermieden werden sollten.
Zumindest mal eine 1. Fassung
  • SQL Injections (Ja auch heute noch eine Problem)
Abdichten der Webanwendung
mod_security Rules
  • Remote Code Execution
Upload und Schreibzugriffe bestmöglich verhindern
Keine Ausführungsrechte für upload und / temp Verzeichnisse. Generell keine Ausführungsrechte für Ordner in welche die Anwendung schreiben kann.
-> Ausschluss php perl etc. handler.
  • Ausspähen der Infrastrutkur
Systemhärtung
FS Härtung
  • Kompromitierung der Zielsysteme
Prüfung per maldet, rkhunter sowie weitere Tools.
Erstellen eines eigenes changelogs und Prüfung dessen.
Veränderungen durch Systemhärtung verhindern aber min. rechtzeitig erkennen.
Welche Methoden wären hier zielführend?
  • Verhinderung illegaler Aktionen / Anschluss an Botnetze
Absicherung des Servers nach aussen, so dass dieser nicht selbst für illegale Aktionen missbraucht wird.
Effektive Verhinderung zur Ausführung von Schadcode,
Schadcode rechtzeitig entdecken
Ungewollte Netzzugriffe nach extern verhindern.



... tbc
02:32:12 21.12.2012 und dann sind Deine Probleme alle unwichtig.
Post Reply