728x90
1๏ธโฃ ์ค์ต ๊ฐ์
SNORT๋ ๋คํธ์ํฌ ๊ธฐ๋ฐ ์นจ์
ํ์ง ์์คํ
(IDS)์ผ๋ก, ๋ค์ํ ํธ๋ํฝ ํ์ง๊ฐ ๊ฐ๋ฅํ์ง๋ง ๊ธฐ๋ณธ์ ์ผ๋ก ๋ก๊ทธ๋ ํ
์คํธ ํ์ผ๋ก ์ ์ฅ๋๋ค.
Barnyard2๋ SNORT๊ฐ ์์ฑํ๋ binary ๋ก๊ทธ(unified2 ํฌ๋งท)๋ฅผ ์ฝ์ด MySQL DB๋ก ์ ์ฅํด์ฃผ๋ ๋๊ตฌ๋ค.
์ด ์ค์ต์์๋ SNORT์ ํ์ง ๊ฒฐ๊ณผ๋ฅผ Barnyard2๋ฅผ ํตํด DB์ ์ ์ฅํ๊ณ , SQLyog๋ก ์กฐํํด๋ณด๋ ์ ๊ณผ์ ์ ์ ๋ฆฌํ๋ค.
๐น์ค์ต ํ๊ฒฝ
- ๊ฐ์ํ: VirtualBox
- OS: CentOS 7
- IDS: SNORT 2.9.20
- ๋ก๊ทธ ์์ง๊ธฐ: Barnyard2
- DB: MySQL 8.0
- ํด๋ผ์ด์ธํธ ํด: SQLyog
- ์๊ฒฉ ์ ์: PuTTY
2๏ธโฃ MySQL ์ค์น ๋ฐ ๊ธฐ๋ณธ ์ค์
- MySQL 8 ์ค์น๋ฅผ ์ํ ๊ณต์ ์ ์ฅ์๋ฅผ ์ถ๊ฐํ ํ, ``mysql-server ๋ฐ ๊ฐ๋ฐ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(mysql-devel)๋ฅผ ์ค์นํ๋ค
๐น1. MySQL ์ ์ฅ์ ๋ฑ๋ก
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
๐น2. MySQL ์๋ฒ ๋ฐ ๊ฐ๋ฐ ํจํค์ง ์ค์น
- MySQL ์๋ฒ์ C API ์ฐ๋์ ์ํ ๊ฐ๋ฐ ํจํค์ง ์ค์น
yum install mysql-server mysql-devel -y
๐น3. MySQL ์๋น์ค ์์ ๋ฐ ์ํ ํ์ธ
- MySQL ๋ฐ๋ชฌ์ ์คํํ๊ณ , ์ ์ ์๋ ์ฌ๋ถ๋ฅผ ํ์ธ
service mysqld start
service mysqld status
3๏ธโฃ MySQL ๋ณด์ ์ ์ฑ ์ํ (๊ฐ๋ฐ์ฉ ์ค์ )
๐น1. ํจ์ค์๋ ์ ์ฑ ๋ฎ์ถ๊ธฐ
- ๋น๋ฐ๋ฒํธ ๋ง๋ฃ ์ ๊ฑฐ ๋ฐ ๋ณต์ก๋ ์๊ตฌ ์กฐ๊ฑด ์ ๊ฑฐ
- ์ธ๋ถ ์ ๊ธ ๋นํ์ฑํ ๋ฐ DNS ํด์
echo >> /etc/my.cnf
echo "default_password_lifetime=0" >> /etc/my.cnf
echo "validate_password.policy=LOW" >> /etc/my.cnf
echo "validate_password.length=6" >> /etc/my.cnf
echo "validate_password.special_char_count=0" >> /etc/my.cnf
echo "validate_password.mixed_case_count=0" >> /etc/my.cnf
echo "validate_password.number_count=0" >> /etc/my.cnf
echo "skip_external_locking" >> /etc/my.cnf
echo "skip_name_resolve " >> /etc/my.cnf
- ``/etc/my.cnf`` ํ์ผ์์ ์์ฑ ๊ฒฐ๊ณผ ํ์ธ
vi /etc/my.cnf
๐น2. MySQL ์ฌ์์
- ์ค์ ๋ฐ์์ ์ํ MySQL ์ฌ์์
4๏ธโฃ MySQL ๊ณ์ ์ค์ ๋ฐ ์ธ๋ถ ์ ์ ํ์ฉ
๐น1. ์์ ๋น๋ฐ๋ฒํธ ํ์ธ
- ์ค์น ์ ์์ฑ๋ ์์ root ๋น๋ฐ๋ฒํธ ์ถ์ถ
grep "temporary password is generated" /var/log/mysqld.log | grep -oP "\S+$"
๐น2. ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ๋ฐ ์ธ๋ถ root ๊ณ์ ์์ฑ
- ํจ์ค์๋ ๋ง๋ฃ ์ํ๋ก ์ ์ํ์ฌ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
mysql --connect-expired-password -uroot -p -e \
"alter user 'root'@'localhost' identified with mysql_native_password by 'no1ids';"
- ์ธ๋ถ์์ ์ ์ ๊ฐ๋ฅํ root ๊ณ์ ์ ์์ฑํ๊ณ ๋ชจ๋ ๊ถํ ๋ถ์ฌ
mysql -uroot -p -e "create user 'root'@'%' identified by 'no1ids';"
mysql -uroot -p -e "alter user 'root'@'%' identified with mysql_native_password by 'no1ids';"
mysql -uroot -p -e "grant all privileges on *.* to 'root'@'%' with grant option;"
- ์์ฑํ ํจ์ค์๋๋ก ๋ก๊ทธ์ธ ์ ์ ํ ์คํธ
๐น3. SQLyog ์ ์ ํ ์คํธ
- SQLyog๋ฅผ ํตํด ์๊ฒฉ ์ ์ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ
5๏ธโฃ Barnyard2 ์ค์น
๐น1. ์์ค์ฝ๋ ๋ค์ด๋ก๋ ๋ฐ ์์ถ ํด์
wget https://github.com/firnsy/barnyard2/archive/master.tar.gz -O barnyard2.tar.gz
tar xvzf barnyard2.tar.gz
cd barnyard2-master
๐น2. ๋น๋ ๋ฐ ์ค์น
- ์ปดํ์ผ ํ๊ฒฝ ์ค๋น → ๊ตฌ์ฑ → ์ค์น
mkdir /var/log/barnyard2
touch /var/log/snort/barnyard2.temp
cp /usr/local/etc/barnyard2.conf /etc/snort/
๐น3. ๋ก๊ทธ ๋๋ ํ ๋ฆฌ ๋ฐ ์ค์ ๋ณต์ฌ
- Barnyard2 ๋ก๊ทธ ํ์ผ ์์ฑ ๋ฐ ์ค์ ํ์ผ ์์น ์กฐ์
mkdir /var/log/barnyard2
touch /var/log/snort/barnyard2.temp
cp /usr/local/etc/barnyard2.conf /etc/snort/
๐น4. barnyard2.conf ์ค์ ์์
- MySQL DB ์ฐ๊ฒฐ์ ์ํ ์ฌ์ฉ์ ์ ๋ณด ์ ๋ ฅ
vi /etc/snort/barnyard2.conf
[๋ณ๊ฒฝ ์ ]
#Examples:
# output database: log, mysql, user=root password=test dbname=db host=localhost
[๋ณ๊ฒฝ ํ]
#Examples:
output database: log, mysql, user=root password=no1ids dbname=snort host=localhost
6๏ธโฃ Snort DB ์์ฑ ๋ฐ ์คํค๋ง ์ ์ฉ
๐น1. ํ ์ด๋ธ ๊ตฌ์กฐ ์์ฑ
- Barnyard2์์ ์ฌ์ฉํ๋ ํ ์ด๋ธ ๊ตฌ์กฐ ์์ฑ
cd barnyard2-master/
mysql -u root -p -e "create database snort;"
mysql -u root -p -D snort < schemas/create_mysql
๐น2. ์์ฑํ ํ ์ด๋ธ ํ์ธ
- SQLyog์์ ``Refresh Object Browser``๋ฅผ ํด๋ฆญํ์ฌ ``snort`` ๋ฐ์ดํฐ๋ฒ ์ด์ค/ํ ์ด๋ธ ์์ฑ ํ์ธ
7๏ธโฃ SNORT ๋ฃฐ ๋ฐ SID ๋งคํ ์ค์
๐น1. SID ๋ฉ์์ง ๋งคํ
- SID์ ํด๋นํ๋ ๋ฉ์์ง๋ฅผ DB์์ ์ฝ๊ฒ ํ์ธ ๊ฐ๋ฅ
8๏ธโฃ ์คํ
๐น1. Barnyard2 ์คํ
barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f alert.log -w /var/log/snort/barnyard2.tmp
์ต์ | ์ค๋ช |
``-c`` | ์ค์ ํ์ผ ๊ฒฝ๋ก |
``-d`` | ๋ก๊ทธ ๋๋ ํ ๋ฆฌ |
``-f`` | unified2 ๋ก๊ทธ ํ์ผ ์ด๋ฆ |
``-w`` | waldo ํ์ผ ๊ฒฝ๋ก (์ค๋ณต ๋ฐฉ์ง์ฉ) |
๐น2. SNORT ์คํ
- SNORT ์คํํ์ฌ ํธ๋ํฝ ํ์ง ๋๊ธฐ
- ๋ฆฌ์์ค ํน์ฑ์ ๋ฐ๋ฅธ NIC ์ด๋ฆ(``eth1``) ๊ฐ์ ํ์ฌ ํ๊ฒฝ์ ๋ง๊ฒ ๋ณ๊ฒฝ
snort -i eth1 -c /etc/snort/snort.conf
๐น3. Ping์ผ๋ก ํ ์คํธ ํธ๋ํฝ ๋ฐ์
- ์ธ๋ถ์์ CentOS๋ก ping → SNORT ํ์ง → Barnyard2 → DB ์ ์ฅ
ping 192.16856.100
- barnyard ์คํ ์ธ์ ์์ ํธ๋ํฝ ํ์ธ
๐น4. SQLyog์์ ํ์ง ๊ฒฐ๊ณผ ํ์ธ
- ``event`` ํ ์ด๋ธ๊ณผ ``signature`` ํ ์ด๋ธ์ ์กฐ์ธํ์ฌ ํ์ง ๊ฒฐ๊ณผ ํ์ธ
SELECT a.timestamp, b.sig_name
FROM event a, signature b
WHERE a.signature = b.sig_id;
728x90
'๐จ ๋ณด์ ์ค๋ฌด > ๋ณด์ ๊ด์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SNORT] PCRE ์ ๊ทํํ์ ์ฌ์ฉ ๋ฐฉ๋ฒ (VIM ํ์ฉ) (0) | 2025.04.03 |
---|---|
[SNORT] SNORT ์คํค๋ง ๊ตฌ์กฐ์ ๋ฃฐ ๊ตฌ์ฑ ๋ฐ ์ต์ ์ ๋ณด (0) | 2025.04.02 |
[์นจ์ ํ์ง์์คํ ์ค์ต] โ SNORT ์ค์น ๋ฐ ping ํธ๋ํฝ ํ์ง (CentOS) (0) | 2025.04.01 |
[SOC] SIEM๊ณผ SOAR (0) | 2025.04.01 |
[SOC] ๋ณด์๊ด์ ์์คํ ์์์ ๋ณด์ ์๋ฃจ์ (0) | 2025.04.01 |