๐Ÿ“‚๋„คํŠธ์›Œํฌ&์„œ๋ฒ„/๐Ÿง๋ฆฌ๋ˆ…์Šค(Linux)

31์ผ์ฐจ(3.28) DenyHosts ModSecurity

๐Ÿ‘ฉ‍๐ŸŽ“์ธํ…”๋ฆฌ๊ฐ์ž๐Ÿฅ” 2023. 3. 29. 17:31

  DenyHosts 
  ์ด ๋„๊ตฌ๋„ Fail2Ban์ฒ˜๋Ÿผ IPS๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์›๊ฒฉ์—์„œ ์—ฌ๋Ÿฌ IP๋กœ ๋ฌด์ฐจ๋ณ„ ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•˜๋Š” DDoS ๊ณต๊ฒฉ์˜ ํ•ด์ปค๋ฅผ ๋ง‰๋Š” ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์„œ๋ฒ„๊ฐ€ DDoS ๊ณต๊ฒฉ์—์„œ์™€ ๊ฐ™์ด ์‚ฌ์„ค IP๋‚˜ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฌด์ˆ˜ํ•œ ์•…์„ฑ IP ์ฃผ์†Œ๋“ค์„ ๋ชจ๋‘ ๋ง‰์„ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•  IP ์ฃผ์†Œ๋งŒ ์ง€์ •ํ•ด๋‘๊ณ  ์„œ๋ฒ„์˜ Messages๋‚˜ Secure ๋กœ๊ทธ๋ฅผ ์ฝ์–ด์„œ ์ด๋Ÿฐ ์ด์ƒํ•œ IP ์ฃผ์†Œ๋‚˜ ๋„คํŠธ์›Œํฌ๋“ค์˜ ์—ฐ๊ฒฐ์„ TCPwrapper์˜ /etc/hosts.deny ํŒŒ์ผ์— ๋„ฃ์–ด์„œ ๋ง‰๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. 
  TCPwrapper๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ /etc/hosts.allow ํŒŒ์ผ์„ ๋จผ์ € ๋ณด๊ณ  /etc/hosts.deny ํŒŒ์ผ์„ ๋‚˜์ค‘์— ๋ณด๋ฏ€๋กœ ์„ค์ •์€ ๋จผ์ € /etc/hosts.deny ํŒŒ์ผ์—์„œ ๋ชจ๋‘ ๊ฑฐ๋ถ€๋กœ ํ•ด๋‘๊ณ , /etc/hosts. allow ํŒŒ์ผ์—์„œ ํ•„์š”ํ•œ ๊ฒƒ๋“ค๋งŒ ํ—ˆ์šฉํ•ด์ฃผ๋ฉด ํ—ˆ์šฉํ•  ๊ฒƒ ์ด์™ธ์—๋Š” ๋ชจ๋‘ ๊ฑฐ๋ถ€๋œ๋‹ค. 

 

์‹ค์Šต

DenyHosts ์„ค์น˜ - /usr/src์— ์„ค์น˜ํ•œ๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ ์™ธ๋ถ€๋ชจ๋“ˆ์„ ์„ค์น˜ํ•ด์„œ ๋†”๋‘๋Š” ๊ณณ)cd /usr/srcwget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz --no-check-certificate
tar xvfz DenyHosts-2.6.tar.gz

 

[root@localhost src]# ls
debug  DenyHosts-2.6  DenyHosts-2.6.tar.gz  kernels

DenyHosts๋กœ ๋“ค์–ด๊ฐ„ ๋‹ค์Œ์— ๋ชฉ๋ก์„ ๋ณด๊ณ , setup.py์— ์‹คํ–‰ ๊ถŒํ•œ์„ ์ค€๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  python setup.py install์œผ๋กœ ์„ค์น˜ํ•œ๋‹ค. 

 

ls /usr/share/denyhosts/ << ์„ค์ •ํŒŒ์ผ

 

cp -arp denyhosts.cfg-dist denyhosts.cfg

nano -c denyhosts.cfg

 

์™ธ๋ถ€์—์„œ sshd vsftpd httpd mysqld ๋“ฑ์—์„œ ์ด์ƒํ•œ ์• ๋“ค์ด ๋“ค์–ด์˜ค๋ฉด ๋ง‰์•„๋ฒ„๋ฆฌ๊ฒ ๋‹ค.

์ด์ƒํ•œ ์• ๋“ค์ด ๋“ค์–ด์˜ค๋ฉด ์—ฌ๊ธฐ๋กœ ๋ฉ”์ผ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.

 

cp -arp daemon-control-dist daemon-control

 

 

๋ณ€๊ฒฝํ•ด์ค€๋‹ค.

 

