16. 5. 2023

CTF - CyberGame2023 - Configuration

Tento scenár je na jednej strane veľmi praktický, reálne cvičenie ako si skontrolovať a vylepšiť zabezpečenie svojho linuxového stroja - Hardening.

Na druhej strane je odpovedanie trochu zložité a nemusí sa podariť na prvý pokus. Niekedy stačí prepnúť jeden parameter, ktorý znefunkční viaceré iné, zle nastavené. Inokedy je v jednej odpovedi veľa rôznych nastavení.

Ste adminom web servera a prišlo Vám niekoľko požiadavok ohľadom zmien konfigurácií.

Prikladáme celé /etc/ (súbor configurations.tar)
https://drive.google.com/file/d/1DtMrIe4i9Bn1UITyYEUZc_Je8QSDylb8/view?usp=share_link

Taktiež prikladáme zoznam súborov ktorý budete potrebovať pre vaše odpovede. V tomto súbore nájdete všetky súbory z /etc/ s príslušnými číslami. (súbor file_list.txt)

https://drive.google.com/file/d/1tmNtsSdnloLi-RyATmTMb_FKzd21Aiz1/view?usp=share_link

Reported Difficulty: 1


1. SSH

Naša firemná politika nám káže, aby sa na server nedalo prihlásiť cez ssh ako root, a taktiež aby nedovoľovalo prihlásenie do servera cez ssh s prázdnym heslom. Ktoré riadky a súbory je potrebné zmeniť aby sme dodržali firemnú politiku?

Formát vlajky je file_number:line_number,file_number:line_number. Príklad: Pre riadky 11 a 14 v súbore systemd/sleep.conf a riadok 22 v súbore cloud/cloud.cfg použite formát 47:22,89:11,89:14. Zoraďte výsledky od najnižšieho po najvyšší (správne: 47:22,89:11,89:14, nesprávne: 89:11,89:14,47:22}.


Chceme teda zakázať rootovské prihlásenie cez ssh, a zakázať prázdne heslo pre ssh prístup.
Za normálnych okolností pozrieme do súboru /etc/ssh/ssh_config {521}, avšak tu sú obe nastavenia zakomentované:
#PermitRootLogin prohibit-password    {33} (default=yes)
#PermitEmptyPasswords no   {58} (default=no)

Máme ale nahrávaný tento súbor s takýmito nastaveniami:
/etc/ssh/sshd_config.d/10-default-settings-for-web.conf   {515}
PermitEmptyPasswords yes   {40}
PermitRootLogin yes   {64}

Čiže toto zmeníme, správna odpoveď je 515:40,515:64


2. Apache2

Ako webovú službu používame Apache2,

je potrebné nastaviť aby sme pri vstupe na stránku na zložku,
 nevideli zoznam súborov ktoré obsahuje
 (napríklad, ale nie limitované na http://our_website.com/uploads/).

Taktiež je potrebné nastaviť aby sa v prípade kompromitácie webový používateľ
 nedokázal prihlásiť ako root cez sudo bez hesla. Ktoré riadky a súbory je potrebné zmeniť?
Na zakázanie výpisu súborov v zložke slúži "noindex" voľba.
V súbore /etc/apache2/apache2.conf  {341} nájdeme sekciu, z ktorej odstránime slovo "Indexes":
<Directory /var/www/>
        Options Indexes FollowSymLinks    {171}

V súbore /etc/apache2/envvars je vidieť, pod kým beží apache: www-data
Tomuto používateľovi chceme obmedziť sudo na roota bez hesla.
Pozrieme teda konfigurák /etc/sudoers  {883}
Upravíme riadok
# User privilege specification
root    ALL=(ALL:ALL) ALL
www-data ALL=(ALL) NOPASSWD:ALL  {45}

Správna odpoveď je 341:171,883:45.


3. FTP

Teraz potrebujeme zmeniť konfiguráciu nášho ftp,
 potrebujeme aby anonymní používatelia mohli nahrávať súbory do /var/www/html/uploads/,
 ale potrebujeme im zabrániť aby tam mohli vytvárať zložky alebo meniť a mazať subory.
 Ktoré riadky a súbory je potrebné zmeniť?
Podľa konfigurácie tu beží ftp server "vsftpd" a preto pozrieme jeho konfiguračné parametre tu http://vsftpd.beasts.org/vsftpd_conf.html
Upravujeme konfigurák /etc/vsftpd.conf   {1042}

Tu im zmenou zabránime vytvárať adresáre:
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
anon_mkdir_write_enable=YES  {43}

Tu im zmenou zabránime delete, modify súborov:
anon_other_write_enable=YES   {105}
If set to YES, anonymous users will be permitted to perform write operations other than upload and create directory, such as deletion and renaming. This is generally not recommended but included for completeness.

Pre ukladanie len do uploads im musíme nastaviť tento parameter:
anon_root=/   {72}

Správna odpoveď je 1042:43,1042:72,1042:105.


4. Fail2Ban

Aby sme sa zabezpečili proti bruteforce útokom, nainštalovali sme fail2ban,
 viete ho nakonfigurovať tak aby sa
 prístup na služby zablokoval po 6 pokusoch,
 pristup na vsftpd po 3 pokusoch
 a všeobecný bantime trval 30 minút?
Pre fail2ban máme konfigurák /etc/fail2ban/jail.conf  {263}.

Bantime máme nastaviť 30 minút, zmeníme teda:
# "bantime" is the number of seconds that a host is banned.
bantime  = 10m  {101}

Pre vsftpd lock po 3 pokusoch potrebujeme zmeniť:
maxretry = 10  {561}

Pre default lock služby po 6 pokusoch potrebujeme zmeniť riadok:
# "maxretry" is the number of failures before a host get banned.
maxretry = 5  {108}

Správna odpoveď je 263:101,263:108,263:561.


5. Logrotate

Teraz je potrebné nastaviť logrotate pre systémové logy tak, aby sa rotovali každý deň, a to do množstva 10.
Taktiež je potrebné nastaviť logrotate pre fail2ban aby sa týždenne archivované logy udržiavali aspoň 12 týždňov.

Pre nastavenie logrotate pre fail2ban upravujeme súbor /etc/logrotate.d/fail2ban  {627}
Nastaviť týždenne (máme) archivované logy na 12 týždňov (nemáme) musíme v tomto riadku:
    rotate 4    {4}

Pre nastavenie logrotate pre systémové logy upravujeme súbor /etc/logrotate.d/rsyslog  {638}
Zmeniť na denne archivované do množstva 10ks musíme na riadkoch:
    rotate 4   {15}
    weekly   {16}

Správna odpoveď je 627:4,638:15,638:16.

Žiadne komentáre:

Zverejnenie komentára