작성자:컴센스
편집자:엔시스(sis@sis.pe.kr)
iptables는 리눅스에서 방화벽으로 사용하고 있는 iptables를 이용하여 acl 처리 할일이 있어서
작업하면서 다음과 같이 정리하였습니다.
0.기본정책을 ACCEPT로 설정
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
1.현재 자신의 방화벽 규칙을 볼 수 있는 명령
iptables --list
iptables -L
2.21,23,25,80 포트를 차단하는 정책(각각 하나씩 규칙을 만들것)
iptables -A INPUT -p tcp --dport 21 -j DROP
iptables -A INPUT -p tcp --dport 23 -j DROP
iptables -A INPUT -p tcp --dport 25 -j DROP
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp -m multiport --destination-port 21,23,25,80 -j DROP
3.첫번째 정책을 삭제
iptables -D INPUT 1
4.세번째 정책의 출발지 IP를 192.68.1.0/24로 수정
iptables -R INPUT 3 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
5.출발지 IP가 A클래스 사설IP일 경우 차단하는 정책
iptables -A INPUT -s 10.0.0.0/8 -j DROP
6.출발지 IP가 192.168.10.1부터 192.168.10.100, 그리고 192.168.150.0/24이고 목적지 IP는 192.168.10.170이고 목적지 포트는 3306일 경우 차단하는 정책
iptables -A INPUT -p tcp -s 192.168.150.0/24 -d 192.168.10.170 --dport 3306 -j DROP
iptables -A INPUT -p tcp -m iprange --src-range 192.168.10.1-192.168.10.100 -d 192.168.10.170 --dport 3306 -j DROP
7.tcp 패킷이 초당 10개가 올 경우 차단하는 정책(limit match 이용)
iptables -A INPUT -p tcp -m limit --limit 10/s -j DROP
8.하나의 세션에서 10개의 패킷이 매칭된 후 tcp 패킷이 분당 100개가 올 경우 차단하는 정책
iptables -A INPUT -p tcp -m limit --limit 100/m --limit-burst 10 -j DROP
9.옆사람의 윈도우와 리눅스에서 SSH 접속을 차단하도록 설정
윈도우에서의 연결은 DROP 정책을,리눅스에서의 접속은 REJECT 정책으로 설정
iptables -A INPUT -p tcp -s 172.17.24.140 --dport 22 -j DROP
iptables -A INPUT -p tcp -s 172.17.24.170 --dport 22 -j REJECT --reject-with tcp-reset
- /etc/syslog.conf 설정에서 마지막 부분을 다음과 같이 수정
kern.* /var/log/iptables
- 차단된 연결에 대한 로그를 /var/log/iptables 파일에 남기고
로그레벨은 info로 지정하고 로그의 머릿말에 "[SSH Conn]"메세지 삽입
iptables -I INPUT 9 -p tcp -s 172.17.24.140 --dport 22 -j LOG --log-level info
iptables -I INPUT 10 -p tcp -s 172.17.24.140 --dport 22 -j LOG --log-prefix "[SSH Conn]"
10.ICMP 라는 체인 생성
- icmp 패킷이 들어올 경우 ICMP 체인으로 전달
- ICMP 체인에 ping에 대해 응답하지 않는 정책 추가
iptables -N ICMP
iptables -A INPUT -p icmp -j ICMP
iptables -A ICMP -p icmp --icmp-type 8 -j DROP
11.기본정책을 DROP으로 설정
- 본인의 윈도우에서 SSH 연결이 되도록 설정하고 이미 연결된 상태나 연관성이 있는 연결은
별도의 정책 대신 state 매치를 이용하여 계속 사용할 수 있도록 설정(상태추적설정)
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -s 172.17.24.130 --dport 22 -j ACCEPT
12.TCP FLAG 중 전체를 보고 그 중 SYN과 FIN가 있을 경우 차단하는 정책
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP
13.TCP FLAG 중 전체를 보고 그 중 PSH와 FIN가 있을 경우 차단하는 정책
iptables -A INPUT -p tcp --tcp-flags ALL PSH,FIN -j DROP
14.TCP FLAG 중 PSH와 SYN을 보고 그 중 둘 다 있을 경우 차단하는 정책
15.SYN 패킷이 아닌데 상태가 NEW일 경우 차단하는 정책
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp ! --tcp-flags SYN,RST,ACK SYN -m state --state NEW -j DROP
iptables -A INPUT -p tcp ! --tcp-flags ALL SYN -m state --state NEW -j DROP
tcp flags:!FIN,SYN,RST,ACK/SYN state NEW
tcp flags:!SYN,RST,ACK/SYN state NEW
tcp flags:!FIN,SYN,RST,PSH,ACK,URG/SYN state NEW
'OS > LINUX' 카테고리의 다른 글
mutt 커맨드라인 첨부 메일 보내기 (0) | 2011.06.17 |
---|---|
/etc/sysconfig / 시스템 설정 정보 (0) | 2011.06.16 |
nohup *command* 1>/dev/null/ 2>&1 & (0) | 2011.06.16 |
iptables 관련 (0) | 2011.06.16 |
원격 시스템 사용자 계정 정보 확인 - finger (0) | 2011.06.14 |