iptables 로 초기 접속 제어 하기

CentOS 7 기본 설치 후, 공인 네트워크 환경에 연결해야 할 때 우선 최소 SSH 접근만 허용하기

( Pre ) CentOS 7 에서 firewalld 대신 iptables 사용하기

firewalld 사용이 권장되지만, iptables 에 익숙할 경우 iptables.target 을 service 에 연결하는 패키지를 운영할 수 있다.

# firewalld disable
systemctl stop firewalld && systemctl disable firewalld

# firewalld 대신 service 를 통한 운영. 
# 설치 후 서비스 재시작하면 /etc/sysconfig/iptables 에 실시간 룰이 저장된다.
yum install iptables-services
service iptables reload
service iptables status

# 룰 저장
service iptables save

# 룰 리로드
service iptables reload

# 룰 형식으로 텍스트 저장. 반드시 -c ( ALL Rule ) 옵션을 지정해서 저장하여야 방화벽 정책과 ROUTE(NAT) 룰이 같이 저장된다.
iptables-save -c > rules.txt

# 룰 복원
iptables-restore < rules.txt

iptables 초기 설정 ( 모두 차단 후 특정 IP만 허용하기 )

# 모든 룰 초기화
iptables -F 

# lo 인터페이스 모든 ACCEPT 
iptables -A INPUT -i lo -j ACCEPT

# 모든 접근 허용할 소스 IP 지정. 포트(SSH) 까지 지정할 경우 -p tcp (-m tcp 생략 가능) --dport 22 를 추가한다
iptables -A INPUT -s 1.2.3.4/32 -m comment --comment "회사" -j ACCEPT

# state 상태를 지정한 ACCEPT. 
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# (선택) Ping request 요청에 대해 호스트 접근 불가 응답 설정. 서버가 존재한다는 힌트를 주는 것이다. 
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited

# (선택) Ping request 요청에 거절 하고 싶다면.
iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT  

# (선택) Ping 접근 자체를 막고 싶다면 DROP. 허용하려면 ACCEPT 를 주면 된다. 
iptables -A INPUT -p icmp -j DROP

# 그 외 모든 TCP 접근 DROP
iptables -A INPUT -p tcp -j DROP

# 저장
service iptables save

추가 접근 정책 추가

# 기본 설정 이후에 -A 로 추가하면 DROP 이후의 Line 에 들어가므로 Line 순서 상 제대로 허용되지 않는다
# -I INPUT [DROP Line] 을 기입하여 DROP 라인 위로 추가되도록 한다.

iptables -nL --line-number
---------------------------------------------------------------------------------
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  1.2.3.4              0.0.0.0/0            /* 회사 */
2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0
---------------------------------------------------------------------------------

# 2번 DROP 정책 위로 추가한다. 
iptables -I INPUT 2 -s 5.6.7.8 -j ACCEPT -m comment --comment "허용 추가"
iptables -nL --line-number
---------------------------------------------------------------------------------
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  1.2.3.4              0.0.0.0/0            /* 회사 */
2    ACCEPT     all  --  5.6.7.8              0.0.0.0/0            /* 허용 추가 */
3    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0
---------------------------------------------------------------------------------

# 라인 정렬이 어려울 경우 /etc/sysconfig/iptables 파일을 직접 수정 후 reload 가능하다.

라인 정책 삭제

iptables -D INPUT [Number]
image_print
카테고리: Linux

호스트웨이 시스템 팀

호스트웨이 시스템1팀