daemon-control์ด๋ผ๋Š” ํŒŒ์ผ์˜ ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน์˜ root๋กœ ๋ฐ”๊ฟ”์คฌ๊ณ , root๋งŒ ์ฝ๊ณ  ์“ฐ๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คฌ๋‹ค.(user group other ์ค‘์— user์—๊ฒŒ๋งŒ 7์„ ์คฌ๋‹ค.)

 

 

ln -s /usr/share/denyhosts/daemon-control denyhosts

 

๋ฐ๋ชฌ์ปจํŠธ๋กค ์„ค์ •ํŒŒ์ผ์„ ์†Œํ”„ํŠธ๋งํฌ๋กœ ๊ฑธ์–ด์ค€๋‹ค. 

 

์ฒดํฌ์ฝ˜ํ”ผ๊ทธ๋กœ ๋Ÿฐ๋ ˆ๋ฒจ์— ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  ์†Œํ”„ํŠธ๋งํฌ๊ฐ€ ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•ด์ฃผ๊ณ  init.d ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•ด์ค€๋‹ค.

๋กœ์ปฌํ˜ธ์ŠคํŠธ์™€ ์„ผํ† ์Šค2๋งŒ ํ—ˆ์šฉํ–ˆ๋‹ค.

 

 

/etc/hosts.allow์™€ /etc/hosts.deny ํŒŒ์ผ์—์„œ๋Š” 'Service_name:Host/Network'๋กœ ์„ค์ •

httpd : ALL(๋ชจ๋‘)

sshd : 192.168.100.*(๋„คํŠธ์›Œํฌ)

sendmail : 192.168.100.200(ํ˜ธ์ŠคํŠธ)

ALL : ALL(๋ชจ๋‘) ์‹์œผ๋กœ ํ•ด์ค€๋‹ค.

 

nano /usr/share/denyhosts/denyhosts.cfg ์„ค์ •ํŒŒ์ผ๋„ ๋งŒ์ ธ์ค€๋‹ค. 

 

root@localhost init.d]# chkconfig denyhosts on && service denyhosts start
starting DenyHosts:    /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
DenyHosts could not obtain lock (pid: 4263)
[Errno 17] File exists: '/var/lock/subsys/denyhosts'
[root@localhost init.d]# rm -rf /var/lock/subsys/denyhosts 
[root@localhost init.d]# service denyhosts start
starting DenyHosts:    /usr/bin/env python /usr/bin/denyhosts.py --daemon --config=/usr/share/denyhosts/denyhosts.cfg
[root@localhost init.d]# cat /var/log/denyhosts 

 

tail -f /var/log/secure

 

์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ณด์•ˆ์— ๊ด€ํ•œ ๋กœ๊ทธ ํŒŒ์ผ ๋ณด๊ธฐ

 

์‹ค์‹œ๊ฐ„์œผ๋กœ centos2์—์„œ ์ ‘์†ํ–ˆ๋”๋‹ˆ ๋–ด๋‹ค.

 

