[ADU] cvičení {1..3}

Odpovědět
Uživatelský avatar
Destroyer
VCKLAN TEAM
Příspěvky: 812
Registrován: čtv 13. srp 2009 13:50:15
Bydliště: Praha 12
Kontaktovat uživatele:

cvičení {1..3}

Příspěvek od Destroyer » pon 16. úno 2015 2:49:31

6.

Kód: Vybrat vše

useradd -u 1001 -m -d /export/home/user1 -s /bin/bash user1
passwd user1
useradd -u 1002 -m -d /export/home/user2 -s /bin/bash user2
passwd user2
groupadd -g 101 adu
usermod -G adu user1
less /etc/passwd
less /etc/shadow
less /etc/group
7. ukazka souboru

Kód: Vybrat vše

#
#
# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
#
# /etc/security/policy.conf
#
# security policy configuration for user attributes. see policy.conf(4)
#
#ident  "@(#)policy.conf        1.13    11/11/18 SMI"
#
AUTHS_GRANTED=solaris.device.cdrw
PROFS_GRANTED=Basic Solaris User

# crypt(3c) Algorithms Configuration
#
# CRYPT_ALGORITHMS_ALLOW specifies the algorithms that are allowed to
# be used for new passwords.  This is enforced only in crypt_gensalt(3c).
#
CRYPT_ALGORITHMS_ALLOW=1,2a,md5,5,6

# To deprecate use of the traditional unix algorithm, uncomment below
# and change CRYPT_DEFAULT= to another algorithm.  For example,
# CRYPT_DEFAULT=1 for BSD/Linux MD5.
#
#CRYPT_ALGORITHMS_DEPRECATE=__unix__

# The Solaris default is the traditional UNIX algorithm.  This is not
# listed in crypt.conf(4) since it is internal to libc.  The reserved
# name __unix__ is used to refer to it.
#
CRYPT_DEFAULT=__unix__
#
# These settings determine the default privileges users have.  If not set,
# the default privileges are taken from the inherited set.
# There are two different settings; PRIV_DEFAULT determines the default
# set on login; PRIV_LIMIT defines the Limit set on login.
# Individual users can have privileges assigned or taken away through
# user_attr.  Privileges can also be assigned to profiles in which case
# the users with those profiles can use those privileges through pfexec(1m).
# For maximum future compatibility, the specifications should
# always include "basic" or "all"; privileges should then be removed using
# the negation.  E.g., PRIV_LIMIT=all,!sys_linkdir takes away only the
# sys_linkdir privilege, regardless of future additional privileges.
# Similarly, PRIV_DEFAULT=basic,!file_link_any takes away only the
# file_link_any privilege from the basic privilege set; only that notation
# is immune from a future addition of currently unprivileged operations to
# the basic privilege set.
# NOTE: removing privileges from the the Limit set requires EXTREME care
# as any set-uid root program may suddenly fail because it lacks certain
# privilege(s).
#
#PRIV_DEFAULT=basic
#PRIV_LIMIT=all
#
# LOCK_AFTER_RETRIES specifies the default account locking policy for local
# user accounts (passwd(4)/shadow(4)).  The default may be overridden by
# a user's user_attr(4) "lock_after_retries" value.
# YES enables local account locking, NO disables local account locking.
# The default value is NO.
#
#LOCK_AFTER_RETRIES=NO
# Restrictive Locking: Passwd and account creation semantics
# changed in Oracle Solaris 10 9/10 and Oracle Solaris 10 8/11 to
# a more restrictive model.
#
# If this option is set to "NO" then the behavior from
# Solaris 10 10/09 (s10s_u8wos_08a, s10x_u8wos_08a) will be in effect:
# -- Assigning a new password will unlock a locked account
# -- No Login accounts will be lockable via "passwd -l."
# -- New accounts will have "*LK*" in the password field.
# -- passwd -l returns 0 if the account is already locked.
#
# If set to "YES:
# -- Assigning a new password to a locked account will replace the password
#    but retain the lock.
# -- No Login accounts (see the -N option of passwd(1)) cannot be locked
#    directly; passwd -d followed by passwd -l is required.
# -- New accounts will have "UP" in the password field
# --  passwd -l returns a non-zero value if nothing changes.
#
# For more information, see passwd(1), policy.conf(4), and  "Assigning
# a New Password Does Not Unlock a Locked Account" in the  Oracle
# Solaris 10 8/11 What's New section on  Security Enhancements.
#
# Default is YES
#
# This option is Obsolete [ see attributes(5) ] and has been removed
# from a newer release.
#RESTRICTIVE_LOCKING=YES

