- Home
- Categorie
- Coding e Sistemistica
- Hosting, Server e Domini
- Apache2 su Server Virtuale: cpu al 99%, errore di configurazione?
-
[Syslog] ; Whether or not to define the various syslog variables (e.g. $LOG_PID, ; $LOG_CRON, etc.). Turning it off is a good idea performance-wise. In ; runtime, you can define these variables by calling define_syslog_variables(). define_syslog_variables = Off [mail function] ; For Win32 only. SMTP = localhost smtp_port = 25 ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ;sendmail_path = ; Force the addition of the specified parameters to be passed as extra parameters ; to the sendmail binary. These parameters will always replace the value of ; the 5th parameter to mail(), even in safe mode. ;mail.force_extra_parameters = [SQL] sql.safe_mode = Off [ODBC] ;odbc.default_db = Not yet implemented ;odbc.default_user = Not yet implemented ;odbc.default_pw = Not yet implemented ; Allow or prevent persistent links. odbc.allow_persistent = On ; Check that a connection is still valid before reuse. odbc.check_persistent = On ; Maximum number of persistent links. -1 means no limit. odbc.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. odbc.max_links = -1 ; Handling of LONG fields. Returns number of bytes to variables. 0 means ; passthru. odbc.defaultlrl = 4096 ; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. ; See the documentation on odbc_binmode and odbc_longreadlen for an explanation ; of uodbc.defaultlrl and uodbc.defaultbinmode odbc.defaultbinmode = 1 [MySQL] ; Allow or prevent persistent links. mysql.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. mysql.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. mysql.max_links = -1 ; Default port number for mysql_connect(). If unset, mysql_connect() will use ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look ; at MYSQL_PORT. mysql.default_port = ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. mysql.default_socket = ; Default host for mysql_connect() (doesn't apply in safe mode). mysql.default_host = ; Default user for mysql_connect() (doesn't apply in safe mode). mysql.default_user = ; Default password for mysql_connect() (doesn't apply in safe mode). ; Note that this is generally a *bad* idea to store passwords in this file. ; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password") ; and reveal this password! And of course, any users with read access to this ; file will be able to reveal the password as well. mysql.default_password = ; Maximum time (in seconds) for connect timeout. -1 means no limit mysql.connect_timeout = 60 ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and ; SQL-Errors will be displayed. mysql.trace_mode = Off [MySQLi] ; Maximum number of links. -1 means no limit. mysqli.max_links = -1 ; Default port number for mysqli_connect(). If unset, mysqli_connect() will use ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look ; at MYSQL_PORT. mysqli.default_port = 3306 ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. mysqli.default_socket = ; Default host for mysql_connect() (doesn't apply in safe mode). mysqli.default_host = ; Default user for mysql_connect() (doesn't apply in safe mode). mysqli.default_user = ; Default password for mysqli_connect() (doesn't apply in safe mode). ; Note that this is generally a *bad* idea to store passwords in this file. ; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") ; and reveal this password! And of course, any users with read access to this ; file will be able to reveal the password as well. mysqli.default_pw = ; Allow or prevent reconnect mysqli.reconnect = Off [mSQL] ; Allow or prevent persistent links. msql.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. msql.max_persistent = -1 ; Maximum number of links (persistent+non persistent). -1 means no limit. msql.max_links = -1 [OCI8] ; enables privileged connections using external credentials (OCI_SYSOPER, OCI_SYSDBA) ;oci8.privileged_connect = Off ; Connection: The maximum number of persistent OCI8 connections per ; process. Using -1 means no limit. ;oci8.max_persistent = -1 ; Connection: The maximum number of seconds a process is allowed to ; maintain an idle persistent connection. Using -1 means idle ; persistent connections will be maintained forever. ;oci8.persistent_timeout = -1 ; Connection: The number of seconds that must pass before issuing a ; ping during oci_pconnect() to check the connection validity. When ; set to 0, each oci_pconnect() will cause a ping. Using -1 disables ; pings completely. ;oci8.ping_interval = 60 ; Tuning: This option enables statement caching, and specifies how ; many statements to cache. Using 0 disables statement caching. ;oci8.statement_cache_size = 20 ; Tuning: Enables statement prefetching and sets the default number of ; rows that will be fetched automatically after statement execution. ;oci8.default_prefetch = 10 ; Compatibility. Using On means oci_close() will not close ; oci_connect() and oci_new_connect() connections. ;oci8.old_oci_close_semantics = Off [PostgresSQL] ; Allow or prevent persistent links. pgsql.allow_persistent = On ; Detect broken persistent links always with pg_pconnect(). ; Auto reset feature requires a little overheads. pgsql.auto_reset_persistent = Off ; Maximum number of persistent links. -1 means no limit. pgsql.max_persistent = -1 ; Maximum number of links (persistent+non persistent). -1 means no limit. pgsql.max_links = -1 ; Ignore PostgreSQL backends Notice message or not. ; Notice message logging require a little overheads. pgsql.ignore_notice = 0 ; Log PostgreSQL backends Noitce message or not. ; Unless pgsql.ignore_notice=0, module cannot log notice message. pgsql.log_notice = 0 [Sybase] ; Allow or prevent persistent links. sybase.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. sybase.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. sybase.max_links = -1 ;sybase.interface_file = "/usr/sybase/interfaces" ; Minimum error severity to display. sybase.min_error_severity = 10 ; Minimum message severity to display. sybase.min_message_severity = 10 ; Compatibility mode with old versions of PHP 3.0. ; If on, this will cause PHP to automatically assign types to results according ; to their Sybase type, instead of treating them all as strings. This ; compatibility mode will probably not stay around forever, so try applying ; whatever necessary changes to your code, and turn it off. sybase.compatability_mode = Off [Sybase-CT] ; Allow or prevent persistent links. sybct.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. sybct.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. sybct.max_links = -1 ; Minimum server message severity to display. sybct.min_server_severity = 10 ; Minimum client message severity to display. sybct.min_client_severity = 10 [bcmath] ; Number of decimal digits for all bcmath functions. bcmath.scale = 0 [browscap] ;browscap = extra/browscap.ini [Informix] ; Default host for ifx_connect() (doesn't apply in safe mode). ifx.default_host = ; Default user for ifx_connect() (doesn't apply in safe mode). ifx.default_user = ; Default password for ifx_connect() (doesn't apply in safe mode). ifx.default_password = ; Allow or prevent persistent links. ifx.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. ifx.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. ifx.max_links = -1 ; If on, select statements return the contents of a text blob instead of its id. ifx.textasvarchar = 0 ; If on, select statements return the contents of a byte blob instead of its id. ifx.byteasvarchar = 0 ; Trailing blanks are stripped from fixed-length char columns. May help the ; life of Informix SE users. ifx.charasvarchar = 0 ; If on, the contents of text and byte blobs are dumped to a file instead of ; keeping them in memory. ifx.blobinfile = 0 ; NULL's are returned as empty strings, unless this is set to 1. In that case, ; NULL's are returned as string 'NULL'. ifx.nullformat = 0 [Session] ; Handler used to store/retrieve data. session.save_handler = files ; Argument passed to save_handler. In the case of files, this is the path ; where data files are stored. Note: Windows users have to change this ; variable in order to use PHP's session functions. ; ; As of PHP 4.0.1, you can define the path as: ; ; session.save_path = "N;/path" ; ; where N is an integer. Instead of storing all the session files in ; /path, what this will do is use subdirectories N-levels deep, and ; store the session data in those directories. This is useful if you ; or your OS have problems with lots of files in one directory, and is ; a more efficient layout for servers that handle lots of sessions. ; ; NOTE 1: PHP will not create this directory structure automatically. ; You can use the script in the ext/session dir for that purpose. ; NOTE 2: See the section on garbage collection below if you choose to ; use subdirectories for session storage ; ; The file storage module creates files using mode 600 by default. ; You can change that by using ; ; session.save_path = "N;MODE;/path" ; ; where MODE is the octal representation of the mode. Note that this ; does not overwrite the process's umask. ;session.save_path = /var/lib/php5 ; Whether to use cookies. session.use_cookies = 1 ;session.cookie_secure = ; This option enables administrators to make their users invulnerable to ; attacks which involve passing session ids in URLs; defaults to 0. ; session.use_only_cookies = 1 ; Initialize session on request startup. session.auto_start = 0 ; Lifetime in seconds of cookie or, if 0, until browser is restarted. session.cookie_lifetime = 0 ; The path for which the cookie is valid. session.cookie_path = / ; The domain for which the cookie is valid. session.cookie_domain = ; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript. session.cookie_httponly = ; Handler used to serialize data. php is the standard serializer of PHP. session.serialize_handler = php ; Define the probability that the 'garbage collection' process is started ; on every session initialization. ; The probability is calculated by using gc_probability/gc_divisor, ; e.g. 1/100 means there is a 1% chance that the GC process starts ; on each request. ; This is disabled in the Debian packages, due to the strict permissions ; on /var/lib/php5. Instead of setting this here, see the cronjob at ; /etc/cron.d/php5, which uses the session.gc_maxlifetime setting below. ; php scripts using their own session.save_path should make sure garbage ; collection is enabled by setting session.gc_probability ;session.gc_probability = 0 session.gc_divisor = 100 ; After this number of seconds, stored data will be seen as 'garbage' and ; cleaned up by the garbage collection process. session.gc_maxlifetime = 1440 ; NOTE: If you are using the subdirectory option for storing session files ; (see session.save_path above), then garbage collection does *not* ; happen automatically. You will need to do your own garbage ; collection through a shell script, cron entry, or some other method. ; For example, the following script would is the equivalent of ; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): ; cd /path/to/sessions; find -cmin +24 | xargs rm ; PHP 4.2 and less have an undocumented feature/bug that allows you to ; to initialize a session variable in the global scope, albeit register_globals ; is disabled. PHP 4.3 and later will warn you, if this feature is used. ; You can disable the feature and the warning separately. At this time, ; the warning is only displayed, if bug_compat_42 is enabled. session.bug_compat_42 = 1 session.bug_compat_warn = 1 ; Check HTTP Referer to invalidate externally stored URLs containing ids. ; HTTP_REFERER has to contain this substring for the session to be ; considered as valid. session.referer_check = ; How many bytes to read from the file. session.entropy_length = 0 ; Specified here to create the session id. session.entropy_file = ;session.entropy_length = 16 ;session.entropy_file = /dev/urandom ; Set to {nocache,private,public,} to determine HTTP caching aspects ; or leave this empty to avoid sending anti-caching headers. session.cache_limiter = nocache ; Document expires after n minutes. session.cache_expire = 120 ; trans sid support is disabled by default. ; Use of trans sid may risk your users security. ; Use this option with caution. ; - User may send URL contains active session ID ; to other person via. email/irc/etc. ; - URL that contains active session ID may be stored ; in publically accessible computer. ; - User may access your site with the same session ID ; always using URL stored in browser's history or bookmarks. session.use_trans_sid = 0 ; Select a hash function ; 0: MD5 (128 bits) ; 1: SHA-1 (160 bits) session.hash_function = 0 ; Define how many bits are stored in each character when converting ; the binary hash data to something readable. ; ; 4 bits: 0-9, a-f ; 5 bits: 0-9, a-v ; 6 bits: 0-9, a-z, A-Z, "-", "," session.hash_bits_per_character = 4 ; The URL rewriter will look for URLs in a defined set of HTML tags. ; form/fieldset are special; if you include them here, the rewriter will ; add a hidden <input> field with the info which is otherwise appended ; to URLs. If you want XHTML conformity, remove the form entry. ; Note that all valid entries require a "=", even if no value follows. url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset=" [MSSQL] ; Allow or prevent persistent links. mssql.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. mssql.max_persistent = -1 ; Maximum number of links (persistent+non persistent). -1 means no limit. mssql.max_links = -1 ; Minimum error severity to display. mssql.min_error_severity = 10 ; Minimum message severity to display. mssql.min_message_severity = 10 ; Compatibility mode with old versions of PHP 3.0. mssql.compatability_mode = Off ; Connect timeout ;mssql.connect_timeout = 5 ; Query timeout ;mssql.timeout = 60 ; Valid range 0 - 2147483647. Default = 4096. ;mssql.textlimit = 4096 ; Valid range 0 - 2147483647. Default = 4096. ;mssql.textsize = 4096 ; Limits the number of records in each batch. 0 = all records in one batch. ;mssql.batchsize = 0 ; Specify how datetime and datetim4 columns are returned ; On => Returns data converted to SQL server settings ; Off => Returns values as YYYY-MM-DD hh:mm:ss ;mssql.datetimeconvert = On ; Use NT authentication when connecting to the server mssql.secure_connection = Off ; Specify max number of processes. -1 = library default ; msdlib defaults to 25 ; FreeTDS defaults to 4096 ;mssql.max_procs = -1 ; Specify client character set. ; If empty or not set the client charset from freetds.comf is used ; This is only used when compiled with FreeTDS ;mssql.charset = "ISO-8859-1" [Assertion] ; Assert(expr); active by default. ;assert.active = On ; Issue a PHP warning for each failed assertion. ;assert.warning = On ; Don't bail out by default. ;assert.bail = Off ; User-function to be called if an assertion fails. ;assert.callback = 0 ; Eval the expression with current error_reporting(). Set to true if you want ; error_reporting(0) around the eval(). ;assert.quiet_eval = 0 [COM] ; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs ;com.typelib_file = ; allow Distributed-COM calls ;com.allow_dcom = true ; autoregister constants of a components typlib on com_load() ;com.autoregister_typelib = true ; register constants casesensitive ;com.autoregister_casesensitive = false ; show warnings on duplicate constant registrations ;com.autoregister_verbose = true [mbstring] ; language for internal character representation. ;mbstring.language = Japanese ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) ;mbstring.internal_encoding = EUC-JP ; http input encoding. ;mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function ;mbstring.http_output = SJIS ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. ;mbstring.encoding_translation = Off ; automatic encoding detection order. ; auto means ;mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another ;mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions ;mbstring.func_overload = 0 [FrontBase] ;fbsql.allow_persistent = On ;fbsql.autocommit = On ;fbsql.show_timestamp_decimals = Off ;fbsql.default_database = ;fbsql.default_database_password = ;fbsql.default_host = ;fbsql.default_password = ;fbsql.default_user = "_SYSTEM" ;fbsql.generate_warnings = Off ;fbsql.max_connections = 128 ;fbsql.max_links = 128 ;fbsql.max_persistent = -1 ;fbsql.max_results = 128 [gd] ; Tell the jpeg decode to libjpeg warnings and try to create ; a gd image. The warning will then be displayed as notices ; disabled by default ;gd.jpeg_ignore_warning = 0 [exif] ; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. ; With mbstring support this will automatically be converted into the encoding ; given by corresponding encode setting. When empty mbstring.internal_encoding ; is used. For the decode settings you can distinguish between motorola and ; intel byte order. A decode setting cannot be empty. ;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] ; The path to a default tidy configuration file to use when using tidy ;tidy.default_config = /usr/local/lib/php/default.tcfg ; Should tidy clean and repair output automatically? ; WARNING: Do not use this option if you are generating non-html content ; such as dynamic images tidy.clean_output = Off [soap] ; Enables or disables WSDL caching feature. soap.wsdl_cache_enabled=1 ; Sets the directory name where SOAP extension will put cache files. soap.wsdl_cache_dir="/tmp" ; (time to live) Sets the number of second while cached file will be used ; instead of original one. soap.wsdl_cache_ttl=86400 ; Local Variables: ; tab-width: 4 ; End:
-
Mi dispiace se sono lunghissimi ... comunque ...
Vedete qualcosa di strano !?
Come posso capire perchè i demoni di apache2 sono così grassi?
-
L'unica cosa che potrebbe dar vita a problemi è memory_limit impostato a 64M.
Questo succederebbe però se gli script php fossero scritti con i piedi. Quindi alla fine la responsabilità cade su wordpress.
Un'altra cosa fondamentale è di reimpostare il KeepAlive a On, infatti ad off il web server viene spremuto di più.
Poi MaxRequestsPerChild a 5000 è esagerato. E' normale che con 5000 richieste contemporanee ogni istanza di apache occupi quintali di memoria.
Infine deve analizzare il traffico che questi siti hanno, perchè non è detto che si tratti di un malfunzionamento, ma semplicemente del fatto che il server fisico non ce la fa.
E c'è da tenere in conto che potresti essere sotto DDOS, quindi ti conviene pure analizzare i log di apache e/o quelli del sistema operativo e del firewall.
-
@paolino said:
L'unica cosa che potrebbe dar vita a problemi è memory_limit impostato a 64M.
Questo succederebbe però se gli script php fossero scritti con i piedi. Quindi alla fine la responsabilità cade su wordpress.
Immagino tu ti riferisca ad un garbage collector ...
Non ci avevo pensato. Lo riduco subito, l'avevo messo così per ridurre "via web" delle immagini uploadate troppo grandi in una galleria e poi non ho più riportato il valore a livelli normali.@paolino said:
Un'altra cosa fondamentale è di reimpostare il KeepAlive a On, infatti ad off il web server viene spremuto di più.
Poi MaxRequestsPerChild a 5000 è esagerato. E' normale che con 5000 richieste contemporanee ogni istanza di apache occupi quintali di memoria.
Infine deve analizzare il traffico che questi siti hanno, perchè non è detto che si tratti di un malfunzionamento, ma semplicemente del fatto che il server fisico non ce la fa.
E c'è da tenere in conto che potresti essere sotto DDOS, quindi ti conviene pure analizzare i log di apache e/o quelli del sistema operativo e del firewall.
Col KeepAlive Off ho visto notevoli miglioramenti ...
MaxRequestsPerChild prima era a 0, 5000 è sicuramente meglio.
Cosa mi consigli? 1000?p.s. la risposta è sì, sono sotto attacco perchè il server è nuovo, ricevo 2000 tentativi di login errati da root al giorno (e infatti ho disabilitato l'utente root) e google sta ri-ciucciando tutti i siti perchè si è accorto che è cambiato l'ip del server.
Anche via GET ho visto dei log enormi (al dilà dei motori di ricerca) nei primi giorni.
-
@Nokao said:
Col KeepAlive Off ho visto notevoli miglioramenti ...
brutto segno....il keep-alive serve per indicare al web server di mantenere aperta la connessione col client evitando così di riavviare una nuova sessione ogni volta che il client chiede una nuova pagina o un'immagine su una certa pagina, ecc...
se peggiora mettendolo a On vuol dire che o hai un traffico esagerato o sei sotto attacco
MaxRequestsPerChild prima era a 0, 5000 è sicuramente meglio.
Cosa mi consigli? 1000?lo porterei ad almeno 500, zero indica infinito
p.s. la risposta è sì, sono sotto attacco perchè il server è nuovo, ricevo 2000 tentativi di login errati da root al giorno (e infatti ho disabilitato l'utente root) e google sta ri-ciucciando tutti i siti perchè si è accorto che è cambiato l'ip del server.
Anche via GET ho visto dei log enormi (al dilà dei motori di ricerca) nei primi giorni.dovresti verificare questa situazione allora
innanzitutto se gli attacchi sono diretti alla porta 80 può essere una noia ma niente di grave ( però occhio alle vulnerabilità di wordpress )
se l'attacco è rivolto alla porta 22 invece, temo che ci siano degli host infettati nella stessa rete del tuo server e la cosa potrebbe finire in un hacking con tanto di rootkit installato
-
[...]
-
@paolino said:
brutto segno....il keep-alive serve per indicare al web server di mantenere aperta la connessione col client evitando così di riavviare una nuova sessione ogni volta che il client chiede una nuova pagina o un'immagine su una certa pagina, ecc...
se peggiora mettendolo a On vuol dire che o hai un traffico esagerato o sei sotto attacco
Probabilmente allora ogni volta che ho trovato apache2 impallato ero stato attaccato, però preferisco usare più memoria e cpu che perdere il controllo del server ... quindi credo lo terrò Off ...
@paolino said:
lo porterei ad almeno 500, zero indica infinito
Si lo so ... e, appunto, 5000 è meglio di infinito.
Adesso lo metto subito a 500, grazie.Magari con le request per child a 2-300 posso anche rimettere a On il keepalive ...
@paolino said:
dovresti verificare questa situazione allora
innanzitutto se gli attacchi sono diretti alla porta 80 può essere una noia ma niente di grave ( però occhio alle vulnerabilità di wordpress )
se l'attacco è rivolto alla porta 22 invece, temo che ci siano degli host infettati nella stessa rete del tuo server e la cosa potrebbe finire in un hacking con tanto di rootkit installato
No gli ip erano pubblici, e li ho messi in blacklist su iptables.
Erano i soliti 3 cretini ben-noti che si trovano anche con google:
-A INPUT -s 122.160.182.244 -j DROP
-A INPUT -s 207.178.132.24 -j DROP
-A INPUT -s 140.117.32.240 -j DROPAdesso gli attacchi sulla 22 sono finiti a parte qualche stupidaggine.
-
Nokao cambia la porta di default dell'sshd.
-
@Flame Networks said:
Nokao cambia la porta di default dell'sshd.
Lo farò se qualcuno capirà con che utente sudoer mi connetto.
Finchè provano con "root" perdono solo tempo, la risposta è "no" anche se azzeccano la password.
Il mio problema è apache ... però ora ho cambiato la configurazione in questo modo:
KeepAlive On MaxKeepAliveRequests 50 KeepAliveTimeout 5 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 80 MaxRequestsPerChild 500 </IfModule>
Considerando che ho solo applicazioni in WordPress (pesanti) ho pensato di lasciare pochi demoni ciccioni che portano a termine il loro lavoro piuttosto che tanti un pò più deboli.
Adesso quindi ho 150 mega di RAM liberi su 1 giga, però siccome ho messo MaxSpareServers a 10, e sono tutti e 10 aperti, sono sicuro che più o meno la situazione non dovrebbe peggiorare.In PHP la memory massima è per forza 40MB, con 24 certi siti vanno in errore e non posso rischiare.
-
Lascerei il KeepAlive ad Off e comunque modificherei la porta dell'sshd.
Ci sono molti software che effettuano bruteforce sulla porta di default dell'sshd, se la cambi ne guadagni sicuramente in sicurezza.
-
Consiglierei oltre a quello l'utilizzo dei certificati, di gran lunga più sicuri. Purtroppo i bot trovano senza problemi anche la nuova porta di SSH, solo questione di piu tempo