Serversicherheit - suphp Confixx3.3.1 open_basedir

sundriver

Registered User
Hi@all,

man möge mir verzeihen wenn es einen ähnlichen Thread schon gibt, gefunden habe ich über die SuFu nicht wirklich was.

Zum System: RootDS Apache 2.2.0 SuSE10.1 Confixx3.3.1pro MySQL 5.0.18 und PHP 5.2.4

Zum Problem:
Auf unserer neuen Schachtel habe ich suphp zusammen mit Confixx erfolgreich eingerichtet. Hab die bestehenden Accounts Migriert und Confixx ist so eingestellt das es neuen Accounts automatisch eine php.ini erstellt auf der Basis einer bestehenden php.ini die als Template gilt.

Damit nun jeder vHost in seiner eigenen Umgebung bleibt habe ich bei den bestehenden Accounts jede einzelne php.ini in Bezug auf die open_basedir Restriktion editiert.

Soweit, sogut... Wenn nun allerdings Confixx über die admin Oberfläche einen httpd Spezialeintrag in einen bestehenden vHost schreibt, holt es sich die php.ini die als Template gilt und überschreibt meine alten Einträge.
Die open_basedir Einträge sind damit weg...

Das Problem scheint bekannt zu sein, kennt von Euch jemand irgend einen Workaround mit dem man das hinbekommen kann das die open_basedir Einträge bleiben?

Habe es schon mit Confixx eigenen Variablen, ###user### , probiert aber die erscheinen nicht beim überschreiben.
Habe auch schon darüber nachgedacht den Ordner in dem die einzelnen php.ini Files liegen mit einem Backup zu sichern und die Files mit einem Script per Cron auf Timestamp änderungen hin zu überwachen und sie dann via script vom Backup Ordner zurück zu schreiben. Das ist aber denke ich nicht die sauberste Lösung...

Welche Wege gibt es denn noch den Server sicher zu halten wenn man auf open_basedir verzichtet?

Dieses hier disable_functions = show_source, system, shell_exec, passthru, popen, proc_open noch weiter einzuschränken macht doch auch nicht wirklich Sinn,oder?

cu & Thx
Sundriver
 
Aktiviere mal in der admin.pl ( /root/confixx/admin/admin.pl ) die Option HTTP Options.

Disable functions macht in der Regel immer sinn.

php_admin_value disable_functions symlink,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,exec,passthru,system,popen,ini_alter,ini_restore,ini_set,set_time_limit,leak,memory_get_peak_usage,escapeshellcmd
 
Last edited by a moderator:
Aktiviere mal in der admin.pl ( /root/confixx/admin/admin.pl ) die Option HTTP Options.

Disable functions macht in der Regel immer sinn.

Hajo, Sinn macht es sicher, aber nicht unbedingt noch mehr einschränken.

Das hier
Code:
php_admin_value disable_functions symlink,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,exec,passthru,system,popen,ini_alter,ini_restore,ini_set,set_time_limit,leak,memory_get_peak_usage,escapeshellcmd
habe ich mal direkt in die php.ini geschrieben, dann open_basedir abgeschaltet und dieses Script
Code:
<?

$dir = opendir("/etc/");
while($file = readdir($dir))
echo "$file<br />";


function inhalt($datei)
{
$auf = fopen($datei, "a+-");
return fread($auf, filesize("$tp$datei"));
fclose($auf);
}

echo inhalt("/etc/passwd");

function hackit($dirr)
{
@$dir = opendir("/home/www/$dirr/html");
while($file = readdir($dir))
echo "$file<br />";
echo "$dirr<br />";
}

while($x < 23)
{
hackit("web$x");
$x++;
}