Kód: Vybrat vše

#
# Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
#ident  "@(#)crypt.conf 1.2     08/05/14 SMI"
#
# The algorithm name __unix__ is reserved.

1       crypt_bsdmd5.so.1
2a      crypt_bsdbf.so.1
md5     crypt_sunmd5.so.1
5       crypt_sha256.so.1
6       crypt_sha512.so.1
8. ukazka souboru

Kód: Vybrat vše

#ident  "@(#)passwd.dfl 1.7     04/04/22 SMI"
#
# Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
MAXWEEKS=
MINWEEKS=
PASSLENGTH=6

# NAMECHECK enables/disables login name checking.
# The default is to do login name checking.
# Specifying a value of "NO" will disable login name checking.
#
#NAMECHECK=NO

# HISTORY sets the number of prior password changes to keep and
# check for a user when changing passwords.  Setting the HISTORY
# value to zero (0), or removing/commenting out the flag will
# cause all users' prior password history to be discarded at the
# next password change by any user.  No password history will
# be checked if the flag is not present or has zero value.
# The maximum value of HISTORY is 26.
#
# This flag is only enforced for user accounts defined in the
# local passwd(4)/shadow(4) files.
#
#HISTORY=0
#
# Password complexity tunables.  The values listed are the defaults
# which are compatible with previous releases of passwd.
# See passwd(1) and pam_authtok_check(5) for use warnings and
# discussion of the use of these options.
#
#MINDIFF=3
#MINALPHA=2
#MINNONALPHA=1
#MINUPPER=0
#MINLOWER=0
#MAXREPEATS=0
#MINSPECIAL=0
#MINDIGIT=0
#WHITESPACE=YES
#
#
# passwd performs dictionary lookups if DICTIONLIST or DICTIONDBDIR
# is defined. If the password database does not yet exist, it is
# created by passwd. See passwd(1), pam_authtok_check(5) and
# mkdict(1) for more information.
#
#DICTIONLIST=
#DICTIONDBDIR=/var/passwd
You're pro or you're a noob. That's life

Uživatelský avatar
Maple
VCKLAN TEAM
Příspěvky: 676
Registrován: úte 01. zář 2009 7:40:17
Bydliště: Babákova 2152, Praha 4
Kontaktovat uživatele:

Re: cvičení 1

Příspěvek od Maple » úte 17. úno 2015 3:12:07

