본문으로 이동

미디어위키 1.45 안정화가 거의 끝났습니다. 다만 Flow 확장 기능 관련 이슈가 있어서 대체하는 작업을 수행할 계획입니다.

  1. 큰숲백과:청사진에서 위키 발전의 대략적인 방향성을 제시했습니다. 의견이 있으신 분은 큰숲백과토론:청사진에서 의견을 남겨주시면 좋겠습니다.
  2. 기능상의 오류로 지원하지 않고 있는 기능에 대해서는 큰숲백과토론:이슈 트래커에 요약했습니다. 참고하시기 바랍니다.
  3. 데이터베이스 덤프 받고싶으신 분은 큰숲백과 가입 후에 사용자토론:Bigforest에 의견 남겨주시면 ftp 주소, 계정, 비밀번호를 특수:EmailUser를 통해서 공개할 예정입니다.

작은숲:위키노트/Iptables 설정

큰숲백과, 나무를 보지 말고 큰 숲을 보라.
(Iptables 설정에서 넘어옴)

레드햇 계열의 리눅스를 사용한다면 /etc/sysconf/iptables 파일에 [[작은숲:위키노트/Iptables|Iptables] 정책을 저장해두면 서버가 부팅될 때마다 적용된다. 단 iptables 룰은 적용 순서가 상당히 중요하므로 이에 대해 어느 정도 숙지한 후에 해야 한다. iptables에 새로운 정책을 추가하면 iptables를 재가동해야 한다.

# /etc/init.d/iptables restart
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]
iptables: Applying firewall rules:                         [  OK  ]

기본 설정

...
-A RH-Firewall-1-INPUT -m state --state INVALID -j DROP
...
# sshd
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 218.0.0.15 --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 218.0.0.16 --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 218.0.0.17 --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s 218.0.0.18 --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j DROP
# domain, rndc
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 953 -j ACCEPT
# mysqld
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
# block heavy requests
-A RH-Firewall-1-INPUT -m recent --update --seconds 600 --name TOO_MANY_REQUESTS -j DROP
-A RH-Firewall-1-INPUT -m hashlimit --hashlimit 10/s --hashlimit-burst 24 --hashlimit-mode srcip --hashlimit-name HTTP_REQ_LIMIT -j ACCEPT
-A RH-Firewall-1-INPUT -m recent --set --name TOO_MANY_REQUESTS -j DROP
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
...

DNS 서버에 대한 DoS 공격 대응

[[작은숲:위키노트/Bind 설정|Bind 설정]을 통해 기본적인 조치를 한 후 iptables의 recent 모듈을 이용해 DNS 서버에 무리한 질의를 하는 IP를 차단하도록 한다.

-A INPUT -p udp -m state --state NEW -m udp --dport 53 -m recent --set --name DNS --rsource
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -m recent --update --seconds 10 --hitcount 10 --rttl --name DNS --rsource -j DROP

DNS 서버에 10초 동안 10번 이상 질의를 하면 차단하도록 한다. 설정을 추가한 후 iptables를 재가동한다.

-N blacklist
-N sshscan
-A INPUT -m state --state NEW -p tcp --dport ssh -j sshscan
-A blacklist -m recent --set --name blacklist
-A blacklist -j LOG --log-level info --log-prefix "SSH SCAN Blocked: "
-A blacklist -j DROP
-A sshscan -m recent --update --seconds 1200 --hitcount 1 --name blacklist -j DROP
-A sshscan -m recent --set --name sshscan
-A sshscan -m recent --update --seconds 20 --hitcount 3 --name sshscan -j blacklist
-A sshscan -j ACCEPT

위 예는 같은 세션에서 20초 동안 3번의 새로운 접속 요청이 들어올 경우 20분 동안 차단한다. 그리고 /var/log/messages에 SSH SCAN Blocked: 접두어를 붙여 로그를 남긴다.

참고

이 작은숲 문서의 출처는 위키노트의 위키노트/Iptables 설정 문서입니다.