?>
laufen lassen mit diesem Ergebniss:
Code:
.
..
aliases.d
X11
slp.reg.d
init.d
smartd.conf
ld.so.conf
cron.deny
rc.status
bindresvport.blacklist
grub.conf
named.conf
shadow
rc.splash
lesskey.bin
csh.cshrc
group.old
nscd.conf
protocols
xdg
raidtab
issue.net
filesystems
webalizer.conf
krb5.conf
susehelp.d
DIR_COLORS
inews_mail_gateway
authlib
passwd.YaST2save
shells
news
rsyncd.conf
courier
hosts.deny
YaST2
lynx.cfg
ircd
gpm
aclocal_dirlist
ntp.conf
logindevperm
cron.d
ethers
crontab
group
wgetrc
htdig
defkeymap.name
ld.so.cache
mdadm.conf
environment
fdprm
netgroup
ssl
permissions.local
passwd.backup
hal
mime.types
manpath.config
resolv.conf
naccttab
sysconfig
netatalk
my.cnf
sysstat
permissions.easy
idn.conf
shadow.old
hosts.equiv
suseRegister.conf
autoinstall
mysqlaccess.conf
opensc.conf
acpi
modprobe.conf
rc.d.README
vsftpd.conf
hosts.YaST2save
cron.hourly
modprobe.d
shadow.backup
lesskey
logrotate.conf
ltrace.conf
hosts.lpd
aliases
ssh
mail
uucp
host.conf
modprobe.conf.local
logrotate.d
.pwd.lock
pwdutils
suphp
hushlogins
localtime
quotatab
vimrc
lvm
xinetd.conf
unixODBC
pam.d
chrootUsers
magic
rc.d
awstats
lftp.conf
ifplugd
ntop
shadow.YaST2save
services
fonts
ppp
profile
idnalias.conf
cups
named.d
hosts
mailcap
permissions.paranoid
permissions.d
xml
pythonstart
iproute2
zshenv
ttytype
rsyncd.secrets
screenrc
mail.rc
c-client.cf
sensors.conf
nsswitch.conf
passwd
profile.d
insserv.conf
skel
scsi_id.config
y2pmbuild
java
aliases.db
ld.so.conf.d
at.deny
php5
procmailrc
papersize
powerd.conf
bash_completion.d
scpm.users
SuSEconfig
syslog-ng
motd
login.defs
warnquota.conf
fstab
vsftpd.conf.orig
cron.monthly
slsh.rc
apache2
HOSTNAME
mailman
cron.weekly
permissions
securetty
hosts.allow
nwserv.conf
inputrc
termcap
slp.conf
udev
postfix
raw
xinetd.d
socks.conf
bash.bashrc
vsftpd.conf.confixx-backup
csh.login
SuSE-release
sysctl.conf
defaultdomain
pear.conf
ldap.conf
openldap
alternatives
aide.conf
joe
named.conf.include
mtab
adjtime
reader.conf.d
exports
security
inittab
ghostscript
powersave
networks
zmd
rpc
opt
aliases.YaST2.save
reoback
cron.daily
rndc.key
permissions.secure
snmp
passwd.old
fetchmailrc
fb.modes
mono
default
named.confixx
issue
quotagrpadmins
naccttab.pcap
nntpserver
defkeymap.map
openct.conf
ftpusers
NetworkManager
fam.conf
dbus-1
slp.spi
rpasswd.conf
zshrc

Warning: fopen(/etc/passwd) [function.fopen]: failed to open stream: Permission denied in /srv/www/htdocs/web8/html/sicherheitstest.php on line 10

Warning: fread(): supplied argument is not a valid stream resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 11

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web1

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web2

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web3

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web4

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web5

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web6

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web7

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web8

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web9

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web10

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web11

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web12

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web13

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web14

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web15

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web16

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web17

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web18

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web19

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web20

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web21

Warning: readdir(): supplied argument is not a valid Directory resource in /srv/www/htdocs/web8/html/sicherheitstest.php on line 20
web22

/etc wird ausgelesen, das möchte ich nicht unbedingt...

cu
Sundriver
 
Last edited by a moderator:
Wenn du suphp verwendest hat jeder Benutzer eine eigenen php.ini
Zu finden unter /etc/apache2/ welche allerdings regelmäßig durch Confixx überschrieben werden.

Desweiteren kann ich dir nur die HTTP Options empfehlen.
Ich habe zum Beispiel den schon vorhandenen Eintrag für openbasedir um das Homeverzeichniss des Benutzers erweitert und für die disable functions auch ein eigenes "Template" hinzugefügt.

Dannach findet man unter HTTP Special zwei Modi: Einfach und Expert
Im einfachen Modi kannst du ganz einfach die "Templates" für einzelne Domain setzen.
 
Wenn du suphp verwendest hat jeder Benutzer eine eigenen php.ini
Zu finden unter /etc/apache2/ welche allerdings regelmäßig durch Confixx überschrieben werden.

Genau das ist das Problem, siehe ganz oben ;-)

Desweiteren kann ich dir nur die HTTP Options empfehlen.
Ich habe zum Beispiel den schon vorhandenen Eintrag für openbasedir um das Homeverzeichniss des Benutzers erweitert und für die disable functions auch ein eigenes "Template" hinzugefügt.

Dannach findet man unter HTTP Special zwei Modi: Einfach und Expert
Im einfachen Modi kannst du ganz einfach die "Templates" für einzelne Domain setzen.

O.K. das habe ich gestern Abend noch probiert, allerdings noch nicht getestet.
Werd nacher gleich mal rangehen...

NACHTRAG: Hab's hinbekommen, Vielen dank!

cu
Sundriver
 
Last edited by a moderator:
Back
Top