BT๋Š” ๋ง‰์•˜๋‹ค.


  OSSEC(Open Source SECurity)

  OSSEC๋„ ๊ฐ•๋ ฅํ•œ IDS/IPS ๋„๊ตฌ์ธ๋ฐ ๊ทธ๋ž˜ํ”ฝ ๋ชจ๋“œ๋กœ ๋‹ค์–‘ํ•˜๊ฒŒ ์„ค์ •ํ•ด์„œ ๋„คํŠธ์›Œํฌ์ƒ์˜ ๋…ธ๋“œ๋“ค์˜ ํ™œ๋™์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋„คํŠธ์›Œํฌ ์ƒ์˜ ๋…ธ๋“œ๋“ค์€ OSSEC์˜ ์—์ด์ „ํŠธ๊ฐ€ ๋˜์–ด์„œ ์ž์‹ ๋“ค์˜ ์ •๋ณด๋ฅผ OSSEC์—๊ฒŒ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด์„œ OSSEC๊ฐ€ ๋…ธ๋“œ๋“ค์˜ ํ™œ๋™์„ ๊ฐ์ง€ํ•œ๋‹ค.

  ๋ณดํ†ต ๋ณด์•ˆ ์„ค์ •์„ HID(Host Intrusion Detection)๊ณผ NID(Network Intrusion Detection)์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ํ•ด์ค€๋‹ค. ์ด OSSEC๋Š” HID ์„ค์ •์ด๋‹ค.

 


  ๋ณด์•ˆ ์นจํ•ด๋ฅผ ๊ฐ์ง€ํ•˜๋Š” - ModSecurity

  ModSecurity๋„ ๋ณด์•ˆ ์นจํˆฌ๋ฅผ ๊ฐ์ง€ํ•˜๊ณ  ๋ง‰์•„์ฃผ๋Š” ๋ฐฉํ™”๋ฒฝ์œผ๋กœ ์†์ƒ‰์ด ์—†๋Š” ๋„๊ตฌ์ธ๋ฐ Web, DB, ๊ทธ๋ฆฌ๊ณ  DDoS ๊ณต๊ฒฉ๋„ ์ž˜ ๋ง‰์•„์ค€๋‹ค. ํ”„๋กœ๊ทธ๋žจ์— ๋‚ด์žฅ๋œ ๋ฃฐ ์ด์™ธ์— ํ•œ๊ตญ์ •๋ณด๋ณดํ˜ธ์ง„ํฅ์›(http://www.securenet.or.kr)์—์„œ ModSecurity์˜ ๋ฃฐ์„ ๋ณ„๋„๋กœ ๋‹ค์šด๋ฐ›์•„์„œ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋‚˜๋ผ ๋ณด์•ˆ๊ธฐ๊ด€์—์„œ ์ง€์›ํ•˜๊ณ  ์žˆ๋Š” ๋„๊ตฌ์ด๋ฏ€๋กœ ์ž˜ ์•Œ์•„๋‘๋ฉด ์ข‹๋‹ค.

APM(Apache Web server + PHP Web programming language + MySQL Database server)์€ Linux ๋จธ์‹ ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“ˆ์ด๋‹ค.

 

์‹ค์Šต

 

 add-apt-repository ppa:ondrej/php ๋กœ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

apt update && apt -y install apache2 php5.6 mysql-server mysql-client php5.6-mysql

 

apt -y install libxml2 libxml2-dev libxml2-utils libaprutil1 libaprutil1-dev

 

apt -y install libapache2-mod-security2 

 

apachectl -M |grep --color security2

 

 

cp -arp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf

service apache2 reload && service apache2 restart

cat -n /etc/modsecurity/modsecurity.conf

 


root@ubuntu1:/home/ubuntu# sed -i "7s/DetectionOnly/On/" /etc/modsecurity/modsecurity.conf
root@ubuntu1:/home/ubuntu# sed -i "112s/On/Off/" /etc/modsecurity/modsecurity.conf
root@ubuntu1:/home/ubuntu# sed -n '7p' /etc/modsecurity/modsecurity.conf
SecRuleEngine On
root@ubuntu1:/home/ubuntu# sed -n '112p' /etc/modsecurity/modsecurity.conf
SecResponseBodyAccess Off

 

sed -n '32,45p' /etc/modsecurity/modsecurity.conf | cat -n

 

SecRequestBodyInMemoryLimit 131072 << ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ

 

mysql -u root -p

alter user 'root'@'localhost' identified by 'rootoor';

alter user 'root'@'%' identified by 'rootoor';

 

create database testt;

 

create table userss(username varchar(30), password varchar(20));

desc userss;

mysql> insert into userss values('paul', 'paulpass');
Query OK, 1 row affected (0.01 sec)

mysql> insert into userss values('mary', 'marypass');
Query OK, 1 row affected (0.00 sec)

 

 systemctl start mysql && systemctl enable mysql.service

 

nano /var/www/html/login.php  ##์›น์—์„œ ์‹คํ–‰๋จ

 

 

chmod +x /var/www/html/login.php

firefox http://localhost/login.html

 

๋กœ๊ทธ์ธ์ด ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ ์™œ ์•ˆ๋ ๊นŒ? ใ… ใ… ใ… ใ… ใ…  ๋˜๋ฉด ๋‹ค์‹œ ํ•ด์„œ ์˜ฌ๋ฆฌ๊ฒ ์Œ.........

 


  PacketFence

  ์ด ๋„๊ตฌ๋Š” ๋„คํŠธ์›Œํฌ์ƒ์— ์•Œ์ง€ ๋ชปํ•˜๋Š” ๋…ธ๋“œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ํ•ด๋‹น ๋…ธ๋“œ์˜ MAC ์ฃผ์†Œ๋ฅผ ๊ฒ€ํ† ํ•ด์„œ isolation(๊ฒฉ๋ฆฌ) ๋„คํŠธ์›Œํฌ๋กœ ๋‘๊ณ , ์ธ์ฆ๋œ ๋…ธ๋“œ๋“ค์€ registration(๋“ฑ๋ก) ๋„คํŠธ์›Œํฌ๋กœ ๋‘๋Š”๋ฐ ๊ด€๋ฆฌ์ž ๋„คํŠธ์›Œํฌ๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ ๋กœ์ปฌ LAN์ด์ง€๋งŒ ๊ฒฉ๋ฆฌ์™€ ๋“ฑ๋ก ๋„คํŠธ์›Œํฌ๋กœ ๋‚˜๋‰  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฐ”๋กœ VLAN(Virtual LAN)์œผ๋กœ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.