[https://www.fit-wiki.cz/%C5%A1kola/p%C5 ... i_ls1314_1

6. Přidání uživatele a skupiny
- Vytvořte nového uživatele user1 s UID 1001 s domovským adresářem /export/home/user1 a nastavte mu heslo
- Analogicky vytvořte uživatele user2
- Vytvořte novou skupinu adu s GID 101 a přidejte ji uživateli user1 jako sekundární
- Prohlédněte si změny v souborech /etc/passwd, /etc/shadow a /etc/group

Kód: Vybrat vše

useradd -u 1001 -m -d /export/home/user1 -s /bin/bash user1
passwd user1
useradd -u 1002 -m -d /export/home/user2 -s /bin/bash user2
passwd user2
groupadd -g 101 adu
usermod -G adu user1
cat /etc/group
cat /etc/passwd

7. Nastavení jiného kryptovacího algoritmu hesel (Solaris)
- Nastavte jiný algoritmus kryptování uživatelských hesel, než je nastavený implicitně.
- Ověřte na uživateli, vytvořeném v předchozím příkladu.

Kód: Vybrat vše

# Algoritmus kryptovani se zmeni v souboru /etc/security/policy.conf na řádce:
CRYPT_DEFAULT=__unix__
# Povolene hodnoty jsou uvedeny na řádce:
CRYPT_ALGORITHMS_ALLOW=1,2a,md5,5,6

8. Změna pravidel pro vytváření hesel (Solaris)
- Nastavte jiná pravidla pro tvorbu hesel, než jsou implicitní, včetně zákazu opakování hesel.
- Ověřte na uživatelích, vytvořených v předchozím příkladu.

Kód: Vybrat vše

# Vsechny zmeny se provadi v souboru /etc/default/passwd 
# Pro ukladani historie hesel do souboru /etc/security/passhistory
# je treba odkomentovat a nastavit na jinou hodnotu:
HISTORY=0

9. Ověřte, že vlastníkem procesu passwd nemusí být ten, kdo si heslo mění

Kód: Vybrat vše

ssh student@localhost
passwd user1  # v jinem terminalu
ps -ef | grep passwd
ps -e -o pid,ppid,ruser,user,fname | grep passwd

Uživatelský avatar
Maple
VCKLAN TEAM
Příspěvky: 676
Registrován: úte 01. zář 2009 7:40:17
Bydliště: Babákova 2152, Praha 4
Kontaktovat uživatele:

Re: cvičení 1

Příspěvek od Maple » úte 17. úno 2015 3:26:51

https://docs.google.com/document/d/1TAo ... 0GiLg/edit

Kód: Vybrat vše

#Cviceni 1:
#6)
useradd -u 1001 -m -d /export/home/user1 -c "User1" -s /bin/bash user1
passwd user1
useradd -u 1002 -m -d /export/home/user2 -c "User2" -s /bin/bash user2
passwd user2
groupadd -g 101 adu
cat /etc/group
cat /etc/passwd
usermod -g adu user1

#7)
#(http://www.sunhelp.ru/archives/79-Solaris_dlina_parolJa_i_metod_kriptovaniJa_.html)
cat /etc/security/policy.conf
CRYPT_ALGORITHMS_DEPRECATE=__unix__      # odkomentovat
CRYPT_DEFAULT=2a                                        # pozmenit na 2a
passwd user2

#8)
gedit  /etc/default/passwd
PASSLENGTH=3                                                # pozmenit na napr. 3
MAXREPEATS=0                                                # odkomentovat
cat /etc/security/passhistory


#9)
ssh student@localhost
passwd user1                                                    # v jinem terminaalu
ps -ef | grep passwd
ps -e -o pid,ppid,ruser,user,fname   |  grep passwd

Uživatelský avatar
Maple
VCKLAN TEAM
Příspěvky: 676
Registrován: úte 01. zář 2009 7:40:17
Bydliště: Babákova 2152, Praha 4
Kontaktovat uživatele:

cvičení 2

Příspěvek od Maple » ned 22. úno 2015 23:56:36

2. Cvičení - Administrace uživatelů II, změna identity, sudo, ACL


1/ Vytvořte skript dejuid, který vyjde z /etc/passwd a vrátí první nepoužité UID větší než 1000 a menší než 60000.
(první, na který by asi vedla "nápověda" na eduxu - počítá s tím, že mezi využitými UID nejsou mezery -- stačí tedy vzít největší a zvětšit ho ...
druhý by si měl poradit i s případnými mezerami )

Kód: Vybrat vše

#!/bin/bash
echo $(( `awk -F: '{ if ($3 >= 1000 && $3 <= 59998) {print $3} }' /etc/passwd | sort -n | tail -1` + 1 ))

Kód: Vybrat vše

#!/bin/bash
awk -F: 'BEGIN {puid=0;} {if ($3>=1000 && $3<=59998) {if ($3-puid>1 && puid!=0) {exit 0;} else {puid=$3;}}} END {print puid+1;}' /etc/passwd

2/ Vytvořte skript, který přidá uživatele zadaného parametrem.

Kód: Vybrat vše

#!/bin/bash
cat /etc/passwd | cut -d: -f1 | grep -q "^$1$"
if [ $? -eq 0 ]; then echo "User already exists."; exit 1; fi

NEWUID=`awk -F: 'BEGIN {puid=0;} {if ($3>=1000 && $3<=59998) {if ($3-puid>1 && puid!=0) {exit 0;} else {puid=$3;}}} END {print puid+1;}' /etc/passwd`
STAFFID=`grep staff /etc/group | cut -d":" -f3`
echo "$1:x:$NEWUID:$STAFFID::/export/home/$1:/usr/bin/bash" >> /etc/passwd
mkdir "/export/home/$1"
cp -R /etc/skel/new/. "/export/home/$1"
USERPASS=`openssl passwd -1 -salt xyz "123abc"`
echo "$1:$USERPASS::::::" >> /etc/shadow
chown -R "$1:staff" /export/home/$1
chmod -R 744 /export/home/$1

3/

Kód: Vybrat vše

# ověřte rozdíl mezi su - user a su user:
# Neuvede-li se „–“, změní se pouze identita, prostředí zůstává (nebezpečné!)
# Uvede-li se „–“, je (téměř) ekvivalentní běžnému přihlášení
su - user
su user

ssh user@localhost
passwd
#TO-BE-DONE

#3 druhy vnitřní identity procesu:
#- Reálná (RUID, RGID) - využívaná při akceptaci signálů
#- Efektivní (EUID, EGID) - při práci se soubory (př. práva, vlastnictví)
#- Uložená (saved) (SUID, SGID) - uchování identity při změně EUID

4/
5/ Prohlédněte si obsah logu a pak vypněte/zapněte logování příkazu su
(cat /etc/default/su ... z fraye:)

Kód: Vybrat vše

#ident  "@(#)su.dfl     1.6     93/08/14 SMI"   /* SVr4.0 1.2   */

# SULOG determines the location of the file used to log all su attempts
#
SULOG=/var/adm/sulog

# CONSOLE determines whether attempts to su to root should be logged
# to the named device
#
#CONSOLE=/dev/console

# PATH sets the initial shell PATH variable
#
#PATH=/usr/bin:

# SUPATH sets the initial shell PATH variable for root
#
#SUPATH=/usr/sbin:/usr/bin

# SYSLOG determines whether the syslog(3) LOG_AUTH facility should be used
# to log all su attempts.  LOG_NOTICE messages are generated for su's to
# root, LOG_INFO messages are generated for su's to other users, and LOG_CRIT
# messages are generated for failed su attempts.
#
SYSLOG=YES

Kód: Vybrat vše

cat /var/adm/sulog
# v /etc/default/su změnit SYSLOG=YES/NO (I guess)

6/ Zařiďte, aby někteří z uživatelů, vytvořených předchozím skriptem, mohli monitorovat síťový provoz příkazem snoop.

Kód: Vybrat vše

echo "USERS ALL=(root) $SNOOPPATH" >> /etc/sudoers
su - user1
sudo snoop

7/ (V Solarisu v UFS filesystému) Otestujte možnost čtení pomocí ACL práv.

Kód: Vybrat vše

cp /etc/shadow /UFS
setfacl -m u:user1:r-- /UFS/shadow

# funkce masky ... třeba pokud budeme chtít mít jistotu, že všichni budou moci soubor jen číst (pokud něco)
# setfacl -m m:r-- /UFS/shadow

touch /UFS/test
getfacl /UFS/shadow | setfacl -f - /UFS/test

8/ Experimentálně zjistěte, kolik ACL entry je možno nastavit u souboru. (Nepovinné)
9/ (V Solarisu v ZFS filesystému) Nastavte ACL u souboru /etc/shadow tak, aby byl čitelný stejným uživatelem, jako v příkladu 6.

Kód: Vybrat vše

chmod A+user:user1:read_data:allow /etc/shadow

Uživatelský avatar
Destroyer
VCKLAN TEAM
Příspěvky: 812
Registrován: čtv 13. srp 2009 13:50:15
Bydliště: Praha 12
Kontaktovat uživatele:

Re: cvičení 2

Příspěvek od Destroyer » úte 24. úno 2015 20:40:43

Kód: Vybrat vše

#!/bin/bash

#ukol 1 - vytvorit uzivatele
cut -d":" -f1 /etc/passwd | grep -q "^$1$"
if [ "$?" -eq 0 ]; then echo "Uzivatel existuje" ;exit 1 ; fi

NEWUID=`awk -F: 'BEGIN {puid=0;} {if ($3>=1000 && $3<=59998) {if ($3-puid>1 && puid!=0) {exit 0;} else {puid=$3;}}} END {print puid+1;}' /etc/passwd`
STAFFID=`grep staff /etc/group | cut -d":" -f3 `
echo "$1:x:$NEWUID:$STAFFID::/export/home/$1:/usr/bin/bash" >> /etc/passwd
mkdir "/export/home/$1"
cp -R /etc/skel/user/. "/export/home/$1"

USERPASS=`openssl passwd -1 -salt xyz  Aa123456`
echo "$1:$USERPASS:::::::" >> /etc/shadow
chown -R "$1:staff" /export/home/$1
chmod -R 744 /export/home/$1


# ukol 2 - pridat studentovi moznost zabijet programy nove vytvorenym uzivatelum, TODO verze!
cut -d":" -f1 /etc/sudoers | grep -q "^$1"
if [ "$?" -eq 0 ]; then
part=`grep -v "student ALL=" /etc/sudoers`;
part1=`grep "student ALL=" /etc/sudoers | cut -d"(" -f1;`;
part2="($1,";
part3=`grep "student ALL=" /etc/sudoers | cut -d"(" -f2;`;
echo "$part\n$part1$part2$part3" > /etc/sudoers; else  echo "student ALL=($1) /bin/kill,/bin/pkill" > /etc/sudoers ; fi
You're pro or you're a noob. That's life

Uživatelský avatar
Maple
VCKLAN TEAM
Příspěvky: 676
Registrován: úte 01. zář 2009 7:40:17
Bydliště: Babákova 2152, Praha 4
Kontaktovat uživatele:

cvičení 3

Příspěvek od Maple » úte 03. bře 2015 18:13:21

RBAC

0/ Vytvořte jakýmkoli způsobem alespoň 3 běžné uživatele, včetně nastavení hesla.

Kód: Vybrat vše

useradd -u 1001 -m -d /export/home/user1 -s /bin/pfksh user1
passwd user1
useradd -u 1002 -m -d /export/home/user2 -s /bin/pfksh user2
passwd user2
useradd -u 1003 -m -d /export/home/user2 -s /bin/pfksh user3
passwd user3

1/ Uveďte systém (Solaris 11) do implicitního stavu, kdy se root nemůže přihlašovat přímo, ale jen prostřednictvim běžného uživatele (zde admin) pomocí su -

Kód: Vybrat vše

cp /etc/user_attr /etc/user_attr.arch
mv /etc/user_attr.orig_S11 /etc/user_attr
ssh root@localhost

2/ Vytvořte profil super_reader, který umožní přečíst příkazem more jakýkoli soubor a přiřaďte tento profil nějakému běžnému uživateli.

Kód: Vybrat vše

echo 'super_reader:RO::\' >> /etc/security/prof_attr.d/core-os
echo "super_reader:solaris:cmd:RO::/usr/bin/more:euid=0" >> /etc/security/exec_attr.d/core-os
usermod -P super_reader user1

3/ Vytvořte roli ctenar s tímto profilem, přiřaďte ji dalšímu uživateli a otestujte v rámci role stejnými příkazy jako v příkladu 2/.

Kód: Vybrat vše

roleadd -m -d /export/home/ctenar -P super_reader -s /bin/pfksh ctenar
passwd ctenar
usermod -R ctenar user1

4/ Vytvořte skript cat_shadow, který příkazem cat vypíše soubor /etc/shadow.

Kód: Vybrat vše

#!/bin/pfksh
cat /etc/shadow

Kód: Vybrat vše

chmod a+x /usr/bin/cat_shadow

5/ Vyměňte přímé spouštění /usr/bin/more v roli (profilu) za tento skript.

Kód: Vybrat vše

# V souboru /etc/security/exec_attr.d/core-os zmenit posledni radku na:
super_reader:solaris:cmd:RO::/usr/bin/cat_shadow:uid=0

Privilegia

6/ Seznamte se s příkazem ppriv a privilegii


7/ Umožněte vybranému uživateli (shellu) pomocí privilegií přečíst jakýkoli soubor jakýmkoli příkazem.
8/ Vyrobte profil supershell tvořený shellem super_bash a přiřaďte jej nějakému uživateli, případně roli.

Odpovědět