0. 들어가기
[모니터링 툴]
fortigate, asg <==UTM
PacketFence, fortigate, endian, security onion untangle 실습해 보기
1. MRTG
[+] 실습
설치 : apt -y install snmp snmpd apache2
파일 백업 cp -arp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
파일수정 : nano /etc/snmp/snmp.conf
재시작 : service snmpd restart
nmpwalk -v 1 -c public localhost | more
OID는~~~~~
ISO 같은 경우는 장치에 대한 정보?
snmpwalk -v 2c pulic localhost [OID]
- mrtg 설치 (권한은 루트 사용자라는 문구?)
- cfg파일 생성:
> cfgmaker --global "workDir": /var/www/mrtg/ --global "Options[ ]:growright,bits" --global "Language: Korean" public@localhost > /etc/mrtg.cfg
- sed -n '10,30p' /etc/mrtg.cfg
- 외부에서 접속 가능하도록 설정
- 웹에서 localhost/mrtg를 열어 정보가 나오는지 확인
[+] Cacti
- RRDtool(Round Robin Database Tool)을 사용하는 MRTG를 사용자에게 친화적으로 만든 도구
- Cacti에서 원하는 타겟 호스트를 add device를 통해서 추가해주면 모니터링 할 수 있는데 타겟 호스트에는 SNMP가 실행되어야 한다.
- 트래픽을 Cacti 서버에게 전해줄 수 있다. Cacti는 MySQL, PHP 등의 패키지와 함께 작동된다. CactiEZ-v0.7.iso 파일로 설치다.
[+] zabbix(자빅스)
- 오픈소스 모니터링 도구
2. 관리자의 명령어
[+] root 비밀번호 변경
[CentOS] 리부팅시 i를 눌러 해당 페이지 접속 후swap init=/bin/bash rhgb quiet 으로 적어준다. 리부팅 (컨트롤 X)
- bash로 접속하여 패스워드 등 관리자 권한으로 수정이 가능하다. (bash-4.2# )
[+] grup
- 부팅 정보를 가지고 있는 /etc/grup.conf 파일 잠궈두기
- 링크정보 및 파일정보
- 백그라운드($)로 실행하고 비밀번호(setpassword) 지정
- cfg적용하기
- 리부팅시 i를 눌렀을 때 이제 패스워드를 입력하여야 접속할 수 있다.
[+] chroot(change root)
관리자는 서버 시스템에 FTP나 ,HTTP, NFS 등의 서버 서비스를 설정해두고,
클라이언트들이 FTP나 Telnet, SSH, HTTP 등으로 서버에 연결해서 파일을 업/다운로드하게 하는데 FTP 서버인 경우 FTP 서버의 오픈 디렉터리 /var/ftpd/pub 디렉터리, HTTP인 경우 /var/www/html 디렉터리로 들어와서 cd ../나 ls ../ 해서 오픈된 pub 디렉터리의 상위 디렉터리로 이동하거나 살펴보게 하면 보안상 문제가 될 수 있다.
이럴 때 chroot를 사용하는데 이 명령어는 어느 디렉터리를 가상의 최상위 / 디렉터리로 만들어서 cd ../ 했을 때 더 이상 상위 디렉터리로 이동하지 못하게 해서 보안을 증진시킨다.
SSH 서비스가 있다는 것은 SSL로 이미 키를 사용해서 연결한다는 의미이다.
=>SSL(Secure Socket Layer)로 sftp, https, smtps, ... 등이 가능한 것이다.
예시)
- /var/ftpd/pub
- /var/www/html/index.php
==> 웹서버의 경우 파일 업로드/다운로드 취약점을 보완할 수 있다.(/../../etc/passwd)
[+] chroot 실습
- sftp로 접속할 때, 사용자별로 권한을 다르게 지정할 수 있다.
- 접속하는 사용자 별로 폴더 읽기 권한이 다르다는 것을 확인할 수 있다.
> Centos의 경우 /root의 권한과 같게 나오고, tester으로 접속시 한 디렉토리 내에서만 작업이 가능하다.
[+]SELinux 의 컨텍스트(chcon)
-chcon(change context) 와 restorecon
- SELinux로 보안을 설정 할 때 사용하는 명령어
- 불편하다는 이유로 SELinux 설정을 디폴트 enforcing에서 permissive나 disabled로 해두고 서버 서비스를 운영하는 경우가 있다.
> 보안 취약점
- getsebool -a 해서 보면 많은 서비스의 Security 설정(SELinux 설정)이 Boolean의 on/off로 된 것을 볼 수 있는데
어느 서비스가 on이면 SELinux 설정과 일치해야만 실행되기 때문에 강력한 보안이 된 상태에서 해당 서비스가 실행되는 것이고,
off이면 SELinux의 설정을 무시하고 유연하게 운용되게 된다.
[+] 실습
- getsebool -a 으로 보안(SELinux)설정되어 있는 것을 확인할 수 있다. (on/off)
- on이면 SELinux설정과 일치해야하고 off이면 아니여되 사용이 된다.
- 예를 들어 tftp의 홈 디렉터리가 off으로 되어 있다면 SELinux설정이 필요없고 마운트의 경우 on
- httpd의 메인설정 파일
>conf 와 conf.d도 있는데 메인설정은 conf/*.conf설정할 수 있고 conf.d/ 아래에서도 in
- 설치후 /etc/httpd 에 설정과 로그 파일이 생기게 된다.
- 하위 디렉터리별로 conf와 conf.d파일이 생성되는데 두 폴더 모두 설정파일을 모아놓았다는 점에서는 같으나,
일괄/모듈별로 설정할 수 있다.
- conf : 웹서버의 주요 설정 파일인 httpd.conf 파일이 있는 곳/ 그외 적절한 MIME 형식을 지정하기 위한 파일들의 포맷이 지정되어 있는 파일인 magic 파일이 있다.
- conf.d : 아파치의 모듈 설정이 있는 디렉터리이다. php 나 subversion, mod_ssl 등 아파치 모듈을 설치하면 모듈별 설정 파일이 같이 설치된다. 설정 파일명은 모듈명.conf 이다. php 모듈 설치시 php.conf 파일이 같이 설치된다. httpd.conf 에서 다음과 같이 conf.d 에 있는 파일을 로딩하게 설정되어 있다.
Include conf.d/*.conf
- conf.d/의 경우 각 모듈별로 파일을 설정하기 때문에 메인 설정 파일에 집중되지 않아 무겁지 않다.
[+] httpd 설정
- 모듈 파일 생성
> vi /etc/httpd/conf.d/web.conf
-설정 파일이 제대로 되어 있는지 test를 진행한다.
> syntax OK
[+] chattr / lsattr
- chattr명령어는 일반 사용자가 특정 파일을 실행하지 못하게 할 뿐 아니라 root자신도 특정 파일의 권한 속성 변경하지 못하게 할 수 있다.
- useradd 명령어의 권한 설정하기
- which useradd로 위치를 찾고 ls로 파일의 사용 권한을 확인해보면 아래와 같다.
> chmod 707 /usr/sbin/useradd로 주면 누구나 유저를 생성할 수 있다.즉, 아무나 유저를 생성할 수있다(취약점)
- chattr로 속성을 변경할 수 있고, lsattr은 권한을 제거하는 용도이다.
[+]SetUID, SetGID, Sticky Bit
- 리눅스를 설치하면 루트 소유로 SetUID,SetGID, Sticky Bit 설정된 파일들이 만들어진다.
[+]실습
- s/s/t 소유자/그룹/아무나 실행할 수 있도록 한다.
- 대표적으로 /tmp 폴더는 Sticky Bit가 부여되어 있다
- setUID
> cat과 shadow에게 SetUID에게 실행권한(4)을 주면, 일반사용자도 shadow파일을 확인할 수 있다.!(보안 취약)
-SetGID
> /var/www/html파일의 그룹을 apache로 변경하고 그 파일에 SetGID 권한을 준다.
> testr1사용자를 만들고 그 그룹에 속하도록 권한을 변경해 줍니다.
- root소유의 폴더(/abc)에서 apache소속 사용자는 작업을 할 수 있다.
> /abc 디렉토리를 root사용자가 만들고, SetGID권한을 준 그룹(apache)의 사용자 tester2이 root 소유자의 /abc/ 디렉토리에서 작업을 할 수있다.
- Sticky Bit
> Sticky Bit를 주었을 때 누구나 centos/ 작업(생성,추가,변경) 할 수 있다.
> 다만, 삭제하지는 못하지는 못한다.
> root는 삭제도 할 수있다.
[+] 응용
- dnf -y install gcc-c++ 설치
- 실습 전에 /etc/passwd 파일을 백업해 놓고 작업 한다.
- [내용]
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
int main (int argc, char * argv []) {
struct stat st;
FILE * fp;
if (argc != 3) {
fprintf (stderr, "usage : %s file message\n", argv [0]);
exit(EXIT_FAILURE);
}
if (stat (argv [1], & st) < 0) {
fprintf (stderr, "can't find %s\n", argv [1]);
exit(EXIT_FAILURE);
}
if (st . st_uid != getuid ()) {
fprintf (stderr, "not the owner of %s\n", argv [1]);
exit(EXIT_FAILURE);
}
if (! S_ISREG (st . st_mode)) {
fprintf (stderr, "%s is not a normal file\n", argv[1]);
exit(EXIT_FAILURE);
}
if ((fp = fopen (argv [1], "w")) == NULL) {
fprintf (stderr, "can't open\n");
exit(EXIT_FAILURE);
}
fprintf (fp, "%s\n", argv [2]);
fclose (fp);
fprintf (stderr, "Write OK\n");
exit(EXIT_SUCCESS);
}
- hacker라는 생성하게될 유저는 /etc/passwd파일에 root와 같게 작성해서 넣어주면 hacker라는 유저와 root의 권한 같아진다.
> hacker는 정상적으로 만들어진 사용자가 아니고 password 역시 없는 상태에서 root의 권한(#)과 같게 설정되어 있는 것을 볼 수 있다.
'소소한 IT이야기 > 클라우드' 카테고리의 다른 글
Virtual LAN (VLAN) (2) | 2023.01.28 |
---|---|
[Linux_18] 네트워크 모니터링 (2) | 2023.01.26 |
[Linux_17] IDS,IPS,네트워크 모니터링 (2) | 2023.01.25 |