안녕하세요 미씨오입니다.
iptables에 대한 내용 공유 드립니다.
예전에 ipchains를 개선한 도구로써 방화벽으로 사용된다.
일반적으로 table, chain, rule, target으로 설정한다.
table - 전체적인 규칙 (filter)
chain - 타겟이 일치하는 경우의 처리방법 (룰의 규정)
내장 체인 : INPUT(입력), OUTPUT(출력), FORWARD(경유)
사용자 정의 체인 : 사용자가 임의로 정하는 체인 규칙(룰)
Rule : command, parameters, target으로 구성되는 하나하나의 줄
Target : 룰에 일치할 경우의 처리를 말하는데 ACCEPT(허가), DROP(버림:상대방에게 거부된 사실을 알리지 않음)
REJECT(거부:상대방에게 거부된 사실을 알림) -> 보안상 REJECT보다는 DROP을 사용하는 것이 좋다.
iptables 서비스 명령어 : service iptables status(상태) / start(시작) / stop(정지) / restart(재시작)
/etc/sysconfig/iptables에서 지정할 수 있다.
-> iptables을 추가하면 서비스를 재시작해야 변경된 사항에 대해 반영된다.
규칙 적용은 테이블의 상단에서 하단으로 내려가면서 적용되고 어느 줄에 해당되면 이하는 무시되어 적용되지 않는다.
어느 규칙을 추가할 때에는 중간에 추가하기 보다는 처음부터 재작성하는 편이 좋다.
APPEND(추가), INSERT(삽입), DELETE(제거) 등도 있지만 대부분 맨 아래에 추가하는 -A ~ 를 가장 많이 사용한다.-> 한줄, REPLACE(치환), FLUSH(table전체 모두 삭제), LIST(테이블 전체를 보임) -s(source ip), -d(destination ip), -p(protocol), -m(state) -> NEW(신규연결), ESTABLISHED(기존연결),
--sport(source port), --dport(destination port), -i(input interface), -o(output interface)...
ex) iptables -A INPUT -s 192.168.100.0/24 -p tcp -m tcp --dport 80 --state NEW -j DROP (DDOS 공격 막기)
iptables -A INPUT -p tcp (-m state) --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --state NEW,ESTABLISHED -j FORWARD
setting : 기본은 모두 DROP으로 해두고 lo(local loopbac: 127.0.0.1)에서 들어오는 모든 패킷은 ACCEPT
DNS(tcp/udp, 53)는 ACCEPT 서버에서의 외부로 가는 패킷은 모두 ACCEPT 특정 어플,서버에 대한 패킷의 ACCEPT/DROP 이 패킷에 대한 흐름은 tcpdump/wireshark를 통해서 보면 된다.
● TCP/SSH(22), TCP/SMTP(25), TCP,UDP/DNS(53), TCP/WWW(HTTP)(80), TCP/SSL-WWW(HTTPS)(443),
TCP/SSL-SMTPS(465),TCP/POP3S(995), TCP/VPN(5901)은 보통 열어둔다.
● 보통은 최소한의 액세스만 허용하고 불필요한 처리는 하지 않는 것이 좋다.
ex) telnet과 pop3, ftp 등은 ssh or ssl을 이용해서 암호화 터널을 만들어서 들어오게 한 뒤 로컬로 받으면 보안이 충분하므로 별도로 iptables에서 설정하지 않아도 될 것이다.
'지식 공유 > 리눅스' 카테고리의 다른 글
centos 7 이상 mysql 설치 및 초기 설정 방법 (0) | 2019.08.01 |
---|---|
리눅스 nfs mount mount nobody 이슈 (0) | 2019.07.31 |
쉘 스크립트란? (0) | 2019.07.19 |
Firewall과 함께 linux에서 보안으로 SELinux(Secure Enhanced Linux)를 사용할 수 있다. (0) | 2019.07.18 |
리눅스 서버 보안 사항 (0) | 2019.07.17 |