Syslog
๐ Syslog Server ๊ตฌ์ถ ๋ฐ ์ค์ ๊ฐ์ด๋ ๐
1๏ธโฃ Syslog๋?
**Syslog (System Logging Protocol)**์ ์๋ฒ, ๋คํธ์ํฌ ์ฅ๋น, ์ ํ๋ฆฌ์ผ์ด์
๋ฑ์ ๋ก๊ทธ๋ฅผ ์ค์ ์ง์ค์์ผ๋ก ์์งํ๋ ํ๋กํ ์ฝ์
๋๋ค.
์ด๋ฅผ ํตํด ์๋ฒ ๋ฐ ๋คํธ์ํฌ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ , ์ฅ์ ๋ฐ์ ์ ์์ธ์ ๋ถ์ํ ์ ์์ต๋๋ค.
โ Syslog์ ์ฃผ์ ๊ธฐ๋ฅ
- ๐ฅ ๋ก๊ทธ ์ค์ ์ง์คํ โ ์ฌ๋ฌ ์ฅ์น์์ ๋ก๊ทธ๋ฅผ ํ ๊ณณ์์ ๊ด๋ฆฌ
- ๐ ์ค์๊ฐ ๋ชจ๋ํฐ๋ง โ ๋ก๊ทธ ๋ถ์์ ํตํด ์๋ฒ ์ํ ๋ฐ ๋ณด์ ๊ฐ์
- ๐ ์๋ํ ๋ฐ ๋์ โ ํน์ ์ด๋ฒคํธ ๋ฐ์ ์ ์๋ ์๋ฆผ ๋ฐ ์กฐ์น
- ๐พ ์ฅ๊ธฐ์ ์ธ ๋ก๊ทธ ๋ณด๊ด โ ๋ณด์ ๋ฐ ๊ฐ์ฌ ๋ชฉ์ ์ ๋ก๊ทธ ์ ์ฅ
2๏ธโฃ Syslog ์๋ฒ ์ค์น (Linux ๊ธฐ๋ฐ)
๐น Ubuntu/Debian์์ Rsyslog ์ค์น
sudo apt update
sudo apt install rsyslog -y
์ค์น ํ, ์๋น์ค ํ์ฑํ ๋ฐ ํ์ธ
sudo systemctl enable rsyslog
sudo systemctl start rsyslog
sudo systemctl status rsyslog
๐น CentOS/RHEL์์ Rsyslog ์ค์น
sudo yum install rsyslog -y
์ค์น ํ, ์๋น์ค ํ์ฑํ ๋ฐ ํ์ธ
sudo systemctl enable rsyslog
sudo systemctl start rsyslog
sudo systemctl status rsyslog
3๏ธโฃ Syslog ์๋ฒ ์ค์
Syslog ์ค์ ํ์ผ์ /etc/rsyslog.conf
์
๋๋ค.
์ด ํ์ผ์ ์์ ํ์ฌ ์๊ฒฉ ๋ก๊ทธ ์์ง ๋ฐ ์ ์ฅ ๋ฐฉ์์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
๐ 1. ์๊ฒฉ ๋ก๊ทธ ์์ง ํ์ฑํ
/etc/rsyslog.conf
ํ์ผ์ ์ด์ด ์๋ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
sudo nano /etc/rsyslog.conf
๐น UDP(514๋ฒ ํฌํธ)๋ก ๋ก๊ทธ ์์ ์ค์
# UDP ํฌํธ 514์์ ๋ก๊ทธ ์์ ํ์ฉ
module(load="imudp")
input(type="imudp" port="514")
๐น TCP(514๋ฒ ํฌํธ)๋ก ๋ก๊ทธ ์์ ์ค์
# TCP ํฌํธ 514์์ ๋ก๊ทธ ์์ ํ์ฉ
module(load="imtcp")
input(type="imtcp" port="514")
๐น ๋ก๊ทธ ํ์ผ ์ ์ฅ ๊ฒฝ๋ก ์ค์
$template RemoteLogs,"/var/log/remote_logs/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
์ค์ ์ ์ ์ฅํ ํ, rsyslog ์๋น์ค๋ฅผ ์ฌ์์ํฉ๋๋ค.
sudo systemctl restart rsyslog
4๏ธโฃ ํด๋ผ์ด์ธํธ์์ Syslog ์๋ฒ๋ก ๋ก๊ทธ ์ ์ก
๐ 1. ํด๋ผ์ด์ธํธ์์ ๋ก๊ทธ ์ ์ก ์ค์ (/etc/rsyslog.conf
)
ํด๋ผ์ด์ธํธ ์์คํ ์์ ๋ก๊ทธ๋ฅผ ์ค์ Syslog ์๋ฒ๋ก ์ ์กํ๋ ค๋ฉด ์๋ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
sudo nano /etc/rsyslog.conf
๐น Syslog ์๋ฒ๋ก ๋ก๊ทธ ์ ์ก (UDP)
*.* @192.168.1.100:514 # Syslog ์๋ฒ IP์ ํฌํธ ์
๋ ฅ
๐น Syslog ์๋ฒ๋ก ๋ก๊ทธ ์ ์ก (TCP)
*.* @@192.168.1.100:514 # '@@'๋ TCP ์ ์ก์ ์๋ฏธ
์ค์ ์ ์ ์ฅํ ํ, rsyslog ์๋น์ค๋ฅผ ์ฌ์์ํฉ๋๋ค.
sudo systemctl restart rsyslog
5๏ธโฃ Syslog ๋ก๊ทธ ํ์ธ
๐ 1. Syslog ์๋ฒ์์ ์์ง๋ ๋ก๊ทธ ํ์ธ
ls /var/log/remote_logs/
ํน์ ํธ์คํธ์ ๋ก๊ทธ ํ์ธ
cat /var/log/remote_logs/client-server-name/syslog.log
6๏ธโฃ ๋ฐฉํ๋ฒฝ ์ค์ (ํ์ํ ๊ฒฝ์ฐ)
Syslog ์๋ฒ๊ฐ ์๊ฒฉ์์ ๋ก๊ทธ๋ฅผ ์์งํ๋ ค๋ฉด ๋ฐฉํ๋ฒฝ์์ 514/UDP, 514/TCP ํฌํธ๋ฅผ ํ์ฉํด์ผ ํฉ๋๋ค.
โ UFW ์ฌ์ฉ (Ubuntu/Debian)
sudo ufw allow 514/udp
sudo ufw allow 514/tcp
sudo ufw reload
โ firewalld ์ฌ์ฉ (CentOS/RHEL)
sudo firewall-cmd --permanent --add-port=514/udp
sudo firewall-cmd --permanent --add-port=514/tcp
sudo firewall-cmd --reload
7๏ธโฃ Syslog ๋ก๊ทธ ๋ถ์ ๋ฐ ๋ชจ๋ํฐ๋ง ๐
๐ 1. ๋ก๊ทธ ํํฐ๋ง (grep ์ฌ์ฉ)
cat /var/log/syslog | grep "error"
๐ 2. ์ค์๊ฐ ๋ก๊ทธ ๋ชจ๋ํฐ๋ง
sudo tail -f /var/log/syslog
8๏ธโฃ ๊ณ ๊ธ ๊ธฐ๋ฅ (ELK ์คํ ์ฐ๋)
โ Syslog ๋ฐ์ดํฐ๋ฅผ ELK(Elasticsearch + Logstash + Kibana)๋ก ์ ์กํ์ฌ ์ค์๊ฐ ๋ถ์ ๊ฐ๋ฅ
๐น Logstash๋ฅผ ์ฌ์ฉํ์ฌ Syslog ๋ก๊ทธ๋ฅผ ์์งํ๋ ค๋ฉด ์๋ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
input {
udp {
port => 514
type => "syslog"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "syslog-%{+YYYY.MM.dd}"
}
}
9๏ธโฃ ๊ฒฐ๋ก ๐
Syslog ์๋ฒ๋ฅผ ๊ตฌ์ถํ๋ฉด ์๋ฒ ๋ฐ ๋คํธ์ํฌ ์ฅ๋น์ ๋ก๊ทธ๋ฅผ ์ค์์์ ์์งํ๊ณ ๋ถ์ํ ์ ์์ต๋๋ค.
์์ ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ค์นํ๊ณ ์ค์ ํ๋ฉด ํจ์จ์ ์ธ ๋ก๊ทธ ๊ด๋ฆฌ ์์คํ
์ ์ด์ํ ์ ์์ต๋๋ค.
๋ก๊ทธ ๋ถ์์ ์๋ํํ๋ ค๋ฉด ELK ์คํ๊ณผ ์ฐ๋ํ์ฌ ๋์๋ณด๋๋ก ์๊ฐํํ๋ ๊ฒ๋ ๊ณ ๋ คํด ๋ณด์ธ์!
๐ ์ถ๊ฐ ์๋ฃ
1๏ธโฃ Rsyslog ๊ณต์ ๋ฌธ์
2๏ธโฃ ELK ์คํ ์ค์ ๊ฐ์ด๋
3๏ธโฃ Syslog ๋ก๊ทธ ๋ถ์ ์ฌ๋ก