; cause Asterisk to search for sounds files in
; AST_DATA_DIR/sounds/custom before searching the
; normal directories like AST_DATA_DIR/sounds/<lang>.
+;disable_remote_console_shell = no; Prevent remote console CLI sessions
+ ; from executing shell commands with the '!' prefix.
+ ; Default: no
; Changing the following lines may compromise your security.
;[files]
; deny = <command name> | all ; disallow the user to run 'command' |
; ; disallow the user to run 'all' commands.
;
+; NOTE: This file can't be used to restict the use of the '!' prefix
+; for running shell commands from the CLI. You can however disable the
+; use of the shell commands in remote consoles altogether by setting
+; the 'disable_remote_console_shell' parameter in asterisk.conf to 'yes'.
+;
[general]
extern int ast_option_rtpusedynamic;
extern unsigned int ast_option_rtpptdynamic;
+extern int ast_option_disable_remote_console_shell;
+
#if defined(__cplusplus) || defined(c_plusplus)
}
#endif
ast_cli(a->fd, " RTP dynamic payload types: %u-%u\n",
AST_RTP_PT_FIRST_DYNAMIC, AST_RTP_MAX_PT - 1);
}
+ ast_cli(a->fd, " Shell on remote consoles: %s\n",
+ ast_option_disable_remote_console_shell ? "Disabled" : "Enabled");
ast_cli(a->fd, "\n* Subsystems\n");
ast_cli(a->fd, " -------------\n");
/* The real handler for bang */
if (s[0] == '!') {
+ if (ast_option_disable_remote_console_shell) {
+ printf("Shell access is disabled on remote consoles\n");
+ return 1;
+ }
if (s[1])
ast_safe_system(s+1);
else
#endif
int ast_option_rtpusedynamic = 1;
unsigned int ast_option_rtpptdynamic = 35;
-
+int ast_option_disable_remote_console_shell = 0;
/*! @} */
struct ast_eid ast_eid_default;
int option_trace_new = 0;
int option_verbose_new = 0;
+
/* init with buildtime config */
#ifdef REF_DEBUG
/* The REF_DEBUG compiler flag is now only used to enable refdebug by default.
ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_HIDE_MESSAGING_AMI_EVENTS);
} else if (!strcasecmp(v->name, "sounds_search_custom_dir")) {
ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_SOUNDS_SEARCH_CUSTOM);
+ } else if (!strcasecmp(v->name, "disable_remote_console_shell")) {
+ ast_option_disable_remote_console_shell = ast_true(v->value);
}
}
if (!ast_opt_remote) {